diff --git a/pom.xml b/pom.xml index f5cf68f..9382549 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ <groupId>net.pentlock</groupId> <artifactId>ThunderDataEngine</artifactId> - <version>0.2.24</version> + <version>0.2.25</version> <packaging>jar</packaging> <name>ThunderDataEngine</name> @@ -70,6 +70,10 @@ <id>jitpack.io</id> <url>https://jitpack.io</url> </repository> + <repository> + <id>betonquest-repo</id> + <url>https://betonquest.org/nexus/repository/betonquest/</url> + </repository> </repositories> <dependencies> @@ -97,5 +101,11 @@ <version>1.0.0</version> <scope>provided</scope> </dependency> + <dependency> + <groupId>org.betonquest</groupId> + <artifactId>betonquest</artifactId> + <version>2.0.0-SNAPSHOT</version> + <scope>provided</scope> + </dependency> </dependencies> </project> diff --git a/src/main/java/net/pentlock/thunderdataengine/ThunderDataEngine.java b/src/main/java/net/pentlock/thunderdataengine/ThunderDataEngine.java index 6145b94..3c3d9cd 100644 --- a/src/main/java/net/pentlock/thunderdataengine/ThunderDataEngine.java +++ b/src/main/java/net/pentlock/thunderdataengine/ThunderDataEngine.java @@ -1,5 +1,6 @@ package net.pentlock.thunderdataengine; +import net.pentlock.thunderdataengine.beton.*; import net.pentlock.thunderdataengine.listeners.PlayerLoginListener; import net.pentlock.thunderdataengine.listeners.PlayerLogoutListener; import net.pentlock.thunderdataengine.profiles.ThunderPlayer; @@ -7,6 +8,7 @@ import net.pentlock.thunderdataengine.utilities.GuildUtil; import net.pentlock.thunderdataengine.utilities.HouseUtil; import net.pentlock.thunderdataengine.utilities.PlayerUtil; +import org.betonquest.betonquest.BetonQuest; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.entity.Player; @@ -42,6 +44,13 @@ public void onEnable() { new PlaceholderRegistry(this).register(); } + BetonQuest bq = BetonQuest.getInstance(); + bq.registerConditions("TCSLevel", LevelCondition.class); + bq.registerConditions("PhysicalDefense", PhysicalDefenseCondition.class); + bq.registerConditions("ArcheryDefense", ArcheryDefenseCondition.class); + bq.registerConditions("PhysicalOffense", PhysicalOffenseCondition.class); + bq.registerConditions("ArcheryOffense", ArcheryOffenseCondition.class); + runnableSaveJson(); initiateFiles(); } diff --git a/src/main/java/net/pentlock/thunderdataengine/beton/ArcheryDefenseCondition.java b/src/main/java/net/pentlock/thunderdataengine/beton/ArcheryDefenseCondition.java new file mode 100644 index 0000000..ce06e46 --- /dev/null +++ b/src/main/java/net/pentlock/thunderdataengine/beton/ArcheryDefenseCondition.java @@ -0,0 +1,30 @@ +package net.pentlock.thunderdataengine.beton; + +import net.pentlock.thunderdataengine.profiles.ThunderPlayer; +import net.pentlock.thunderdataengine.utilities.PlayerUtil; +import org.betonquest.betonquest.Instruction; +import org.betonquest.betonquest.api.Condition; +import org.betonquest.betonquest.exceptions.InstructionParseException; +import org.betonquest.betonquest.exceptions.QuestRuntimeException; +import org.betonquest.betonquest.utils.PlayerConverter; +import org.bukkit.entity.Player; + +public class ArcheryDefenseCondition extends Condition { + private final int defense; + + public ArcheryDefenseCondition(Instruction instruction, boolean forceSync) throws InstructionParseException { + super(instruction, forceSync); + this.defense = instruction.getInt(); + } + + @Override + protected Boolean execute(String s) throws QuestRuntimeException { + Player player = PlayerConverter.getPlayer(s); + ThunderPlayer thunderPlayer = PlayerUtil.findPlayer(player.getUniqueId()); + if (thunderPlayer != null) { + return defense >= thunderPlayer.getPhysicalDefense(); + } else { + return null; + } + } +} diff --git a/src/main/java/net/pentlock/thunderdataengine/beton/ArcheryOffenseCondition.java b/src/main/java/net/pentlock/thunderdataengine/beton/ArcheryOffenseCondition.java new file mode 100644 index 0000000..5f70a43 --- /dev/null +++ b/src/main/java/net/pentlock/thunderdataengine/beton/ArcheryOffenseCondition.java @@ -0,0 +1,30 @@ +package net.pentlock.thunderdataengine.beton; + +import net.pentlock.thunderdataengine.profiles.ThunderPlayer; +import net.pentlock.thunderdataengine.utilities.PlayerUtil; +import org.betonquest.betonquest.Instruction; +import org.betonquest.betonquest.api.Condition; +import org.betonquest.betonquest.exceptions.InstructionParseException; +import org.betonquest.betonquest.exceptions.QuestRuntimeException; +import org.betonquest.betonquest.utils.PlayerConverter; +import org.bukkit.entity.Player; + +public class ArcheryOffenseCondition extends Condition { + private final int offense; + + public ArcheryOffenseCondition(Instruction instruction, boolean forceSync) throws InstructionParseException { + super(instruction, forceSync); + this.offense = instruction.getInt(); + } + + @Override + protected Boolean execute(String s) throws QuestRuntimeException { + Player player = PlayerConverter.getPlayer(s); + ThunderPlayer thunderPlayer = PlayerUtil.findPlayer(player.getUniqueId()); + if (thunderPlayer != null) { + return offense >= thunderPlayer.getArcheryOffense(); + } else { + return null; + } + } +} diff --git a/src/main/java/net/pentlock/thunderdataengine/beton/LevelCondition.java b/src/main/java/net/pentlock/thunderdataengine/beton/LevelCondition.java new file mode 100644 index 0000000..6b37925 --- /dev/null +++ b/src/main/java/net/pentlock/thunderdataengine/beton/LevelCondition.java @@ -0,0 +1,30 @@ +package net.pentlock.thunderdataengine.beton; + +import net.pentlock.thunderdataengine.profiles.ThunderPlayer; +import net.pentlock.thunderdataengine.utilities.PlayerUtil; +import org.betonquest.betonquest.Instruction; +import org.betonquest.betonquest.api.Condition; +import org.betonquest.betonquest.exceptions.InstructionParseException; +import org.betonquest.betonquest.exceptions.QuestRuntimeException; +import org.betonquest.betonquest.utils.PlayerConverter; +import org.bukkit.entity.Player; + +public class LevelCondition extends Condition { + private final int required; + + public LevelCondition(Instruction instruction, boolean forceSync) throws InstructionParseException { + super(instruction, forceSync); + this.required = instruction.getInt(); + } + + @Override + protected Boolean execute(String s) throws QuestRuntimeException { + Player player = PlayerConverter.getPlayer(s); + ThunderPlayer thunderPlayer = PlayerUtil.findPlayer(player.getUniqueId()); + if (thunderPlayer != null) { + return required >= thunderPlayer.getLevel(); + } else { + return null; + } + } +} diff --git a/src/main/java/net/pentlock/thunderdataengine/beton/PhysicalDefenseCondition.java b/src/main/java/net/pentlock/thunderdataengine/beton/PhysicalDefenseCondition.java new file mode 100644 index 0000000..8a1dbea --- /dev/null +++ b/src/main/java/net/pentlock/thunderdataengine/beton/PhysicalDefenseCondition.java @@ -0,0 +1,30 @@ +package net.pentlock.thunderdataengine.beton; + +import net.pentlock.thunderdataengine.profiles.ThunderPlayer; +import net.pentlock.thunderdataengine.utilities.PlayerUtil; +import org.betonquest.betonquest.Instruction; +import org.betonquest.betonquest.api.Condition; +import org.betonquest.betonquest.exceptions.InstructionParseException; +import org.betonquest.betonquest.exceptions.QuestRuntimeException; +import org.betonquest.betonquest.utils.PlayerConverter; +import org.bukkit.entity.Player; + +public class PhysicalDefenseCondition extends Condition { + private final int defense; + + public PhysicalDefenseCondition(Instruction instruction, boolean forceSync) throws InstructionParseException { + super(instruction, forceSync); + this.defense = instruction.getInt(); + } + + @Override + protected Boolean execute(String s) throws QuestRuntimeException { + Player player = PlayerConverter.getPlayer(s); + ThunderPlayer thunderPlayer = PlayerUtil.findPlayer(player.getUniqueId()); + if (thunderPlayer != null) { + return defense >= thunderPlayer.getPhysicalDefense(); + } else { + return null; + } + } +} diff --git a/src/main/java/net/pentlock/thunderdataengine/beton/PhysicalOffenseCondition.java b/src/main/java/net/pentlock/thunderdataengine/beton/PhysicalOffenseCondition.java new file mode 100644 index 0000000..e8aa108 --- /dev/null +++ b/src/main/java/net/pentlock/thunderdataengine/beton/PhysicalOffenseCondition.java @@ -0,0 +1,29 @@ +package net.pentlock.thunderdataengine.beton; + +import net.pentlock.thunderdataengine.profiles.ThunderPlayer; +import net.pentlock.thunderdataengine.utilities.PlayerUtil; +import org.betonquest.betonquest.Instruction; +import org.betonquest.betonquest.api.Condition; +import org.betonquest.betonquest.exceptions.InstructionParseException; +import org.betonquest.betonquest.exceptions.QuestRuntimeException; +import org.betonquest.betonquest.utils.PlayerConverter; +import org.bukkit.entity.Player; + +public class PhysicalOffenseCondition extends Condition { + private final int offense; + public PhysicalOffenseCondition(Instruction instruction, boolean forceSync) throws InstructionParseException { + super(instruction, forceSync); + this.offense = instruction.getInt(); + } + + @Override + protected Boolean execute(String s) throws QuestRuntimeException { + Player player = PlayerConverter.getPlayer(s); + ThunderPlayer thunderPlayer = PlayerUtil.findPlayer(player.getUniqueId()); + if (thunderPlayer != null) { + return offense >= thunderPlayer.getPhysicalOffense(); + } else { + return null; + } + } +}