- gui now configurable per rank
- fix item requirement
This commit is contained in:
okx-code
2020-04-10 13:01:05 +01:00
parent 1cd507d836
commit c553ee0462
72 changed files with 499 additions and 226 deletions
@@ -3,12 +3,12 @@ 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.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class BlockBreakRequirement extends ProgressiveRequirement {
public BlockBreakRequirement(Rankup plugin) {
public BlockBreakRequirement(RankupPlugin plugin) {
super(plugin, "block-break", true);
}
@@ -3,12 +3,12 @@ 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.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class CraftItemRequirement extends ProgressiveRequirement {
public CraftItemRequirement(Rankup plugin) {
public CraftItemRequirement(RankupPlugin plugin) {
super(plugin, "craft-item", true);
}
@@ -1,11 +1,11 @@
package sh.okx.rankup.requirements.requirement;
import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement;
public class GroupRequirement extends Requirement {
public GroupRequirement(Rankup plugin) {
public GroupRequirement(RankupPlugin plugin) {
super(plugin, "group");
}
@@ -1,15 +1,14 @@
package sh.okx.rankup.requirements.requirement;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import sh.okx.rankup.Rankup;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.DeductibleRequirement;
import sh.okx.rankup.requirements.Requirement;
public class ItemDeductibleRequirement extends ItemRequirement implements DeductibleRequirement {
public ItemDeductibleRequirement(Rankup plugin, String name) {
public ItemDeductibleRequirement(RankupPlugin plugin, String name) {
super(plugin, name);
}
@@ -19,11 +18,28 @@ public class ItemDeductibleRequirement extends ItemRequirement implements Deduct
@Override
public void apply(Player player, double multiplier) {
Material type = Material.matchMaterial(getSub());
if (type == null) {
throw new IllegalArgumentException("Invalid item " + getSub());
int count = (int) (getTotal(player) * multiplier);
ItemStack[] contents = player.getInventory().getStorageContents();
for (int i = 0; i < contents.length && count > 0; i++) {
ItemStack item = contents[i];
if (matchItem(item)) {
if (count < item.getAmount()) {
item.setAmount(item.getAmount() - count);
count = 0;
} else {
count -= item.getAmount();
contents[i] = null;
}
}
}
player.getInventory().setStorageContents(contents);
if (count > 0) {
throw new IllegalStateException("REPORT THIS ERROR TO THE DEV - COULD NOT DEDUCT ALL ITEMS");
}
player.getInventory().removeItem(new ItemStack(type, (int) (getValueInt() * multiplier)));
}
@Override
@@ -3,15 +3,14 @@ package sh.okx.rankup.requirements.requirement;
import org.bukkit.Material;
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.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
import java.util.Arrays;
public class ItemRequirement extends ProgressiveRequirement {
public ItemRequirement(Rankup plugin, String name) {
public ItemRequirement(RankupPlugin plugin, String name) {
super(plugin, name, true);
}
@@ -26,9 +25,37 @@ public class ItemRequirement extends ProgressiveRequirement {
@Override
public double getProgress(Player player) {
Material material = Material.matchMaterial(getSub());
return Arrays.stream(player.getInventory().getContents())
.filter(item -> item != null && item.getType() == material)
return Arrays.stream(player.getInventory().getStorageContents())
.filter(this::matchItem)
.mapToInt(ItemStack::getAmount).sum();
}
protected boolean matchItem(ItemStack item) {
if (item == null) {
return false;
}
String sub = getSub();
String[] parts = sub.split(":");
Material material = Material.matchMaterial(parts[0]);
if (material == null) {
throw new IllegalArgumentException("[item requirement] could not find material name: " + parts[0]);
}
if (parts.length > 1) {
int durability;
try {
durability = Integer.parseInt(parts[1]);
} catch (NumberFormatException e) {
throw new IllegalArgumentException("[item requirement] durability '" + parts[1] + "' must be a number in item: '" + sub + "'");
}
if (durability != item.getDurability()) {
return false;
}
}
return material == item.getType();
}
}
@@ -3,14 +3,14 @@ package sh.okx.rankup.requirements.requirement;
import org.bukkit.Statistic;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup;
import sh.okx.rankup.RankupPlugin;
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) {
public MobKillsRequirement(RankupPlugin plugin) {
super(plugin, "mob-kills", true);
}
@@ -2,13 +2,13 @@ package sh.okx.rankup.requirements.requirement;
import net.milkbowl.vault.economy.Economy;
import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.DeductibleRequirement;
import sh.okx.rankup.requirements.Requirement;
public class MoneyDeductibleRequirement extends MoneyRequirement implements DeductibleRequirement {
public MoneyDeductibleRequirement(Rankup plugin, String name) {
public MoneyDeductibleRequirement(RankupPlugin plugin, String name) {
super(plugin, name);
}
@@ -1,12 +1,12 @@
package sh.okx.rankup.requirements.requirement;
import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class MoneyRequirement extends ProgressiveRequirement {
public MoneyRequirement(Rankup plugin, String name) {
public MoneyRequirement(RankupPlugin plugin, String name) {
super(plugin, name);
}
@@ -1,11 +1,11 @@
package sh.okx.rankup.requirements.requirement;
import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement;
public class PermissionRequirement extends Requirement {
public PermissionRequirement(Rankup plugin) {
public PermissionRequirement(RankupPlugin plugin) {
super(plugin, "permission");
}
@@ -2,7 +2,7 @@ package sh.okx.rankup.requirements.requirement;
import me.clip.placeholderapi.PlaceholderAPI;
import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
@@ -10,7 +10,7 @@ public class PlaceholderRequirement extends ProgressiveRequirement {
public static final double DELTA = 0.00001D;
public PlaceholderRequirement(Rankup plugin) {
public PlaceholderRequirement(RankupPlugin plugin) {
super(plugin, "placeholder");
}
@@ -2,12 +2,12 @@ package sh.okx.rankup.requirements.requirement;
import org.bukkit.Statistic;
import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class PlayerKillsRequirement extends ProgressiveRequirement {
public PlayerKillsRequirement(Rankup plugin) {
public PlayerKillsRequirement(RankupPlugin plugin) {
super(plugin, "player-kills");
}
@@ -2,7 +2,7 @@ package sh.okx.rankup.requirements.requirement;
import org.bukkit.Statistic;
import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
@@ -10,7 +10,7 @@ public class PlaytimeMinutesRequirement extends ProgressiveRequirement {
private static final int TICKS_PER_MINUTE = 20 * 60;
private Statistic playOneTick;
public PlaytimeMinutesRequirement(Rankup plugin) {
public PlaytimeMinutesRequirement(RankupPlugin plugin) {
super(plugin, "playtime-minutes");
try {
playOneTick = Statistic.valueOf("PLAY_ONE_MINUTE");
@@ -1,12 +1,12 @@
package sh.okx.rankup.requirements.requirement;
import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.DeductibleRequirement;
import sh.okx.rankup.requirements.requirement.tokenmanager.TokensRequirement;
public class TokensDeductibleRequirement extends TokensRequirement implements DeductibleRequirement {
public TokensDeductibleRequirement(Rankup plugin, String name) {
public TokensDeductibleRequirement(RankupPlugin plugin, String name) {
super(plugin, name);
}
@@ -2,12 +2,12 @@ package sh.okx.rankup.requirements.requirement;
import org.bukkit.Statistic;
import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class TotalMobKillsRequirement extends ProgressiveRequirement {
public TotalMobKillsRequirement(Rankup plugin) {
public TotalMobKillsRequirement(RankupPlugin plugin) {
super(plugin, "total-mob-kills");
}
@@ -3,12 +3,12 @@ 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.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class UseItemRequirement extends ProgressiveRequirement {
public UseItemRequirement(Rankup plugin) {
public UseItemRequirement(RankupPlugin plugin) {
super(plugin, "use-item", true);
}
@@ -1,11 +1,11 @@
package sh.okx.rankup.requirements.requirement;
import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement;
public class WorldRequirement extends Requirement {
public WorldRequirement(Rankup plugin) {
public WorldRequirement(RankupPlugin plugin) {
super(plugin, "world");
}
@@ -1,12 +1,12 @@
package sh.okx.rankup.requirements.requirement;
import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class XpLevelRequirement extends ProgressiveRequirement {
public XpLevelRequirement(Rankup plugin, String name) {
public XpLevelRequirement(RankupPlugin plugin, String name) {
super(plugin, name);
}
@@ -3,11 +3,11 @@ package sh.okx.rankup.requirements.requirement.advancedachievements;
import com.hm.achievement.api.AdvancedAchievementsAPI;
import com.hm.achievement.api.AdvancedAchievementsAPIFetcher;
import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement;
public class AdvancedAchievementsAchievementRequirement extends Requirement {
public AdvancedAchievementsAchievementRequirement(Rankup plugin) {
public AdvancedAchievementsAchievementRequirement(RankupPlugin plugin) {
super(plugin, "advancedachievements-achievement");
}
@@ -2,12 +2,12 @@ package sh.okx.rankup.requirements.requirement.advancedachievements;
import com.hm.achievement.api.AdvancedAchievementsAPIFetcher;
import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement;
import sh.okx.rankup.requirements.ProgressiveRequirement;
public class AdvancedAchievementsTotalRequirement extends ProgressiveRequirement {
public AdvancedAchievementsTotalRequirement(Rankup plugin) {
public AdvancedAchievementsTotalRequirement(RankupPlugin plugin) {
super(plugin, "advancedachievements-total");
}
@@ -2,12 +2,12 @@ package sh.okx.rankup.requirements.requirement.mcmmo;
import com.gmail.nossr50.util.player.UserManager;
import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement;
import sh.okx.rankup.requirements.ProgressiveRequirement;
public class McMMOPowerLevelRequirement extends ProgressiveRequirement {
public McMMOPowerLevelRequirement(Rankup plugin) {
public McMMOPowerLevelRequirement(RankupPlugin plugin) {
super(plugin, "mcmmo-power-level");
}
@@ -1,12 +1,12 @@
package sh.okx.rankup.requirements.requirement.mcmmo;
import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement;
import sh.okx.rankup.requirements.ProgressiveRequirement;
public class McMMOSkillRequirement extends ProgressiveRequirement {
public McMMOSkillRequirement(Rankup plugin) {
public McMMOSkillRequirement(RankupPlugin plugin) {
super(plugin, "mcmmo", true);
}
@@ -4,13 +4,13 @@ import java.util.Objects;
import me.realized.tokenmanager.api.TokenManager;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
public class TokensRequirement extends ProgressiveRequirement {
protected final TokenManager manager = (TokenManager) Objects.requireNonNull(Bukkit.getPluginManager().getPlugin("TokenManager"));
public TokensRequirement(Rankup plugin, String name) {
public TokensRequirement(RankupPlugin plugin, String name) {
super(plugin, name);
}
@@ -1,12 +1,12 @@
package sh.okx.rankup.requirements.requirement.towny;
import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class TownyKingNumberResidentsRequirement extends ProgressiveRequirement {
public TownyKingNumberResidentsRequirement(Rankup plugin) {
public TownyKingNumberResidentsRequirement(RankupPlugin plugin) {
super(plugin, "towny-king-residents");
}
@@ -1,12 +1,12 @@
package sh.okx.rankup.requirements.requirement.towny;
import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class TownyKingNumberTownsRequirement extends ProgressiveRequirement {
public TownyKingNumberTownsRequirement(Rankup plugin) {
public TownyKingNumberTownsRequirement(RankupPlugin plugin) {
super(plugin, "towny-king-towns");
}
@@ -1,11 +1,11 @@
package sh.okx.rankup.requirements.requirement.towny;
import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement;
public class TownyKingRequirement extends Requirement {
public TownyKingRequirement(Rankup plugin) {
public TownyKingRequirement(RankupPlugin plugin) {
super(plugin, "towny-king");
}
@@ -1,12 +1,12 @@
package sh.okx.rankup.requirements.requirement.towny;
import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class TownyMayorNumberResidentsRequirement extends ProgressiveRequirement {
public TownyMayorNumberResidentsRequirement(Rankup plugin) {
public TownyMayorNumberResidentsRequirement(RankupPlugin plugin) {
super(plugin, "towny-mayor-residents");
}
@@ -1,11 +1,11 @@
package sh.okx.rankup.requirements.requirement.towny;
import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement;
public class TownyMayorRequirement extends Requirement {
public TownyMayorRequirement(Rankup plugin) {
public TownyMayorRequirement(RankupPlugin plugin) {
super(plugin, "towny-mayor");
}
@@ -1,11 +1,11 @@
package sh.okx.rankup.requirements.requirement.towny;
import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement;
public class TownyResidentRequirement extends Requirement {
public TownyResidentRequirement(Rankup plugin) {
public TownyResidentRequirement(RankupPlugin plugin) {
super(plugin, "towny-resident");
}
@@ -2,12 +2,12 @@ package sh.okx.rankup.requirements.requirement.votingplugin;
import com.Ben12345rocks.VotingPlugin.UserManager.UserManager;
import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup;
import sh.okx.rankup.RankupPlugin;
import sh.okx.rankup.requirements.Requirement;
import sh.okx.rankup.requirements.ProgressiveRequirement;
public class VotingPluginVotesRequirement extends ProgressiveRequirement {
public VotingPluginVotesRequirement(Rankup plugin) {
public VotingPluginVotesRequirement(RankupPlugin plugin) {
super(plugin, "votingplugin-votes");
}