diff --git a/src/main/java/noppes/npcs/EventHooks.java b/src/main/java/noppes/npcs/EventHooks.java index 7d0a3ef77..903768124 100644 --- a/src/main/java/noppes/npcs/EventHooks.java +++ b/src/main/java/noppes/npcs/EventHooks.java @@ -179,6 +179,15 @@ public class EventHooks { return NpcAPI.EVENT_BUS.post(event); } + public static boolean onNPCMeleeSwing(EntityNPCInterface npc, NpcEvent.SwingEvent event){ + if(npc == null || npc.wrappedNPC == null) + return false; + + ScriptController.Instance.globalNpcScripts.callScript(EnumScriptType.ATTACK_SWING, event); + npc.script.callScript(EnumScriptType.ATTACK_SWING, event); + return NpcAPI.EVENT_BUS.post(event); + } + public static boolean onNPCRangedAttack(EntityNPCInterface npc, NpcEvent.RangedLaunchedEvent event){ if(npc == null || npc.wrappedNPC == null) return false; diff --git a/src/main/java/noppes/npcs/client/gui/script/GuiNPCEventScripts.java b/src/main/java/noppes/npcs/client/gui/script/GuiNPCEventScripts.java index 10945bdd6..47560b2fa 100644 --- a/src/main/java/noppes/npcs/client/gui/script/GuiNPCEventScripts.java +++ b/src/main/java/noppes/npcs/client/gui/script/GuiNPCEventScripts.java @@ -23,6 +23,7 @@ public class GuiNPCEventScripts extends GuiScriptInterface { hookList.add("damaged"); hookList.add("killed"); hookList.add("meleeAttack"); + hookList.add("meleeSwing"); hookList.add("rangedLaunched"); hookList.add("target"); hookList.add("collide"); diff --git a/src/main/java/noppes/npcs/constants/EnumScriptType.java b/src/main/java/noppes/npcs/constants/EnumScriptType.java index 58e1bb0bd..cdaf3db88 100644 --- a/src/main/java/noppes/npcs/constants/EnumScriptType.java +++ b/src/main/java/noppes/npcs/constants/EnumScriptType.java @@ -19,6 +19,7 @@ public enum EnumScriptType { ATTACKED("attacked"), ATTACK_MELEE("meleeAttack"), + ATTACK_SWING("meleeSwing"), ROLE("role"), RANGED_CHARGE("rangedCharge"), RANGED_LAUNCHED("rangedLaunched"), diff --git a/src/main/java/noppes/npcs/scripted/event/NpcEvent.java b/src/main/java/noppes/npcs/scripted/event/NpcEvent.java index fe9ee47c7..a4f17b1c0 100644 --- a/src/main/java/noppes/npcs/scripted/event/NpcEvent.java +++ b/src/main/java/noppes/npcs/scripted/event/NpcEvent.java @@ -226,6 +226,28 @@ public class NpcEvent extends CustomNPCsEvent implements INpcEvent { } } + @Cancelable + public static class SwingEvent extends NpcEvent implements INpcEvent.SwingEvent { + public final IItemStack itemStack; + + public SwingEvent(ICustomNpc npc, ItemStack itemStack) { + super(npc); + this.itemStack = (IItemStack)NpcAPI.Instance().getIItemStack(itemStack); + } + + public String getHookName() { + return EnumScriptType.ATTACK_SWING.function; + } + + /** + * @return Returns the swung item + */ + @Override + public IItemStack getItemStack() { + return itemStack; + } + } + public static class KilledEntityEvent extends NpcEvent implements INpcEvent.KilledEntityEvent { public final IEntityLivingBase entity;