From d5affb3a5aacb14d4fb9d422b6cc2b1638250bb0 Mon Sep 17 00:00:00 2001 From: Tschipp Date: Sat, 12 Aug 2017 21:30:03 +0200 Subject: [PATCH] Multiplayer Bugfixes --- .../carryon/client/event/RenderEvents.java | 64 +++++++++++-------- .../carryon/common/event/ItemEvents.java | 3 +- .../common/handler/RegistrationHandler.java | 1 + 3 files changed, 42 insertions(+), 26 deletions(-) diff --git a/src/main/java/tschipp/carryon/client/event/RenderEvents.java b/src/main/java/tschipp/carryon/client/event/RenderEvents.java index e56313f..db0520f 100644 --- a/src/main/java/tschipp/carryon/client/event/RenderEvents.java +++ b/src/main/java/tschipp/carryon/client/event/RenderEvents.java @@ -6,6 +6,7 @@ import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; 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.ModelRenderer; @@ -31,7 +32,6 @@ import net.minecraftforge.client.event.RenderHandEvent; import net.minecraftforge.client.event.RenderPlayerEvent; import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; import net.minecraftforge.fml.common.gameevent.InputEvent; -import net.minecraftforge.fml.relauncher.ReflectionHelper; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import tschipp.carryon.common.config.CarryOnConfig; @@ -76,8 +76,8 @@ public class RenderEvents ItemStack stack = player.getHeldItem(EnumHand.MAIN_HAND); if (inventory && !stack.isEmpty() && stack.getItem() == RegistrationHandler.itemTile && ItemTile.hasTileData(stack)) { - event.setCanceled(true); - Minecraft.getMinecraft().currentScreen = null; + event.setCanceled(true); + Minecraft.getMinecraft().currentScreen = null; } } } @@ -124,7 +124,7 @@ public class RenderEvents World world = Minecraft.getMinecraft().world; EntityPlayer player = Minecraft.getMinecraft().player; ItemStack stack = player.getHeldItemMainhand(); - int pass = event.getRenderPass(); + if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemTile && ItemTile.hasTileData(stack)) { Block block = ItemTile.getBlock(stack); @@ -154,8 +154,11 @@ public class RenderEvents GlStateManager.scale(1, 1, 1); GlStateManager.popMatrix(); - event.setCanceled(true); + if (perspective == 0) + event.setCanceled(true); } + else + event.setCanceled(false); } /* @@ -166,7 +169,8 @@ public class RenderEvents public void onPlayerRenderPost(RenderPlayerEvent.Post event) { World world = Minecraft.getMinecraft().world; - EntityPlayer player = Minecraft.getMinecraft().player; + EntityPlayer player = event.getEntityPlayer(); + EntityPlayerSP clientPlayer = Minecraft.getMinecraft().player; ItemStack stack = player.getHeldItemMainhand(); if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemTile && ItemTile.hasTileData(stack)) { @@ -183,7 +187,12 @@ 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; + GlStateManager.pushMatrix(); + GlStateManager.translate(xOffset, yOffset, zOffset); GlStateManager.scale(0.6, 0.6, 0.6); if (CarryOnConfig.settings.facePlayer ? !isChest(block) : isChest(block)) @@ -216,35 +225,40 @@ public class RenderEvents @SubscribeEvent public void onPlayerRenderPre(RenderPlayerEvent.Pre event) { - EntityPlayer player = Minecraft.getMinecraft().player; - AbstractClientPlayer aplayer = Minecraft.getMinecraft().player; + EntityPlayer player = event.getEntityPlayer(); + AbstractClientPlayer aplayer = (AbstractClientPlayer) player; ItemStack stack = player.getHeldItemMainhand(); - RenderPlayer renderer = event.getRenderer(); - ModelBiped model = getPlayerModel(aplayer); - + ModelBiped model = event.getRenderer().getMainModel(); + EntityPlayerSP clientPlayer = Minecraft.getMinecraft().player; + ResourceLocation skinLoc = DefaultPlayerSkin.getDefaultSkin(player.getPersistentID()); if (!stack.isEmpty() && stack.getItem() == RegistrationHandler.itemTile && ItemTile.hasTileData(stack)) - { + { model.bipedLeftArm.isHidden = true; model.bipedRightArm.isHidden = true; - + Minecraft.getMinecraft().getTextureManager().bindTexture(skinLoc); - RenderPlayer renderPlayer = (RenderPlayer)renderer; float rotation = -player.renderYawOffset; ModelRenderer fakeLeftArm = new ModelRenderer(model, 40, 16); fakeLeftArm.mirror = true; - if (aplayer.getSkinType().equals("default")) { + if (aplayer.getSkinType().equals("default")) + { fakeLeftArm.addBox(model.bipedLeftArm.offsetX + 4.2F, model.bipedLeftArm.offsetY, model.bipedLeftArm.offsetZ, 4, 12, 4, .08F); - } else { + } + else + { fakeLeftArm.addBox(model.bipedLeftArm.offsetX + 4.2F, model.bipedLeftArm.offsetY, model.bipedLeftArm.offsetZ, 3, 12, 4, .08F); } ModelRenderer fakeRightArm = new ModelRenderer(model, 40, 16); fakeRightArm.mirror = true; - if (aplayer.getSkinType().equals("default")) { + if (aplayer.getSkinType().equals("default")) + { fakeRightArm.addBox(model.bipedRightArm.offsetX - 7.9F, model.bipedRightArm.offsetY, model.bipedRightArm.offsetZ, 4, 12, 4, .08F); - } else { + } + else + { fakeRightArm.addBox(model.bipedRightArm.offsetX - 7.2F, model.bipedRightArm.offsetY, model.bipedRightArm.offsetZ, 3, 12, 4, .08F); } @@ -252,21 +266,21 @@ public class RenderEvents fakeLeftArm.rotateAngleX = -.9F; model.bipedBody.addChild(fakeLeftArm); model.bipedBody.addChild(fakeRightArm); - - } else { + + } + else + { model.bipedLeftArm.isHidden = false; model.bipedRightArm.isHidden = false; - if (model.bipedBody.childModels != null && !model.bipedBody.childModels.isEmpty()) { + if (model.bipedBody.childModels != null && !model.bipedBody.childModels.isEmpty()) + { model.bipedBody.childModels.clear(); - model.bipedBody.childModels.add(model.bipedLeftArm); - model.bipedBody.childModels.add(model.bipedRightArm); - } } } - private boolean isChest(Block block) + public static boolean isChest(Block block) { return block == Blocks.CHEST || block == Blocks.ENDER_CHEST || block == Blocks.TRAPPED_CHEST; } diff --git a/src/main/java/tschipp/carryon/common/event/ItemEvents.java b/src/main/java/tschipp/carryon/common/event/ItemEvents.java index 0303f99..f119d98 100644 --- a/src/main/java/tschipp/carryon/common/event/ItemEvents.java +++ b/src/main/java/tschipp/carryon/common/event/ItemEvents.java @@ -13,6 +13,7 @@ import net.minecraft.util.EnumHand; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.event.entity.EntityJoinWorldEvent; +import net.minecraftforge.event.entity.player.PlayerEvent.StartTracking; import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.fml.common.eventhandler.Event.Result; import net.minecraftforge.fml.common.eventhandler.EventPriority; @@ -23,7 +24,7 @@ import tschipp.carryon.common.item.ItemTile; public class ItemEvents { - + @SubscribeEvent(priority = EventPriority.HIGH) public void onBlockClick(PlayerInteractEvent.RightClickBlock event) { diff --git a/src/main/java/tschipp/carryon/common/handler/RegistrationHandler.java b/src/main/java/tschipp/carryon/common/handler/RegistrationHandler.java index 2a4984d..c920ffc 100644 --- a/src/main/java/tschipp/carryon/common/handler/RegistrationHandler.java +++ b/src/main/java/tschipp/carryon/common/handler/RegistrationHandler.java @@ -37,5 +37,6 @@ public class RegistrationHandler { ModelOverridesHandler.initOverrides(); } + }