From 1c78ffdfe5410c6251505e68e6c12da1fc0dfd27 Mon Sep 17 00:00:00 2001 From: Greg <35405919+xicxen@users.noreply.github.com> Date: Sat, 30 Mar 2024 03:49:03 -0400 Subject: [PATCH 1/3] ProjectKorra Bridge initial commit. --- pom.xml | 7 ++ .../depenizen/bukkit/Depenizen.java | 1 + .../bukkit/bridges/ProjectKorraBridge.java | 22 +++++ .../EntityBendingDeathScriptEvent.java | 79 ++++++++++++++++++ .../PlayerAbilityDamageEntityScriptEvent.java | 83 +++++++++++++++++++ .../PlayerAbilityEndScriptEvent.java | 80 ++++++++++++++++++ .../PlayerAbilityProgressScriptEvent.java | 80 ++++++++++++++++++ .../PlayerAbilityStartScriptEvent.java | 80 ++++++++++++++++++ src/main/resources/plugin.yml | 1 + 9 files changed, 433 insertions(+) create mode 100644 src/main/java/com/denizenscript/depenizen/bukkit/bridges/ProjectKorraBridge.java create mode 100644 src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/EntityBendingDeathScriptEvent.java create mode 100644 src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityDamageEntityScriptEvent.java create mode 100644 src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityEndScriptEvent.java create mode 100644 src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityProgressScriptEvent.java create mode 100644 src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityStartScriptEvent.java diff --git a/pom.xml b/pom.xml index b16b75a55..c6833dd7c 100644 --- a/pom.xml +++ b/pom.xml @@ -254,6 +254,13 @@ system ${project.basedir}/lib/PlotSquared.jar + + com.github.ProjectKorra + ProjectKorra + 1.11.2 + system + ${project.basedir}/lib/ProjectKorra.jar + net.slipcor pvparena diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/Depenizen.java b/src/main/java/com/denizenscript/depenizen/bukkit/Depenizen.java index 37ae8caea..4f81c1abb 100644 --- a/src/main/java/com/denizenscript/depenizen/bukkit/Depenizen.java +++ b/src/main/java/com/denizenscript/depenizen/bukkit/Depenizen.java @@ -130,6 +130,7 @@ public void registerCoreBridges() { registerBridge("PlaceholderAPI", () -> new PlaceholderAPIBridge()); registerBridge("PlayerPoints", () -> new PlayerPointsBridge()); registerBridge("PlotSquared", () -> new PlotSquaredBridge()); + registerBridge("ProjectKorra", () -> new ProjectKorraBridge()); registerBridge("PVPArena", () -> new PVPArenaBridge()); registerBridge("PVPStats", () -> new PVPStatsBridge()); registerBridge("Quests", () -> new QuestsBridge()); diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/bridges/ProjectKorraBridge.java b/src/main/java/com/denizenscript/depenizen/bukkit/bridges/ProjectKorraBridge.java new file mode 100644 index 000000000..ef03e83d5 --- /dev/null +++ b/src/main/java/com/denizenscript/depenizen/bukkit/bridges/ProjectKorraBridge.java @@ -0,0 +1,22 @@ +package com.denizenscript.depenizen.bukkit.bridges; + +import com.denizenscript.denizencore.events.ScriptEvent; +import com.denizenscript.denizencore.utilities.debugging.Debug; +import com.denizenscript.depenizen.bukkit.Bridge; +import com.denizenscript.depenizen.bukkit.events.projectkorra.*; + +public class ProjectKorraBridge extends Bridge { + + @Override + public void init() { + if (!plugin.isEnabled()) { + Debug.log("ProjectKorra plugin is not enabled or not present. ProjectKorra events will not be available."); + return; + } + ScriptEvent.registerScriptEvent(EntityBendingDeathScriptEvent.class); + ScriptEvent.registerScriptEvent(PlayerAbilityDamageEntityScriptEvent.class); + ScriptEvent.registerScriptEvent(PlayerAbilityEndScriptEvent.class); + ScriptEvent.registerScriptEvent(PlayerAbilityProgressScriptEvent.class); + ScriptEvent.registerScriptEvent(PlayerAbilityStartScriptEvent.class); + } +} diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/EntityBendingDeathScriptEvent.java b/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/EntityBendingDeathScriptEvent.java new file mode 100644 index 000000000..a01a711b4 --- /dev/null +++ b/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/EntityBendingDeathScriptEvent.java @@ -0,0 +1,79 @@ +package com.denizenscript.depenizen.bukkit.events.projectkorra; + +import com.denizenscript.denizen.events.BukkitScriptEvent; +import com.denizenscript.denizen.objects.EntityTag; +import com.denizenscript.denizen.objects.PlayerTag; +import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData; +import com.denizenscript.denizencore.objects.ObjectTag; +import com.denizenscript.denizencore.objects.core.ElementTag; +import com.denizenscript.denizencore.scripts.ScriptEntryData; +import com.projectkorra.projectkorra.event.EntityBendingDeathEvent; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; + +public class EntityBendingDeathScriptEvent extends BukkitScriptEvent implements Listener { + + // <--[event] + // @Events + // projectkorra player|entity dies|death|killed by + // + // @Triggers when an entity dies from bending. + // + // @Context + // returns ElementTag(String) of the ability's name. + // returns PlayerTag of the player who triggered the ability. + // returns EntityTag of the target damaged by the ability. + // returns ElementTag(Decimal) of the damage dealt to the entity. + // returns ElementTag(String) ability's element. + // returns ElementTag(Boolean) if the ability is explosive. + // returns ElementTag(Boolean) if the ability can ignite. + // returns ElementTag(Boolean) if the ability is triggered by sneak. + // + // @Plugin Depenizen, ProjectKorra + // + // @Player Always. + // + // --> + + public EntityBendingDeathScriptEvent() { + registerCouldMatcher("projectkorra player|entity dies|death|killed by <'ability'>"); + } + + public EntityBendingDeathEvent event; + + @Override + public boolean matches(ScriptPath path) { + String ability = path.eventArgLowerAt(4); + // Check if event applies to any ability + if (!ability.equals("ability") && !ability.equalsIgnoreCase(event.getAbility().getName())) { + return false; + } + return super.matches(path); + } + + @Override + public ScriptEntryData getScriptEntryData() { + return new BukkitScriptEntryData(PlayerTag.mirrorBukkitPlayer(event.getAbility().getPlayer()), null); + } + + @Override + public ObjectTag getContext(String name) { + return switch (name) { + case "ability" -> new ElementTag(event.getAbility().getName()); + case "source" -> new PlayerTag(event.getAttacker()); + case "target" -> new EntityTag(event.getEntity()); + case "damage" -> new ElementTag(event.getDamage()); + case "element" -> new ElementTag(event.getAbility().getElement().getName()); + case "is_explosive" -> new ElementTag(event.getAbility().isExplosiveAbility()); + case "is_ignite" -> new ElementTag(event.getAbility().isIgniteAbility()); + case "is_sneak" -> new ElementTag(event.getAbility().isSneakAbility()); + default -> super.getContext(name); + }; + } + + @EventHandler + public void onAbilityStart(EntityBendingDeathEvent event) { + this.event = event; + fire(event); + } +} diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityDamageEntityScriptEvent.java b/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityDamageEntityScriptEvent.java new file mode 100644 index 000000000..fbbe83b59 --- /dev/null +++ b/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityDamageEntityScriptEvent.java @@ -0,0 +1,83 @@ +package com.denizenscript.depenizen.bukkit.events.projectkorra; + +import com.denizenscript.denizen.events.BukkitScriptEvent; +import com.denizenscript.denizen.objects.EntityTag; +import com.denizenscript.denizen.objects.PlayerTag; +import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData; +import com.denizenscript.denizencore.objects.ObjectTag; +import com.denizenscript.denizencore.objects.core.ElementTag; +import com.denizenscript.denizencore.scripts.ScriptEntryData; +import com.projectkorra.projectkorra.event.AbilityDamageEntityEvent; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; + +public class PlayerAbilityDamageEntityScriptEvent extends BukkitScriptEvent implements Listener { + + // <--[event] + // @Events + // projectkorra player damages player|entity with + // + // @Triggers when a player damages an entity with a bending ability. + // + // @Context + // returns ElementTag(String) of the ability's name. + // returns PlayerTag of the player who triggered the ability. + // returns EntityTag of the target damaged by the ability. + // returns ElementTag(Decimal) of the damage dealt to the entity. + // returns ElementTag(String) ability's element. + // returns ElementTag(Number) of the ability's cooldown. + // returns ElementTag(Boolean) if the ability is explosive. + // returns ElementTag(Boolean) if the ability can ignite. + // returns ElementTag(Boolean) if the ability is triggered by sneak. + // returns ElementTag(Boolean) if the event ignores armor. + // + // @Plugin Depenizen, ProjectKorra + // + // @Player Always. + // + // --> + + public PlayerAbilityDamageEntityScriptEvent() { + registerCouldMatcher("projectkorra player damages player|entity with <'ability'>"); + } + + public AbilityDamageEntityEvent event; + + @Override + public boolean matches(ScriptPath path) { + String ability = path.eventArgLowerAt(5); + // Check if event applies to any ability + if (!ability.equals("ability") && !ability.equalsIgnoreCase(event.getAbility().getName())) { + return false; + } + return super.matches(path); + } + + @Override + public ScriptEntryData getScriptEntryData() { + return new BukkitScriptEntryData(PlayerTag.mirrorBukkitPlayer(event.getAbility().getPlayer()), null); + } + + @Override + public ObjectTag getContext(String name) { + return switch (name) { + case "ability" -> new ElementTag(event.getAbility().getName()); + case "source" -> new PlayerTag(event.getSource()); + case "target" -> new EntityTag(event.getEntity()); + case "damage" -> new ElementTag(event.getDamage()); + case "element" -> new ElementTag(event.getAbility().getElement().getName()); + case "cooldown" -> new ElementTag(event.getAbility().getCooldown()); + case "is_explosive" -> new ElementTag(event.getAbility().isExplosiveAbility()); + case "is_ignite" -> new ElementTag(event.getAbility().isIgniteAbility()); + case "is_sneak" -> new ElementTag(event.getAbility().isSneakAbility()); + case "ignores_armor" -> new ElementTag(event.doesIgnoreArmor()); + default -> super.getContext(name); + }; + } + + @EventHandler + public void onAbilityStart(AbilityDamageEntityEvent event) { + this.event = event; + fire(event); + } +} diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityEndScriptEvent.java b/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityEndScriptEvent.java new file mode 100644 index 000000000..da1e06c16 --- /dev/null +++ b/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityEndScriptEvent.java @@ -0,0 +1,80 @@ +package com.denizenscript.depenizen.bukkit.events.projectkorra; + +import com.denizenscript.denizencore.objects.core.ElementTag; +import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData; +import com.denizenscript.denizen.events.BukkitScriptEvent; +import com.denizenscript.denizen.objects.PlayerTag; +import com.denizenscript.denizencore.objects.ObjectTag; +import com.denizenscript.denizencore.scripts.ScriptEntryData; +import com.projectkorra.projectkorra.event.AbilityEndEvent; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; + +public class PlayerAbilityEndScriptEvent extends BukkitScriptEvent implements Listener { + + // <--[event] + // @Events + // projectkorra player ends ability + // + // @Triggers when a player ends a bending ability. + // + // @Context + // returns ElementTag(String) of the ability's name. + // returns PlayerTag of the player who triggered the ability. + // returns ElementTag(String) ability's element. + // returns ElementTag(Number) of the ability's cooldown. + // returns ElementTag(Boolean) if the ability is explosive. + // returns ElementTag(Boolean) if the ability is harmless. + // returns ElementTag(Boolean) if the ability is hidden. + // returns ElementTag(Boolean) if the ability can ignite. + // returns ElementTag(Boolean) if the ability is triggered by sneak. + // + // @Plugin Depenizen, ProjectKorra + // + // @Player Always. + // + // --> + + public PlayerAbilityEndScriptEvent() { + registerCouldMatcher("projectkorra player ends <'ability'>"); + } + + public AbilityEndEvent event; + + @Override + public boolean matches(ScriptPath path) { + String ability = path.eventArgLowerAt(3); + // Check if event applies to any ability + if (!ability.equals("ability") && !ability.equalsIgnoreCase(event.getAbility().getName())) { + return false; + } + return super.matches(path); + } + + @Override + public ScriptEntryData getScriptEntryData() { + return new BukkitScriptEntryData(PlayerTag.mirrorBukkitPlayer(event.getAbility().getPlayer()), null); + } + + @Override + public ObjectTag getContext(String name) { + return switch (name) { + case "ability" -> new ElementTag(event.getAbility().getName()); + case "source" -> new PlayerTag(event.getAbility().getPlayer()); + case "element" -> new ElementTag(event.getAbility().getElement().getName()); + case "cooldown" -> new ElementTag(event.getAbility().getCooldown()); + case "is_explosive" -> new ElementTag(event.getAbility().isExplosiveAbility()); + case "is_harmless" -> new ElementTag(event.getAbility().isHarmlessAbility()); + case "is_hidden" -> new ElementTag(event.getAbility().isHiddenAbility()); + case "is_ignite" -> new ElementTag(event.getAbility().isIgniteAbility()); + case "is_sneak" -> new ElementTag(event.getAbility().isSneakAbility()); + default -> super.getContext(name); + }; + } + + @EventHandler + public void onAbilityEnd(AbilityEndEvent event) { + this.event = event; + fire(event); + } +} diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityProgressScriptEvent.java b/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityProgressScriptEvent.java new file mode 100644 index 000000000..2a3b05d5b --- /dev/null +++ b/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityProgressScriptEvent.java @@ -0,0 +1,80 @@ +package com.denizenscript.depenizen.bukkit.events.projectkorra; + +import com.denizenscript.denizen.events.BukkitScriptEvent; +import com.denizenscript.denizen.objects.PlayerTag; +import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData; +import com.denizenscript.denizencore.objects.ObjectTag; +import com.denizenscript.denizencore.objects.core.ElementTag; +import com.denizenscript.denizencore.scripts.ScriptEntryData; +import com.projectkorra.projectkorra.event.AbilityProgressEvent; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; + +public class PlayerAbilityProgressScriptEvent extends BukkitScriptEvent implements Listener { + + // <--[event] + // @Events + // projectkorra player progresses + // + // @Triggers when a player progresses a bending ability. + // + // @Context + // returns ElementTag(String) of the ability's name. + // returns PlayerTag of the player who triggered the ability. + // returns ElementTag(String) ability's element. + // returns ElementTag(Number) of the ability's cooldown. + // returns ElementTag(Boolean) if the ability is explosive. + // returns ElementTag(Boolean) if the ability is harmless. + // returns ElementTag(Boolean) if the ability is hidden. + // returns ElementTag(Boolean) if the ability can ignite. + // returns ElementTag(Boolean) if the ability is triggered by sneak. + // + // @Plugin Depenizen, ProjectKorra + // + // @Player Always. + // + // --> + + public PlayerAbilityProgressScriptEvent() { + registerCouldMatcher("projectkorra player progresses <'ability'>"); + } + + public AbilityProgressEvent event; + + @Override + public boolean matches(ScriptPath path) { + String ability = path.eventArgLowerAt(3); + // Check if event applies to any ability + if (!ability.equals("ability") && !ability.equalsIgnoreCase(event.getAbility().getName())) { + return false; + } + return super.matches(path); + } + + @Override + public ScriptEntryData getScriptEntryData() { + return new BukkitScriptEntryData(PlayerTag.mirrorBukkitPlayer(event.getAbility().getPlayer()), null); + } + + @Override + public ObjectTag getContext(String name) { + return switch (name) { + case "ability" -> new ElementTag(event.getAbility().getName()); + case "source" -> new PlayerTag(event.getAbility().getPlayer()); + case "element" -> new ElementTag(event.getAbility().getElement().getName()); + case "cooldown" -> new ElementTag(event.getAbility().getCooldown()); + case "is_explosive" -> new ElementTag(event.getAbility().isExplosiveAbility()); + case "is_harmless" -> new ElementTag(event.getAbility().isHarmlessAbility()); + case "is_hidden" -> new ElementTag(event.getAbility().isHiddenAbility()); + case "is_ignite" -> new ElementTag(event.getAbility().isIgniteAbility()); + case "is_sneak" -> new ElementTag(event.getAbility().isSneakAbility()); + default -> super.getContext(name); + }; + } + + @EventHandler + public void onAbilityProgress(AbilityProgressEvent event) { + this.event = event; + fire(event); + } +} diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityStartScriptEvent.java b/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityStartScriptEvent.java new file mode 100644 index 000000000..d63c4fde1 --- /dev/null +++ b/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityStartScriptEvent.java @@ -0,0 +1,80 @@ +package com.denizenscript.depenizen.bukkit.events.projectkorra; + +import com.denizenscript.denizen.events.BukkitScriptEvent; +import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData; +import com.denizenscript.denizen.objects.PlayerTag; +import com.denizenscript.denizencore.objects.core.ElementTag; +import com.denizenscript.denizencore.objects.ObjectTag; +import com.denizenscript.denizencore.scripts.ScriptEntryData; +import com.projectkorra.projectkorra.event.AbilityStartEvent; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; + +public class PlayerAbilityStartScriptEvent extends BukkitScriptEvent implements Listener { + + // <--[event] + // @Events + // projectkorra player starts ability + // + // @Triggers when a player starts a bending ability. + // + // @Context + // returns ElementTag(String) of the ability's name. + // returns PlayerTag of the player who triggered the ability. + // returns ElementTag(String) ability's element. + // returns ElementTag(Number) of the ability's cooldown. + // returns ElementTag(Boolean) if the ability is explosive. + // returns ElementTag(Boolean) if the ability is harmless. + // returns ElementTag(Boolean) if the ability is hidden. + // returns ElementTag(Boolean) if the ability can ignite. + // returns ElementTag(Boolean) if the ability is triggered by sneak. + // + // @Plugin Depenizen, ProjectKorra + // + // @Player Always. + // + // --> + + public PlayerAbilityStartScriptEvent() { + registerCouldMatcher("projectkorra player starts <'ability'>"); + } + + public AbilityStartEvent event; + + @Override + public boolean matches(ScriptPath path) { + String ability = path.eventArgLowerAt(3); + // Check if event applies to any ability + if (!ability.equals("ability") && !ability.equalsIgnoreCase(event.getAbility().getName())) { + return false; + } + return super.matches(path); + } + + @Override + public ScriptEntryData getScriptEntryData() { + return new BukkitScriptEntryData(PlayerTag.mirrorBukkitPlayer(event.getAbility().getPlayer()), null); + } + + @Override + public ObjectTag getContext(String name) { + return switch (name) { + case "ability" -> new ElementTag(event.getAbility().getName()); + case "source" -> new PlayerTag(event.getAbility().getPlayer()); + case "element" -> new ElementTag(event.getAbility().getElement().getName()); + case "cooldown" -> new ElementTag(event.getAbility().getCooldown()); + case "is_explosive" -> new ElementTag(event.getAbility().isExplosiveAbility()); + case "is_harmless" -> new ElementTag(event.getAbility().isHarmlessAbility()); + case "is_hidden" -> new ElementTag(event.getAbility().isHiddenAbility()); + case "is_ignite" -> new ElementTag(event.getAbility().isIgniteAbility()); + case "is_sneak" -> new ElementTag(event.getAbility().isSneakAbility()); + default -> super.getContext(name); + }; + } + + @EventHandler + public void onAbilityStart(AbilityStartEvent event) { + this.event = event; + fire(event); + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 4d231cdae..6e840f09c 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -33,6 +33,7 @@ softdepend: - PlaceholderAPI - PlayerPoints - PlotSquared + - ProjectKorra - PVPArena - PVPStats - Quests From 504e397d8cde5fef0ff7dbfb6566e6e40f19b480 Mon Sep 17 00:00:00 2001 From: Greg <35405919+xicxen@users.noreply.github.com> Date: Sat, 30 Mar 2024 16:09:41 -0400 Subject: [PATCH 2/3] Added switches to all the events Removed types in @Context Removed comments Fixed method name --- .../EntityBendingDeathScriptEvent.java | 36 ++++++++++------- .../PlayerAbilityDamageEntityScriptEvent.java | 40 +++++++++++-------- .../PlayerAbilityEndScriptEvent.java | 36 ++++++++++------- .../PlayerAbilityProgressScriptEvent.java | 36 ++++++++++------- .../PlayerAbilityStartScriptEvent.java | 36 ++++++++++------- 5 files changed, 107 insertions(+), 77 deletions(-) diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/EntityBendingDeathScriptEvent.java b/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/EntityBendingDeathScriptEvent.java index a01a711b4..66b122b72 100644 --- a/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/EntityBendingDeathScriptEvent.java +++ b/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/EntityBendingDeathScriptEvent.java @@ -15,19 +15,21 @@ public class EntityBendingDeathScriptEvent extends BukkitScriptEvent implements // <--[event] // @Events - // projectkorra player|entity dies|death|killed by + // projectkorra entity dies|death|killed + // + // @Switch by: to only process the event if the ability matches the specified ability. // // @Triggers when an entity dies from bending. // // @Context - // returns ElementTag(String) of the ability's name. - // returns PlayerTag of the player who triggered the ability. - // returns EntityTag of the target damaged by the ability. - // returns ElementTag(Decimal) of the damage dealt to the entity. - // returns ElementTag(String) ability's element. - // returns ElementTag(Boolean) if the ability is explosive. - // returns ElementTag(Boolean) if the ability can ignite. - // returns ElementTag(Boolean) if the ability is triggered by sneak. + // returns the ability's name. + // returns the player who triggered the ability. + // returns the target damaged by the ability. + // returns the damage dealt to the entity as a decimal. + // returns the ability's element name. + // returns if the ability is explosive. + // returns if the ability can ignite. + // returns if the ability is triggered by sneak. // // @Plugin Depenizen, ProjectKorra // @@ -36,16 +38,19 @@ public class EntityBendingDeathScriptEvent extends BukkitScriptEvent implements // --> public EntityBendingDeathScriptEvent() { - registerCouldMatcher("projectkorra player|entity dies|death|killed by <'ability'>"); + registerCouldMatcher("projectkorra entity dies|death|killed"); + registerSwitches("by"); } public EntityBendingDeathEvent event; + public ElementTag ability; @Override public boolean matches(ScriptPath path) { - String ability = path.eventArgLowerAt(4); - // Check if event applies to any ability - if (!ability.equals("ability") && !ability.equalsIgnoreCase(event.getAbility().getName())) { + if ((path.eventArgLowerAt(3).equals("by")) && (ability == null || !path.tryArgObject(4, ability))) { + return false; + } + if (!path.tryObjectSwitch("by", ability)) { return false; } return super.matches(path); @@ -59,7 +64,7 @@ public ScriptEntryData getScriptEntryData() { @Override public ObjectTag getContext(String name) { return switch (name) { - case "ability" -> new ElementTag(event.getAbility().getName()); + case "ability" -> ability; case "source" -> new PlayerTag(event.getAttacker()); case "target" -> new EntityTag(event.getEntity()); case "damage" -> new ElementTag(event.getDamage()); @@ -72,8 +77,9 @@ public ObjectTag getContext(String name) { } @EventHandler - public void onAbilityStart(EntityBendingDeathEvent event) { + public void onBendingDeath(EntityBendingDeathEvent event) { this.event = event; + this.ability = new ElementTag(event.getAbility().getName()); fire(event); } } diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityDamageEntityScriptEvent.java b/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityDamageEntityScriptEvent.java index fbbe83b59..3279e4014 100644 --- a/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityDamageEntityScriptEvent.java +++ b/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityDamageEntityScriptEvent.java @@ -15,21 +15,23 @@ public class PlayerAbilityDamageEntityScriptEvent extends BukkitScriptEvent impl // <--[event] // @Events - // projectkorra player damages player|entity with + // projectkorra player damages player|entity + // + // @Switch by: to only process the event if the ability matches the specified ability. // // @Triggers when a player damages an entity with a bending ability. // // @Context - // returns ElementTag(String) of the ability's name. - // returns PlayerTag of the player who triggered the ability. - // returns EntityTag of the target damaged by the ability. - // returns ElementTag(Decimal) of the damage dealt to the entity. - // returns ElementTag(String) ability's element. - // returns ElementTag(Number) of the ability's cooldown. - // returns ElementTag(Boolean) if the ability is explosive. - // returns ElementTag(Boolean) if the ability can ignite. - // returns ElementTag(Boolean) if the ability is triggered by sneak. - // returns ElementTag(Boolean) if the event ignores armor. + // returns the ability's name. + // returns the player who triggered the ability. + // returns the target damaged by the ability. + // returns the damage dealt to the entity as a decimal. + // returns the ability's element name. + // returns the ability's cooldown. + // returns if the ability is explosive. + // returns if the ability can ignite. + // returns if the ability is triggered by sneak. + // returns if the event ignores armor. // // @Plugin Depenizen, ProjectKorra // @@ -38,16 +40,19 @@ public class PlayerAbilityDamageEntityScriptEvent extends BukkitScriptEvent impl // --> public PlayerAbilityDamageEntityScriptEvent() { - registerCouldMatcher("projectkorra player damages player|entity with <'ability'>"); + registerCouldMatcher("projectkorra player damages player|entity"); + registerSwitches("by"); } public AbilityDamageEntityEvent event; + public ElementTag ability; @Override public boolean matches(ScriptPath path) { - String ability = path.eventArgLowerAt(5); - // Check if event applies to any ability - if (!ability.equals("ability") && !ability.equalsIgnoreCase(event.getAbility().getName())) { + if ((path.eventArgLowerAt(4).equals("by")) && (ability == null || !path.tryArgObject(5, ability))) { + return false; + } + if (!path.tryObjectSwitch("by", ability)) { return false; } return super.matches(path); @@ -61,7 +66,7 @@ public ScriptEntryData getScriptEntryData() { @Override public ObjectTag getContext(String name) { return switch (name) { - case "ability" -> new ElementTag(event.getAbility().getName()); + case "ability" -> ability; case "source" -> new PlayerTag(event.getSource()); case "target" -> new EntityTag(event.getEntity()); case "damage" -> new ElementTag(event.getDamage()); @@ -76,8 +81,9 @@ public ObjectTag getContext(String name) { } @EventHandler - public void onAbilityStart(AbilityDamageEntityEvent event) { + public void onAbilityDamage(AbilityDamageEntityEvent event) { this.event = event; + this.ability = new ElementTag(event.getAbility().getName()); fire(event); } } diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityEndScriptEvent.java b/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityEndScriptEvent.java index da1e06c16..6899155c6 100644 --- a/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityEndScriptEvent.java +++ b/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityEndScriptEvent.java @@ -14,20 +14,22 @@ public class PlayerAbilityEndScriptEvent extends BukkitScriptEvent implements Li // <--[event] // @Events - // projectkorra player ends ability + // projectkorra player ends|stops + // + // @Switch ability: to only process the event if the ability matches the specified ability. // // @Triggers when a player ends a bending ability. // // @Context - // returns ElementTag(String) of the ability's name. - // returns PlayerTag of the player who triggered the ability. - // returns ElementTag(String) ability's element. - // returns ElementTag(Number) of the ability's cooldown. - // returns ElementTag(Boolean) if the ability is explosive. - // returns ElementTag(Boolean) if the ability is harmless. - // returns ElementTag(Boolean) if the ability is hidden. - // returns ElementTag(Boolean) if the ability can ignite. - // returns ElementTag(Boolean) if the ability is triggered by sneak. + // returns the ability's name. + // returns the player who triggered the ability. + // returns the ability's element name. + // returns the ability's cooldown. + // returns if the ability is explosive. + // returns if the ability is harmless. + // returns if the ability is hidden. + // returns if the ability can ignite. + // returns if the ability is triggered by sneak. // // @Plugin Depenizen, ProjectKorra // @@ -36,16 +38,19 @@ public class PlayerAbilityEndScriptEvent extends BukkitScriptEvent implements Li // --> public PlayerAbilityEndScriptEvent() { - registerCouldMatcher("projectkorra player ends <'ability'>"); + registerCouldMatcher("projectkorra player ends|stops"); + registerSwitches("ability"); } public AbilityEndEvent event; + public ElementTag ability; @Override public boolean matches(ScriptPath path) { - String ability = path.eventArgLowerAt(3); - // Check if event applies to any ability - if (!ability.equals("ability") && !ability.equalsIgnoreCase(event.getAbility().getName())) { + if ((path.eventArgLowerAt(3).equals("ability")) && (ability == null || !path.tryArgObject(4, ability))) { + return false; + } + if (!path.tryObjectSwitch("ability", ability)) { return false; } return super.matches(path); @@ -59,7 +64,7 @@ public ScriptEntryData getScriptEntryData() { @Override public ObjectTag getContext(String name) { return switch (name) { - case "ability" -> new ElementTag(event.getAbility().getName()); + case "ability" -> ability; case "source" -> new PlayerTag(event.getAbility().getPlayer()); case "element" -> new ElementTag(event.getAbility().getElement().getName()); case "cooldown" -> new ElementTag(event.getAbility().getCooldown()); @@ -75,6 +80,7 @@ public ObjectTag getContext(String name) { @EventHandler public void onAbilityEnd(AbilityEndEvent event) { this.event = event; + this.ability = new ElementTag(event.getAbility().getName()); fire(event); } } diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityProgressScriptEvent.java b/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityProgressScriptEvent.java index 2a3b05d5b..a27aaa5b0 100644 --- a/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityProgressScriptEvent.java +++ b/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityProgressScriptEvent.java @@ -14,20 +14,22 @@ public class PlayerAbilityProgressScriptEvent extends BukkitScriptEvent implemen // <--[event] // @Events - // projectkorra player progresses + // projectkorra player progresses|continues + // + // @Switch ability: to only process the event if the ability matches the specified ability. // // @Triggers when a player progresses a bending ability. // // @Context - // returns ElementTag(String) of the ability's name. - // returns PlayerTag of the player who triggered the ability. - // returns ElementTag(String) ability's element. - // returns ElementTag(Number) of the ability's cooldown. - // returns ElementTag(Boolean) if the ability is explosive. - // returns ElementTag(Boolean) if the ability is harmless. - // returns ElementTag(Boolean) if the ability is hidden. - // returns ElementTag(Boolean) if the ability can ignite. - // returns ElementTag(Boolean) if the ability is triggered by sneak. + // returns the ability's name. + // returns the player who triggered the ability. + // returns the ability's element name. + // returns the ability's cooldown. + // returns if the ability is explosive. + // returns if the ability is harmless. + // returns if the ability is hidden. + // returns if the ability can ignite. + // returns if the ability is triggered by sneak. // // @Plugin Depenizen, ProjectKorra // @@ -36,16 +38,19 @@ public class PlayerAbilityProgressScriptEvent extends BukkitScriptEvent implemen // --> public PlayerAbilityProgressScriptEvent() { - registerCouldMatcher("projectkorra player progresses <'ability'>"); + registerCouldMatcher("projectkorra player progresses|continues"); + registerSwitches("ability"); } public AbilityProgressEvent event; + public ElementTag ability; @Override public boolean matches(ScriptPath path) { - String ability = path.eventArgLowerAt(3); - // Check if event applies to any ability - if (!ability.equals("ability") && !ability.equalsIgnoreCase(event.getAbility().getName())) { + if ((path.eventArgLowerAt(3).equals("ability")) && (ability == null || !path.tryArgObject(4, ability))) { + return false; + } + if (!path.tryObjectSwitch("ability", ability)) { return false; } return super.matches(path); @@ -59,7 +64,7 @@ public ScriptEntryData getScriptEntryData() { @Override public ObjectTag getContext(String name) { return switch (name) { - case "ability" -> new ElementTag(event.getAbility().getName()); + case "ability" -> ability; case "source" -> new PlayerTag(event.getAbility().getPlayer()); case "element" -> new ElementTag(event.getAbility().getElement().getName()); case "cooldown" -> new ElementTag(event.getAbility().getCooldown()); @@ -75,6 +80,7 @@ public ObjectTag getContext(String name) { @EventHandler public void onAbilityProgress(AbilityProgressEvent event) { this.event = event; + this.ability = new ElementTag(event.getAbility().getName()); fire(event); } } diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityStartScriptEvent.java b/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityStartScriptEvent.java index d63c4fde1..d6c75f53b 100644 --- a/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityStartScriptEvent.java +++ b/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityStartScriptEvent.java @@ -14,20 +14,22 @@ public class PlayerAbilityStartScriptEvent extends BukkitScriptEvent implements // <--[event] // @Events - // projectkorra player starts ability + // projectkorra player starts|begins + // + // @Switch ability: to only process the event if the ability matches the specified ability. // // @Triggers when a player starts a bending ability. // // @Context - // returns ElementTag(String) of the ability's name. - // returns PlayerTag of the player who triggered the ability. - // returns ElementTag(String) ability's element. - // returns ElementTag(Number) of the ability's cooldown. - // returns ElementTag(Boolean) if the ability is explosive. - // returns ElementTag(Boolean) if the ability is harmless. - // returns ElementTag(Boolean) if the ability is hidden. - // returns ElementTag(Boolean) if the ability can ignite. - // returns ElementTag(Boolean) if the ability is triggered by sneak. + // returns the ability's name. + // returns the player who triggered the ability. + // returns the ability's element name. + // returns the ability's cooldown. + // returns if the ability is explosive. + // returns if the ability is harmless. + // returns if the ability is hidden. + // returns if the ability can ignite. + // returns if the ability is triggered by sneak. // // @Plugin Depenizen, ProjectKorra // @@ -36,16 +38,19 @@ public class PlayerAbilityStartScriptEvent extends BukkitScriptEvent implements // --> public PlayerAbilityStartScriptEvent() { - registerCouldMatcher("projectkorra player starts <'ability'>"); + registerCouldMatcher("projectkorra player starts|begins"); + registerSwitches("ability"); } public AbilityStartEvent event; + public ElementTag ability; @Override public boolean matches(ScriptPath path) { - String ability = path.eventArgLowerAt(3); - // Check if event applies to any ability - if (!ability.equals("ability") && !ability.equalsIgnoreCase(event.getAbility().getName())) { + if ((path.eventArgLowerAt(3).equals("ability")) && (ability == null || !path.tryArgObject(4, ability))) { + return false; + } + if (!path.tryObjectSwitch("ability", ability)) { return false; } return super.matches(path); @@ -59,7 +64,7 @@ public ScriptEntryData getScriptEntryData() { @Override public ObjectTag getContext(String name) { return switch (name) { - case "ability" -> new ElementTag(event.getAbility().getName()); + case "ability" -> ability; case "source" -> new PlayerTag(event.getAbility().getPlayer()); case "element" -> new ElementTag(event.getAbility().getElement().getName()); case "cooldown" -> new ElementTag(event.getAbility().getCooldown()); @@ -75,6 +80,7 @@ public ObjectTag getContext(String name) { @EventHandler public void onAbilityStart(AbilityStartEvent event) { this.event = event; + this.ability = new ElementTag(event.getAbility().getName()); fire(event); } } From 3784d17bb5508ce4675d1d81628d8493eabdbaac Mon Sep 17 00:00:00 2001 From: xicxen Date: Sat, 30 Mar 2024 20:15:07 -0400 Subject: [PATCH 3/3] dynamically matches the entity removed variants removed line 50 (and like from other events) --- .../events/projectkorra/EntityBendingDeathScriptEvent.java | 7 ++----- .../projectkorra/PlayerAbilityDamageEntityScriptEvent.java | 7 ++----- .../events/projectkorra/PlayerAbilityEndScriptEvent.java | 7 ++----- .../projectkorra/PlayerAbilityProgressScriptEvent.java | 7 ++----- .../events/projectkorra/PlayerAbilityStartScriptEvent.java | 7 ++----- 5 files changed, 10 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/EntityBendingDeathScriptEvent.java b/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/EntityBendingDeathScriptEvent.java index 66b122b72..c1ac74675 100644 --- a/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/EntityBendingDeathScriptEvent.java +++ b/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/EntityBendingDeathScriptEvent.java @@ -15,7 +15,7 @@ public class EntityBendingDeathScriptEvent extends BukkitScriptEvent implements // <--[event] // @Events - // projectkorra entity dies|death|killed + // projectkorra killed // // @Switch by: to only process the event if the ability matches the specified ability. // @@ -38,7 +38,7 @@ public class EntityBendingDeathScriptEvent extends BukkitScriptEvent implements // --> public EntityBendingDeathScriptEvent() { - registerCouldMatcher("projectkorra entity dies|death|killed"); + registerCouldMatcher("projectkorra entity killed"); registerSwitches("by"); } @@ -47,9 +47,6 @@ public EntityBendingDeathScriptEvent() { @Override public boolean matches(ScriptPath path) { - if ((path.eventArgLowerAt(3).equals("by")) && (ability == null || !path.tryArgObject(4, ability))) { - return false; - } if (!path.tryObjectSwitch("by", ability)) { return false; } diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityDamageEntityScriptEvent.java b/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityDamageEntityScriptEvent.java index 3279e4014..1101e42f5 100644 --- a/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityDamageEntityScriptEvent.java +++ b/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityDamageEntityScriptEvent.java @@ -15,7 +15,7 @@ public class PlayerAbilityDamageEntityScriptEvent extends BukkitScriptEvent impl // <--[event] // @Events - // projectkorra player damages player|entity + // projectkorra player damages // // @Switch by: to only process the event if the ability matches the specified ability. // @@ -40,7 +40,7 @@ public class PlayerAbilityDamageEntityScriptEvent extends BukkitScriptEvent impl // --> public PlayerAbilityDamageEntityScriptEvent() { - registerCouldMatcher("projectkorra player damages player|entity"); + registerCouldMatcher("projectkorra player damages entity"); registerSwitches("by"); } @@ -49,9 +49,6 @@ public PlayerAbilityDamageEntityScriptEvent() { @Override public boolean matches(ScriptPath path) { - if ((path.eventArgLowerAt(4).equals("by")) && (ability == null || !path.tryArgObject(5, ability))) { - return false; - } if (!path.tryObjectSwitch("by", ability)) { return false; } diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityEndScriptEvent.java b/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityEndScriptEvent.java index 6899155c6..c9e211480 100644 --- a/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityEndScriptEvent.java +++ b/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityEndScriptEvent.java @@ -14,7 +14,7 @@ public class PlayerAbilityEndScriptEvent extends BukkitScriptEvent implements Li // <--[event] // @Events - // projectkorra player ends|stops + // projectkorra player ends // // @Switch ability: to only process the event if the ability matches the specified ability. // @@ -38,7 +38,7 @@ public class PlayerAbilityEndScriptEvent extends BukkitScriptEvent implements Li // --> public PlayerAbilityEndScriptEvent() { - registerCouldMatcher("projectkorra player ends|stops"); + registerCouldMatcher("projectkorra player ends"); registerSwitches("ability"); } @@ -47,9 +47,6 @@ public PlayerAbilityEndScriptEvent() { @Override public boolean matches(ScriptPath path) { - if ((path.eventArgLowerAt(3).equals("ability")) && (ability == null || !path.tryArgObject(4, ability))) { - return false; - } if (!path.tryObjectSwitch("ability", ability)) { return false; } diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityProgressScriptEvent.java b/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityProgressScriptEvent.java index a27aaa5b0..a95c21ce8 100644 --- a/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityProgressScriptEvent.java +++ b/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityProgressScriptEvent.java @@ -14,7 +14,7 @@ public class PlayerAbilityProgressScriptEvent extends BukkitScriptEvent implemen // <--[event] // @Events - // projectkorra player progresses|continues + // projectkorra player progresses // // @Switch ability: to only process the event if the ability matches the specified ability. // @@ -38,7 +38,7 @@ public class PlayerAbilityProgressScriptEvent extends BukkitScriptEvent implemen // --> public PlayerAbilityProgressScriptEvent() { - registerCouldMatcher("projectkorra player progresses|continues"); + registerCouldMatcher("projectkorra player progresses"); registerSwitches("ability"); } @@ -47,9 +47,6 @@ public PlayerAbilityProgressScriptEvent() { @Override public boolean matches(ScriptPath path) { - if ((path.eventArgLowerAt(3).equals("ability")) && (ability == null || !path.tryArgObject(4, ability))) { - return false; - } if (!path.tryObjectSwitch("ability", ability)) { return false; } diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityStartScriptEvent.java b/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityStartScriptEvent.java index d6c75f53b..a034e67c4 100644 --- a/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityStartScriptEvent.java +++ b/src/main/java/com/denizenscript/depenizen/bukkit/events/projectkorra/PlayerAbilityStartScriptEvent.java @@ -14,7 +14,7 @@ public class PlayerAbilityStartScriptEvent extends BukkitScriptEvent implements // <--[event] // @Events - // projectkorra player starts|begins + // projectkorra player starts // // @Switch ability: to only process the event if the ability matches the specified ability. // @@ -38,7 +38,7 @@ public class PlayerAbilityStartScriptEvent extends BukkitScriptEvent implements // --> public PlayerAbilityStartScriptEvent() { - registerCouldMatcher("projectkorra player starts|begins"); + registerCouldMatcher("projectkorra player starts"); registerSwitches("ability"); } @@ -47,9 +47,6 @@ public PlayerAbilityStartScriptEvent() { @Override public boolean matches(ScriptPath path) { - if ((path.eventArgLowerAt(3).equals("ability")) && (ability == null || !path.tryArgObject(4, ability))) { - return false; - } if (!path.tryObjectSwitch("ability", ability)) { return false; }