fix autorankup error, allow requirement placeholders in items in the GUI
This commit is contained in:
+1
-1
@@ -4,7 +4,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
group 'sh.okx'
|
group 'sh.okx'
|
||||||
version '3.2.1-beta'
|
version '3.2.1-beta.1'
|
||||||
|
|
||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import sh.okx.rankup.commands.RanksCommand;
|
|||||||
import sh.okx.rankup.commands.RankupCommand;
|
import sh.okx.rankup.commands.RankupCommand;
|
||||||
import sh.okx.rankup.gui.Gui;
|
import sh.okx.rankup.gui.Gui;
|
||||||
import sh.okx.rankup.gui.GuiListener;
|
import sh.okx.rankup.gui.GuiListener;
|
||||||
|
import sh.okx.rankup.messages.EmptyMessageBuilder;
|
||||||
import sh.okx.rankup.messages.Message;
|
import sh.okx.rankup.messages.Message;
|
||||||
import sh.okx.rankup.messages.MessageBuilder;
|
import sh.okx.rankup.messages.MessageBuilder;
|
||||||
import sh.okx.rankup.messages.Variable;
|
import sh.okx.rankup.messages.Variable;
|
||||||
@@ -319,8 +320,8 @@ public class Rankup extends JavaPlugin {
|
|||||||
Rank rank = rankups.getByPlayer(player);
|
Rank rank = rankups.getByPlayer(player);
|
||||||
if (rank == null) { // check if in ladder
|
if (rank == null) { // check if in ladder
|
||||||
getMessage(Message.NOT_IN_LADDER)
|
getMessage(Message.NOT_IN_LADDER)
|
||||||
.replace(Variable.PLAYER, player.getName())
|
|
||||||
.failIf(!message)
|
.failIf(!message)
|
||||||
|
.replace(Variable.PLAYER, player.getName())
|
||||||
.send(player);
|
.send(player);
|
||||||
return false;
|
return false;
|
||||||
} else if (rank.isLast()) { // check if they are at the highest rank
|
} else if (rank.isLast()) { // check if they are at the highest rank
|
||||||
@@ -339,10 +340,12 @@ public class Rankup extends JavaPlugin {
|
|||||||
.send(player);
|
.send(player);
|
||||||
return false;
|
return false;
|
||||||
} else if (!rank.hasRequirements(player)) { // check if they can afford it
|
} else if (!rank.hasRequirements(player)) { // check if they can afford it
|
||||||
replaceMoneyRequirements(getMessage(rank, Message.REQUIREMENTS_NOT_MET)
|
if (message) {
|
||||||
.failIf(!message)
|
replaceMoneyRequirements(getMessage(rank, Message.REQUIREMENTS_NOT_MET)
|
||||||
.replaceRanks(player, rank, rankups.next(rank)), player, rank)
|
.failIf(!message)
|
||||||
.send(player);
|
.replaceRanks(player, rank, rankups.next(rank)), player, rank)
|
||||||
|
.send(player);
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
} else if (message && checkCooldown(player, rank)) {
|
} else if (message && checkCooldown(player, rank)) {
|
||||||
return false;
|
return false;
|
||||||
@@ -403,11 +406,12 @@ public class Rankup extends JavaPlugin {
|
|||||||
.send(player);
|
.send(player);
|
||||||
return false;
|
return false;
|
||||||
} else if (!prestige.hasRequirements(player)) { // check if they can afford it
|
} else if (!prestige.hasRequirements(player)) { // check if they can afford it
|
||||||
replaceMoneyRequirements(getMessage(prestige, Message.REQUIREMENTS_NOT_MET)
|
if(message) {
|
||||||
.failIf(!message)
|
replaceMoneyRequirements(getMessage(prestige, Message.REQUIREMENTS_NOT_MET)
|
||||||
.replaceRanks(player, prestige, prestiges.next(prestige)), player, prestige)
|
.replaceRanks(player, prestige, prestiges.next(prestige)), player, prestige)
|
||||||
.replaceFromTo(prestige)
|
.replaceFromTo(prestige)
|
||||||
.send(player);
|
.send(player);
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
} else if (checkCooldown(player, prestige)) {
|
} else if (checkCooldown(player, prestige)) {
|
||||||
return false;
|
return false;
|
||||||
@@ -417,6 +421,10 @@ public class Rankup extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public MessageBuilder replaceMoneyRequirements(MessageBuilder builder, CommandSender sender, Rank rank) {
|
public MessageBuilder replaceMoneyRequirements(MessageBuilder builder, CommandSender sender, Rank rank) {
|
||||||
|
if(builder instanceof EmptyMessageBuilder) {
|
||||||
|
return builder;
|
||||||
|
}
|
||||||
|
|
||||||
Requirement money = rank.getRequirement("money");
|
Requirement money = rank.getRequirement("money");
|
||||||
if(money != null) {
|
if(money != null) {
|
||||||
Double amount = null;
|
Double amount = null;
|
||||||
|
|||||||
@@ -35,14 +35,19 @@ public class Gui implements InventoryHolder {
|
|||||||
public static Gui of(Player player, Rank oldRank, Rank rank, Rankup plugin) {
|
public static Gui of(Player player, Rank oldRank, Rank rank, Rankup plugin) {
|
||||||
ConfigurationSection config = plugin.getConfig().getConfigurationSection("gui");
|
ConfigurationSection config = plugin.getConfig().getConfigurationSection("gui");
|
||||||
ItemStack[] items = new ItemStack[config.getInt("rows") * 9];
|
ItemStack[] items = new ItemStack[config.getInt("rows") * 9];
|
||||||
addItem(items, config.getConfigurationSection("rankup"), player, oldRank, rank);
|
|
||||||
addItem(items, config.getConfigurationSection("cancel"), player, oldRank, rank);
|
ItemStack fill = getItem(plugin, "rankup", player, oldRank, rank);
|
||||||
addItem(items, config.getConfigurationSection("fill"), player, oldRank, rank);
|
ItemStack cancel = getItem(plugin, "cancel", player, oldRank, rank);
|
||||||
|
ItemStack rankup = getItem(plugin, "rankup", player, oldRank, rank);
|
||||||
|
|
||||||
|
addItem(items, config.getConfigurationSection("rankup"), rankup);
|
||||||
|
addItem(items, config.getConfigurationSection("cancel"), cancel);
|
||||||
|
addItem(items, config.getConfigurationSection("fill"), fill);
|
||||||
|
|
||||||
Gui gui = new Gui();
|
Gui gui = new Gui();
|
||||||
gui.prestige = oldRank instanceof Prestige;
|
gui.prestige = oldRank instanceof Prestige;
|
||||||
gui.rankup = getItem(config.getConfigurationSection("rankup"), player, oldRank, rank);
|
gui.rankup = rankup;
|
||||||
gui.cancel = getItem(config.getConfigurationSection("cancel"), player, oldRank, rank);
|
gui.cancel = cancel;
|
||||||
|
|
||||||
Inventory inventory = Bukkit.createInventory(gui, items.length,
|
Inventory inventory = Bukkit.createInventory(gui, items.length,
|
||||||
plugin.getMessage(oldRank, gui.prestige ? Message.PRESTIGE_TITLE : Message.TITLE)
|
plugin.getMessage(oldRank, gui.prestige ? Message.PRESTIGE_TITLE : Message.TITLE)
|
||||||
@@ -54,7 +59,8 @@ public class Gui implements InventoryHolder {
|
|||||||
return gui;
|
return gui;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ItemStack getItem(ConfigurationSection section, Player player, Rank oldRank, Rank rank) {
|
private static ItemStack getItem(Rankup plugin, String name, Player player, Rank oldRank, Rank rank) {
|
||||||
|
ConfigurationSection section = plugin.getConfig().getConfigurationSection("gui").getConfigurationSection(name);
|
||||||
boolean legacy = !Bukkit.getVersion().contains("1.13");
|
boolean legacy = !Bukkit.getVersion().contains("1.13");
|
||||||
|
|
||||||
String materialName = section.getString("material").toUpperCase();
|
String materialName = section.getString("material").toUpperCase();
|
||||||
@@ -81,26 +87,25 @@ public class Gui implements InventoryHolder {
|
|||||||
|
|
||||||
ItemMeta meta = item.getItemMeta();
|
ItemMeta meta = item.getItemMeta();
|
||||||
if (section.contains("lore")) {
|
if (section.contains("lore")) {
|
||||||
meta.setLore(Arrays.stream(format(section.getString("lore"), player, oldRank, rank).split("\n"))
|
meta.setLore(Arrays.stream(format(plugin, section.getString("lore"), player, oldRank, rank).split("\n"))
|
||||||
.map(string -> ChatColor.RESET + string)
|
.map(string -> ChatColor.RESET + string)
|
||||||
.collect(Collectors.toList()));
|
.collect(Collectors.toList()));
|
||||||
}
|
}
|
||||||
if (section.contains("name")) {
|
if (section.contains("name")) {
|
||||||
meta.setDisplayName(ChatColor.RESET + format(section.getString("name"), player, oldRank, rank));
|
meta.setDisplayName(ChatColor.RESET + format(plugin, section.getString("name"), player, oldRank, rank));
|
||||||
}
|
}
|
||||||
item.setItemMeta(meta);
|
item.setItemMeta(meta);
|
||||||
|
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static String format(String message, Player player, Rank oldRank, Rank rank) {
|
private static String format(Rankup plugin, String message, Player player, Rank oldRank, Rank rank) {
|
||||||
return new MessageBuilder(ChatColor.translateAlternateColorCodes('&', message))
|
return plugin.replaceMoneyRequirements(new MessageBuilder(ChatColor.translateAlternateColorCodes('&', message))
|
||||||
.replaceRanks(player, oldRank, rank)
|
.replaceRanks(player, oldRank, rank), player, oldRank)
|
||||||
.toString();
|
.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void addItem(ItemStack[] items, ConfigurationSection section, Player player, Rank oldRank, Rank rank) {
|
private static void addItem(ItemStack[] items, ConfigurationSection section, ItemStack item) {
|
||||||
ItemStack item = getItem(section, player, oldRank, rank);
|
|
||||||
if (section.getName().equalsIgnoreCase("fill")) {
|
if (section.getName().equalsIgnoreCase("fill")) {
|
||||||
for (int i = 0; i < items.length; i++) {
|
for (int i = 0; i < items.length; i++) {
|
||||||
if (items[i] == null) {
|
if (items[i] == null) {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package sh.okx.rankup.messages;
|
|||||||
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
|
|
||||||
class EmptyMessageBuilder extends MessageBuilder {
|
public class EmptyMessageBuilder extends MessageBuilder {
|
||||||
EmptyMessageBuilder() {
|
EmptyMessageBuilder() {
|
||||||
super(null);
|
super(null);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
name: Rankup
|
name: Rankup
|
||||||
version: 3.2.1-beta
|
version: 3.2.1-beta.1
|
||||||
main: sh.okx.rankup.Rankup
|
main: sh.okx.rankup.Rankup
|
||||||
author: Okx
|
author: Okx
|
||||||
depend: [Vault]
|
depend: [Vault]
|
||||||
|
|||||||
Reference in New Issue
Block a user