diff --git a/src/main/java/tschipp/carryon/client/event/RenderEntityEvents.java b/src/main/java/tschipp/carryon/client/event/RenderEntityEvents.java index 873866c..22d6290 100644 --- a/src/main/java/tschipp/carryon/client/event/RenderEntityEvents.java +++ b/src/main/java/tschipp/carryon/client/event/RenderEntityEvents.java @@ -32,6 +32,7 @@ import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import tschipp.carryon.common.handler.RegistrationHandler; import tschipp.carryon.common.item.ItemEntity; +import tschipp.carryon.common.item.ItemTile; public class RenderEntityEvents { @@ -161,16 +162,7 @@ public class RenderEntityEvents event.setCanceled(true); } } - else - { - event.setCanceled(false); - Minecraft mc = Minecraft.getMinecraft(); - RenderManager manager = mc.getRenderManager(); - RenderPlayer renderPlayer = manager.getSkinMap().get(aplayer.getSkinType()); - ModelPlayer modelPlayer = renderPlayer.getMainModel(); - modelPlayer.bipedLeftArm.isHidden = false; - modelPlayer.bipedRightArm.isHidden = false; - } + } /* @@ -205,13 +197,13 @@ public class RenderEntityEvents double xOffset = d0 - c0; double yOffset = d1 - c1; - double zOffset = d2 - d2; + double zOffset = d2 - c2; float height = entity.height; float width = entity.width; float multiplier = height * width; - entity.setPosition(d0, d1, d2); + entity.setPosition(c0, c1, c2); entity.rotationYaw = 0.0f; entity.prevRotationYaw = 0.0f; entity.setRotationYawHead(0.0f); @@ -231,108 +223,10 @@ public class RenderEntityEvents GlStateManager.popMatrix(); } } - else - { - modelPlayer.bipedLeftArm.isHidden = false; - modelPlayer.bipedRightArm.isHidden = false; - } + } - /* - * Renders correct arm rotation - */ - @SideOnly(Side.CLIENT) - @SubscribeEvent - public void onPlayerRenderPre(RenderPlayerEvent.Pre event) - { - EntityPlayer player = event.getEntityPlayer(); - AbstractClientPlayer aplayer = (AbstractClientPlayer) player; - ItemStack stack = player.getHeldItemMainhand(); - ModelPlayer model = event.getRenderer().getMainModel(); - EntityPlayerSP clientPlayer = Minecraft.getMinecraft().player; - - ResourceLocation skinLoc = DefaultPlayerSkin.getDefaultSkin(player.getPersistentID()); - - ModelRenderer fakeLeftArm = new ModelRenderer(model, 32, 48); - ModelRenderer fakeRightArm = new ModelRenderer(model, 40, 16); - - if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemEntity && ItemEntity.hasEntityData(stack)) - { - if (model.bipedBody.childModels != null && !model.bipedBody.childModels.isEmpty()) - model.bipedBody.childModels.clear(); - - model.bipedLeftArm.isHidden = true; - model.bipedRightArm.isHidden = true; - - Minecraft.getMinecraft().getTextureManager().bindTexture(skinLoc); - float rotation = -player.renderYawOffset; - if (aplayer.getSkinType().equals("default")) - { - fakeLeftArm.addBox(model.bipedLeftArm.offsetX + 4.2F, model.bipedLeftArm.offsetY, model.bipedLeftArm.offsetZ, 4, 12, 4, .08F); - } - else - { - fakeLeftArm.addBox(model.bipedLeftArm.offsetX + 4.2F, model.bipedLeftArm.offsetY, model.bipedLeftArm.offsetZ, 3, 12, 4, .08F); - } - - if (aplayer.getSkinType().equals("default")) - { - fakeRightArm.addBox(model.bipedRightArm.offsetX - 7.9F, model.bipedRightArm.offsetY, model.bipedRightArm.offsetZ, 4, 12, 4, .08F); - } - else - { - fakeRightArm.addBox(model.bipedRightArm.offsetX - 7.2F, model.bipedRightArm.offsetY, model.bipedRightArm.offsetZ, 3, 12, 4, .08F); - } - - if (!player.isSneaking()) - { - fakeRightArm.rotateAngleX = -1.2F; - fakeLeftArm.rotateAngleX = -1.2F; - } - else - { - fakeRightArm.rotateAngleX = -1.7F; - fakeLeftArm.rotateAngleX = -1.7F; - } - - fakeRightArm.rotateAngleY = -0.15f; - fakeLeftArm.rotateAngleY = 0.15f; - - model.bipedBody.addChild(fakeLeftArm); - model.bipedBody.addChild(fakeRightArm); - - } - else - { - model.bipedLeftArm.isHidden = false; - model.bipedRightArm.isHidden = false; - if (model.bipedBody.childModels != null && !model.bipedBody.childModels.isEmpty()) - { - model.bipedBody.childModels.clear(); - } - } - - if (stack.isEmpty() || stack.getItem() != RegistrationHandler.itemEntity || !ItemEntity.hasEntityData(stack)) - { - model.bipedLeftArm.isHidden = false; - model.bipedRightArm.isHidden = false; - } - - } - - @SideOnly(Side.CLIENT) - private static RenderPlayer getRenderPlayer(AbstractClientPlayer player) - { - Minecraft mc = Minecraft.getMinecraft(); - RenderManager manager = mc.getRenderManager(); - return manager.getSkinMap().get(player.getSkinType()); - } - - @SideOnly(Side.CLIENT) - private static ModelPlayer getPlayerModel(AbstractClientPlayer player) - { - return getRenderPlayer(player).getMainModel(); - } + } diff --git a/src/main/java/tschipp/carryon/client/event/RenderEvents.java b/src/main/java/tschipp/carryon/client/event/RenderEvents.java index b1a8b7c..3adf604 100644 --- a/src/main/java/tschipp/carryon/client/event/RenderEvents.java +++ b/src/main/java/tschipp/carryon/client/event/RenderEvents.java @@ -8,7 +8,6 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.entity.AbstractClientPlayer; import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.client.model.ModelBiped; import net.minecraft.client.model.ModelPlayer; import net.minecraft.client.model.ModelRenderer; import net.minecraft.client.renderer.GlStateManager; @@ -21,6 +20,7 @@ import net.minecraft.client.settings.KeyBinding; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumHand; @@ -38,6 +38,7 @@ import net.minecraftforge.fml.relauncher.SideOnly; import tschipp.carryon.common.config.CarryOnConfig; import tschipp.carryon.common.handler.ModelOverridesHandler; import tschipp.carryon.common.handler.RegistrationHandler; +import tschipp.carryon.common.item.ItemEntity; import tschipp.carryon.common.item.ItemTile; public class RenderEvents @@ -159,13 +160,16 @@ public class RenderEvents } else { - event.setCanceled(false); - Minecraft mc = Minecraft.getMinecraft(); - RenderManager manager = mc.getRenderManager(); - RenderPlayer renderPlayer = manager.getSkinMap().get(aplayer.getSkinType()); - ModelPlayer modelPlayer = renderPlayer.getMainModel(); - modelPlayer.bipedLeftArm.isHidden = false; - modelPlayer.bipedRightArm.isHidden = false; + if (stack.isEmpty() ? true : stack.getItem() != RegistrationHandler.itemEntity) + { + event.setCanceled(false); + Minecraft mc = Minecraft.getMinecraft(); + RenderManager manager = mc.getRenderManager(); + RenderPlayer renderPlayer = manager.getSkinMap().get(aplayer.getSkinType()); + ModelPlayer modelPlayer = renderPlayer.getMainModel(); + modelPlayer.bipedLeftArm.isHidden = false; + modelPlayer.bipedRightArm.isHidden = false; + } } } @@ -181,6 +185,7 @@ public class RenderEvents ModelPlayer modelPlayer = event.getRenderer().getMainModel(); EntityPlayerSP clientPlayer = Minecraft.getMinecraft().player; ItemStack stack = player.getHeldItemMainhand(); + float partialticks = event.getPartialRenderTick(); if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemTile && ItemTile.hasTileData(stack)) { Block block = ItemTile.getBlock(stack); @@ -196,9 +201,17 @@ public class RenderEvents float rotation = -player.renderYawOffset; int perspective = Minecraft.getMinecraft().gameSettings.thirdPersonView; - double xOffset = (double) player.posX - (double) clientPlayer.posX; - double yOffset = (double) player.posY - (double) clientPlayer.posY; - double zOffset = (double) player.posZ - (double) clientPlayer.posZ; + double d0 = player.lastTickPosX + (player.posX - player.lastTickPosX) * (double) partialticks; + double d1 = player.lastTickPosY + (player.posY - player.lastTickPosY) * (double) partialticks; + double d2 = player.lastTickPosZ + (player.posZ - player.lastTickPosZ) * (double) partialticks; + + double c0 = clientPlayer.lastTickPosX + (clientPlayer.posX - clientPlayer.lastTickPosX) * (double) partialticks; + double c1 = clientPlayer.lastTickPosY + (clientPlayer.posY - clientPlayer.lastTickPosY) * (double) partialticks; + double c2 = clientPlayer.lastTickPosZ + (clientPlayer.posZ - clientPlayer.lastTickPosZ) * (double) partialticks; + + double xOffset = d0 - c0; + double yOffset = d1 - c1; + double zOffset = d2 - c2; GlStateManager.pushMatrix(); GlStateManager.translate(xOffset, yOffset, zOffset); @@ -225,11 +238,7 @@ public class RenderEvents GlStateManager.popMatrix(); } - else - { - modelPlayer.bipedLeftArm.isHidden = false; - modelPlayer.bipedRightArm.isHidden = false; - } + } @@ -251,11 +260,13 @@ public class RenderEvents ModelRenderer fakeLeftArm = new ModelRenderer(model, 32, 48); ModelRenderer fakeRightArm = new ModelRenderer(model, 40, 16); - if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemTile && ItemTile.hasTileData(stack)) + if (!stack.isEmpty() && (stack.getItem() == RegistrationHandler.itemTile && ItemTile.hasTileData(stack)) || (stack.getItem() == RegistrationHandler.itemEntity && ItemEntity.hasEntityData(stack))) { if (model.bipedBody.childModels != null && !model.bipedBody.childModels.isEmpty()) model.bipedBody.childModels.clear(); + Item item = stack.getItem(); + model.bipedLeftArm.isHidden = true; model.bipedRightArm.isHidden = true; @@ -279,15 +290,35 @@ public class RenderEvents fakeRightArm.addBox(model.bipedRightArm.offsetX - 7.2F, model.bipedRightArm.offsetY, model.bipedRightArm.offsetZ, 3, 12, 4, .08F); } - if (!player.isSneaking()) + if (item == RegistrationHandler.itemTile) { - fakeRightArm.rotateAngleX = -.9F; - fakeLeftArm.rotateAngleX = -.9F; + if (!player.isSneaking()) + { + fakeRightArm.rotateAngleX = -.9F; + fakeLeftArm.rotateAngleX = -.9F; + } + else + { + fakeRightArm.rotateAngleX = -1.4F; + fakeLeftArm.rotateAngleX = -1.4F; + } } else { - fakeRightArm.rotateAngleX = -1.4F; - fakeLeftArm.rotateAngleX = -1.4F; + if (!player.isSneaking()) + { + fakeRightArm.rotateAngleX = -1.2F; + fakeLeftArm.rotateAngleX = -1.2F; + } + else + { + fakeRightArm.rotateAngleX = -1.7F; + fakeLeftArm.rotateAngleX = -1.7F; + } + + fakeRightArm.rotateAngleY = -0.15f; + fakeLeftArm.rotateAngleY = 0.15f; + } model.bipedBody.addChild(fakeLeftArm); model.bipedBody.addChild(fakeRightArm); @@ -303,7 +334,7 @@ public class RenderEvents } } - if (stack.isEmpty() || stack.getItem() != RegistrationHandler.itemTile || !ItemTile.hasTileData(stack)) + if (stack.isEmpty() || (stack.getItem() != RegistrationHandler.itemTile && stack.getItem() != RegistrationHandler.itemEntity)) { model.bipedLeftArm.isHidden = false; model.bipedRightArm.isHidden = false; diff --git a/src/main/java/tschipp/carryon/common/config/Configs.java b/src/main/java/tschipp/carryon/common/config/Configs.java index ce15060..8f58edb 100644 --- a/src/main/java/tschipp/carryon/common/config/Configs.java +++ b/src/main/java/tschipp/carryon/common/config/Configs.java @@ -46,7 +46,9 @@ public class Configs { public String[] forbiddenEntities = new String[] { "minecraft:ender_crystal", - "minecraft:ender_dragon" + "minecraft:ender_dragon", + "minecraft:ghast", + "minecraft:shulker" }; }