add force rankup and prestige
add update notification on join
more reliable legacy server version check

added permissions: rankup.admin (grants rankup.checkversion, rankup.reload, rankup.force, and rankup.notify), rankup.notify (receive update notiifications on login), rankup.force (force a player to rankup or prestige)
This commit is contained in:
okx-code
2019-12-28 23:10:04 +00:00
parent 08c4e1c225
commit 946a13731d
23 changed files with 684 additions and 248 deletions
@@ -1,30 +0,0 @@
package sh.okx.rankup.requirements;
import org.bukkit.entity.Player;
/**
* Proxy requirement for a deductible requirement that is exactly the same but is not deductible
*/
public class NonDeductibleRequirement extends ProgressiveRequirement {
private final ProgressiveRequirement requirement;
public NonDeductibleRequirement(ProgressiveRequirement requirement, String name) {
super(requirement.plugin, name, requirement.hasSubRequirement());
this.requirement = requirement;
}
protected NonDeductibleRequirement(NonDeductibleRequirement clone) {
super(clone);
this.requirement = clone.requirement;
}
@Override
public double getProgress(Player player) {
return requirement.getProgress(player);
}
@Override
public Requirement clone() {
return new NonDeductibleRequirement(this);
}
}
@@ -1,5 +1,6 @@
package sh.okx.rankup.requirements;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Objects;
@@ -12,6 +13,10 @@ public class RequirementRegistry {
requirements.add(requirement);
}
public void addRequirements(Requirement... requirements) {
Collections.addAll(this.requirements, requirements);
}
public Requirement newRequirement(String name, String value) {
for (Requirement requirement : requirements) {
if (requirement.getName().equalsIgnoreCase(name)) {
@@ -0,0 +1,26 @@
package sh.okx.rankup.requirements;
import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup;
import sh.okx.rankup.requirements.requirement.XpLevelRequirement;
public class XpLevelDeductibleRequirement extends XpLevelRequirement implements DeductibleRequirement {
public XpLevelDeductibleRequirement(Rankup plugin, String name) {
super(plugin, name);
}
private XpLevelDeductibleRequirement(XpLevelDeductibleRequirement clone) {
super(clone);
}
@Override
public void apply(Player player, double multiplier) {
player.setLevel(player.getLevel() - (int) Math.round(getValueInt() * multiplier));
}
@Override
public Requirement clone() {
return new XpLevelDeductibleRequirement(this);
}
}
@@ -0,0 +1,33 @@
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.requirements.Requirement;
public class ItemDeductibleRequirement extends ItemRequirement implements DeductibleRequirement {
public ItemDeductibleRequirement(Rankup plugin, String name) {
super(plugin, name);
}
public ItemDeductibleRequirement(ItemDeductibleRequirement clone) {
super(clone);
}
@Override
public void apply(Player player, double multiplier) {
Material type = Material.matchMaterial(getSub());
if (type == null) {
throw new IllegalArgumentException("Invalid item " + getSub());
}
player.getInventory().removeItem(new ItemStack(type, (int) (getValueInt() * multiplier)));
}
@Override
public Requirement clone() {
return new ItemDeductibleRequirement(this);
}
}
@@ -1,7 +1,6 @@
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;
@@ -11,24 +10,15 @@ import sh.okx.rankup.requirements.Requirement;
import java.util.Arrays;
public class ItemRequirement extends ProgressiveRequirement implements DeductibleRequirement {
public ItemRequirement(Rankup plugin) {
super(plugin, "item", true);
public class ItemRequirement extends ProgressiveRequirement {
public ItemRequirement(Rankup plugin, String name) {
super(plugin, name, true);
}
protected ItemRequirement(ItemRequirement clone) {
super(clone);
}
@Override
public void apply(Player player, double multiplier) {
Material type = Material.matchMaterial(getSub());
if (type == null) {
throw new IllegalArgumentException("Invalid item " + getSub());
}
player.getInventory().removeItem(new ItemStack(type, (int) (getValueInt() * multiplier)));
}
@Override
public Requirement clone() {
return new ItemRequirement(this);
@@ -0,0 +1,29 @@
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.requirements.DeductibleRequirement;
import sh.okx.rankup.requirements.Requirement;
public class MoneyDeductibleRequirement extends MoneyRequirement implements DeductibleRequirement {
public MoneyDeductibleRequirement(Rankup plugin, String name) {
super(plugin, name);
}
protected MoneyDeductibleRequirement(MoneyDeductibleRequirement clone) {
super(clone);
}
@Override
public void apply(Player player, double multiplier) {
Economy economy = plugin.getEconomy();
economy.withdrawPlayer(player, getValueDouble() * multiplier);
}
@Override
public Requirement clone() {
return new MoneyDeductibleRequirement(this);
}
}
@@ -1,27 +1,19 @@
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.requirements.DeductibleRequirement;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
public class MoneyRequirement extends ProgressiveRequirement implements DeductibleRequirement {
public MoneyRequirement(Rankup plugin) {
super(plugin, "money");
public class MoneyRequirement extends ProgressiveRequirement {
public MoneyRequirement(Rankup plugin, String name) {
super(plugin, name);
}
protected MoneyRequirement(Requirement clone) {
protected MoneyRequirement(MoneyRequirement clone) {
super(clone);
}
@Override
public void apply(Player player, double multiplier) {
Economy economy = plugin.getEconomy();
economy.withdrawPlayer(player, getValueDouble() * multiplier);
}
@Override
public double getProgress(Player player) {
return plugin.getEconomy().getBalance(player);
@@ -0,0 +1,26 @@
package sh.okx.rankup.requirements.requirement;
import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup;
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) {
super(plugin, name);
}
protected TokensDeductibleRequirement(TokensDeductibleRequirement clone) {
super(clone);
}
@Override
public void apply(Player player, double multiplier) {
manager.removeTokens(player, (long) (getValueInt() * multiplier));
}
@Override
public TokensRequirement clone() {
return new TokensDeductibleRequirement(this);
}
}
@@ -2,24 +2,18 @@ package sh.okx.rankup.requirements.requirement;
import org.bukkit.entity.Player;
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 XpLevelRequirement extends ProgressiveRequirement implements DeductibleRequirement {
public XpLevelRequirement(Rankup plugin) {
super(plugin, "xp-level");
public class XpLevelRequirement extends ProgressiveRequirement {
public XpLevelRequirement(Rankup plugin, String name) {
super(plugin, name);
}
protected XpLevelRequirement(Requirement clone) {
protected XpLevelRequirement(XpLevelRequirement clone) {
super(clone);
}
@Override
public void apply(Player player, double multiplier) {
player.setLevel(player.getLevel() - (int) Math.round(getValueInt() * multiplier));
}
@Override
public double getProgress(Player player) {
return player.getLevel();
@@ -1,31 +1,23 @@
package sh.okx.rankup.requirements.requirement.tokenmanager;
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.requirements.DeductibleRequirement;
import sh.okx.rankup.requirements.ProgressiveRequirement;
import sh.okx.rankup.requirements.Requirement;
import java.util.Objects;
public class TokensRequirement extends ProgressiveRequirement {
protected final TokenManager manager = (TokenManager) Objects.requireNonNull(Bukkit.getPluginManager().getPlugin("TokenManager"));
public class TokensRequirement extends ProgressiveRequirement implements DeductibleRequirement {
private final TokenManager manager = (TokenManager) Objects.requireNonNull(Bukkit.getPluginManager().getPlugin("TokenManager"));
public TokensRequirement(Rankup plugin) {
super(plugin, "tokenmanager-tokens");
public TokensRequirement(Rankup plugin, String name) {
super(plugin, name);
}
private TokensRequirement(Requirement clone) {
protected TokensRequirement(TokensRequirement clone) {
super(clone);
}
@Override
public void apply(Player player, double multiplier) {
manager.removeTokens(player, (long) (getValueInt() * multiplier));
}
@Override
public double getProgress(Player player) {
return manager.getTokens(player).orElse(0);
@@ -10,7 +10,7 @@ public class TownyKingNumberTownsRequirement extends ProgressiveRequirement {
super(plugin, "towny-king-towns");
}
protected TownyKingNumberTownsRequirement(Requirement clone) {
protected TownyKingNumberTownsRequirement(TownyKingNumberTownsRequirement clone) {
super(clone);
}