9
0
mirror of https://gitlab.com/SamB440/rpgregions-2.git synced 2025-12-28 03:09:14 +00:00

Add plugin requirement to registries

This commit is contained in:
SamB440
2021-03-26 17:59:52 +00:00
parent 287227938a
commit 9e46ca8d51
9 changed files with 39 additions and 19 deletions

View File

@@ -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();
}

View File

@@ -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;
}
}

View File

@@ -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<RegionRe
public @Nullable RegionRequirement getNew(Class<? extends RegionRequirement> 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();
}

View File

@@ -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;
}
}

View File

@@ -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<DiscoveryRewa
public @Nullable DiscoveryReward getNew(Class<? extends DiscoveryReward> 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();
}

View File

@@ -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";
}
}

View File

@@ -43,4 +43,9 @@ public class QuestRequirement extends RegionRequirement {
public String getText(Player player) {
return "Quest " + questId;
}
@Override
public String getPluginRequirement() {
return "Quests";
}
}

View File

@@ -18,4 +18,8 @@ public class AlonsoLevelReward extends LevelReward {
public void award(Player player) {
AlonsoLevelsAPI.addLevel(player.getUniqueId(), 1);
}
public String getPluginRequirement() {
return "AlonsoLevels";
}
}

View File

@@ -37,4 +37,8 @@ public class QuestReward extends DiscoveryReward {
public String getName() {
return "Quest";
}
public String getPluginRequirement() {
return "Quests";
}
}