diff --git a/api/src/main/java/net/islandearth/rpgregions/effects/RegionEffect.java b/api/src/main/java/net/islandearth/rpgregions/effects/RegionEffect.java index 63d6803..26bee81 100644 --- a/api/src/main/java/net/islandearth/rpgregions/effects/RegionEffect.java +++ b/api/src/main/java/net/islandearth/rpgregions/effects/RegionEffect.java @@ -70,10 +70,4 @@ public abstract class RegionEffect implements IGuiEditable { public boolean isIgnorePerm() { return ignorePerm; } - - /** - * User friendly name of this effect. - * @return name of effect - */ - public abstract String getName(); } diff --git a/api/src/main/java/net/islandearth/rpgregions/requirements/RegionRequirement.java b/api/src/main/java/net/islandearth/rpgregions/requirements/RegionRequirement.java index b923e6d..f1777cb 100644 --- a/api/src/main/java/net/islandearth/rpgregions/requirements/RegionRequirement.java +++ b/api/src/main/java/net/islandearth/rpgregions/requirements/RegionRequirement.java @@ -34,11 +34,9 @@ public abstract class RegionRequirement implements IGuiEditable { return preventType; } - /** - * User friendly name of this reward. - * @return name of reward - */ - public abstract String getName(); - public abstract String getText(Player player); + + public String getPluginRequirement() { + return null; + } } diff --git a/api/src/main/java/net/islandearth/rpgregions/requirements/RegionRequirementRegistry.java b/api/src/main/java/net/islandearth/rpgregions/requirements/RegionRequirementRegistry.java index 00d5d68..287611c 100644 --- a/api/src/main/java/net/islandearth/rpgregions/requirements/RegionRequirementRegistry.java +++ b/api/src/main/java/net/islandearth/rpgregions/requirements/RegionRequirementRegistry.java @@ -2,6 +2,7 @@ package net.islandearth.rpgregions.requirements; import net.islandearth.rpgregions.api.IRPGRegionsAPI; import net.islandearth.rpgregions.managers.registry.RPGRegionsRegistry; +import org.bukkit.Bukkit; import org.bukkit.Material; import org.jetbrains.annotations.Nullable; @@ -13,7 +14,12 @@ public final class RegionRequirementRegistry extends RPGRegionsRegistry clazz, IRPGRegionsAPI plugin, Object... data) { try { Constructor constructor = clazz.getConstructor(IRPGRegionsAPI.class); - return (RegionRequirement) constructor.newInstance(plugin); + RegionRequirement requirement = (RegionRequirement) constructor.newInstance(plugin); + if (requirement.getPluginRequirement() != null + && Bukkit.getPluginManager().getPlugin(requirement.getPluginRequirement()) == null) { + return null; + } + return requirement; } catch (ReflectiveOperationException e) { e.printStackTrace(); } diff --git a/api/src/main/java/net/islandearth/rpgregions/rewards/DiscoveryReward.java b/api/src/main/java/net/islandearth/rpgregions/rewards/DiscoveryReward.java index a9e5ca8..089e519 100644 --- a/api/src/main/java/net/islandearth/rpgregions/rewards/DiscoveryReward.java +++ b/api/src/main/java/net/islandearth/rpgregions/rewards/DiscoveryReward.java @@ -22,9 +22,7 @@ public abstract class DiscoveryReward implements IGuiEditable { */ public abstract void award(Player player); - /** - * User friendly name of this reward. - * @return name of reward - */ - public abstract String getName(); + public String getPluginRequirement() { + return null; + } } diff --git a/api/src/main/java/net/islandearth/rpgregions/rewards/RegionRewardRegistry.java b/api/src/main/java/net/islandearth/rpgregions/rewards/RegionRewardRegistry.java index 57bdc21..69898f7 100644 --- a/api/src/main/java/net/islandearth/rpgregions/rewards/RegionRewardRegistry.java +++ b/api/src/main/java/net/islandearth/rpgregions/rewards/RegionRewardRegistry.java @@ -2,6 +2,7 @@ package net.islandearth.rpgregions.rewards; import net.islandearth.rpgregions.api.IRPGRegionsAPI; import net.islandearth.rpgregions.managers.registry.RPGRegionsRegistry; +import org.bukkit.Bukkit; import org.bukkit.Material; import org.jetbrains.annotations.Nullable; @@ -13,7 +14,12 @@ public final class RegionRewardRegistry extends RPGRegionsRegistry clazz, IRPGRegionsAPI plugin, Object... data) { try { Constructor constructor = clazz.getConstructor(IRPGRegionsAPI.class); - return (DiscoveryReward) constructor.newInstance(plugin); + DiscoveryReward reward = (DiscoveryReward) constructor.newInstance(plugin); + if (reward.getPluginRequirement() != null + && Bukkit.getPluginManager().getPlugin(reward.getPluginRequirement()) == null) { + return null; + } + return reward; } catch (ReflectiveOperationException e) { e.printStackTrace(); } diff --git a/rpgregions/src/main/java/net/islandearth/rpgregions/requirements/AlonsoLevelRequirement.java b/rpgregions/src/main/java/net/islandearth/rpgregions/requirements/AlonsoLevelRequirement.java index 4b3f04f..5b186d0 100644 --- a/rpgregions/src/main/java/net/islandearth/rpgregions/requirements/AlonsoLevelRequirement.java +++ b/rpgregions/src/main/java/net/islandearth/rpgregions/requirements/AlonsoLevelRequirement.java @@ -18,4 +18,9 @@ public class AlonsoLevelRequirement extends LevelRequirement { public boolean meetsRequirements(Player player) { return AlonsoLevelsAPI.getLevel(player.getUniqueId()) >= this.getLevel(); } + + @Override + public String getPluginRequirement() { + return "AlonsoLevels"; + } } diff --git a/rpgregions/src/main/java/net/islandearth/rpgregions/requirements/QuestRequirement.java b/rpgregions/src/main/java/net/islandearth/rpgregions/requirements/QuestRequirement.java index 56087a9..a996b53 100644 --- a/rpgregions/src/main/java/net/islandearth/rpgregions/requirements/QuestRequirement.java +++ b/rpgregions/src/main/java/net/islandearth/rpgregions/requirements/QuestRequirement.java @@ -43,4 +43,9 @@ public class QuestRequirement extends RegionRequirement { public String getText(Player player) { return "Quest " + questId; } + + @Override + public String getPluginRequirement() { + return "Quests"; + } } diff --git a/rpgregions/src/main/java/net/islandearth/rpgregions/rewards/AlonsoLevelReward.java b/rpgregions/src/main/java/net/islandearth/rpgregions/rewards/AlonsoLevelReward.java index 2c07341..cbe4549 100644 --- a/rpgregions/src/main/java/net/islandearth/rpgregions/rewards/AlonsoLevelReward.java +++ b/rpgregions/src/main/java/net/islandearth/rpgregions/rewards/AlonsoLevelReward.java @@ -18,4 +18,8 @@ public class AlonsoLevelReward extends LevelReward { public void award(Player player) { AlonsoLevelsAPI.addLevel(player.getUniqueId(), 1); } + + public String getPluginRequirement() { + return "AlonsoLevels"; + } } diff --git a/rpgregions/src/main/java/net/islandearth/rpgregions/rewards/QuestReward.java b/rpgregions/src/main/java/net/islandearth/rpgregions/rewards/QuestReward.java index 9594a81..c2e9106 100644 --- a/rpgregions/src/main/java/net/islandearth/rpgregions/rewards/QuestReward.java +++ b/rpgregions/src/main/java/net/islandearth/rpgregions/rewards/QuestReward.java @@ -37,4 +37,8 @@ public class QuestReward extends DiscoveryReward { public String getName() { return "Quest"; } + + public String getPluginRequirement() { + return "Quests"; + } }