Initial 1.11.2 update
This commit is contained in:
@@ -15,26 +15,25 @@ import net.minecraftforge.fml.relauncher.ReflectionHelper;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
|
||||
// TODO: Backport the rewrite of this entire class.
|
||||
@SideOnly(Side.CLIENT)
|
||||
public class RenderDecoy extends RenderBiped<EntityDecoy> {
|
||||
|
||||
|
||||
private static final ResourceLocation steveTextures = new ResourceLocation("textures/entity/steve.png");
|
||||
|
||||
private static final Method getEntityTexture = ReflectionHelper.findMethod(Render.class, null,
|
||||
new String[]{"getEntityTexture", "func_110775_a"}, Entity.class); // Generic parameter T is erased to Entity at runtime.
|
||||
|
||||
|
||||
private static final Method getEntityTexture = ReflectionHelper.findMethod(Render.class, "getEntityTexture",
|
||||
"func_110775_a", Entity.class); // Generic parameter T is erased to Entity at runtime.
|
||||
|
||||
public RenderDecoy(RenderManager manager){
|
||||
super(manager, new ModelBiped(0.0f), 0.5f);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void doRender(EntityDecoy entity, double x, double y, double z, float entityYaw, float partialTicks) {
|
||||
|
||||
public void doRender(EntityDecoy entity, double x, double y, double z, float entityYaw, float partialTicks){
|
||||
|
||||
if(entity.getCaster() != null){
|
||||
|
||||
|
||||
this.renderName(entity, x, y, z);
|
||||
|
||||
|
||||
// Save relevant animation fields from the caster to local variables
|
||||
float pitch = entity.getCaster().rotationPitch;
|
||||
float prevPitch = entity.getCaster().prevRotationPitch;
|
||||
@@ -50,7 +49,7 @@ public class RenderDecoy extends RenderBiped<EntityDecoy> {
|
||||
int hurtTime = entity.getCaster().hurtTime;
|
||||
boolean sneak = entity.getCaster().isSneaking();
|
||||
Entity mount = entity.getCaster().getRidingEntity();
|
||||
|
||||
|
||||
// Assign decoy's animation fields to the caster
|
||||
entity.getCaster().rotationPitch = entity.rotationPitch;
|
||||
entity.getCaster().prevRotationPitch = entity.prevRotationPitch;
|
||||
@@ -66,10 +65,11 @@ public class RenderDecoy extends RenderBiped<EntityDecoy> {
|
||||
entity.getCaster().hurtTime = entity.hurtTime;
|
||||
entity.getCaster().setSneaking(false); // Decoys can't sneak FIXME Not working!
|
||||
entity.getCaster().dismountRidingEntity(); // Decoys can't ride anything
|
||||
|
||||
|
||||
// Do the rendering
|
||||
renderManager.getEntityRenderObject(entity.getCaster()).doRender(entity.getCaster(), x, y, z, entityYaw, partialTicks);
|
||||
|
||||
renderManager.getEntityRenderObject(entity.getCaster()).doRender(entity.getCaster(), x, y, z, entityYaw,
|
||||
partialTicks);
|
||||
|
||||
// Reset caster's animation fields to their original values
|
||||
entity.getCaster().rotationPitch = pitch;
|
||||
entity.getCaster().prevRotationPitch = prevPitch;
|
||||
@@ -85,19 +85,22 @@ public class RenderDecoy extends RenderBiped<EntityDecoy> {
|
||||
entity.getCaster().hurtTime = hurtTime;
|
||||
entity.getCaster().setSneaking(sneak);
|
||||
if(mount != null) entity.getCaster().startRiding(mount);
|
||||
|
||||
|
||||
}else{
|
||||
super.doRender(entity, x, y, z, entityYaw, partialTicks);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected ResourceLocation getEntityTexture(EntityDecoy entity){
|
||||
if(entity.getCaster() != null){
|
||||
try {
|
||||
return (ResourceLocation)getEntityTexture.invoke(renderManager.getEntityRenderObject(entity.getCaster()));
|
||||
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | ClassCastException e){
|
||||
Wizardry.logger.error("Error while reflectively calling Render#getEntityTexture as part of decoy rendering");
|
||||
try{
|
||||
return (ResourceLocation)getEntityTexture
|
||||
.invoke(renderManager.getEntityRenderObject(entity.getCaster()));
|
||||
}catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException
|
||||
| ClassCastException e){
|
||||
Wizardry.logger
|
||||
.error("Error while reflectively calling Render#getEntityTexture as part of decoy rendering");
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user