From 414da48403f7df634a738471a8a89a3f3bda1046 Mon Sep 17 00:00:00 2001 From: envizar <87126318+envizar@users.noreply.github.com> Date: Tue, 4 Nov 2025 22:02:00 +0300 Subject: [PATCH] fancynpcs: Add swing_arm_on_update option (#135) --- .../java/de/oliver/fancynpcs/api/FancyNpcsConfig.java | 2 ++ .../src/main/java/de/oliver/fancynpcs/api/Npc.java | 8 ++++---- .../java/de/oliver/fancynpcs/FancyNpcsConfigImpl.java | 11 +++++++++++ 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/plugins/fancynpcs/fn-api/src/main/java/de/oliver/fancynpcs/api/FancyNpcsConfig.java b/plugins/fancynpcs/fn-api/src/main/java/de/oliver/fancynpcs/api/FancyNpcsConfig.java index b3409cda..65f4cf2f 100644 --- a/plugins/fancynpcs/fn-api/src/main/java/de/oliver/fancynpcs/api/FancyNpcsConfig.java +++ b/plugins/fancynpcs/fn-api/src/main/java/de/oliver/fancynpcs/api/FancyNpcsConfig.java @@ -35,6 +35,8 @@ public interface FancyNpcsConfig { int getRemoveNpcsFromPlayerlistDelay(); + boolean isSwingArmOnUpdate(); + String getMineSkinApiKey(); List getBlockedCommands(); diff --git a/plugins/fancynpcs/fn-api/src/main/java/de/oliver/fancynpcs/api/Npc.java b/plugins/fancynpcs/fn-api/src/main/java/de/oliver/fancynpcs/api/Npc.java index 124fda95..8adb9f03 100644 --- a/plugins/fancynpcs/fn-api/src/main/java/de/oliver/fancynpcs/api/Npc.java +++ b/plugins/fancynpcs/fn-api/src/main/java/de/oliver/fancynpcs/api/Npc.java @@ -121,7 +121,7 @@ public abstract class Npc { public abstract void update(Player player, boolean swingArm); public void update(Player player) { - update(player, true); + update(player, FancyNpcsPlugin.get().getFancyNpcConfig().isSwingArmOnUpdate()); } public void updateForAll(boolean swingArm) { @@ -131,13 +131,13 @@ public abstract class Npc { } public void updateForAll() { - updateForAll(true); + updateForAll(FancyNpcsPlugin.get().getFancyNpcConfig().isSwingArmOnUpdate()); } public abstract void move(Player player, boolean swingArm); public void move(Player player) { - move(player, true); + move(player, FancyNpcsPlugin.get().getFancyNpcConfig().isSwingArmOnUpdate()); } public void moveForAll(boolean swingArm) { @@ -147,7 +147,7 @@ public abstract class Npc { } public void moveForAll() { - moveForAll(true); + moveForAll(FancyNpcsPlugin.get().getFancyNpcConfig().isSwingArmOnUpdate()); } public void interact(Player player) { diff --git a/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/FancyNpcsConfigImpl.java b/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/FancyNpcsConfigImpl.java index c96f0486..59fba3ed 100644 --- a/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/FancyNpcsConfigImpl.java +++ b/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/FancyNpcsConfigImpl.java @@ -78,6 +78,12 @@ public class FancyNpcsConfigImpl implements FancyNpcsConfig { */ private int removeNpcsFromPlayerlistDelay; + + /** + * Whether MPCs should swing arm on update. + */ + private boolean swingArmOnUpdate; + /** * The API key for the MineSkin API. */ @@ -139,6 +145,9 @@ public class FancyNpcsConfigImpl implements FancyNpcsConfig { removeNpcsFromPlayerlistDelay = (int) ConfigHelper.getOrDefault(config, "remove_npcs_from_playerlist_delay", 2000); config.setInlineComments("remove_npcs_from_playerlist_delay", List.of("The delay in milliseconds to remove NPCs from the player list. Increase this value if you have problems with skins not loading correctly when joining or switching worlds. You can set it to -1, if you don't have any npcs using the show_in_tab feature.")); + swingArmOnUpdate = (boolean) ConfigHelper.getOrDefault(config, "swing_arm_on_update", true); + config.setInlineComments("swing_arm_on_update", List.of("Whether NPCs should swing arm on update.")); + blockedCommands = (List) ConfigHelper.getOrDefault(config, "blocked_commands", Arrays.asList("op", "ban")); config.setInlineComments("blocked_commands", List.of("The commands that are blocked for NPCs in the message.")); @@ -231,6 +240,8 @@ public class FancyNpcsConfigImpl implements FancyNpcsConfig { return removeNpcsFromPlayerlistDelay; } + public boolean isSwingArmOnUpdate() { return swingArmOnUpdate; } + public String getMineSkinApiKey() { if (mineskinApiKey.isEmpty()) { return null;