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