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:
okx-code
2019-05-26 18:45:44 +01:00
parent 60fad85cce
commit cd57aaae10
14 changed files with 167 additions and 13 deletions
@@ -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);
}
}