From b5f0f6b19c28a50ecc80eeb69a156c93585e7643 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=A9tan=20RAYNAUD?= Date: Sun, 11 Aug 2019 16:00:36 +0200 Subject: [PATCH] Add towny dependency + requirements --- build.gradle | 1 + src/main/java/sh/okx/rankup/Rankup.java | 9 +++ .../okx/rankup/requirements/Requirement.java | 4 ++ .../TownyKingNumberResidentsRequirement.java | 30 ++++++++ .../TownyKingNumberTownsRequirement.java | 30 ++++++++ .../towny/TownyKingRequirement.java | 25 +++++++ .../TownyMayorNumberResidentsRequirement.java | 30 ++++++++ .../towny/TownyMayorRequirement.java | 25 +++++++ .../towny/TownyResidentRequirement.java | 29 ++++++++ .../requirement/towny/TownyUtils.java | 71 +++++++++++++++++++ src/main/resources/plugin.yml | 4 +- 11 files changed, 256 insertions(+), 2 deletions(-) create mode 100644 src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyKingNumberResidentsRequirement.java create mode 100644 src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyKingNumberTownsRequirement.java create mode 100644 src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyKingRequirement.java create mode 100644 src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyMayorNumberResidentsRequirement.java create mode 100644 src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyMayorRequirement.java create mode 100644 src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyResidentRequirement.java create mode 100644 src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyUtils.java diff --git a/build.gradle b/build.gradle index fe919be..cb17b72 100644 --- a/build.gradle +++ b/build.gradle @@ -41,4 +41,5 @@ dependencies { exclude group: 'com.sk89q.worldguard' } compile 'com.github.Ben12345rocks:VotingPlugin:5.18.2' + compile 'com.github.LlmDl:Towny:25fc18a' } diff --git a/src/main/java/sh/okx/rankup/Rankup.java b/src/main/java/sh/okx/rankup/Rankup.java index 92d7ecd..701aa2c 100644 --- a/src/main/java/sh/okx/rankup/Rankup.java +++ b/src/main/java/sh/okx/rankup/Rankup.java @@ -37,6 +37,7 @@ import sh.okx.rankup.requirements.requirement.advancedachievements.AdvancedAchie import sh.okx.rankup.requirements.requirement.advancedachievements.AdvancedAchievementsTotalRequirement; import sh.okx.rankup.requirements.requirement.mcmmo.McMMOPowerLevelRequirement; import sh.okx.rankup.requirements.requirement.mcmmo.McMMOSkillRequirement; +import sh.okx.rankup.requirements.requirement.towny.*; import sh.okx.rankup.requirements.requirement.votingplugin.VotingPluginVotesRequirement; import java.io.File; @@ -242,6 +243,14 @@ public class Rankup extends JavaPlugin { if (Bukkit.getPluginManager().isPluginEnabled("VotingPlugin")) { requirementRegistry.addRequirement(new VotingPluginVotesRequirement(this)); } + if (Bukkit.getPluginManager().isPluginEnabled("Towny")) { + requirementRegistry.addRequirement(new TownyResidentRequirement(this)); + requirementRegistry.addRequirement(new TownyMayorRequirement(this)); + requirementRegistry.addRequirement(new TownyMayorNumberResidentsRequirement(this)); + requirementRegistry.addRequirement(new TownyKingRequirement(this)); + requirementRegistry.addRequirement(new TownyKingNumberResidentsRequirement(this)); + requirementRegistry.addRequirement(new TownyKingNumberTownsRequirement(this)); + } requirementRegistry.addRequirement(new ItemRequirement(this)); requirementRegistry.addRequirement(new UseItemRequirement(this)); requirementRegistry.addRequirement(new TotalMobKillsRequirement(this)); diff --git a/src/main/java/sh/okx/rankup/requirements/Requirement.java b/src/main/java/sh/okx/rankup/requirements/Requirement.java index e2c6730..d225331 100644 --- a/src/main/java/sh/okx/rankup/requirements/Requirement.java +++ b/src/main/java/sh/okx/rankup/requirements/Requirement.java @@ -61,6 +61,10 @@ public abstract class Requirement implements Cloneable { return Integer.parseInt(value); } + public boolean getValueBoolean() { + return Boolean.parseBoolean(value); + } + public String getFullName() { if (hasSubRequirement()) { return name + "#" + sub; diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyKingNumberResidentsRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyKingNumberResidentsRequirement.java new file mode 100644 index 0000000..a744df8 --- /dev/null +++ b/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyKingNumberResidentsRequirement.java @@ -0,0 +1,30 @@ +package sh.okx.rankup.requirements.requirement.towny; + +import org.bukkit.entity.Player; +import sh.okx.rankup.Rankup; +import sh.okx.rankup.requirements.ProgressiveRequirement; +import sh.okx.rankup.requirements.Requirement; + +public class TownyKingNumberResidentsRequirement extends ProgressiveRequirement { + public TownyKingNumberResidentsRequirement(Rankup plugin) { + super(plugin, "towny-king-residents"); + } + + protected TownyKingNumberResidentsRequirement(Requirement clone) { + super(clone); + } + + @Override + public double getProgress(Player player) { + if (TownyUtils.getInstance().isKing(player)) { + return TownyUtils.getInstance().getNation(player).getNumResidents(); + } else { + return 0; + } + } + + @Override + public Requirement clone() { + return new TownyKingNumberResidentsRequirement(this); + } +} diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyKingNumberTownsRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyKingNumberTownsRequirement.java new file mode 100644 index 0000000..6f294ef --- /dev/null +++ b/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyKingNumberTownsRequirement.java @@ -0,0 +1,30 @@ +package sh.okx.rankup.requirements.requirement.towny; + +import org.bukkit.entity.Player; +import sh.okx.rankup.Rankup; +import sh.okx.rankup.requirements.ProgressiveRequirement; +import sh.okx.rankup.requirements.Requirement; + +public class TownyKingNumberTownsRequirement extends ProgressiveRequirement { + public TownyKingNumberTownsRequirement(Rankup plugin) { + super(plugin, "towny-king-towns"); + } + + protected TownyKingNumberTownsRequirement(Requirement clone) { + super(clone); + } + + @Override + public double getProgress(Player player) { + if (TownyUtils.getInstance().isKing(player)) { + return TownyUtils.getInstance().getNation(player).getNumTowns(); + } else { + return 0; + } + } + + @Override + public Requirement clone() { + return new TownyKingNumberTownsRequirement(this); + } +} diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyKingRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyKingRequirement.java new file mode 100644 index 0000000..b802af5 --- /dev/null +++ b/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyKingRequirement.java @@ -0,0 +1,25 @@ +package sh.okx.rankup.requirements.requirement.towny; + +import org.bukkit.entity.Player; +import sh.okx.rankup.Rankup; +import sh.okx.rankup.requirements.Requirement; + +public class TownyKingRequirement extends Requirement { + public TownyKingRequirement(Rankup plugin) { + super(plugin, "towny-king"); + } + + protected TownyKingRequirement(Requirement clone) { + super(clone); + } + + @Override + public boolean check(Player player) { + return TownyUtils.getInstance().isKing(player) == getValueBoolean(); + } + + @Override + public Requirement clone() { + return new TownyKingRequirement(this); + } +} diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyMayorNumberResidentsRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyMayorNumberResidentsRequirement.java new file mode 100644 index 0000000..f49ed45 --- /dev/null +++ b/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyMayorNumberResidentsRequirement.java @@ -0,0 +1,30 @@ +package sh.okx.rankup.requirements.requirement.towny; + +import org.bukkit.entity.Player; +import sh.okx.rankup.Rankup; +import sh.okx.rankup.requirements.ProgressiveRequirement; +import sh.okx.rankup.requirements.Requirement; + +public class TownyMayorNumberResidentsRequirement extends ProgressiveRequirement { + public TownyMayorNumberResidentsRequirement(Rankup plugin) { + super(plugin, "towny-mayor-residents"); + } + + protected TownyMayorNumberResidentsRequirement(Requirement clone) { + super(clone); + } + + @Override + public double getProgress(Player player) { + if (TownyUtils.getInstance().isMayor(player)) { + return TownyUtils.getInstance().getTown(player).getNumResidents(); + } else { + return 0; + } + } + + @Override + public Requirement clone() { + return new TownyMayorNumberResidentsRequirement(this); + } +} diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyMayorRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyMayorRequirement.java new file mode 100644 index 0000000..8aaee97 --- /dev/null +++ b/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyMayorRequirement.java @@ -0,0 +1,25 @@ +package sh.okx.rankup.requirements.requirement.towny; + +import org.bukkit.entity.Player; +import sh.okx.rankup.Rankup; +import sh.okx.rankup.requirements.Requirement; + +public class TownyMayorRequirement extends Requirement { + public TownyMayorRequirement(Rankup plugin) { + super(plugin, "towny-mayor"); + } + + protected TownyMayorRequirement(Requirement clone) { + super(clone); + } + + @Override + public boolean check(Player player) { + return TownyUtils.getInstance().isMayor(player) == getValueBoolean(); + } + + @Override + public Requirement clone() { + return new TownyMayorRequirement(this); + } +} diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyResidentRequirement.java b/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyResidentRequirement.java new file mode 100644 index 0000000..25deccb --- /dev/null +++ b/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyResidentRequirement.java @@ -0,0 +1,29 @@ +package sh.okx.rankup.requirements.requirement.towny; + +import org.bukkit.entity.Player; +import sh.okx.rankup.Rankup; +import sh.okx.rankup.requirements.Requirement; + +public class TownyResidentRequirement extends Requirement { + public TownyResidentRequirement(Rankup plugin) { + super(plugin, "towny-resident"); + } + + public TownyResidentRequirement(Rankup plugin, String name) { + super(plugin, name); + } + + protected TownyResidentRequirement(Requirement clone) { + super(clone); + } + + @Override + public boolean check(Player player) { + return TownyUtils.getInstance().isResident(player); + } + + @Override + public Requirement clone() { + return new TownyResidentRequirement(this); + } +} diff --git a/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyUtils.java b/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyUtils.java new file mode 100644 index 0000000..faa09f8 --- /dev/null +++ b/src/main/java/sh/okx/rankup/requirements/requirement/towny/TownyUtils.java @@ -0,0 +1,71 @@ +package sh.okx.rankup.requirements.requirement.towny; + +import com.palmergames.bukkit.towny.exceptions.NotRegisteredException; +import com.palmergames.bukkit.towny.object.Nation; +import com.palmergames.bukkit.towny.object.Resident; +import com.palmergames.bukkit.towny.object.Town; +import com.palmergames.bukkit.towny.object.TownyUniverse; +import org.bukkit.entity.Player; + +public class TownyUtils { + private static TownyUtils instance; + + public static TownyUtils getInstance() { + if (instance == null) { + instance = new TownyUtils(); + } + return instance; + } + + public boolean isResident(Player player) { + try { + Town town = TownyUniverse.getDataSource().getResident(player.getName()).getTown(); + + return town != null; + } catch (NotRegisteredException e) { + return false; + } + } + + public Resident getResident(Player player) { + try { + return TownyUniverse.getDataSource().getResident(player.getName()); + } catch (NotRegisteredException e) { + return null; + } + } + + public Town getTown(Player player) { + try { + return TownyUniverse.getDataSource().getResident(player.getName()).getTown(); + } catch (NotRegisteredException e) { + return null; + } + } + + public Nation getNation(Player player) { + Town town = getTown(player); + + try { + return getTown(player) == null ? null : town.getNation(); + } catch (NotRegisteredException e) { + return null; + } + } + + public boolean isMayor(Player player) { + try { + return TownyUniverse.getDataSource().getResident(player.getName()).isMayor(); + } catch (NotRegisteredException e) { + return false; + } + } + + public boolean isKing(Player player) { + try { + return TownyUniverse.getDataSource().getResident(player.getName()).isKing(); + } catch (NotRegisteredException e) { + return false; + } + } +} diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 82f72ab..333f24c 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -3,7 +3,7 @@ version: 3.5.4 main: sh.okx.rankup.Rankup author: Okx depend: [Vault] -softdepend: [PlaceholderAPI, mcMMO, AdvancedAchievements] +softdepend: [PlaceholderAPI, mcMMO, AdvancedAchievements, Towny] api-version: 1.13 commands: @@ -50,4 +50,4 @@ permissions: rankup.prestiges: default: true rankup.auto: - default: true \ No newline at end of file + default: true