Posted March 31, 201510 yr So I'm trying to find the block the player is looking at by using the EntityPlayer.rayTrace(double, float) method, and it seems to return a different ray trace depending on whether it's being called on the client or server. It works correctly on the client, but on the server, it thinks I'm looking straight down. Client: http://puu.sh/gWO66/d2ee1e3688.png Server: http://puu.sh/gWOcj/3625eafa4c.png Minecraft w/ F3 Info: http://puu.sh/gWOgI/367deb30a9.png Code: @Override public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player) { if (player.isSneaking()) { MovingObjectPosition rayTrace = player.rayTrace(6, 1.0f); if (rayTrace == null || !(world.getBlock(rayTrace.blockX, rayTrace.blockY, rayTrace.blockZ) instanceof BlockQuarry)) { if (itemStack.getItemDamage() >= 2) { itemStack.setItemDamage(0); } else { itemStack.setItemDamage(itemStack.getItemDamage() + 1); } Utils.sendPlayerChatMessage_debug(player, "META: " + itemStack.getItemDamage()); } } return itemStack; }
March 31, 201510 yr Author This is a bug in Minecraft which is (finally) fixed in 1.8, the server references entities origin, the client references them by their eye position. You can fix this by adding the eye-height on the server. Damn you're fast. How would I go about creating a Vec3 with the eye height changed? EDIT: Never mind. I'll just use packets.
April 3, 201510 yr Author Okay, this is freaking weird. Now the correct eye height exists on the server, and not on the client. Client: http://puu.sh/gZIhO/253a7906fa.png Server: http://puu.sh/gZIkY/7a37f2b4a4.png What am I doing wrong?
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.