mirror of
https://gitlab.com/SamB440/rpgregions-2.git
synced 2026-01-04 15:31:38 +00:00
feature: Add PlaceholderConsoleCommandReward
This commit is contained in:
@@ -3,13 +3,14 @@ package net.islandearth.rpgregions.requirements;
|
||||
import me.clip.placeholderapi.PlaceholderAPI;
|
||||
import net.islandearth.rpgregions.api.IRPGRegionsAPI;
|
||||
import net.islandearth.rpgregions.gui.GuiEditable;
|
||||
import net.islandearth.rpgregions.utils.PlaceholderCompareType;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class PlaceholderRequirement extends RegionRequirement {
|
||||
|
||||
@GuiEditable(value = "Compare type", icon = Material.COMMAND_BLOCK)
|
||||
private final CompareType integerCompareType;
|
||||
private final PlaceholderCompareType integerCompareType;
|
||||
@GuiEditable(value = "The Placeholder", icon = Material.PAPER)
|
||||
private final String placeholder;
|
||||
@GuiEditable(value = "Value to equal, or compare (e.g 5-10). Supports doubles.", icon = Material.JUNGLE_SIGN)
|
||||
@@ -21,7 +22,7 @@ public class PlaceholderRequirement extends RegionRequirement {
|
||||
|
||||
public PlaceholderRequirement(IRPGRegionsAPI api, String placeholder, String equal) {
|
||||
super(api);
|
||||
this.integerCompareType = CompareType.GREATER_THAN_OR_EQUAL_TO;
|
||||
this.integerCompareType = PlaceholderCompareType.GREATER_THAN_OR_EQUAL_TO;
|
||||
this.placeholder = placeholder;
|
||||
this.equal = equal;
|
||||
}
|
||||
@@ -30,7 +31,7 @@ public class PlaceholderRequirement extends RegionRequirement {
|
||||
public boolean meetsRequirements(Player player) {
|
||||
try {
|
||||
double parsedNumber = Double.parseDouble(PlaceholderAPI.setPlaceholders(player, placeholder));
|
||||
if (integerCompareType == CompareType.RANGE) {
|
||||
if (integerCompareType == PlaceholderCompareType.RANGE) {
|
||||
double lower = Double.parseDouble(equal.split("-")[0]);
|
||||
double upper = Double.parseDouble(equal.split("-")[1]);
|
||||
return parsedNumber >= lower && parsedNumber <= upper;
|
||||
@@ -69,7 +70,12 @@ public class PlaceholderRequirement extends RegionRequirement {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getPluginRequirement() {
|
||||
return "PlaceholderAPI";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "Placeholder";
|
||||
@@ -87,13 +93,4 @@ public class PlaceholderRequirement extends RegionRequirement {
|
||||
public String getEqual() {
|
||||
return equal;
|
||||
}
|
||||
|
||||
public enum CompareType {
|
||||
GREATER_THAN,
|
||||
EQUAL_TO,
|
||||
GREATER_THAN_OR_EQUAL_TO,
|
||||
LESS_THAN,
|
||||
LESS_THAN_OR_EQUAL_TO,
|
||||
RANGE
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
package net.islandearth.rpgregions.rewards;
|
||||
|
||||
import me.clip.placeholderapi.PlaceholderAPI;
|
||||
import net.islandearth.rpgregions.api.IRPGRegionsAPI;
|
||||
import net.islandearth.rpgregions.gui.GuiEditable;
|
||||
import net.islandearth.rpgregions.utils.PlaceholderCompareType;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class PlaceholderConsoleCommandReward extends DiscoveryReward {
|
||||
|
||||
@GuiEditable(value = "Command", icon = Material.STICK)
|
||||
private final String command;
|
||||
|
||||
@GuiEditable(value = "Compare type", icon = Material.COMMAND_BLOCK)
|
||||
private final PlaceholderCompareType integerCompareType;
|
||||
|
||||
@GuiEditable(value = "The Placeholder", icon = Material.PAPER)
|
||||
private final String placeholder;
|
||||
|
||||
@GuiEditable(value = "Value to equal, or compare (e.g 5-10). Supports doubles.", icon = Material.JUNGLE_SIGN)
|
||||
private final String equal;
|
||||
|
||||
public PlaceholderConsoleCommandReward(IRPGRegionsAPI api) {
|
||||
this(api, "", "");
|
||||
}
|
||||
|
||||
public PlaceholderConsoleCommandReward(IRPGRegionsAPI api, String placeholder, String equal) {
|
||||
super(api);
|
||||
this.integerCompareType = PlaceholderCompareType.GREATER_THAN_OR_EQUAL_TO;
|
||||
this.placeholder = placeholder;
|
||||
this.equal = equal;
|
||||
this.command = "say example";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void award(Player player) {
|
||||
if (hasPlaceholder(player)) {
|
||||
Bukkit.getServer().dispatchCommand(Bukkit.getConsoleSender(), PlaceholderAPI.setPlaceholders(player, command.replace("%player%", player.getName())));
|
||||
}
|
||||
}
|
||||
|
||||
private boolean hasPlaceholder(Player player) {
|
||||
try {
|
||||
double parsedNumber = Double.parseDouble(PlaceholderAPI.setPlaceholders(player, placeholder));
|
||||
if (integerCompareType == PlaceholderCompareType.RANGE) {
|
||||
double lower = Double.parseDouble(equal.split("-")[0]);
|
||||
double upper = Double.parseDouble(equal.split("-")[1]);
|
||||
return parsedNumber >= lower && parsedNumber <= upper;
|
||||
}
|
||||
|
||||
double number = Double.parseDouble(equal);
|
||||
switch (integerCompareType) {
|
||||
case GREATER_THAN:
|
||||
if (parsedNumber > number) {
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case GREATER_THAN_OR_EQUAL_TO:
|
||||
if (parsedNumber >= number) {
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case EQUAL_TO:
|
||||
if (parsedNumber == number) {
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case LESS_THAN:
|
||||
if (parsedNumber < number) {
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
case LESS_THAN_OR_EQUAL_TO:
|
||||
if (parsedNumber <= number) {
|
||||
return true;
|
||||
}
|
||||
break;
|
||||
}
|
||||
} catch (NumberFormatException e) {
|
||||
return PlaceholderAPI.setPlaceholders(player, placeholder).equals(equal);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getPluginRequirement() {
|
||||
return "PlaceholderAPI";
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "Placeholder Console Command Reward";
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
package net.islandearth.rpgregions.utils;
|
||||
|
||||
public enum PlaceholderCompareType {
|
||||
GREATER_THAN,
|
||||
EQUAL_TO,
|
||||
GREATER_THAN_OR_EQUAL_TO,
|
||||
LESS_THAN,
|
||||
LESS_THAN_OR_EQUAL_TO,
|
||||
RANGE
|
||||
}
|
||||
Reference in New Issue
Block a user