diff --git a/Docs/BukkitPlugins.md b/Docs/BukkitPlugins.md index 66186808a..62646e034 100644 --- a/Docs/BukkitPlugins.md +++ b/Docs/BukkitPlugins.md @@ -13,6 +13,7 @@ Supported Plugins: (And the sources we acquired Jar files from.) - CrackShot (https://www.spigotmc.org/resources/crackshot-guns.48301/) - EffectLib (https://dev.bukkit.org/projects/effectlib) - EssentialsX (https://www.spigotmc.org/resources/essentialsx.9089/) +- Fabled (https://www.spigotmc.org/resources/fabled-an-rpg-engine-by-magemonkey-studio-formerly-proskillapi.91913/) - Factions (https://www.spigotmc.org/resources/factions3-for-1-13.63602/) - GriefPrevention (https://www.spigotmc.org/resources/griefprevention.1884/) - Jobs Reborn (https://www.spigotmc.org/resources/jobs-reborn.4216/) @@ -35,7 +36,6 @@ Supported Plugins: (And the sources we acquired Jar files from.) - Residence (https://zrips.net/Residence/) - Sentinel (https://www.spigotmc.org/resources/sentinel.22017/) - ShopKeepers (https://www.spigotmc.org/resources/shopkeepers.80756/) -- SkillAPI (http://dev.bukkit.org/bukkit-plugins/skillapi/) - TerrainControl/OpenTerrainGenerator (https://github.com/PG85/OpenTerrainGenerator) - Towny (https://github.com/TownyAdvanced/Towny) - TownyChat (https://github.com/TownyAdvanced/Towny) diff --git a/pom.xml b/pom.xml index 6ab627aa0..359af5cf6 100644 --- a/pom.xml +++ b/pom.xml @@ -156,6 +156,13 @@ system ${basedir}/lib/EssentialsX.jar + + studio.magemonkey + fabled + 1.0.4-R0.52-SNAPSHOT + system + ${basedir}/lib/Fabled.jar + com.massivecraft MassiveCore @@ -316,13 +323,6 @@ system ${basedir}/lib/Shopkeepers.jar - - com.sucy - SkillAPI - 3.37 - system - ${basedir}/lib/SkillAPI.jar - com.khorn TerrainControl diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/Depenizen.java b/src/main/java/com/denizenscript/depenizen/bukkit/Depenizen.java index 5fe5e8906..49cc6a62a 100644 --- a/src/main/java/com/denizenscript/depenizen/bukkit/Depenizen.java +++ b/src/main/java/com/denizenscript/depenizen/bukkit/Depenizen.java @@ -128,6 +128,7 @@ public void registerCoreBridges() { registerBridge("CrackShot", () -> new CrackShotBridge()); registerBridge("EffectLib", () -> new EffectLibBridge()); registerBridge("Essentials", () -> new EssentialsBridge()); + registerBridge("Fabled", () -> new FabledBridge()); registerBridge("Factions", () -> new FactionsBridge()); registerBridge("GriefPrevention", () -> new GriefPreventionBridge()); registerBridge("Jobs", () -> new JobsBridge()); @@ -150,7 +151,6 @@ public void registerCoreBridges() { registerBridge("Residence", () -> new ResidenceBridge()); registerBridge("Sentinel", () -> new SentinelBridge()); registerBridge("Shopkeepers", () -> new ShopkeepersBridge()); - registerBridge("SkillAPI", () -> new SkillAPIBridge()); registerBridge("TerrainControl", () -> new TerrainControlBridge()); registerBridge("Towny", () -> new TownyBridge()); registerBridge("TownyChat", () -> new TownyChatBridge()); diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/bridges/FabledBridge.java b/src/main/java/com/denizenscript/depenizen/bukkit/bridges/FabledBridge.java new file mode 100644 index 000000000..c4efc061b --- /dev/null +++ b/src/main/java/com/denizenscript/depenizen/bukkit/bridges/FabledBridge.java @@ -0,0 +1,34 @@ +package com.denizenscript.depenizen.bukkit.bridges; + +import com.denizenscript.denizencore.tags.TagManager; +import com.denizenscript.depenizen.bukkit.properties.fabled.FabledPlayerExtensions; +import com.denizenscript.depenizen.bukkit.Bridge; +import com.denizenscript.depenizen.bukkit.events.fabled.*; +import com.denizenscript.depenizen.bukkit.objects.fabled.FabledClassTag; +import com.denizenscript.denizencore.events.ScriptEvent; +import com.denizenscript.denizencore.objects.ObjectFetcher; + +public class FabledBridge extends Bridge { + + @Override + public void init() { + ObjectFetcher.registerWithObjectFetcher(FabledClassTag.class, FabledClassTag.tagProcessor); + FabledPlayerExtensions.register(); + ScriptEvent.registerScriptEvent(FabledPlayerUnlocksSkillScriptEvent.class); + ScriptEvent.registerScriptEvent(FabledPlayerUpgradesSkillScriptEvent.class); + ScriptEvent.registerScriptEvent(FabledPlayerDowngradesSkillScriptEvent.class); + ScriptEvent.registerScriptEvent(FabledPlayerLevelsUpScriptEvent.class); + + // <--[tag] + // @attribute ]> + // @returns FabledClassTag + // @plugin Depenizen, Fabled + // @description + // Returns the fabledclass tag with the given name. + // Refer to <@link objecttype FabledClassTag> for more information. + // --> + TagManager.registerTagHandler(FabledClassTag.class, FabledClassTag.class, "fabledclass", (attribute, param) -> { + return param; + }); + } +} diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/bridges/SkillAPIBridge.java b/src/main/java/com/denizenscript/depenizen/bukkit/bridges/SkillAPIBridge.java deleted file mode 100644 index b6324d14d..000000000 --- a/src/main/java/com/denizenscript/depenizen/bukkit/bridges/SkillAPIBridge.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.denizenscript.depenizen.bukkit.bridges; - -import com.denizenscript.depenizen.bukkit.properties.skillapi.SkillAPIPlayerProperties; -import com.denizenscript.depenizen.bukkit.Bridge; -import com.denizenscript.depenizen.bukkit.events.skillapi.SkillAPIPlayerLevelsUpScriptEvent; -import com.denizenscript.depenizen.bukkit.events.skillapi.SkillAPIPlayerUnlocksSkillScriptEvent; -import com.denizenscript.depenizen.bukkit.events.skillapi.SkillAPIPlayerUpgradesSkillScriptEvent; -import com.denizenscript.depenizen.bukkit.objects.skillapi.SkillAPIClassTag; -import com.denizenscript.denizen.objects.PlayerTag; -import com.denizenscript.depenizen.bukkit.events.skillapi.SkillAPIPlayerDowngradesSkillScriptEvent; -import com.denizenscript.denizencore.events.ScriptEvent; -import com.denizenscript.denizencore.objects.ObjectFetcher; -import com.denizenscript.denizencore.objects.properties.PropertyParser; - -public class SkillAPIBridge extends Bridge { - - @Override - public void init() { - ObjectFetcher.registerWithObjectFetcher(SkillAPIClassTag.class); - PropertyParser.registerProperty(SkillAPIPlayerProperties.class, PlayerTag.class); - ScriptEvent.registerScriptEvent(SkillAPIPlayerUnlocksSkillScriptEvent.class); - ScriptEvent.registerScriptEvent(SkillAPIPlayerUpgradesSkillScriptEvent.class); - ScriptEvent.registerScriptEvent(SkillAPIPlayerDowngradesSkillScriptEvent.class); - ScriptEvent.registerScriptEvent(SkillAPIPlayerLevelsUpScriptEvent.class); - } -} diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/events/fabled/FabledPlayerDowngradesSkillScriptEvent.java b/src/main/java/com/denizenscript/depenizen/bukkit/events/fabled/FabledPlayerDowngradesSkillScriptEvent.java new file mode 100644 index 000000000..61fc31dfe --- /dev/null +++ b/src/main/java/com/denizenscript/depenizen/bukkit/events/fabled/FabledPlayerDowngradesSkillScriptEvent.java @@ -0,0 +1,76 @@ +package com.denizenscript.depenizen.bukkit.events.fabled; + +import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData; +import com.denizenscript.denizen.events.BukkitScriptEvent; +import com.denizenscript.denizencore.objects.core.ElementTag; +import com.denizenscript.denizencore.objects.ObjectTag; +import com.denizenscript.denizencore.scripts.ScriptEntryData; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import studio.magemonkey.fabled.api.event.PlayerSkillDowngradeEvent; + +public class FabledPlayerDowngradesSkillScriptEvent extends BukkitScriptEvent implements Listener { + + // <--[event] + // @Events + // fabled player downgrades + // + // @Location true + // + // @Cancellable true + // + // @Triggers when a player downgrades a skill in Fabled. + // + // @Switch skill: to only process the event if the skill matches the specified matcher. + // + // @Context + // returns the level the player went down to. + // returns how much the player was refunded. + // returns the name of the skill downgraded. + // + // @Plugin Depenizen, Fabled + // + // @Player Always. + // + // @Group Depenizen + // + // --> + + public FabledPlayerDowngradesSkillScriptEvent() { + registerCouldMatcher("fabled player downgrades"); + } + + public PlayerSkillDowngradeEvent event; + + @Override + public boolean matches(ScriptPath path) { + if (!runGenericSwitchCheck(path, "skill", event.getDowngradedSkill().toString())) { + return false; + } + if (!runInCheck(path, event.getPlayerData().getPlayer().getLocation())) { + return false; + } + return super.matches(path); + } + + @Override + public ScriptEntryData getScriptEntryData() { + return new BukkitScriptEntryData(event.getPlayerData().getPlayer()); + } + + @Override + public ObjectTag getContext(String name) { + return switch (name) { + case "level" -> new ElementTag(event.getDowngradedSkill().getLevel()); + case "refund" -> new ElementTag(event.getRefund()); + case "skill" -> new ElementTag(event.getDowngradedSkill().getData().getName(), true); + default -> super.getContext(name); + }; + } + + @EventHandler + public void onFabledPlayerDowngradesSkill(PlayerSkillDowngradeEvent event) { + this.event = event; + fire(event); + } +} diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/events/fabled/FabledPlayerLevelsUpScriptEvent.java b/src/main/java/com/denizenscript/depenizen/bukkit/events/fabled/FabledPlayerLevelsUpScriptEvent.java new file mode 100644 index 000000000..d91c37519 --- /dev/null +++ b/src/main/java/com/denizenscript/depenizen/bukkit/events/fabled/FabledPlayerLevelsUpScriptEvent.java @@ -0,0 +1,70 @@ +package com.denizenscript.depenizen.bukkit.events.fabled; + +import com.denizenscript.depenizen.bukkit.objects.fabled.FabledClassTag; +import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData; +import com.denizenscript.denizen.events.BukkitScriptEvent; +import com.denizenscript.denizencore.objects.core.ElementTag; +import com.denizenscript.denizencore.objects.ObjectTag; +import com.denizenscript.denizencore.scripts.ScriptEntryData; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import studio.magemonkey.fabled.api.event.PlayerLevelUpEvent; + +public class FabledPlayerLevelsUpScriptEvent extends BukkitScriptEvent implements Listener { + + // <--[event] + // @Events + // fabled player levels up + // + // @Location true + // + // @Triggers when a player levels up in Fabled. + // + // @Context + // returns the level the player went up to. + // returns how many levels the player gained. + // returns the FabledClass the player is leveling up in. + // + // @Plugin Depenizen, Fabled + // + // @Player Always. + // + // @Group Depenizen + // + // --> + + public FabledPlayerLevelsUpScriptEvent() { + registerCouldMatcher("fabled player levels up"); + } + + public PlayerLevelUpEvent event; + + @Override + public boolean matches(ScriptPath path) { + if (!runInCheck(path, event.getPlayerData().getPlayer().getLocation())) { + return false; + } + return super.matches(path); + } + + @Override + public ScriptEntryData getScriptEntryData() { + return new BukkitScriptEntryData(event.getPlayerData().getPlayer()); + } + + @Override + public ObjectTag getContext(String name) { + return switch (name) { + case "level" -> new ElementTag(event.getLevel()); + case "gained" -> new ElementTag(event.getAmount()); + case "class" -> new FabledClassTag(event.getPlayerClass().getData()); + default -> super.getContext(name); + }; + } + + @EventHandler + public void onFabledPlayerLevelsUp(PlayerLevelUpEvent event) { + this.event = event; + fire(event); + } +} diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/events/fabled/FabledPlayerUnlocksSkillScriptEvent.java b/src/main/java/com/denizenscript/depenizen/bukkit/events/fabled/FabledPlayerUnlocksSkillScriptEvent.java new file mode 100644 index 000000000..d6ae6d764 --- /dev/null +++ b/src/main/java/com/denizenscript/depenizen/bukkit/events/fabled/FabledPlayerUnlocksSkillScriptEvent.java @@ -0,0 +1,70 @@ +package com.denizenscript.depenizen.bukkit.events.fabled; + +import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData; +import com.denizenscript.denizen.events.BukkitScriptEvent; +import com.denizenscript.denizencore.objects.core.ElementTag; +import com.denizenscript.denizencore.objects.ObjectTag; +import com.denizenscript.denizencore.scripts.ScriptEntryData; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import studio.magemonkey.fabled.api.event.PlayerSkillUnlockEvent; + +public class FabledPlayerUnlocksSkillScriptEvent extends BukkitScriptEvent implements Listener { + + // <--[event] + // @Events + // fabled player unlocks skill + // + // @Location true + // + // @Triggers when a player unlocks a skill in Fabled. + // + // @Switch name: to only process the event if the skill matches the specified matcher. + // + // @Context + // returns the name of the skill unlocked. + // + // @Plugin Depenizen, Fabled + // + // @Player Always. + // + // @Group Depenizen + // + // --> + + public FabledPlayerUnlocksSkillScriptEvent() { + registerCouldMatcher("fabled player unlocks skill"); + } + + public PlayerSkillUnlockEvent event; + + @Override + public boolean matches(ScriptPath path) { + if (!runGenericSwitchCheck(path, "name", event.getUnlockedSkill().toString())) { + return false; + } + if (!runInCheck(path, event.getPlayerData().getPlayer().getLocation())) { + return false; + } + return super.matches(path); + } + + @Override + public ScriptEntryData getScriptEntryData() { + return new BukkitScriptEntryData(event.getPlayerData().getPlayer()); + } + + @Override + public ObjectTag getContext(String name) { + return switch (name) { + case "skill" -> new ElementTag(event.getUnlockedSkill().getData().getName(), true); + default -> super.getContext(name); + }; + } + + @EventHandler + public void onFabledPlayerUnlocksSkill(PlayerSkillUnlockEvent event) { + this.event = event; + fire(event); + } +} diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/events/fabled/FabledPlayerUpgradesSkillScriptEvent.java b/src/main/java/com/denizenscript/depenizen/bukkit/events/fabled/FabledPlayerUpgradesSkillScriptEvent.java new file mode 100644 index 000000000..b03f1f114 --- /dev/null +++ b/src/main/java/com/denizenscript/depenizen/bukkit/events/fabled/FabledPlayerUpgradesSkillScriptEvent.java @@ -0,0 +1,76 @@ +package com.denizenscript.depenizen.bukkit.events.fabled; + +import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData; +import com.denizenscript.denizen.events.BukkitScriptEvent; +import com.denizenscript.denizencore.objects.core.ElementTag; +import com.denizenscript.denizencore.objects.ObjectTag; +import com.denizenscript.denizencore.scripts.ScriptEntryData; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import studio.magemonkey.fabled.api.event.PlayerSkillUpgradeEvent; + +public class FabledPlayerUpgradesSkillScriptEvent extends BukkitScriptEvent implements Listener { + + // <--[event] + // @Events + // fabled player upgrades skill + // + // @Location true + // + // @Cancellable true + // + // @Triggers when a player upgrades a skill in Fabled. + // + // @Switch name: to only process the event if the skill matches the specified matcher. + // + // @Context + // returns the level the player went up to. + // returns how much the upgrade cost. + // returns the name of the skill upgraded. + // + // @Plugin Depenizen, Fabled + // + // @Player Always. + // + // @Group Depenizen + // + // --> + + public FabledPlayerUpgradesSkillScriptEvent() { + registerCouldMatcher("fabled player upgrades skill"); + } + + public PlayerSkillUpgradeEvent event; + + @Override + public boolean matches(ScriptPath path) { + if (!runGenericSwitchCheck(path, "name", event.getUpgradedSkill().getData().getName())) { + return false; + } + if (!runInCheck(path, event.getPlayerData().getPlayer().getLocation())) { + return false; + } + return super.matches(path); + } + + @Override + public ScriptEntryData getScriptEntryData() { + return new BukkitScriptEntryData(event.getPlayerData().getPlayer()); + } + + @Override + public ObjectTag getContext(String name) { + return switch (name) { + case "level" -> new ElementTag(event.getUpgradedSkill().getLevel()); + case "cost" -> new ElementTag(event.getCost()); + case "skill" -> new ElementTag(event.getUpgradedSkill().getData().getName(), true); + default -> super.getContext(name); + }; + } + + @EventHandler + public void onFabledPlayerUpgradesSkill(PlayerSkillUpgradeEvent event) { + this.event = event; + fire(event); + } +} diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/events/skillapi/SkillAPIPlayerDowngradesSkillScriptEvent.java b/src/main/java/com/denizenscript/depenizen/bukkit/events/skillapi/SkillAPIPlayerDowngradesSkillScriptEvent.java deleted file mode 100644 index e197987ab..000000000 --- a/src/main/java/com/denizenscript/depenizen/bukkit/events/skillapi/SkillAPIPlayerDowngradesSkillScriptEvent.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.denizenscript.depenizen.bukkit.events.skillapi; - -import com.sucy.skill.api.event.PlayerSkillDowngradeEvent; -import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData; -import com.denizenscript.denizen.events.BukkitScriptEvent; -import com.denizenscript.denizen.objects.EntityTag; -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.denizenscript.denizencore.utilities.CoreUtilities; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; - -public class SkillAPIPlayerDowngradesSkillScriptEvent extends BukkitScriptEvent implements Listener { - - // <--[event] - // @Events - // skillapi player downgrades <'skill'> - // - // @Location true - // - // @Triggers when a player downgrades a skill in SkillAPI. - // - // @Context - // returns the level the player went down to. - // returns how much the the player was refunded. - // returns the name of the skill downgraded. - // - // @Determine - // None - // - // @Plugin Depenizen, SkillAPI - // - // @Player Always. - // - // @Group Depenizen - // - // --> - - public SkillAPIPlayerDowngradesSkillScriptEvent() { - registerCouldMatcher("skillapi player downgrades <'skill'>"); - } - - public PlayerSkillDowngradeEvent event; - public PlayerTag player; - public ElementTag level; - public ElementTag skill; - public ElementTag refund; - - @Override - public boolean matches(ScriptPath path) { - String skill = path.eventArgLowerAt(3); - - if (!skill.equals("skill") && !skill.equals(CoreUtilities.toLowerCase(this.skill.asString()))) { - return false; - } - - if (!runInCheck(path, player.getLocation())) { - return false; - } - - return super.matches(path); - } - - @Override - public ScriptEntryData getScriptEntryData() { - return new BukkitScriptEntryData(player, null); - } - - @Override - public ObjectTag getContext(String name) { - switch (name) { - case "level": - return level; - case "refund": - return refund; - case "skill_name": - return skill; - } - return super.getContext(name); - } - - @EventHandler - public void onSkillAPIPlayerDowngradesSkill(PlayerSkillDowngradeEvent event) { - if (!EntityTag.isPlayer(event.getPlayerData().getPlayer())) { - return; - } - player = PlayerTag.mirrorBukkitPlayer(event.getPlayerData().getPlayer()); - level = new ElementTag(event.getDowngradedSkill().getLevel()); - refund = new ElementTag(event.getRefund()); - skill = new ElementTag(event.getDowngradedSkill().getData().getName()); - this.event = event; - fire(event); - } -} diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/events/skillapi/SkillAPIPlayerLevelsUpScriptEvent.java b/src/main/java/com/denizenscript/depenizen/bukkit/events/skillapi/SkillAPIPlayerLevelsUpScriptEvent.java deleted file mode 100644 index 81c511769..000000000 --- a/src/main/java/com/denizenscript/depenizen/bukkit/events/skillapi/SkillAPIPlayerLevelsUpScriptEvent.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.denizenscript.depenizen.bukkit.events.skillapi; - -import com.denizenscript.depenizen.bukkit.objects.skillapi.SkillAPIClassTag; -import com.sucy.skill.api.event.PlayerLevelUpEvent; -import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData; -import com.denizenscript.denizen.events.BukkitScriptEvent; -import com.denizenscript.denizen.objects.EntityTag; -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 org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; - -public class SkillAPIPlayerLevelsUpScriptEvent extends BukkitScriptEvent implements Listener { - - // <--[event] - // @Events - // skillapi player levels up - // - // @Location true - // - // @Triggers when a player levels up in SkillAPI. - // - // @Context - // returns the level the player went up to. - // returns how many levels the player gained. - // returns the SkillAPIClass the player is leveling up in. - // - // @Determine - // None - // - // @Plugin Depenizen, SkillAPI - // - // @Player Always. - // - // @Group Depenizen - // - // --> - - public SkillAPIPlayerLevelsUpScriptEvent() { - registerCouldMatcher("skillapi player levels up"); - } - - public PlayerLevelUpEvent event; - public PlayerTag player; - public int level; - public int gained; - public SkillAPIClassTag skillAPIClass; - - @Override - public boolean matches(ScriptPath path) { - - if (!runInCheck(path, player.getLocation())) { - return false; - } - - return super.matches(path); - } - - @Override - public ScriptEntryData getScriptEntryData() { - return new BukkitScriptEntryData(player, null); - } - - @Override - public ObjectTag getContext(String name) { - switch (name) { - case "level": - return new ElementTag(level); - case "gained": - return new ElementTag(gained); - case "class": - return skillAPIClass; - } - return super.getContext(name); - } - - @EventHandler - public void onSkillAPIPlayerLevelsUp(PlayerLevelUpEvent event) { - if (!EntityTag.isPlayer(event.getPlayerData().getPlayer())) { - return; - } - player = PlayerTag.mirrorBukkitPlayer(event.getPlayerData().getPlayer()); - level = event.getLevel(); - gained = event.getAmount(); - skillAPIClass = new SkillAPIClassTag(event.getPlayerClass().getData()); - this.event = event; - fire(event); - } -} diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/events/skillapi/SkillAPIPlayerUnlocksSkillScriptEvent.java b/src/main/java/com/denizenscript/depenizen/bukkit/events/skillapi/SkillAPIPlayerUnlocksSkillScriptEvent.java deleted file mode 100644 index b7e831c04..000000000 --- a/src/main/java/com/denizenscript/depenizen/bukkit/events/skillapi/SkillAPIPlayerUnlocksSkillScriptEvent.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.denizenscript.depenizen.bukkit.events.skillapi; - -import com.sucy.skill.api.event.PlayerSkillUnlockEvent; -import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData; -import com.denizenscript.denizen.events.BukkitScriptEvent; -import com.denizenscript.denizen.objects.EntityTag; -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.denizenscript.denizencore.utilities.CoreUtilities; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; - -public class SkillAPIPlayerUnlocksSkillScriptEvent extends BukkitScriptEvent implements Listener { - - // <--[event] - // @Events - // skillapi player unlocks <'skill'> - // - // @Location true - // - // @Triggers when a player unlocks a skill in SkillAPI. - // - // @Context - // returns the name of the skill unlocked. - // - // @Determine - // None - // - // @Plugin Depenizen, SkillAPI - // - // @Player Always. - // - // @Group Depenizen - // - // --> - - public SkillAPIPlayerUnlocksSkillScriptEvent() { - registerCouldMatcher("skillapi player unlocks <'skill'>"); - } - - public PlayerSkillUnlockEvent event; - public PlayerTag player; - public ElementTag skill; - - @Override - public boolean matches(ScriptPath path) { - String skill = path.eventArgLowerAt(3); - - if (!skill.equals("skill") && !skill.equals(CoreUtilities.toLowerCase(this.skill.asString()))) { - return false; - } - - if (!runInCheck(path, player.getLocation())) { - return false; - } - - return super.matches(path); - } - - @Override - public ScriptEntryData getScriptEntryData() { - return new BukkitScriptEntryData(player, null); - } - - @Override - public ObjectTag getContext(String name) { - if (name.equals("skill_name")) { - return skill; - } - return super.getContext(name); - } - - @EventHandler - public void onSkillAPIPlayerUnlocksSkill(PlayerSkillUnlockEvent event) { - if (!EntityTag.isPlayer(event.getPlayerData().getPlayer())) { - return; - } - player = PlayerTag.mirrorBukkitPlayer(event.getPlayerData().getPlayer()); - skill = new ElementTag(event.getUnlockedSkill().getData().getName()); - this.event = event; - fire(event); - } -} diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/events/skillapi/SkillAPIPlayerUpgradesSkillScriptEvent.java b/src/main/java/com/denizenscript/depenizen/bukkit/events/skillapi/SkillAPIPlayerUpgradesSkillScriptEvent.java deleted file mode 100644 index 01e4ffe0d..000000000 --- a/src/main/java/com/denizenscript/depenizen/bukkit/events/skillapi/SkillAPIPlayerUpgradesSkillScriptEvent.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.denizenscript.depenizen.bukkit.events.skillapi; - -import com.sucy.skill.api.event.PlayerSkillUpgradeEvent; -import com.denizenscript.denizen.utilities.implementation.BukkitScriptEntryData; -import com.denizenscript.denizen.events.BukkitScriptEvent; -import com.denizenscript.denizen.objects.EntityTag; -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.denizenscript.denizencore.utilities.CoreUtilities; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; - -public class SkillAPIPlayerUpgradesSkillScriptEvent extends BukkitScriptEvent implements Listener { - - // <--[event] - // @Events - // skillapi player upgrades <'skill'> - // - // @Location true - // - // @Triggers when a player upgrades a skill in SkillAPI. - // - // @Context - // returns the level the player went up to. - // returns how much the upgrade cost. - // returns the name of the skill upgraded. - // - // @Determine - // None - // - // @Plugin Depenizen, SkillAPI - // - // @Player Always. - // - // @Group Depenizen - // - // --> - - public SkillAPIPlayerUpgradesSkillScriptEvent() { - registerCouldMatcher("skillapi player upgrades <'skill'>"); - } - - public PlayerSkillUpgradeEvent event; - public PlayerTag player; - public ElementTag level; - public ElementTag skill; - public ElementTag cost; - - @Override - public boolean matches(ScriptPath path) { - String skill = path.eventArgLowerAt(3); - - if (!skill.equals("skill") && !skill.equals(CoreUtilities.toLowerCase(this.skill.asString()))) { - return false; - } - - if (!runInCheck(path, player.getLocation())) { - return false; - } - return super.matches(path); - } - - @Override - public ScriptEntryData getScriptEntryData() { - return new BukkitScriptEntryData(player, null); - } - - @Override - public ObjectTag getContext(String name) { - switch (name) { - case "level": - return level; - case "cost": - return cost; - case "skill_name": - return skill; - } - return super.getContext(name); - } - - @EventHandler - public void onSkillAPIPlayerUpgradesSkill(PlayerSkillUpgradeEvent event) { - if (!EntityTag.isPlayer(event.getPlayerData().getPlayer())) { - return; - } - player = PlayerTag.mirrorBukkitPlayer(event.getPlayerData().getPlayer()); - level = new ElementTag(event.getUpgradedSkill().getLevel()); - cost = new ElementTag(event.getCost()); - skill = new ElementTag(event.getUpgradedSkill().getData().getName()); - this.event = event; - fire(event); - } -} diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/objects/fabled/FabledClassTag.java b/src/main/java/com/denizenscript/depenizen/bukkit/objects/fabled/FabledClassTag.java new file mode 100644 index 000000000..d53aa02d4 --- /dev/null +++ b/src/main/java/com/denizenscript/depenizen/bukkit/objects/fabled/FabledClassTag.java @@ -0,0 +1,277 @@ +package com.denizenscript.depenizen.bukkit.objects.fabled; + +import com.denizenscript.denizencore.tags.Attribute; +import com.denizenscript.denizencore.tags.ObjectTagProcessor; +import com.denizenscript.denizencore.utilities.CoreUtilities; +import com.denizenscript.denizencore.utilities.debugging.Debug; +import com.denizenscript.denizen.objects.ItemTag; +import com.denizenscript.denizencore.objects.core.ElementTag; +import com.denizenscript.denizencore.objects.Fetchable; +import com.denizenscript.denizencore.objects.ObjectTag; +import com.denizenscript.denizencore.tags.TagContext; +import studio.magemonkey.fabled.Fabled; +import studio.magemonkey.fabled.api.classes.FabledClass; + +public class FabledClassTag implements ObjectTag { + + // <--[ObjectType] + // @name FabledClassTag + // @prefix fabledclass + // @base ElementTag + // @format + // The identity format for regions is + // For example, 'fabledclass@myclass'. + // + // @plugin Depenizen, Fabled + // @description + // A FabledClassTag represents a Fabled class. + // + // --> + + ///////////////////// + // OBJECT FETCHER + ///////////////// + + @Fetchable("fabledclass") + public static FabledClassTag valueOf(String string, TagContext context) { + if (string.startsWith("fabledclass@")) { + string = string.substring("fabledclass@".length()); + } + FabledClass fabledClass = Fabled.getClass(string); + if (fabledClass == null) { + Debug.echoError("No class with the name '" + string + "' found."); + return null; + } + return new FabledClassTag(fabledClass); + } + + public static boolean matches(String arg) { + if (arg.startsWith("fabledclass@")) { + return true; + } + return valueOf(arg, CoreUtilities.noDebugContext) != null; + } + + ///////////////////// + // CONSTRUCTORS + ///////////////// + + static FabledClass fabledClass; + + public FabledClassTag(FabledClass fabledClass) { + FabledClassTag.fabledClass = fabledClass; + } + + ///////////////////// + // ObjectTag Methods + ///////////////// + + private String prefix = "FabledClass"; + + @Override + public String getPrefix() { + return prefix; + } + + @Override + public ObjectTag setPrefix(String prefix) { + this.prefix = prefix; + return this; + } + + @Override + public boolean isUnique() { + return true; + } + + @Override + public String identify() { + return "fabledclass@" + fabledClass.getName(); + } + + @Override + public String identifySimple() { + return identify(); + } + + @Override + public String toString() { + return identify(); + } + + @Override + public ObjectTag getObjectAttribute(Attribute attribute) { + return tagProcessor.getObjectAttribute(this, attribute); + } + + public static void register() { + + // <--[tag] + // @attribute + // @returns ElementTag + // @plugin Depenizen, Fabled + // @description + // Returns the name of this Fabled class. + // --> + tagProcessor.registerTag(ElementTag.class, "name", (attribute, object) -> { + return new ElementTag(fabledClass.getName(), true); + }); + + // <--[tag] + // @attribute + // @returns ElementTag + // @plugin Depenizen, Fabled + // @description + // Returns the prefix of this Fabled class. + // --> + tagProcessor.registerTag(ElementTag.class, "class_prefix", (attribute, object) -> { + return new ElementTag(fabledClass.getPrefix(), true); + }); + + // <--[tag] + // @attribute + // @returns ElementTag(Boolean) + // @plugin Depenizen, Fabled + // @description + // Returns whether this Fabled class requires permission to profess as it. + // --> + tagProcessor.registerTag(ElementTag.class, "needs_permission", (attribute, object) -> { + return new ElementTag(fabledClass.isNeedsPermission()); + }); + + // <--[tag] + // @attribute + // @returns ElementTag + // @plugin Depenizen, Fabled + // @description + // Returns the name of the group that this Fabled class falls into. + // --> + tagProcessor.registerTag(ElementTag.class, "group_name", (attribute, object) -> { + return new ElementTag(fabledClass.getGroup(), true); + }); + + // <--[tag] + // @attribute + // @returns ElementTag(Boolean) + // @plugin Depenizen, Fabled + // @description + // Returns whether this Fabled class has a parent class. + // --> + tagProcessor.registerTag(ElementTag.class, "has_parent", (attribute, object) -> { + return new ElementTag(fabledClass.hasParent()); + }); + + // <--[tag] + // @attribute + // @returns FabledClassTag + // @plugin Depenizen, Fabled + // @description + // Returns the parent class of this Fabled class. Returns null if this class does not have a parent. + // --> + tagProcessor.registerTag(FabledClassTag.class, "parent", (attribute, object) -> { + return fabledClass.getParent() != null ? new FabledClassTag(fabledClass.getParent()) : null; + }); + + // <--[tag] + // @attribute + // @returns ItemTag + // @plugin Depenizen, Fabled + // @description + // Returns the item icon representing this Fabled class in menus. + // --> + tagProcessor.registerTag(ItemTag.class, "icon", (attribute, object) -> { + return new ItemTag(fabledClass.getIcon()); + }); + + // <--[tag] + // @attribute + // @returns ElementTag(Number) + // @plugin Depenizen, Fabled + // @description + // Returns the maximum level that this Fabled class can reach. + // --> + tagProcessor.registerTag(ElementTag.class, "max_level", (attribute, object) -> { + return new ElementTag(fabledClass.getMaxLevel()); + }); + + // <--[tag] + // @attribute + // @returns ElementTag(Decimal) + // @plugin Depenizen, Fabled + // @description + // Returns the base amount of health for this Fabled class. + // --> + tagProcessor.registerTag(ElementTag.class, "base_health", (attribute, object) -> { + return new ElementTag(fabledClass.getBaseHealth()); + }); + + // <--[tag] + // @attribute + // @returns ElementTag(Decimal) + // @plugin Depenizen, Fabled + // @description + // Returns the amount of health gained per level for this Fabled class. + // --> + tagProcessor.registerTag(ElementTag.class, "health_scale", (attribute, object) -> { + return new ElementTag(fabledClass.getHealthScale()); + }); + + // <--[tag] + // @attribute + // @returns ElementTag(Decimal) + // @plugin Depenizen, Fabled + // @description + // Returns the base amount of mana for this Fabled class. + // --> + tagProcessor.registerTag(ElementTag.class, "base_mana", (attribute, object) -> { + return new ElementTag(fabledClass.getBaseMana()); + }); + + // <--[tag] + // @attribute + // @returns ElementTag(Decimal) + // @plugin Depenizen, Fabled + // @description + // Returns the amount of mana gained per level for this Fabled class. + // --> + tagProcessor.registerTag(ElementTag.class, "mana_scale", (attribute, object) -> { + return new ElementTag(fabledClass.getManaScale()); + }); + + // <--[tag] + // @attribute + // @returns ElementTag + // @plugin Depenizen, Fabled + // @description + // Returns the alias for mana that this Fabled class uses. + // --> + tagProcessor.registerTag(ElementTag.class, "mana_name", (attribute, object) -> { + return new ElementTag(fabledClass.getManaName(), true); + }); + + // <--[tag] + // @attribute + // @returns ElementTag(Boolean) + // @plugin Depenizen, Fabled + // @description + // Returns whether this Fabled class has mana regeneration. + // --> + tagProcessor.registerTag(ElementTag.class, "has_mana_regen", (attribute, object) -> { + return new ElementTag(fabledClass.hasManaRegen()); + }); + + // <--[tag] + // @attribute + // @returns ElementTag(Decimal) + // @plugin Depenizen, Fabled + // @description + // Returns the amount of mana regeneration that this Fabled class has. + // --> + tagProcessor.registerTag(ElementTag.class, "mana_regen", (attribute, object) -> { + return new ElementTag(fabledClass.getManaRegen()); + }); + } + + public static final ObjectTagProcessor tagProcessor = new ObjectTagProcessor<>(); + +} diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/objects/skillapi/SkillAPIClassTag.java b/src/main/java/com/denizenscript/depenizen/bukkit/objects/skillapi/SkillAPIClassTag.java deleted file mode 100644 index 2d71d98b2..000000000 --- a/src/main/java/com/denizenscript/depenizen/bukkit/objects/skillapi/SkillAPIClassTag.java +++ /dev/null @@ -1,291 +0,0 @@ -package com.denizenscript.depenizen.bukkit.objects.skillapi; - -import com.denizenscript.denizencore.utilities.CoreUtilities; -import com.denizenscript.denizencore.utilities.debugging.Debug; -import com.sucy.skill.SkillAPI; -import com.sucy.skill.api.classes.RPGClass; -import com.denizenscript.denizen.objects.ItemTag; -import com.denizenscript.denizencore.objects.core.ElementTag; -import com.denizenscript.denizencore.objects.Fetchable; -import com.denizenscript.denizencore.objects.ObjectTag; -import com.denizenscript.denizencore.tags.Attribute; -import com.denizenscript.denizencore.tags.TagContext; - -public class SkillAPIClassTag implements ObjectTag { - - // <--[ObjectType] - // @name SkillAPIClassTag - // @prefix skillapiclass - // @base ElementTag - // @format - // The identity format for regions is - // For example, 'skillapiclass@myclass'. - // - // @plugin Depenizen, SkillAPI - // @description - // A SkillAPIClassTag represents a SkillAPI class. - // - // --> - - ///////////////////// - // OBJECT FETCHER - ///////////////// - - @Fetchable("skillapiclass") - public static SkillAPIClassTag valueOf(String string, TagContext context) { - if (string.startsWith("skillapiclass@")) { - string = string.substring("skillapiclass@".length()); - } - RPGClass rpgClass = SkillAPI.getClass(string); - if (rpgClass != null) { - return new SkillAPIClassTag(rpgClass); - } - return null; - } - - public static boolean matches(String arg) { - if (valueOf(arg, CoreUtilities.noDebugContext) != null) { - return true; - } - - return false; - } - - ///////////////////// - // CONSTRUCTORS - ///////////////// - - RPGClass rpgClass; - - public SkillAPIClassTag(RPGClass rpgClass) { - this.rpgClass = rpgClass; - } - - public RPGClass getRPGClass() { - return rpgClass; - } - - ///////////////////// - // ObjectTag Methods - ///////////////// - - private String prefix = "SkillAPIClass"; - - @Override - public String getPrefix() { - return prefix; - } - - @Override - public ObjectTag setPrefix(String prefix) { - this.prefix = prefix; - return this; - } - - @Override - public boolean isUnique() { - return true; - } - - @Override - public String identify() { - return "skillapiclass@" + rpgClass.getName(); - } - - @Override - public String identifySimple() { - return identify(); - } - - @Override - public String toString() { - return identify(); - } - - @Override - public ObjectTag getObjectAttribute(Attribute attribute) { - - // <--[tag] - // @attribute - // @returns ElementTag - // @plugin Depenizen, SkillAPI - // @description - // Returns the name of this SkillAPI class. - // --> - if (attribute.startsWith("name")) { - return new ElementTag(rpgClass.getName()).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute - // @returns ElementTag - // @plugin Depenizen, SkillAPI - // @description - // Returns the color of the prefix of this SkillAPI class. - // --> - if (attribute.startsWith("prefix_color")) { - return new ElementTag(rpgClass.getPrefixColor().toString()).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute - // @returns ElementTag - // @plugin Depenizen, SkillAPI - // @description - // Returns the prefix of this SkillAPI class. - // --> - else if (attribute.startsWith("class_prefix")) { - return new ElementTag(rpgClass.getPrefix()).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute - // @returns ElementTag(Boolean) - // @plugin Depenizen, SkillAPI - // @description - // Returns whether this SkillAPI class requires permission to profess as it. - // --> - else if (attribute.startsWith("needs_permission")) { - return new ElementTag(rpgClass.isNeedsPermission()).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute - // @returns ElementTag - // @plugin Depenizen, SkillAPI - // @description - // Returns the name of the group that this SkillAPI class falls into. - // --> - if (attribute.startsWith("group_name")) { - return new ElementTag(rpgClass.getGroup()).getObjectAttribute(attribute.fulfill(1)); - } - if (attribute.startsWith("group.name")) { // old - Debug.echoError("Deprecation notice - please change 'SkillAPIClassTag.group.name' to 'SkillAPIClassTag.group_name'"); - return new ElementTag(rpgClass.getGroup()).getObjectAttribute(attribute.fulfill(2)); - } - - // <--[tag] - // @attribute - // @returns ElementTag(Boolean) - // @plugin Depenizen, SkillAPI - // @description - // Returns the whether this SkillAPI class has a parent class. - // --> - if (attribute.startsWith("has_parent")) { - return new ElementTag(rpgClass.hasParent()).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute - // @returns SkillAPIClassTag - // @plugin Depenizen, SkillAPI - // @description - // Returns the parent class of this SkillAPI class. - // --> - if (attribute.startsWith("parent")) { - return new SkillAPIClassTag(rpgClass.getParent()).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute - // @returns ItemTag - // @plugin Depenizen, SkillAPI - // @description - // Returns the item icon representing this SkillAPI class in menus. - // --> - if (attribute.startsWith("icon")) { - return new ItemTag(rpgClass.getIcon()).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute - // @returns ElementTag(Number) - // @plugin Depenizen, SkillAPI - // @description - // Returns the maximum level that this SkillAPI class can reach. - // --> - if (attribute.startsWith("max_level")) { - return new ElementTag(rpgClass.getMaxLevel()).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute - // @returns ElementTag(Decimal) - // @plugin Depenizen, SkillAPI - // @description - // Returns the base amount of health for this SkillAPI class. - // --> - if (attribute.startsWith("base_health")) { - return new ElementTag(rpgClass.getBaseHealth()).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute - // @returns ElementTag(Decimal) - // @plugin Depenizen, SkillAPI - // @description - // Returns the amount of health gained per level for this SkillAPI class. - // --> - if (attribute.startsWith("health_scale")) { - return new ElementTag(rpgClass.getHealthScale()).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute - // @returns ElementTag(Decimal) - // @plugin Depenizen, SkillAPI - // @description - // Returns the base amount of mana for this SkillAPI class. - // --> - if (attribute.startsWith("base_mana")) { - return new ElementTag(rpgClass.getBaseMana()).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute - // @returns ElementTag(Decimal) - // @plugin Depenizen, SkillAPI - // @description - // Returns the amount of mana gained per level for this SkillAPI class. - // --> - if (attribute.startsWith("mana_scale")) { - return new ElementTag(rpgClass.getManaScale()).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute - // @returns ElementTag - // @plugin Depenizen, SkillAPI - // @description - // Returns the alias for mana that this SkillAPI class uses. - // --> - if (attribute.startsWith("mana_name")) { - return new ElementTag(rpgClass.getManaName()).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute - // @returns ElementTag(Boolean) - // @plugin Depenizen, SkillAPI - // @description - // Returns whether this SkillAPI class has mana regeneration. - // --> - if (attribute.startsWith("has_mana_regen")) { - return new ElementTag(rpgClass.hasManaRegen()).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute - // @returns ElementTag(Decimal) - // @plugin Depenizen, SkillAPI - // @description - // Returns the amount of mana regeneration that this SkillAPI class has. - // --> - if (attribute.startsWith("mana_regen")) { - return new ElementTag(rpgClass.getManaRegen()).getObjectAttribute(attribute.fulfill(1)); - } - - return new ElementTag(identify()).getObjectAttribute(attribute); - - } -} diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/properties/fabled/FabledPlayerExtensions.java b/src/main/java/com/denizenscript/depenizen/bukkit/properties/fabled/FabledPlayerExtensions.java new file mode 100644 index 000000000..f28680aae --- /dev/null +++ b/src/main/java/com/denizenscript/depenizen/bukkit/properties/fabled/FabledPlayerExtensions.java @@ -0,0 +1,314 @@ +package com.denizenscript.depenizen.bukkit.properties.fabled; + +import com.denizenscript.denizen.objects.ItemTag; +import com.denizenscript.denizen.objects.MaterialTag; +import com.denizenscript.depenizen.bukkit.objects.fabled.FabledClassTag; +import com.denizenscript.denizen.objects.PlayerTag; +import com.denizenscript.denizencore.objects.core.DurationTag; +import com.denizenscript.denizencore.objects.core.ElementTag; +import studio.magemonkey.fabled.Fabled; +import studio.magemonkey.fabled.api.classes.FabledClass; +import studio.magemonkey.fabled.api.player.*; +import studio.magemonkey.fabled.api.skills.Skill; +import studio.magemonkey.fabled.manager.FabledAttribute; + +public class FabledPlayerExtensions { + + static PlayerClass playerClass; + static PlayerSkill playerSkill; + + public static PlayerData getPlayer(PlayerTag player) { + return Fabled.getData(player.getOfflinePlayer()); + } + + public static void register() { + + // <--[tag] + // @attribute ]> + // @returns ElementTag(Number) + // @plugin Depenizen, Fabled + // @description + // Returns how many attribute points a player has put into a specific attribute. + // --> + PlayerTag.tagProcessor.registerTag(ElementTag.class, ElementTag.class, "fabled_attribute_points", (attribute, player, input) -> { + FabledAttribute fabledAttribute = Fabled.getAttributesManager().getAttribute(input.toString()); + return fabledAttribute != null ? new ElementTag(getPlayer(player).getAttribute(input.toString())) : null; + }); + + // <--[tag] + // @attribute ]> + // @returns ElementTag(Decimal) + // @plugin Depenizen, Fabled + // @description + // Returns the amount of experience the player has toward the next level in the specified class. + // --> + PlayerTag.tagProcessor.registerTag(ElementTag.class, ElementTag.class, "fabled_class_exp", (attribute, player, value) -> { + playerClass = getPlayer(player).getClass(value.asString()); + return playerClass != null ? new ElementTag(playerClass.getExp()) : null; + }, "skillapi.class_exp"); + + // <--[tag] + // @attribute ]> + // @returns ElementTag(Decimal) + // @plugin Depenizen, Fabled + // @description + // Returns the amount of health the player gets from the specified class. + // --> + PlayerTag.tagProcessor.registerTag(ElementTag.class, ElementTag.class, "fabled_class_health", (attribute, player, value) -> { + playerClass = getPlayer(player).getClass(value.asString()); + return playerClass != null ? new ElementTag(playerClass.getHealth()) : null; + }, "skillapi.class_health"); + + // <--[tag] + // @attribute ]> + // @returns ElementTag(Number) + // @plugin Depenizen, Fabled + // @description + // Returns the level the player is in the specified class. + // --> + PlayerTag.tagProcessor.registerTag(ElementTag.class, ElementTag.class, "fabled_class_level", (attribute, player, value) -> { + playerClass = getPlayer(player).getClass(value.asString()); + return playerClass != null ? new ElementTag(playerClass.getLevel()) : null; + }, "skillapi.class_level"); + + // <--[tag] + // @attribute ]> + // @returns ElementTag(Decimal) + // @plugin Depenizen, Fabled + // @description + // Returns the amount of mana the player gets from the specified class. + // --> + PlayerTag.tagProcessor.registerTag(ElementTag.class, ElementTag.class, "fabled_class_mana", (attribute, player, value) -> { + playerClass = getPlayer(player).getClass(value.asString()); + return playerClass != null ? new ElementTag(playerClass.getMana()) : null; + }, "skillapi.class_mana"); + + // <--[tag] + // @attribute ]> + // @returns ElementTag(Boolean) + // @plugin Depenizen, Fabled + // @description + // Returns whether the player has hit maximum level in the specified class. + // --> + PlayerTag.tagProcessor.registerTag(ElementTag.class, ElementTag.class, "fabled_class_maxed", (attribute, player, value) -> { + playerClass = getPlayer(player).getClass(value.asString()); + return playerClass != null ? new ElementTag(playerClass.isLevelMaxed()) : null; + }, "skillapi.class_maxed"); + + // <--[tag] + // @attribute ]> + // @returns ElementTag(Number) + // @plugin Depenizen, Fabled + // @description + // Returns the number of available skill points the player has in the specified class. + // --> + PlayerTag.tagProcessor.registerTag(ElementTag.class, ElementTag.class, "fabled_class_points", (attribute, player, value) -> { + playerClass = getPlayer(player).getClass(value.asString()); + return playerClass != null ? new ElementTag(playerClass.getPoints()) : null; + }, "skillapi.class_points"); + + // <--[tag] + // @attribute ]> + // @returns ElementTag(Decimal) + // @plugin Depenizen, Fabled + // @description + // Returns the amount of experience the player must receive to get to the next level in the specified class. + // --> + PlayerTag.tagProcessor.registerTag(ElementTag.class, ElementTag.class, "fabled_class_required_exp", (attribute, player, value) -> { + playerClass = getPlayer(player).getClass(value.asString()); + return playerClass != null ? new ElementTag(playerClass.getRequiredExp()) : null; + }, "skillapi.class_required_exp"); + + // <--[tag] + // @attribute ]> + // @returns ElementTag(Decimal) + // @plugin Depenizen, Fabled + // @description + // Returns the total amount of experience the player has in the specified class. + // --> + PlayerTag.tagProcessor.registerTag(ElementTag.class, ElementTag.class, "fabled_class_total_exp", (attribute, player, value) -> { + playerClass = getPlayer(player).getClass(value.asString()); + return playerClass != null ? new ElementTag(playerClass.getTotalExp()) : null; + }, "skillapi.class_total_exp"); + + // <--[tag] + // @attribute ]> + // @returns ElementTag(Boolean) + // @plugin Depenizen, Fabled + // @description + // Returns whether the player has the specified skill. + // --> + PlayerTag.tagProcessor.registerTag(ElementTag.class, ElementTag.class, "fabled_has_skill", (attribute, player, skill) -> { + Skill fabledSkill = Fabled.getSkill(skill.toString()); + return fabledSkill != null ? new ElementTag(getPlayer(player).hasSkill(fabledSkill.getName())) : null; + }, "skillapi.has_skill"); + + // <--[tag] + // @attribute ]> + // @returns ElementTag(Boolean) + // @plugin Depenizen, Fabled + // @description + // Returns whether the player professes in the specified class. + // If none is specified, returns whether the player professes in any class. + // --> + PlayerTag.tagProcessor.registerTag(ElementTag.class, ElementTag.class, "fabled_in_class", (attribute, player, value) -> { + FabledClass fabledClass = Fabled.getClass(value.asString()); + return fabledClass != null ? new ElementTag(getPlayer(player).isExactClass(fabledClass)) : null; + }, "skillapi.in_class"); + + // <--[tag] + // @attribute + // @returns FabledClassTag + // @plugin Depenizen, Fabled + // @description + // Returns the player's main Fabled class. Returns null if the player doesn't have one. + // --> + PlayerTag.tagProcessor.registerTag(FabledClassTag.class, "fabled_main_class", (attribute, player) -> { + playerClass = getPlayer(player).getMainClass(); + return playerClass != null ? new FabledClassTag(playerClass.getData()) : null; + }, "skillapi.main_class"); + + // <--[tag] + // @attribute + // @returns ElementTag(Decimal) + // @plugin Depenizen, Fabled + // @description + // Returns the player's current amount of mana. + // --> + PlayerTag.tagProcessor.registerTag(ElementTag.class, "fabled_mana", (attribute, player) -> { + return new ElementTag(getPlayer(player).getMana()); + }, "skillapi.mana"); + + // <--[tag] + // @attribute + // @returns ElementTag(Decimal) + // @plugin Depenizen, Fabled + // @description + // Returns the player's maximum amount of mana. + // --> + PlayerTag.tagProcessor.registerTag(ElementTag.class, "fabled_max_mana", (attribute, player) -> { + return new ElementTag(getPlayer(player).getMaxMana()); + }, "skillapi.max_mana"); + + // <--[tag] + // @attribute ]> + // @returns MaterialTag + // @plugin Depenizen, Fabled + // @description + // Returns the material this skill is currently bound to. + // --> + PlayerTag.tagProcessor.registerTag(MaterialTag.class, ElementTag.class, "fabled_skill_bind", (attribute, player, skill) -> { + playerSkill = getPlayer(player).getSkill(skill.asString()); + return playerSkill != null ? new MaterialTag(playerSkill.getBind()) : null; + }, "skillapi.skill_bind"); + + // <--[tag] + // @attribute ]> + // @returns DurationTag + // @plugin Depenizen, Fabled + // @description + // Returns the remaining cooldown the player has in the specified skill. + // --> + PlayerTag.tagProcessor.registerTag(DurationTag.class, ElementTag.class, "fabled_skill_cooldown", (attribute, player, skill) -> { + playerSkill = getPlayer(player).getSkill(skill.asString()); + return playerSkill != null ? new DurationTag(playerSkill.getCooldown()) : null; + }, "skillapi.skill_cooldown"); + + // <--[tag] + // @attribute ]> + // @returns ElementTag(Number) + // @plugin Depenizen, Fabled + // @description + // Returns the cost the for the player to level up the specified skill. + // --> + PlayerTag.tagProcessor.registerTag(ElementTag.class, ElementTag.class, "fabled_skill_cost", (attribute, player, skill) -> { + playerSkill = getPlayer(player).getSkill(skill.asString()); + return playerSkill != null ? new ElementTag(playerSkill.getCost()) : null; + }, "skillapi.skill_cost"); + + // <--[tag] + // @attribute ]> + // @returns ItemTag + // @plugin Depenizen, Fabled + // @description + // Returns the indicator item for the skill. + // --> + PlayerTag.tagProcessor.registerTag(ItemTag.class, ElementTag.class, "fabled_skill_indicator", (attribute, player, skill) -> { + playerSkill = getPlayer(player).getSkill(skill.asString()); + return playerSkill != null ? new ItemTag(playerSkill.getData().getIcon(getPlayer(player))) : null; + }, "skillapi.skill_indicator"); + + // <--[tag] + // @attribute ]> + // @returns ElementTag(Number) + // @plugin Depenizen, Fabled + // @description + // Returns the level the player is in the specified skill. + // --> + PlayerTag.tagProcessor.registerTag(ElementTag.class, ElementTag.class, "fabled_skill_level", (attribute, player, skill) -> { + playerSkill = getPlayer(player).getSkill(skill.asString()); + return playerSkill != null ? new ElementTag(playerSkill.getLevel()) : null; + }, "skillapi.skill_level"); + + // <--[tag] + // @attribute ]> + // @returns ElementTag(Number) + // @plugin Depenizen, Fabled + // @description + // Returns the level the player must be to level up the specified skill. + // --> + PlayerTag.tagProcessor.registerTag(ElementTag.class, ElementTag.class, "fabled_skill_level_requirement", (attribute, player, skill) -> { + playerSkill = getPlayer(player).getSkill(skill.asString()); + return playerSkill != null ? new ElementTag(playerSkill.getLevelReq()) : null; + }, "skillapi.skill_level_requirement"); + + // <--[tag] + // @attribute ]> + // @returns ElementTag(Boolean) + // @plugin Depenizen, Fabled + // @description + // Returns whether the player has reached max level in the specified skill. + // --> + PlayerTag.tagProcessor.registerTag(ElementTag.class, ElementTag.class, "fabled_skill_maxed", (attribute, player, skill) -> { + playerSkill = getPlayer(player).getSkill(skill.asString()); + return playerSkill != null ? new ElementTag(playerSkill.isMaxed()) : null; + }, "skillapi.skill_maxed"); + + // <--[tag] + // @attribute ]> + // @returns ElementTag(Boolean) + // @plugin Depenizen, Fabled + // @description + // Returns whether the specified skill is currently on cooldown for the player. + // --> + PlayerTag.tagProcessor.registerTag(ElementTag.class, ElementTag.class, "fabled_skill_on_cooldown", (attribute, player, skill) -> { + playerSkill = getPlayer(player).getSkill(skill.asString()); + return playerSkill != null ? new ElementTag(playerSkill.isOnCooldown()) : null; + }, "skillapi.skill_on_cooldown"); + + // <--[tag] + // @attribute ]> + // @returns ElementTag(Number) + // @plugin Depenizen, Fabled + // @description + // Returns how many skill points the player has invested in the specified skill. + // --> + PlayerTag.tagProcessor.registerTag(ElementTag.class, ElementTag.class, "fabled_skill_points", (attribute, player, skill) -> { + playerSkill = getPlayer(player).getSkill(skill.asString()); + return playerSkill != null ? new ElementTag(playerSkill.getPlayerData().getPoints()) : null; + }, "skillapi.skill_points"); + + // <--[tag] + // @attribute ]> + // @returns ElementTag + // @plugin Depenizen, Fabled + // @description + // Returns the player's current status for the specified skill. + // Can be: MISSING_MANA, ON_COOLDOWN, or READY. + // --> + PlayerTag.tagProcessor.registerTag(ElementTag.class, ElementTag.class, "fabled_skill_status", (attribute, player, skill) -> { + playerSkill = getPlayer(player).getSkill(skill.asString()); + return playerSkill != null ? new ElementTag(playerSkill.getStatus()) : null; + }, "skillapi.skill_status"); + } +} diff --git a/src/main/java/com/denizenscript/depenizen/bukkit/properties/skillapi/SkillAPIPlayerProperties.java b/src/main/java/com/denizenscript/depenizen/bukkit/properties/skillapi/SkillAPIPlayerProperties.java deleted file mode 100644 index 27c72827c..000000000 --- a/src/main/java/com/denizenscript/depenizen/bukkit/properties/skillapi/SkillAPIPlayerProperties.java +++ /dev/null @@ -1,366 +0,0 @@ -package com.denizenscript.depenizen.bukkit.properties.skillapi; - -import com.denizenscript.denizen.objects.ItemTag; -import com.denizenscript.denizen.objects.MaterialTag; -import com.denizenscript.denizencore.objects.properties.Property; -import com.denizenscript.denizencore.objects.Mechanism; -import com.denizenscript.depenizen.bukkit.objects.skillapi.SkillAPIClassTag; -import com.sucy.skill.SkillAPI; -import com.sucy.skill.api.player.PlayerClass; -import com.sucy.skill.api.player.PlayerData; -import com.sucy.skill.api.player.PlayerSkill; -import com.denizenscript.denizen.objects.PlayerTag; -import com.denizenscript.denizencore.objects.core.DurationTag; -import com.denizenscript.denizencore.objects.core.ElementTag; -import com.denizenscript.denizencore.objects.ObjectTag; -import com.denizenscript.denizencore.tags.Attribute; - -public class SkillAPIPlayerProperties implements Property { - - @Override - public String getPropertyString() { - return null; - } - - @Override - public String getPropertyId() { - return "SkillAPIPlayer"; - } - - @Override - public void adjust(Mechanism mechanism) { - // None - } - - public static boolean describes(ObjectTag pl) { - return pl instanceof PlayerTag; - } - - public static SkillAPIPlayerProperties getFrom(ObjectTag pl) { - if (!describes(pl)) { - return null; - } - else { - return new SkillAPIPlayerProperties((PlayerTag) pl); - } - } - - public static final String[] handledTags = new String[] { - "skillapi" - }; - - public static final String[] handledMechs = new String[] { - }; // None - - public SkillAPIPlayerProperties(PlayerTag player) { - this.player = player; - } - - PlayerTag player; - - @Override - public ObjectTag getObjectAttribute(Attribute attribute) { - - if (attribute.startsWith("skillapi")) { - - PlayerData data = SkillAPI.getPlayerData(player.getOfflinePlayer()); - attribute = attribute.fulfill(1); - - // <--[tag] - // @attribute - // @returns SkillAPIClassTag - // @plugin Depenizen, SkillAPI - // @description - // Returns the player's main SkillAPI class. - // --> - if (attribute.startsWith("main_class")) { - if (data == null || data.getMainClass() == null) { - return null; - } - return new SkillAPIClassTag(data.getMainClass().getData()).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute ]> - // @returns ElementTag(Boolean) - // @plugin Depenizen, SkillAPI - // @description - // Returns whether the player professes in the specified class. If none is specified, returns - // whether the player professes in any class. - // --> - if (attribute.startsWith("in_class")) { - if (attribute.hasParam()) { - SkillAPIClassTag testClass = attribute.paramAsType(SkillAPIClassTag.class); - if (testClass == null) { - return null; - } - return new ElementTag(data.isExactClass(testClass.getRPGClass())).getObjectAttribute(attribute.fulfill(1)); - } - return new ElementTag(data.hasClass()).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute ]> - // @returns ElementTag(Boolean) - // @plugin Depenizen, SkillAPI - // @description - // Returns whether the player has the specified skill. - // --> - if (attribute.startsWith("has_skill") && attribute.hasParam()) { - return new ElementTag(data.hasSkill(attribute.getParam())).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute - // @returns ElementTag(Decimal) - // @plugin Depenizen, SkillAPI - // @description - // Returns the player's current amount of mana. - // --> - if (attribute.startsWith("mana")) { - return new ElementTag(data.getMana()).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute - // @returns ElementTag(Decimal) - // @plugin Depenizen, SkillAPI - // @description - // Returns the player's maximum amount of mana. - // --> - if (attribute.startsWith("max_mana")) { - return new ElementTag(data.getMaxMana()).getObjectAttribute(attribute.fulfill(1)); - } - - if (attribute.getAttribute(1).startsWith("class_") && attribute.hasParam()) { - - PlayerClass playerClass = null; - SkillAPIClassTag skillAPIClass = attribute.paramAsType(SkillAPIClassTag.class); - if (skillAPIClass != null) { - String name = skillAPIClass.getRPGClass().getName(); - for (PlayerClass plClass : data.getClasses()) { - if (plClass.getData().getName().equals(name)) { - playerClass = plClass; - break; - } - } - } - if (playerClass == null) { - return null; - } - - // <--[tag] - // @attribute ]> - // @returns ElementTag(Decimal) - // @plugin Depenizen, SkillAPI - // @description - // Returns the amount of experience the player has toward the next level in the specified class. - // --> - if (attribute.startsWith("class_exp")) { - return new ElementTag(playerClass.getExp()).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute ]> - // @returns ElementTag(Decimal) - // @plugin Depenizen, SkillAPI - // @description - // Returns the amount of experience the player must receive to get to the next level - // in the specified class. - // --> - if (attribute.startsWith("class_required_exp")) { - return new ElementTag(playerClass.getRequiredExp()).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute ]> - // @returns ElementTag(Decimal) - // @plugin Depenizen, SkillAPI - // @description - // Returns the total amount of experience the player has in the specified class. - // --> - if (attribute.startsWith("class_total_exp")) { - return new ElementTag(playerClass.getTotalExp()).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute ]> - // @returns ElementTag(Number) - // @plugin Depenizen, SkillAPI - // @description - // Returns the level the player is in the specified class. - // --> - if (attribute.startsWith("class_level")) { - return new ElementTag(playerClass.getLevel()).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute ]> - // @returns ElementTag(Number) - // @plugin Depenizen, SkillAPI - // @description - // Returns the number of skill points the player has in the specified class. - // --> - if (attribute.startsWith("class_points")) { - return new ElementTag(playerClass.getPoints()).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute ]> - // @returns ElementTag(Boolean) - // @plugin Depenizen, SkillAPI - // @description - // Returns whether the player has hit maximum level in the specified class. - // --> - if (attribute.startsWith("class_maxed")) { - return new ElementTag(playerClass.isLevelMaxed()).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute ]> - // @returns ElementTag(Decimal) - // @plugin Depenizen, SkillAPI - // @description - // Returns the amount of health the player gets from the specified class. - // --> - if (attribute.startsWith("class_health")) { - return new ElementTag(playerClass.getHealth()).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute ]> - // @returns ElementTag(Decimal) - // @plugin Depenizen, SkillAPI - // @description - // Returns the amount of mana the player gets from the specified class. - // --> - if (attribute.startsWith("class_mana")) { - return new ElementTag(playerClass.getMana()).getObjectAttribute(attribute.fulfill(1)); - } - } - - if (attribute.getAttribute(1).startsWith("skill_") && attribute.hasParam()) { - - PlayerSkill playerSkill = data.getSkill(attribute.getParam()); // TODO: SkillAPISkill object? - if (playerSkill == null) { - return null; - } - - // <--[tag] - // @attribute ]> - // @returns ItemTag - // @plugin Depenizen, SkillAPI - // @description - // Returns the indicator item for the skill. - // --> - if (attribute.startsWith("skill_indicator")) { - return new ItemTag(playerSkill.getData().getIndicator(playerSkill)).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute ]> - // @returns MaterialTag - // @plugin Depenizen, SkillAPI - // @description - // Returns the material this skill is currently bound to. - // --> - if (attribute.startsWith("skill_bind")) { - return new MaterialTag(playerSkill.getBind()).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute ]> - // @returns ElementTag(Number) - // @plugin Depenizen, SkillAPI - // @description - // Returns the level the player must be to level up the specified skill. - // --> - if (attribute.startsWith("skill_level_req")) { - return new ElementTag(playerSkill.getLevelReq()).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute ]> - // @returns ElementTag(Number) - // @plugin Depenizen, SkillAPI - // @description - // Returns the level the player is in the specified skill. - // --> - if (attribute.startsWith("skill_level")) { - return new ElementTag(playerSkill.getLevel()).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute ]> - // @returns ElementTag(Number) - // @plugin Depenizen, SkillAPI - // @description - // Returns how many skill points the player has invested in the specified skill. - // --> - if (attribute.startsWith("skill_points")) { - return new ElementTag(playerSkill.getPoints()).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute ]> - // @returns ElementTag(Number) - // @plugin Depenizen, SkillAPI - // @description - // Returns the cost the for the player to level up the specified skill. - // --> - if (attribute.startsWith("skill_cost")) { - return new ElementTag(playerSkill.getCost()).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute ]> - // @returns ElementTag(Boolean) - // @plugin Depenizen, SkillAPI - // @description - // Returns whether the specified skill is currently on cooldown for the player. - // --> - if (attribute.startsWith("skill_on_cooldown")) { - return new ElementTag(playerSkill.getLevel()).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute ]> - // @returns DurationTag - // @plugin Depenizen, SkillAPI - // @description - // Returns the remaining cooldown the player has in the specified skill. - // --> - if (attribute.startsWith("skill_cooldown")) { - return new DurationTag(playerSkill.getCooldown()).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute ]> - // @returns ElementTag(Boolean) - // @plugin Depenizen, SkillAPI - // @description - // Returns whether the player has reached max level in the specified skill. - // --> - if (attribute.startsWith("skill_maxed")) { - return new ElementTag(playerSkill.isMaxed()).getObjectAttribute(attribute.fulfill(1)); - } - - // <--[tag] - // @attribute ]> - // @returns ElementTag - // @plugin Depenizen, SkillAPI - // @description - // Returns the player's current status for the specified skill. - // Can be: ON_COOLDOWN, MISSING_MANA, or READY - // --> - if (attribute.startsWith("skill_status")) { - return new ElementTag(playerSkill.getStatus()).getObjectAttribute(attribute.fulfill(1)); - } - } - - } - - return null; - - } -} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 1d729e375..030c94223 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -19,6 +19,7 @@ softdepend: - CrackShot - EffectLib - Essentials + - Fabled - Factions - GriefPrevention - Jobs @@ -41,7 +42,6 @@ softdepend: - Residence - Sentinel - Shopkeepers - - SkillAPI - TerrainControl - Towny - TownyChat