From b27e4a0f038b5923c754292458eca630d26e9eee Mon Sep 17 00:00:00 2001 From: Integer Limit <103940576+IntegerLimit@users.noreply.github.com> Date: Fri, 24 Jan 2025 23:25:36 +0800 Subject: [PATCH] Properly Fix FTB Utils Related Crashes --- .../ftbutilities/CanEditChunkDataMessageHelper.java | 3 +-- .../FTBUtilitiesPlayerEventHandlerMixin.java | 13 +++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/nomiceu/nomilabs/integration/ftbutilities/CanEditChunkDataMessageHelper.java b/src/main/java/com/nomiceu/nomilabs/integration/ftbutilities/CanEditChunkDataMessageHelper.java index 198b6ca8..5b3dbfae 100644 --- a/src/main/java/com/nomiceu/nomilabs/integration/ftbutilities/CanEditChunkDataMessageHelper.java +++ b/src/main/java/com/nomiceu/nomilabs/integration/ftbutilities/CanEditChunkDataMessageHelper.java @@ -58,7 +58,7 @@ public static void sendMessage(EntityPlayerMP player) { /** * Reflection to see whether a chunk is editable by the player. * Equal to `getChunk(new ChunkDimPos(posX, posZ, dim)).getTeam().hasStatus(instance.universe.getPlayer(player), - * chunk.getData().getAttackEntitiesStatus())` + * chunk.getData().getEditBlocksStatus())` */ private static boolean playerCanEdit(int posX, int posZ, int dim, EntityPlayerMP player) { var chunk = getChunk(posX, posZ, dim); @@ -155,7 +155,6 @@ private static ClaimedChunk getChunk(int posX, int posZ, int dim) { var claimedChunksClass = Class.forName("com.feed_the_beast.ftbutilities.data.ClaimedChunks"); var getChunkMethod = claimedChunksClass.getDeclaredMethod("getChunk", chunkDimPosClass); - // noinspection JavaReflectionInvocation return (ClaimedChunk) getChunkMethod.invoke(instance, chunkDimPosClass.cast(obj)); } catch (ClassNotFoundException | NoSuchMethodException | InvocationTargetException | IllegalAccessException | InstantiationException e) { diff --git a/src/main/java/com/nomiceu/nomilabs/mixin/ftbutilities/FTBUtilitiesPlayerEventHandlerMixin.java b/src/main/java/com/nomiceu/nomilabs/mixin/ftbutilities/FTBUtilitiesPlayerEventHandlerMixin.java index 62232f98..21a0e68d 100644 --- a/src/main/java/com/nomiceu/nomilabs/mixin/ftbutilities/FTBUtilitiesPlayerEventHandlerMixin.java +++ b/src/main/java/com/nomiceu/nomilabs/mixin/ftbutilities/FTBUtilitiesPlayerEventHandlerMixin.java @@ -25,7 +25,7 @@ public class FTBUtilitiesPlayerEventHandlerMixin { @Unique - private static boolean cancelledMainHandPlace = false; + private static boolean labs$cancelledMainHand = false; /* New Logic */ @@ -34,13 +34,14 @@ public class FTBUtilitiesPlayerEventHandlerMixin { private static void handleAndCancelPlace(PlayerInteractEvent.RightClickBlock event, CallbackInfo ci) { var stack = event.getEntityPlayer().getHeldItem(event.getHand()); var item = stack.getItem(); + var world = event.getWorld(); var pos = event.getPos(); if (event.getHand() == EnumHand.MAIN_HAND) - cancelledMainHandPlace = false; + labs$cancelledMainHand = false; // Off Hand is always called after main hand - else if (event.getHand() == EnumHand.OFF_HAND && cancelledMainHandPlace) { - cancelledMainHandPlace = false; + else if (event.getHand() == EnumHand.OFF_HAND && labs$cancelledMainHand) { + labs$cancelledMainHand = false; event.setCanceled(true); ci.cancel(); return; @@ -50,7 +51,7 @@ else if (event.getHand() == EnumHand.OFF_HAND && cancelledMainHandPlace) { return; // Offset Pos if Needed - if (event.getFace() != null && !itemBlock.getBlock().isReplaceable(event.getWorld(), pos)) + if (event.getFace() != null && !world.getBlockState(pos).getBlock().isReplaceable(world, pos)) pos = pos.offset(event.getFace()); if (!CanEditChunkHelper.cannotEditChunk(event.getEntityPlayer(), @@ -58,7 +59,7 @@ else if (event.getHand() == EnumHand.OFF_HAND && cancelledMainHandPlace) { return; event.setCanceled(true); - cancelledMainHandPlace = true; + labs$cancelledMainHand = true; if (!event.getWorld().isRemote) DisplayGameOverlayMessageHelper.sendMessageOrDisplay(event.getEntityPlayer(),