From 3495179f0e7dcefa4e5a0588768c41b224f73834 Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+Alexdoru@users.noreply.github.com> Date: Sun, 8 Jun 2025 21:33:12 +0200 Subject: [PATCH 1/4] account for client /server desync when teleporting items with magnet --- .../com/glodblock/github/inventory/item/WirelessMagnet.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/glodblock/github/inventory/item/WirelessMagnet.java b/src/main/java/com/glodblock/github/inventory/item/WirelessMagnet.java index bf35550e..f88c4d0f 100644 --- a/src/main/java/com/glodblock/github/inventory/item/WirelessMagnet.java +++ b/src/main/java/com/glodblock/github/inventory/item/WirelessMagnet.java @@ -62,7 +62,6 @@ public class WirelessMagnet { public static void doMagnet(ItemStack wirelessTerm, EntityPlayer player) { if (player.ticksExisted % 5 != 0 || player.isSneaking() || !isConfigured(wirelessTerm)) return; - World world = player.worldObj; final List items = getEntitiesInRange( EntityItem.class, @@ -91,9 +90,12 @@ public class WirelessMagnet { itemToGet.motionX = 0; itemToGet.motionY = 0; itemToGet.motionZ = 0; + // account for the server/client desync + double playerEyesPos = player.posY + + (world.isRemote ? player.getEyeHeight() - player.getDefaultEyeHeight() : player.getEyeHeight()); itemToGet.setPosition( player.posX - 0.2 + (world.rand.nextDouble() * 0.4), - player.posY - 0.6, + playerEyesPos - 0.62, player.posZ - 0.2 + (world.rand.nextDouble() * 0.4)); } From e6b9d1a6c2a04a045b06c53f7ecaa458d69f5dfa Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+Alexdoru@users.noreply.github.com> Date: Sun, 8 Jun 2025 21:54:08 +0200 Subject: [PATCH 2/4] add comment --- .../com/glodblock/github/inventory/item/WirelessMagnet.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/com/glodblock/github/inventory/item/WirelessMagnet.java b/src/main/java/com/glodblock/github/inventory/item/WirelessMagnet.java index f88c4d0f..0678e423 100644 --- a/src/main/java/com/glodblock/github/inventory/item/WirelessMagnet.java +++ b/src/main/java/com/glodblock/github/inventory/item/WirelessMagnet.java @@ -60,6 +60,8 @@ public class WirelessMagnet { return data.hasKey(modeKey); } + // This method uses the same algorithm as the magnet from draconic evolution + // if changes are ever made, they should be made on both public static void doMagnet(ItemStack wirelessTerm, EntityPlayer player) { if (player.ticksExisted % 5 != 0 || player.isSneaking() || !isConfigured(wirelessTerm)) return; World world = player.worldObj; From 6af0b04be1cdf51ce78e504748f17728cfbdfe25 Mon Sep 17 00:00:00 2001 From: Alexdoru <57050655+Alexdoru@users.noreply.github.com> Date: Mon, 9 Jun 2025 22:40:09 +0200 Subject: [PATCH 3/4] move constant computation out of the loop --- .../com/glodblock/github/inventory/item/WirelessMagnet.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/glodblock/github/inventory/item/WirelessMagnet.java b/src/main/java/com/glodblock/github/inventory/item/WirelessMagnet.java index 0678e423..4560519d 100644 --- a/src/main/java/com/glodblock/github/inventory/item/WirelessMagnet.java +++ b/src/main/java/com/glodblock/github/inventory/item/WirelessMagnet.java @@ -74,6 +74,9 @@ public class WirelessMagnet { magnetRange); final boolean skipPlayerCheck = world.playerEntities.size() < 2; boolean playSound = false; + // account for the server/client desync + double playerEyesPos = player.posY + + (world.isRemote ? player.getEyeHeight() - player.getDefaultEyeHeight() : player.getEyeHeight()); for (EntityItem itemToGet : items) { if (itemToGet.getEntityItem() == null || itemToGet instanceof EntityFloatingItem) { @@ -92,9 +95,6 @@ public class WirelessMagnet { itemToGet.motionX = 0; itemToGet.motionY = 0; itemToGet.motionZ = 0; - // account for the server/client desync - double playerEyesPos = player.posY - + (world.isRemote ? player.getEyeHeight() - player.getDefaultEyeHeight() : player.getEyeHeight()); itemToGet.setPosition( player.posX - 0.2 + (world.rand.nextDouble() * 0.4), playerEyesPos - 0.62, From b6051699c701ec8b7d166fe868f754d704240a4e Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 9 Jun 2025 22:43:18 +0200 Subject: [PATCH 4/4] Spotless apply for branch magnet for #305 (#307) Co-authored-by: GitHub GTNH Actions <> --- .../com/glodblock/github/inventory/item/WirelessMagnet.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/glodblock/github/inventory/item/WirelessMagnet.java b/src/main/java/com/glodblock/github/inventory/item/WirelessMagnet.java index 4560519d..f4ea1de2 100644 --- a/src/main/java/com/glodblock/github/inventory/item/WirelessMagnet.java +++ b/src/main/java/com/glodblock/github/inventory/item/WirelessMagnet.java @@ -76,7 +76,7 @@ public class WirelessMagnet { boolean playSound = false; // account for the server/client desync double playerEyesPos = player.posY - + (world.isRemote ? player.getEyeHeight() - player.getDefaultEyeHeight() : player.getEyeHeight()); + + (world.isRemote ? player.getEyeHeight() - player.getDefaultEyeHeight() : player.getEyeHeight()); for (EntityItem itemToGet : items) { if (itemToGet.getEntityItem() == null || itemToGet instanceof EntityFloatingItem) {