3.5.3
add craft item requirement add total mob kills requirement add use item requirement add item requirement add block break requirement add amount_done placeholder support placeholderapi placeholders in commands
This commit is contained in:
@@ -8,6 +8,10 @@ public abstract class DeductibleRequirement extends ProgressiveRequirement {
|
||||
super(plugin, name);
|
||||
}
|
||||
|
||||
public DeductibleRequirement(Rankup plugin, String name, boolean subRequirement) {
|
||||
super(plugin, name, subRequirement);
|
||||
}
|
||||
|
||||
protected DeductibleRequirement(Requirement clone) {
|
||||
super(clone);
|
||||
}
|
||||
|
||||
@@ -34,6 +34,10 @@ public abstract class Requirement implements Cloneable {
|
||||
public void setValue(String value) {
|
||||
if (hasSubRequirement()) {
|
||||
String[] parts = value.split(" ", 2);
|
||||
if (parts.length < 2) {
|
||||
throw new IllegalArgumentException("Amount and sub-requirement not present for requirement '" + getName() + "'. You must use the format '" + getName() + " <sub-requirement> <amount>'");
|
||||
}
|
||||
|
||||
this.sub = parts[0];
|
||||
this.value = parts[1];
|
||||
} else {
|
||||
|
||||
@@ -12,18 +12,17 @@ public class BlockBreakRequirement extends ProgressiveRequirement {
|
||||
super(plugin, "block-break", true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean check(Player player) {
|
||||
return false;
|
||||
}
|
||||
|
||||
protected BlockBreakRequirement(BlockBreakRequirement clone) {
|
||||
super(clone);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getProgress(Player player) {
|
||||
return player.getStatistic(Statistic.MINE_BLOCK, Material.matchMaterial(getSub()));
|
||||
Material material = Material.matchMaterial(getSub());
|
||||
if (material == null || !material.isBlock()) {
|
||||
throw new IllegalArgumentException("'" + getSub() + "' is not a valid block");
|
||||
}
|
||||
return player.getStatistic(Statistic.MINE_BLOCK, material);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
package sh.okx.rankup.requirements.requirement;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Statistic;
|
||||
import org.bukkit.entity.Player;
|
||||
import sh.okx.rankup.Rankup;
|
||||
import sh.okx.rankup.requirements.ProgressiveRequirement;
|
||||
import sh.okx.rankup.requirements.Requirement;
|
||||
|
||||
public class CraftItemRequirement extends ProgressiveRequirement {
|
||||
public CraftItemRequirement(Rankup plugin) {
|
||||
super(plugin, "craft-item", true);
|
||||
}
|
||||
|
||||
protected CraftItemRequirement(CraftItemRequirement clone) {
|
||||
super(clone);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getProgress(Player player) {
|
||||
Material material = Material.matchMaterial(getSub());
|
||||
if (material == null) {
|
||||
throw new IllegalArgumentException("'" + getSub() + "' is not a valid item");
|
||||
}
|
||||
return player.getStatistic(Statistic.CRAFT_ITEM, material);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Requirement clone() {
|
||||
return new CraftItemRequirement(this);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package sh.okx.rankup.requirements.requirement;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Statistic;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import sh.okx.rankup.Rankup;
|
||||
import sh.okx.rankup.requirements.DeductibleRequirement;
|
||||
import sh.okx.rankup.requirements.ProgressiveRequirement;
|
||||
import sh.okx.rankup.requirements.Requirement;
|
||||
|
||||
public class ItemRequirement extends DeductibleRequirement {
|
||||
public ItemRequirement(Rankup plugin) {
|
||||
super(plugin, "item", true);
|
||||
}
|
||||
|
||||
protected ItemRequirement(ItemRequirement clone) {
|
||||
super(clone);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getProgress(Player player) {
|
||||
Material material = Material.matchMaterial(getSub());
|
||||
int count = 0;
|
||||
for (ItemStack item : player.getInventory().getStorageContents()) {
|
||||
if (item != null && item.getType() == material) {
|
||||
count += item.getAmount();
|
||||
}
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void apply(Player player, double multiplier) {
|
||||
player.getInventory().removeItem(new ItemStack(Material.matchMaterial(getSub()), (int) (getValueInt() * multiplier)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Requirement clone() {
|
||||
return new ItemRequirement(this);
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,8 @@ import sh.okx.rankup.Rankup;
|
||||
import sh.okx.rankup.requirements.ProgressiveRequirement;
|
||||
import sh.okx.rankup.requirements.Requirement;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
public class MobKillsRequirement extends ProgressiveRequirement {
|
||||
public MobKillsRequirement(Rankup plugin) {
|
||||
super(plugin, "mob-kills", true);
|
||||
@@ -18,7 +20,8 @@ public class MobKillsRequirement extends ProgressiveRequirement {
|
||||
|
||||
@Override
|
||||
public double getProgress(Player player) {
|
||||
return player.getStatistic(Statistic.KILL_ENTITY, EntityType.fromName(getSub()));
|
||||
EntityType entity = Objects.requireNonNull(EntityType.fromName(getSub()), "Invalid entity type '" + getSub() + "' in mob-kills requirement.");
|
||||
return player.getStatistic(Statistic.KILL_ENTITY, entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
package sh.okx.rankup.requirements.requirement;
|
||||
|
||||
import org.bukkit.Statistic;
|
||||
import org.bukkit.entity.Player;
|
||||
import sh.okx.rankup.Rankup;
|
||||
import sh.okx.rankup.requirements.ProgressiveRequirement;
|
||||
import sh.okx.rankup.requirements.Requirement;
|
||||
|
||||
public class TotalMobKillsRequirement extends ProgressiveRequirement {
|
||||
public TotalMobKillsRequirement(Rankup plugin) {
|
||||
super(plugin, "total-mob-kills");
|
||||
}
|
||||
|
||||
protected TotalMobKillsRequirement(Requirement clone) {
|
||||
super(clone);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getProgress(Player player) {
|
||||
return player.getStatistic(Statistic.MOB_KILLS);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Requirement clone() {
|
||||
return new TotalMobKillsRequirement(this);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package sh.okx.rankup.requirements.requirement;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Statistic;
|
||||
import org.bukkit.entity.Player;
|
||||
import sh.okx.rankup.Rankup;
|
||||
import sh.okx.rankup.requirements.ProgressiveRequirement;
|
||||
import sh.okx.rankup.requirements.Requirement;
|
||||
|
||||
public class UseItemRequirement extends ProgressiveRequirement {
|
||||
public UseItemRequirement(Rankup plugin) {
|
||||
super(plugin, "use-item", true);
|
||||
}
|
||||
|
||||
protected UseItemRequirement(UseItemRequirement clone) {
|
||||
super(clone);
|
||||
}
|
||||
|
||||
@Override
|
||||
public double getProgress(Player player) {
|
||||
Material material = Material.matchMaterial(getSub());
|
||||
if (material == null) {
|
||||
throw new IllegalArgumentException("'" + getSub() + "' is not a valid item");
|
||||
}
|
||||
return player.getStatistic(Statistic.USE_ITEM, material);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Requirement clone() {
|
||||
return new UseItemRequirement(this);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user