From 307a029995b69554c3d2c163a9ec0ab7aa295b2d Mon Sep 17 00:00:00 2001 From: Kam Date: Tue, 3 Mar 2026 22:31:32 -0500 Subject: [PATCH] Fix Script Ability System on Create not Available --- .../packets/request/script/AbilityScriptPacket.java | 12 ++++++++++-- .../request/script/ChainedAbilityScriptPacket.java | 12 ++++++++++-- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/main/java/kamkeel/npcs/network/packets/request/script/AbilityScriptPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/script/AbilityScriptPacket.java index eceb04286..ada1989c3 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/script/AbilityScriptPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/script/AbilityScriptPacket.java @@ -88,9 +88,17 @@ public final class AbilityScriptPacket extends AbstractPacket { Ability ability = AbilityController.Instance.resolveAbility(id); if (ability == null) { - // Ability not yet saved — send default empty script data so the GUI is usable + // Ability not yet saved — store handler in global map so scripts persist + // until the ability is saved via CustomAbilitySavePacket + AbilityScript data = AbilityController.Instance.abilityScriptHandlers.get(id); + if (data == null) { + data = new AbilityScript(id); + AbilityController.Instance.abilityScriptHandlers.put(id, data); + } if (requestedAction == Action.GET) { - PacketUtil.getScripts((IScriptHandler) new AbilityScript(id), (EntityPlayerMP) player); + PacketUtil.getScripts((IScriptHandler) data, (EntityPlayerMP) player); + } else { + data.saveScript(in, player); } return; } diff --git a/src/main/java/kamkeel/npcs/network/packets/request/script/ChainedAbilityScriptPacket.java b/src/main/java/kamkeel/npcs/network/packets/request/script/ChainedAbilityScriptPacket.java index a8c455207..99142681d 100644 --- a/src/main/java/kamkeel/npcs/network/packets/request/script/ChainedAbilityScriptPacket.java +++ b/src/main/java/kamkeel/npcs/network/packets/request/script/ChainedAbilityScriptPacket.java @@ -88,9 +88,17 @@ public final class ChainedAbilityScriptPacket extends AbstractPacket { ChainedAbility chain = AbilityController.Instance.resolveChainedAbility(id); if (chain == null) { - // Chain not yet saved — send default empty script data so the GUI is usable + // Chain not yet saved — store handler in global map so scripts persist + // until the chain is saved via ChainedAbilitySavePacket + ChainedAbilityScript data = AbilityController.Instance.chainedAbilityScriptHandlers.get(id); + if (data == null) { + data = new ChainedAbilityScript(id); + AbilityController.Instance.chainedAbilityScriptHandlers.put(id, data); + } if (requestedAction == Action.GET) { - PacketUtil.getScripts((IScriptHandler) new ChainedAbilityScript(id), (EntityPlayerMP) player); + PacketUtil.getScripts((IScriptHandler) data, (EntityPlayerMP) player); + } else { + data.saveScript(in, player); } return; }