Skip to content

Commit

Permalink
Fixed incompatibility with Better Combat
Browse files Browse the repository at this point in the history
*We're backporting to 1.19 first before releasing 1.19.2.
  • Loading branch information
CleverNucleus committed Aug 17, 2022
1 parent 9f792b4 commit be308b1
Show file tree
Hide file tree
Showing 5 changed files with 16 additions and 27 deletions.
10 changes: 5 additions & 5 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
org.gradle.jvmargs=-Xmx1G

minecraft_version=1.19.2
yarn_mappings=1.19.2+build.1
loader_version=0.14.9
minecraft_version=1.19
yarn_mappings=1.19+build.1
loader_version=0.14.6

mod_version = 0.2.2
mod_version = 0.2.3
maven_group = com.github.clevernucleus
archives_base_name = armorrenderlib

fabric_api_version=0.59.0+1.19.2
fabric_api_version=0.58.0+1.19
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ private static <T extends LivingEntity, M extends BipedEntityModel<T>, A extends

if(item.getSlotType() != slot) return;
var entityRenderer = MinecraftClient.getInstance().getEntityRenderDispatcher().getRenderer(entity);
ArmorFeatureRenderer<T, M, A> armorFeatureRenderer = (ArmorFeatureRenderer<T, M, A>)((FeatureRendererAccessor<T, M>)entityRenderer).getFeatureRenderer(ArmorFeatureRenderer.class);
ArmorFeatureRenderer<T, M, A> armorFeatureRenderer = (ArmorFeatureRenderer<T, M, A>)((FeatureRendererAccessor<T, M>)entityRenderer).getFeatureRenderer();
A model = ((ArmorFeatureRendererInvoker<T, M, A>)armorFeatureRenderer).invokeGetArmor(slot);
contextModel.setAttributes((BipedEntityModel<LivingEntity>)model);
((ArmorFeatureRendererInvoker<T, M, A>)armorFeatureRenderer).invokeSetVisible(model, slot);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@
import net.minecraft.entity.LivingEntity;

public interface FeatureRendererAccessor<T extends LivingEntity, M extends EntityModel<T>> {
ArmorFeatureRenderer<?, ?, ?> getFeatureRenderer(Object key);
ArmorFeatureRenderer<?, ?, ?> getFeatureRenderer();
}
Original file line number Diff line number Diff line change
@@ -1,19 +1,13 @@
package com.github.clevernucleus.armorrenderlib.mixin;

import java.util.List;
import java.util.Map;

import org.objectweb.asm.Opcodes;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.Redirect;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;

import com.github.clevernucleus.armorrenderlib.impl.FeatureRendererAccessor;

import it.unimi.dsi.fastutil.objects.Object2ObjectArrayMap;
import net.minecraft.client.render.entity.LivingEntityRenderer;
import net.minecraft.client.render.entity.feature.ArmorFeatureRenderer;
import net.minecraft.client.render.entity.feature.FeatureRenderer;
Expand All @@ -24,22 +18,17 @@
abstract class LivingEntityRendererMixin<T extends LivingEntity, M extends EntityModel<T>> implements FeatureRendererAccessor<T, M> {

@Unique
private final Map<Class<? extends FeatureRenderer<T, M>>, FeatureRenderer<T, M>> arl_features = new Object2ObjectArrayMap<>();
private FeatureRenderer<T, M> arl_armorFeature;

@SuppressWarnings("unchecked")
@Inject(method = "addFeature", at = @At("HEAD"), cancellable = true)
private void arl_addFeature(FeatureRenderer<T, M> feature, CallbackInfoReturnable<Boolean> info) {
this.arl_features.put((Class<? extends FeatureRenderer<T, M>>)feature.getClass(), feature);
info.setReturnValue(true);
}

@Redirect(method = "render", at = @At(value = "FIELD", target = "Lnet/minecraft/client/render/entity/LivingEntityRenderer;features:Ljava/util/List;", opcode = Opcodes.GETFIELD))
private List<FeatureRenderer<T, M>> arl_get(LivingEntityRenderer<T, M> renderer) {
return this.arl_features.values().stream().toList();
if(feature instanceof ArmorFeatureRenderer) {
this.arl_armorFeature = feature;
}
}

@Override
public ArmorFeatureRenderer<?, ?, ?> getFeatureRenderer(Object key) {
return (ArmorFeatureRenderer<?, ?, ?>)this.arl_features.get(key);
public ArmorFeatureRenderer<?, ?, ?> getFeatureRenderer() {
return (ArmorFeatureRenderer<?, ?, ?>)this.arl_armorFeature;
}
}
6 changes: 3 additions & 3 deletions src/main/resources/fabric.mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@
"armorrenderlib.mixins.json"
],
"depends": {
"fabricloader": ">=0.14.9",
"fabric-api": ">=0.59.0",
"minecraft": "1.19.2",
"fabricloader": ">=0.14.6",
"fabric": ">=0.58.0",
"minecraft": "1.19",
"java": ">=17"
}
}

0 comments on commit be308b1

Please sign in to comment.