diff --git a/patches/minecraft/net/minecraft/client/renderer/WorldRenderer.java.patch b/patches/minecraft/net/minecraft/client/renderer/WorldRenderer.java.patch index 65b5937e4..bd74c5c47 100644 --- a/patches/minecraft/net/minecraft/client/renderer/WorldRenderer.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/WorldRenderer.java.patch @@ -1,5 +1,27 @@ --- ../src-base/minecraft/net/minecraft/client/renderer/WorldRenderer.java +++ ../src-work/minecraft/net/minecraft/client/renderer/WorldRenderer.java +@@ -506,15 +506,15 @@ + break; + case USHORT: + case SHORT: +- this.field_179001_a.putShort(i, (short)((int)p_181663_1_ * 32767 & 65535)); +- this.field_179001_a.putShort(i + 2, (short)((int)p_181663_2_ * 32767 & 65535)); +- this.field_179001_a.putShort(i + 4, (short)((int)p_181663_3_ * 32767 & 65535)); ++ this.field_179001_a.putShort(i, (short)((int)(p_181663_1_ * 32767) & 65535)); ++ this.field_179001_a.putShort(i + 2, (short)((int)(p_181663_2_ * 32767) & 65535)); ++ this.field_179001_a.putShort(i + 4, (short)((int)(p_181663_3_ * 32767) & 65535)); + break; + case UBYTE: + case BYTE: +- this.field_179001_a.put(i, (byte)((int)p_181663_1_ * 127 & 255)); +- this.field_179001_a.put(i + 1, (byte)((int)p_181663_2_ * 127 & 255)); +- this.field_179001_a.put(i + 2, (byte)((int)p_181663_3_ * 127 & 255)); ++ this.field_179001_a.put(i, (byte)((int)(p_181663_1_ * 127) & 255)); ++ this.field_179001_a.put(i + 1, (byte)((int)(p_181663_2_ * 127) & 255)); ++ this.field_179001_a.put(i + 2, (byte)((int)(p_181663_3_ * 127) & 255)); + } + + this.func_181667_k(); @@ -578,6 +578,16 @@ } } diff --git a/src/test/java/net/minecraftforge/test/WRNormalMod.java b/src/test/java/net/minecraftforge/test/WRNormalMod.java new file mode 100644 index 000000000..1944461c2 --- /dev/null +++ b/src/test/java/net/minecraftforge/test/WRNormalMod.java @@ -0,0 +1,114 @@ +package net.minecraftforge.test; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.client.renderer.entity.RendererLivingEntity; +import net.minecraft.entity.Entity; +import net.minecraft.entity.item.EntityArmorStand; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; +import net.minecraftforge.fml.client.registry.IRenderFactory; +import net.minecraftforge.fml.client.registry.RenderingRegistry; +import net.minecraftforge.fml.common.Mod; +import net.minecraftforge.fml.common.SidedProxy; +import net.minecraftforge.fml.common.Mod.EventHandler; +import net.minecraftforge.fml.common.Mod.Instance; +import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; +import net.minecraftforge.fml.common.registry.EntityRegistry; + +@Mod(modid = "wrnormal", version = "1.0") +public class WRNormalMod +{ + @Instance("wrnormal") + public static WRNormalMod instance; + + @SidedProxy + public static ServerProxy proxy; + + @EventHandler + public void init(FMLPreInitializationEvent event) + { + EntityRegistry.registerModEntity(EntityScaleTest.class, "ScaleTest", 0, instance, 60, 3, true); + proxy.registerRenders(); + } + + public static class ServerProxy + { + public void registerRenders() + { + } + } + + public static class ClientProxy extends ServerProxy + { + @Override + public void registerRenders() + { + RenderingRegistry.registerEntityRenderingHandler(EntityScaleTest.class, new RenderScaleTestFactory()); + } + } + + public static class RenderScaleTestFactory implements IRenderFactory + { + @Override + public RenderScaleTest createRenderFor(RenderManager manager) + { + return new RenderScaleTest(manager); + } + } + + public static class EntityScaleTest extends EntityArmorStand + { + public EntityScaleTest(World world) + { + super(world); + } + } + + public static class RenderScaleTest extends RendererLivingEntity + { + private static final ResourceLocation TEXTURE = new ResourceLocation("textures/blocks/stone.png"); + + public RenderScaleTest(RenderManager manager) + { + super(manager, new ModelScaleTest(), 0); + } + + @Override + public void renderName(EntityScaleTest entity, double x, double y, double z) + { + } + + @Override + protected ResourceLocation getEntityTexture(EntityScaleTest entity) + { + return TEXTURE; + } + } + + public static class ModelScaleTest extends ModelBase + { + private ModelRenderer component; + + public ModelScaleTest() + { + textureWidth = textureHeight = 16; + component = new ModelRenderer(this); + int size = 10; + for (int x = 0; x < size; x++) + { + for (int z = 0; z < size; z++) + { + component.addBox((x - size / 2) * 3, 0, (z - size / 2) * 3, 2, 2, 2, -(x + z * size) / (float) (size * size) * 0.5F); + } + } + } + + @Override + public void render(Entity entity, float p1, float p2, float p3, float p4, float p5, float scale) + { + component.render(scale); + } + } +}