From 1fad51fdeb2de178b08f08f701d65f56ee6589ce Mon Sep 17 00:00:00 2001 From: timderspieler Date: Thu, 21 Dec 2023 13:27:47 +0100 Subject: [PATCH 1/3] Fix java.lang.invoke.WrongMethodTypeException: Fixed a WrongMethodTypeException thrown when the chest open animation method has been called. --- src/main/java/com/cryptomorin/xseries/NMSExtras.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/cryptomorin/xseries/NMSExtras.java b/src/main/java/com/cryptomorin/xseries/NMSExtras.java index 0163d879..14c91936 100644 --- a/src/main/java/com/cryptomorin/xseries/NMSExtras.java +++ b/src/main/java/com/cryptomorin/xseries/NMSExtras.java @@ -558,7 +558,7 @@ public static void chest(Block chest, boolean open) { Location location = chest.getLocation(); try { Object world = WORLD_HANDLE.invoke(location.getWorld()); - Object position = BLOCK_POSITION.invoke(location.getX(), location.getY(), location.getZ()); + Object position = BLOCK_POSITION.invoke(location.getBlockX(), location.getBlockY(), location.getBlockZ()); Object block = GET_BLOCK.invoke(GET_BLOCK_TYPE.invoke(world, position)); PLAY_BLOCK_ACTION.invoke(world, position, block, 1, open ? 1 : 0); } catch (Throwable throwable) { From cc8ff33a5b8bdefbb863d54fca5a28f8ee8dc91d Mon Sep 17 00:00:00 2001 From: timderspieler Date: Thu, 21 Dec 2023 17:55:00 +0100 Subject: [PATCH 2/3] Add backwards compatibility --- src/main/java/com/cryptomorin/xseries/NMSExtras.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/cryptomorin/xseries/NMSExtras.java b/src/main/java/com/cryptomorin/xseries/NMSExtras.java index 14c91936..d08f6b83 100644 --- a/src/main/java/com/cryptomorin/xseries/NMSExtras.java +++ b/src/main/java/com/cryptomorin/xseries/NMSExtras.java @@ -558,7 +558,8 @@ public static void chest(Block chest, boolean open) { Location location = chest.getLocation(); try { Object world = WORLD_HANDLE.invoke(location.getWorld()); - Object position = BLOCK_POSITION.invoke(location.getBlockX(), location.getBlockY(), location.getBlockZ()); + Object position = v(19, BLOCK_POSITION.invoke(location.getBlockX(), location.getBlockY(), location.getBlockZ())) + .orElse(BLOCK_POSITION.invoke(location.getX(), location.getY(), location.getZ())); Object block = GET_BLOCK.invoke(GET_BLOCK_TYPE.invoke(world, position)); PLAY_BLOCK_ACTION.invoke(world, position, block, 1, open ? 1 : 0); } catch (Throwable throwable) { From b26957fee0cdc54885255dcbed4e4512c7d7a784 Mon Sep 17 00:00:00 2001 From: timderspieler Date: Sat, 23 Dec 2023 14:22:32 +0100 Subject: [PATCH 3/3] Update NMSExtras.java --- .../com/cryptomorin/xseries/NMSExtras.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/cryptomorin/xseries/NMSExtras.java b/src/main/java/com/cryptomorin/xseries/NMSExtras.java index d08f6b83..08692ab1 100644 --- a/src/main/java/com/cryptomorin/xseries/NMSExtras.java +++ b/src/main/java/com/cryptomorin/xseries/NMSExtras.java @@ -558,8 +558,23 @@ public static void chest(Block chest, boolean open) { Location location = chest.getLocation(); try { Object world = WORLD_HANDLE.invoke(location.getWorld()); - Object position = v(19, BLOCK_POSITION.invoke(location.getBlockX(), location.getBlockY(), location.getBlockZ())) - .orElse(BLOCK_POSITION.invoke(location.getX(), location.getY(), location.getZ())); + Object position = v(19, + () -> + { + try { + return BLOCK_POSITION.invoke(location.getBlockX(), location.getBlockY(), location.getBlockZ()); + } catch (Throwable e) { + throw new RuntimeException(e); + } + }).orElse( + () -> + { + try { + return BLOCK_POSITION.invoke(location.getX(), location.getY(), location.getZ()); + } catch (Throwable e) { + throw new RuntimeException(e); + } + }); Object block = GET_BLOCK.invoke(GET_BLOCK_TYPE.invoke(world, position)); PLAY_BLOCK_ACTION.invoke(world, position, block, 1, open ? 1 : 0); } catch (Throwable throwable) {