diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/ConfigMessage.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/ConfigMessage.java index 1b0942df..deed2e3d 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/ConfigMessage.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/ConfigMessage.java @@ -2,47 +2,137 @@ package net.Indyuce.mmocore.api; import io.lumine.mythic.lib.MythicLib; import net.Indyuce.mmocore.MMOCore; -import org.bukkit.OfflinePlayer; -import org.bukkit.command.CommandSender; +import net.Indyuce.mmocore.api.player.PlayerData; +import net.md_5.bungee.api.ChatMessageType; +import net.md_5.bungee.api.chat.TextComponent; +import org.apache.commons.lang.Validate; import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import java.util.Arrays; import java.util.Collection; import java.util.List; public class ConfigMessage { - private final List messages; + private final String key; + private final List lines; + private final boolean papiPlaceholders, actionbar, raw; - public ConfigMessage(String key) { - messages = MMOCore.plugin.configManager.getMessage(key); + private ConfigMessage(@NotNull String key) { + this.key = key; + + final Object obj = MMOCore.plugin.configManager.getMessageObject(key); + this.lines = obj == null ? Arrays.asList("") : obj instanceof List ? (List) obj : Arrays.asList(obj.toString()); + + // Does message include placeholders + boolean hasPlaceholders = false; + for (String str : lines) + if (str.contains("%")) { + hasPlaceholders = true; + break; + } + this.papiPlaceholders = hasPlaceholders; + + // Is message for action bar + actionbar = !lines.isEmpty() && lines.get(0).startsWith("%"); + if (actionbar) lines.set(0, lines.get(0).substring(1)); + + // Are messages raw (JSON format) + raw = !lines.isEmpty() && (lines.get(0).startsWith("{") || lines.get(0).startsWith("[")); } - public ConfigMessage addPlaceholders(String... placeholders) { - for (int n = 0; n < messages.size(); n++) { - String line = messages.get(n); + /** + * Useful for things like indicators or specific lore lines which are + * string tags not requiring more than one string object. If the + * message is empty, an error string is returned. Either way, + * the returned value is non null for better user feedback. + * + * @return First line of message, if it exists. + */ + @NotNull + public String asLine() { + return lines.isEmpty() ? "" : lines.get(0); + } + + @NotNull + public List getLines() { + return lines; + } + + @NotNull + public ConfigMessage addPlaceholders(@NotNull Object... placeholders) { + + for (int n = 0; n < lines.size(); n++) { + String line = lines.get(n); + + // Apply placeholders to string for (int j = 0; j < placeholders.length - 1; j += 2) { - String placeholder = placeholders[j]; - if (line.contains("{" + placeholder + "}")) - line = line.replace("{" + placeholder + "}", placeholders[j + 1]); + final String placeholder = String.valueOf(placeholders[j]); + line = line.replace("{" + placeholder + "}", String.valueOf(placeholders[j + 1])); } - messages.set(n, line); + + lines.set(n, line); } + return this; } - public void send(CommandSender sender) { - messages.forEach(line -> sender.sendMessage(format(sender, line))); + @Deprecated + public void sendAsJSon(Player player) { + send(player); + } + + public void send(Player player) { + for (String line : lines) send(player, line); } public void send(Collection players) { - players.forEach(player -> messages.forEach(line -> player.sendMessage(format(player, line)))); + for (Player player : players) for (String line : lines) send(player, line); } - public void sendAsJSon(Player player) { - messages.forEach(line -> MythicLib.plugin.getVersion().getWrapper().sendJson(player, format(player, line))); + /** + * Sends a line of text to a target player + * + * @param player Player to send message to. His player + * data is not necessarily fully loaded + * @param messageFormat Raw/normal message to send + */ + private void send(@NotNull Player player, String messageFormat) { + Validate.notNull(player, "Player cannot be null"); + + final String rawMessage = format(player, messageFormat); + final PlayerData playerData = PlayerData.has(player) ? PlayerData.get(player) : null; + + // Handle special case with player data+action bar + if (playerData != null && playerData.isOnline() && actionbar) { + playerData.displayActionBar(rawMessage, raw); + return; + } + + // Normal sender + if (this.raw) { + if (actionbar) MythicLib.plugin.getVersion().getWrapper().sendActionBarRaw(player, rawMessage); + else MythicLib.plugin.getVersion().getWrapper().sendJson(player, rawMessage); + } else { + if (actionbar) + player.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(rawMessage)); + else player.sendMessage(rawMessage); + } } - private String format(CommandSender sender, String input) { - String str = MythicLib.plugin.parseColors(input); - return sender instanceof Player ? MMOCore.plugin.placeholderParser.parse((OfflinePlayer) sender, str) : str; + @NotNull + private String format(@Nullable Player player, String input) { + input = MythicLib.plugin.parseColors(input); + if (!papiPlaceholders || player == null) return input; // Optimization + return MMOCore.plugin.placeholderParser.parse(player, input); + } + + @NotNull + public static ConfigMessage fromKey(@NotNull String key, Object... placeholders) { + Validate.notNull(MMOCore.plugin.configManager, "MMOCore has not finished enabling"); + final ConfigMessage message = new ConfigMessage(key); + if (placeholders.length != 0) message.addPlaceholders(placeholders); + return message; } } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/eco/Withdraw.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/eco/Withdraw.java index 0b10e271..6434ab9a 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/eco/Withdraw.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/eco/Withdraw.java @@ -5,6 +5,7 @@ import java.util.Set; import java.util.UUID; import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.util.item.CurrencyItemBuilder; import org.bukkit.Bukkit; import org.bukkit.Sound; @@ -28,7 +29,7 @@ public class Withdraw implements Listener { public Withdraw(Player player) { this.player = player; } - + public Player getPlayer() { return player; } @@ -38,7 +39,7 @@ public class Withdraw implements Listener { return; withdrawing.add(player.getUniqueId()); - MMOCore.plugin.configManager.getSimpleMessage("withdrawing").send(player); + ConfigMessage.fromKey("withdrawing").send(player); Bukkit.getPluginManager().registerEvents(this, MMOCore.plugin); Bukkit.getScheduler().runTaskLater(MMOCore.plugin, this::close, 20 * 20); } @@ -60,7 +61,7 @@ public class Withdraw implements Listener { if (!event.getPlayer().equals(player)) return; - MMOCore.plugin.configManager.getSimpleMessage("withdraw-cancel").send(player); + ConfigMessage.fromKey("withdraw-cancel").send(player); close(); } @@ -75,13 +76,13 @@ public class Withdraw implements Listener { try { worth = Integer.parseInt(event.getMessage()); } catch (Exception e) { - MMOCore.plugin.configManager.getSimpleMessage("wrong-number", "arg", event.getMessage()).send(player); + ConfigMessage.fromKey("wrong-number").addPlaceholders("arg", event.getMessage()).send(player); return; } int left = (int) (MMOCore.plugin.economy.getEconomy().getBalance(player) - worth); if (left < 0) { - MMOCore.plugin.configManager.getSimpleMessage("not-enough-money", "left", "" + -left).send(player); + ConfigMessage.fromKey("not-enough-money").addPlaceholders("left", -left).send(player); return; } @@ -91,7 +92,7 @@ public class Withdraw implements Listener { MMOCore.plugin.economy.getEconomy().withdrawPlayer(player, worth); withdrawAlgorythm(worth); player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 1, 1); - MMOCore.plugin.configManager.getSimpleMessage("withdrew", "worth", "" + worth).send(player); + ConfigMessage.fromKey("withdrew").addPlaceholders("worth", worth).send(player); }); } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java index 1c37c842..5b178036 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/PlayerData.java @@ -357,7 +357,7 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD /** * @return If the item is unlocked by the player - * This is used for skills that can be locked & unlocked. + * This is used for skills that can be locked & unlocked. */ public boolean hasUnlocked(Unlockable unlockable) { return unlockable.isUnlockedByDefault() || unlockedItems.contains(unlockable.getUnlockNamespacedKey()); @@ -726,7 +726,7 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD setLastActivity(PlayerActivity.FRIEND_REQUEST); FriendRequest request = new FriendRequest(this, target); - new ConfigMessage("friend-request").addPlaceholders("player", getPlayer().getName(), "uuid", request.getUniqueId().toString()).sendAsJSon(target.getPlayer()); + ConfigMessage.fromKey("friend-request").addPlaceholders("player", getPlayer().getName(), "uuid", request.getUniqueId().toString()).send(target.getPlayer()); MMOCore.plugin.requestManager.registerRequest(request); } @@ -757,13 +757,13 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD public void run() { if (!isOnline() || getPlayer().getLocation().getBlockX() != x || getPlayer().getLocation().getBlockY() != y || getPlayer().getLocation().getBlockZ() != z) { MMOCore.plugin.soundManager.getSound(SoundEvent.WARP_CANCELLED).playTo(getPlayer()); - MMOCore.plugin.configManager.getSimpleMessage("warping-canceled").send(getPlayer()); + ConfigMessage.fromKey("warping-canceled").send(getPlayer()); giveStellium(cost, PlayerResourceUpdateEvent.UpdateReason.USE_WAYPOINT); cancel(); return; } - MMOCore.plugin.configManager.getSimpleMessage("warping-comencing", "left", String.valueOf((warpTime - t) / 20)).send(getPlayer()); + ConfigMessage.fromKey("warping-comencing", "left", String.valueOf((warpTime - t) / 20)).send(getPlayer()); if (hasPerm || t++ >= warpTime) { getPlayer().teleport(target.getLocation()); getPlayer().addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 20, 1, false, false)); @@ -840,7 +840,7 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD // Experience hologram if (hologramLocation != null && isOnline()) - MMOCoreUtils.displayIndicator(hologramLocation, MMOCore.plugin.configManager.getSimpleMessage("exp-hologram", "exp", MythicLib.plugin.getMMOConfig().decimal.format(event.getExperience())).message()); + MMOCoreUtils.displayIndicator(hologramLocation, ConfigMessage.fromKey("exp-hologram", "exp", MythicLib.plugin.getMMOConfig().decimal.format(event.getExperience())).asLine()); experience = Math.max(0, experience + event.getExperience()); @@ -864,7 +864,7 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD if (level > oldLevel) { Bukkit.getPluginManager().callEvent(new PlayerLevelUpEvent(this, null, oldLevel, level)); if (isOnline()) { - new ConfigMessage("level-up").addPlaceholders("level", String.valueOf(level)).send(getPlayer()); + ConfigMessage.fromKey("level-up").addPlaceholders("level", String.valueOf(level)).send(getPlayer()); MMOCore.plugin.soundManager.getSound(SoundEvent.LEVEL_UP).playTo(getPlayer()); new SmallParticleEffect(getPlayer(), Particle.SPELL_INSTANT); } @@ -1017,7 +1017,7 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD /** * @return If the PlayerEnterCastingModeEvent successfully put the player - * into casting mode, otherwise if the event is cancelled, returns false. + * into casting mode, otherwise if the event is cancelled, returns false. */ public boolean setSkillCasting() { Validate.isTrue(!isCasting(), "Player already in casting mode"); @@ -1036,7 +1036,7 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD /** * @return If player successfully left skill casting i.e the Bukkit - * event has not been cancelled + * event has not been cancelled */ public boolean leaveSkillCasting() { return leaveSkillCasting(false); @@ -1045,7 +1045,7 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD /** * @param skipEvent Skip firing the exit event * @return If player successfully left skill casting i.e the Bukkit - * event has not been cancelled + * event has not been cancelled */ public boolean leaveSkillCasting(boolean skipEvent) { Validate.isTrue(isCasting(), "Player not in casting mode"); @@ -1063,8 +1063,13 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD } public void displayActionBar(String message) { + displayActionBar(message, false); + } + + public void displayActionBar(String message, boolean raw) { setLastActivity(PlayerActivity.ACTION_BAR_MESSAGE); - getPlayer().spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(message)); + if (raw) MythicLib.plugin.getVersion().getWrapper().sendActionBarRaw(getPlayer(), message); + else getPlayer().spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(message)); } @Deprecated @@ -1219,7 +1224,7 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD * checks if they could potentially upgrade to one of these * * @return If the player can change its current class to - * a subclass + * a subclass */ @Deprecated public boolean canChooseSubclass() { diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/social/FriendRequest.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/social/FriendRequest.java index 93ad5430..2f75ee5a 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/social/FriendRequest.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/player/social/FriendRequest.java @@ -1,6 +1,6 @@ package net.Indyuce.mmocore.api.player.social; -import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.player.PlayerActivity; import net.Indyuce.mmocore.api.player.PlayerData; import org.bukkit.Sound; @@ -21,8 +21,8 @@ public class FriendRequest extends Request { getCreator().addFriend(getTarget().getUniqueId()); getTarget().addFriend(getCreator().getUniqueId()); if (getCreator().isOnline()) { - MMOCore.plugin.configManager.getSimpleMessage("now-friends", "player", getTarget().getPlayer().getName()).send(getCreator().getPlayer()); - MMOCore.plugin.configManager.getSimpleMessage("now-friends", "player", getCreator().getPlayer().getName()).send(getTarget().getPlayer()); + ConfigMessage.fromKey("now-friends", "player", getTarget().getPlayer().getName()).send(getCreator().getPlayer()); + ConfigMessage.fromKey("now-friends", "player", getCreator().getPlayer().getName()).send(getTarget().getPlayer()); } } } \ No newline at end of file diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/util/input/AnvilGUI.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/util/input/AnvilGUI.java index ae87b18b..a86b8fbb 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/util/input/AnvilGUI.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/util/input/AnvilGUI.java @@ -1,6 +1,7 @@ package net.Indyuce.mmocore.api.util.input; -import net.Indyuce.mmocore.MMOCore; +import io.lumine.mythic.lib.MythicLib; +import net.Indyuce.mmocore.api.ConfigMessage; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -12,8 +13,6 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.util.Consumer; -import io.lumine.mythic.lib.MythicLib; - @Deprecated public class AnvilGUI extends PlayerInput { private final int containerId; @@ -24,7 +23,7 @@ public class AnvilGUI extends PlayerInput { ItemStack paper = new ItemStack(Material.PAPER); ItemMeta paperMeta = paper.getItemMeta(); - paperMeta.setDisplayName(MMOCore.plugin.configManager.getSimpleMessage("player-input.anvil." + type.getLowerCaseName()).message()); + paperMeta.setDisplayName(ConfigMessage.fromKey("player-input.anvil." + type.getLowerCaseName()).asLine()); paper.setItemMeta(paperMeta); MythicLib.plugin.getVersion().getWrapper().handleInventoryCloseEvent(player); diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/util/input/ChatInput.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/util/input/ChatInput.java index f05c1dd5..7cee41e1 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/util/input/ChatInput.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/api/util/input/ChatInput.java @@ -1,6 +1,7 @@ package net.Indyuce.mmocore.api.util.input; import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.gui.api.PluginInventory; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -37,8 +38,8 @@ public class ChatInput extends PlayerInput { this.lastOpened = lastOpened; player.closeInventory(); - MMOCore.plugin.configManager.getSimpleMessage("player-input.chat." + inputType.getLowerCaseName()).send(player); - MMOCore.plugin.configManager.getSimpleMessage("player-input.chat.cancel").send(player); + ConfigMessage.fromKey("player-input.chat." + inputType.getLowerCaseName()).send(player); + ConfigMessage.fromKey("player-input.chat.cancel").send(player); } @Override @@ -56,7 +57,7 @@ public class ChatInput extends PlayerInput { if (event.getMessage().equals("cancel")) { if (lastOpened != null) Bukkit.getScheduler().runTask(MMOCore.plugin, () -> lastOpened.open()); - MMOCore.plugin.configManager.getSimpleMessage("player-input.chat." + inputType.getLowerCaseName() + "-cancel").send(getPlayer()); + ConfigMessage.fromKey("player-input.chat." + inputType.getLowerCaseName() + "-cancel").send(getPlayer()); } else // Run sync Bukkit.getScheduler().runTask(MMOCore.plugin, () -> output(event.getMessage())); diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/command/DepositCommand.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/command/DepositCommand.java index cd96fee6..0b64e473 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/command/DepositCommand.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/command/DepositCommand.java @@ -27,7 +27,7 @@ public class DepositCommand extends RegisteredCommand { // if (sender instanceof Player) // if (!isNearEnderchest(((Player) sender).getLocation())) { - // sender.sendMessage(MMOCore.plugin.configManager.getSimpleMessage("stand-near-enderchest")); + // sender.sendMessage(ConfigMessage.fromKey("stand-near-enderchest")); // return true; // } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/command/PvpModeCommand.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/command/PvpModeCommand.java index 6f6a79e9..610e6413 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/command/PvpModeCommand.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/command/PvpModeCommand.java @@ -3,6 +3,7 @@ package net.Indyuce.mmocore.command; import io.lumine.mythic.lib.MythicLib; import io.lumine.mythic.lib.comp.flags.CustomFlag; import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.command.api.RegisteredCommand; import net.Indyuce.mmocore.command.api.ToggleableCommand; @@ -26,7 +27,7 @@ public class PvpModeCommand extends RegisteredCommand { } if (!sender.hasPermission("mmocore.pvpmode")) { - MMOCore.plugin.configManager.getSimpleMessage("not-enough-perms").send((Player) sender); + ConfigMessage.fromKey("not-enough-perms").send((Player) sender); return false; } @@ -34,7 +35,7 @@ public class PvpModeCommand extends RegisteredCommand { // Command cooldown if (playerData.getCooldownMap().isOnCooldown(COOLDOWN_KEY)) { - MMOCore.plugin.configManager.getSimpleMessage("pvp-mode.cooldown", "remaining", MythicLib.plugin.getMMOConfig().decimal.format(playerData.getCooldownMap().getCooldown(COOLDOWN_KEY))).send((Player) sender); + ConfigMessage.fromKey("pvp-mode.cooldown", "remaining", MythicLib.plugin.getMMOConfig().decimal.format(playerData.getCooldownMap().getCooldown(COOLDOWN_KEY))).send((Player) sender); return true; } @@ -45,12 +46,12 @@ public class PvpModeCommand extends RegisteredCommand { if (playerData.getCombat().isInPvpMode() && MythicLib.plugin.getFlags().isFlagAllowed(playerData.getPlayer(), CustomFlag.PVP_MODE)) { playerData.getCombat().setInvulnerable(MMOCore.plugin.configManager.pvpModeInvulnerabilityTimeCommand); - MMOCore.plugin.configManager.getSimpleMessage("pvp-mode.toggle.on-invulnerable", "time", + ConfigMessage.fromKey("pvp-mode.toggle.on-invulnerable", "time", MythicLib.plugin.getMMOConfig().decimal.format(MMOCore.plugin.configManager.pvpModeInvulnerabilityTimeCommand)).send(playerData.getPlayer()); // Just send message otherwise } else - MMOCore.plugin.configManager.getSimpleMessage("pvp-mode.toggle." + (playerData.getCombat().isInPvpMode() ? "on" : "off") + "-safe").send((Player) sender); + ConfigMessage.fromKey("pvp-mode.toggle." + (playerData.getCombat().isInPvpMode() ? "on" : "off") + "-safe").send((Player) sender); return true; } } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/command/SkillTreesCommand.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/command/SkillTreesCommand.java index cf3d60de..6f6f25d0 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/command/SkillTreesCommand.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/command/SkillTreesCommand.java @@ -2,8 +2,9 @@ package net.Indyuce.mmocore.command; import io.lumine.mythic.lib.UtilityMethods; import net.Indyuce.mmocore.MMOCore; -import net.Indyuce.mmocore.api.player.PlayerData; +import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.event.MMOCommandEvent; +import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.command.api.RegisteredCommand; import net.Indyuce.mmocore.command.api.ToggleableCommand; import net.Indyuce.mmocore.manager.InventoryManager; @@ -45,7 +46,7 @@ public class SkillTreesCommand extends RegisteredCommand { InventoryManager.TREE_VIEW.newInventory(data).open(); return true; } else { - MMOCore.plugin.configManager.getSimpleMessage("no-skill-tree").send(player); + ConfigMessage.fromKey("no-skill-tree").send(player); return false; } } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/command/SkillsCommand.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/command/SkillsCommand.java index 2a233111..fa2814ee 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/command/SkillsCommand.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/command/SkillsCommand.java @@ -1,11 +1,11 @@ package net.Indyuce.mmocore.command; -import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.ConfigMessage; +import net.Indyuce.mmocore.api.event.MMOCommandEvent; import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.command.api.RegisteredCommand; import net.Indyuce.mmocore.command.api.ToggleableCommand; import net.Indyuce.mmocore.manager.InventoryManager; -import net.Indyuce.mmocore.api.event.MMOCommandEvent; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.configuration.ConfigurationSection; @@ -27,7 +27,7 @@ public class SkillsCommand extends RegisteredCommand { if(event.isCancelled()) return true; if (data.getUnlockedSkills().isEmpty()) { - MMOCore.plugin.configManager.getSimpleMessage("no-class-skill").send((Player) sender); + ConfigMessage.fromKey("no-class-skill").send((Player) sender); return true; } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/command/WithdrawCommand.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/command/WithdrawCommand.java index 52e2fe76..31275fce 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/command/WithdrawCommand.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/command/WithdrawCommand.java @@ -1,6 +1,8 @@ package net.Indyuce.mmocore.command; import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.ConfigMessage; +import net.Indyuce.mmocore.api.eco.Withdraw; import net.Indyuce.mmocore.command.api.RegisteredCommand; import net.Indyuce.mmocore.command.api.ToggleableCommand; import org.apache.commons.lang.Validate; @@ -11,8 +13,6 @@ import org.bukkit.command.CommandSender; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; -import net.Indyuce.mmocore.api.eco.Withdraw; - public class WithdrawCommand extends RegisteredCommand { public WithdrawCommand(ConfigurationSection config) { super(config, ToggleableCommand.WITHDRAW); @@ -37,7 +37,7 @@ public class WithdrawCommand extends RegisteredCommand { amount = Integer.parseInt(amountArgument); Validate.isTrue(amount >= 0); } catch (IllegalArgumentException exception) { - sender.sendMessage(MMOCore.plugin.configManager.getSimpleMessage("wrong-number", "arg", "" + args[0]).message()); + sender.sendMessage(ConfigMessage.fromKey("wrong-number", "arg", "" + args[0]).asLine()); return true; } @@ -50,14 +50,14 @@ public class WithdrawCommand extends RegisteredCommand { int left = (int) MMOCore.plugin.economy.getEconomy().getBalance(player) - amount; if (left < 0) { - MMOCore.plugin.configManager.getSimpleMessage("not-enough-money", "left", "" + -left).send(player); + ConfigMessage.fromKey("not-enough-money", "left", "" + -left).send(player); return true; } MMOCore.plugin.economy.getEconomy().withdrawPlayer(player, amount); request.withdrawAlgorythm(amount); player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 1, 1); - MMOCore.plugin.configManager.getSimpleMessage("withdrew", "worth", "" + amount).send(player); + ConfigMessage.fromKey("withdrew", "worth", amount).send(player); return true; } } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/command/rpg/admin/ClassCommandTreeNode.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/command/rpg/admin/ClassCommandTreeNode.java index 34b6ce91..ed88d719 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/command/rpg/admin/ClassCommandTreeNode.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/command/rpg/admin/ClassCommandTreeNode.java @@ -1,20 +1,20 @@ package net.Indyuce.mmocore.command.rpg.admin; +import io.lumine.mythic.lib.command.api.CommandTreeNode; +import io.lumine.mythic.lib.command.api.Parameter; import net.Indyuce.mmocore.MMOCore; -import net.Indyuce.mmocore.api.player.PlayerData; +import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.event.PlayerChangeClassEvent; +import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.profess.PlayerClass; +import net.Indyuce.mmocore.api.player.profess.SavedClassInformation; +import net.Indyuce.mmocore.command.api.CommandVerbose; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Sound; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -import net.Indyuce.mmocore.api.player.profess.SavedClassInformation; -import net.Indyuce.mmocore.command.api.CommandVerbose; -import io.lumine.mythic.lib.command.api.CommandTreeNode; -import io.lumine.mythic.lib.command.api.Parameter; - public class ClassCommandTreeNode extends CommandTreeNode { public ClassCommandTreeNode(CommandTreeNode parent) { super(parent, "class"); @@ -54,7 +54,7 @@ public class ClassCommandTreeNode extends CommandTreeNode { (data.hasSavedClass(profess) ? data.getClassInfo(profess) : new SavedClassInformation(MMOCore.plugin.dataProvider.getDataManager().getDefaultData())).load(profess, data); if (data.isOnline()) { - MMOCore.plugin.configManager.getSimpleMessage("class-select", "class", profess.getName()).send(data.getPlayer()); + ConfigMessage.fromKey("class-select", "class", profess.getName()).send(data.getPlayer()); data.getPlayer().playSound(data.getPlayer().getLocation(), Sound.UI_TOAST_CHALLENGE_COMPLETE, 1, 1); } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/command/rpg/booster/CreateCommandTreeNode.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/command/rpg/booster/CreateCommandTreeNode.java index 12393b31..cee9f464 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/command/rpg/booster/CreateCommandTreeNode.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/command/rpg/booster/CreateCommandTreeNode.java @@ -49,7 +49,7 @@ public class CreateCommandTreeNode extends CommandTreeNode { if (args[2].equalsIgnoreCase("main")) { MMOCore.plugin.boosterManager.register(new Booster(args.length > 5 ? args[5] : null, extra, length)); - new ConfigMessage("booster-main").addPlaceholders("multiplier", "" + (1 + extra)).send(Bukkit.getOnlinePlayers()); + ConfigMessage.fromKey("booster-main").addPlaceholders("multiplier", "" + (1 + extra)).send(Bukkit.getOnlinePlayers()); Bukkit.getOnlinePlayers().forEach(player -> player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1, 1)); return CommandResult.SUCCESS; } @@ -62,7 +62,7 @@ public class CreateCommandTreeNode extends CommandTreeNode { Profession profession = MMOCore.plugin.professionManager.get(format); MMOCore.plugin.boosterManager.register(new Booster(args.length > 5 ? args[5] : null, profession, extra, length)); - new ConfigMessage("booster-skill").addPlaceholders("multiplier", "" + (1 + extra), "profession", profession.getName()) + ConfigMessage.fromKey("booster-skill").addPlaceholders("multiplier", "" + (1 + extra), "profession", profession.getName()) .send(Bukkit.getOnlinePlayers()); Bukkit.getOnlinePlayers().forEach(player -> player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1, 1)); return CommandResult.SUCCESS; diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/comp/placeholder/RPGPlaceholders.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/comp/placeholder/RPGPlaceholders.java index 7668912a..a2a68a02 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/comp/placeholder/RPGPlaceholders.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/comp/placeholder/RPGPlaceholders.java @@ -143,9 +143,8 @@ public class RPGPlaceholders extends PlaceholderExpansion { } else if (identifier.startsWith("cooldown_bound_")) { int slot = Math.max(0, Integer.parseInt(identifier.substring(15))); if (playerData.hasSkillBound(slot)) - return "" + playerData.getCooldownMap().getCooldown(playerData.getBoundSkill(slot)); - else - return MMOCore.plugin.configManager.noSkillBoundPlaceholder; + return Double.toString(playerData.getCooldownMap().getCooldown(playerData.getBoundSkill(slot))); + else return MMOCore.plugin.configManager.noSkillBoundPlaceholder; } else if (identifier.startsWith("profession_experience_")) return MythicLib.plugin.getMMOConfig().decimal.format( playerData.getCollectionSkills().getExperience(identifier.substring(22).replace(" ", "-").replace("_", "-").toLowerCase())); diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/comp/region/pvpmode/PvPFlagHandler.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/comp/region/pvpmode/PvPFlagHandler.java index fb03ceed..d7cd925d 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/comp/region/pvpmode/PvPFlagHandler.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/comp/region/pvpmode/PvPFlagHandler.java @@ -10,6 +10,7 @@ import com.sk89q.worldguard.session.MoveType; import com.sk89q.worldguard.session.Session; import io.lumine.mythic.lib.MythicLib; import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.ConfigMessage; public class PvPFlagHandler extends MMOCoreFlagHandler { @@ -50,7 +51,7 @@ public class PvPFlagHandler extends MMOCoreFlagHandler { // Send message if (canSendMessage()) { lastMessage = System.currentTimeMillis(); - MMOCore.plugin.configManager.getSimpleMessage("pvp-mode.enter.pvp-mode-on", "time", + ConfigMessage.fromKey("pvp-mode.enter.pvp-mode-on", "time", MythicLib.plugin.getMMOConfig().decimal.format(MMOCore.plugin.configManager.pvpModeInvulnerabilityTimeRegionChange)).send(playerData.getPlayer()); } } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/comp/region/pvpmode/PvPModeHandler.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/comp/region/pvpmode/PvPModeHandler.java index 05dd6a93..c811ef51 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/comp/region/pvpmode/PvPModeHandler.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/comp/region/pvpmode/PvPModeHandler.java @@ -12,6 +12,7 @@ import io.lumine.mythic.lib.MythicLib; import io.lumine.mythic.lib.comp.flags.CustomFlag; import io.lumine.mythic.lib.comp.flags.WorldGuardFlags; import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.command.PvpModeCommand; import java.util.Objects; @@ -64,7 +65,7 @@ public class PvPModeHandler extends MMOCoreFlagHandler { final boolean pvpEnabled = playerData.getCombat().isInPvpMode() && !playerData.getCombat().canQuitPvpMode() && pvpFlag; lastMessage = System.currentTimeMillis(); final double remaining = (playerData.getCombat().getLastHit() + MMOCore.plugin.configManager.pvpModeCombatTimeout * 1000.0D - System.currentTimeMillis()) / 1000.0D; - MMOCore.plugin.configManager.getSimpleMessage("pvp-mode.leave.pvp-" + (pvpEnabled ? "allowed" : "denied"), "remaining", + ConfigMessage.fromKey("pvp-mode.leave.pvp-" + (pvpEnabled ? "allowed" : "denied"), "remaining", (MythicLib.plugin.getMMOConfig()).decimal.format(remaining)).send(playerData.getPlayer()); } } else if (newPvpMode && !lastPvpMode) { @@ -80,7 +81,7 @@ public class PvPModeHandler extends MMOCoreFlagHandler { // Send message if (canSendMessage()) { lastMessage = System.currentTimeMillis(); - MMOCore.plugin.configManager.getSimpleMessage("pvp-mode.enter.pvp-mode-" + (applyInvulnerability ? "on" : "off"), "time", + ConfigMessage.fromKey("pvp-mode.enter.pvp-mode-" + (applyInvulnerability ? "on" : "off"), "time", MythicLib.plugin.getMMOConfig().decimal.format(MMOCore.plugin.configManager.pvpModeInvulnerabilityTimeRegionChange)).send(playerData.getPlayer()); } } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/comp/region/pvpmode/PvPModeListener.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/comp/region/pvpmode/PvPModeListener.java index 8b55bb89..82053faa 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/comp/region/pvpmode/PvPModeListener.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/comp/region/pvpmode/PvPModeListener.java @@ -6,6 +6,7 @@ import io.lumine.mythic.lib.MythicLib; import io.lumine.mythic.lib.UtilityMethods; import io.lumine.mythic.lib.comp.flags.CustomFlag; import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.player.PlayerData; import org.apache.commons.lang.Validate; import org.bukkit.entity.Player; @@ -53,14 +54,14 @@ public class PvPModeListener implements Listener { if (targetData.getLevel() < minLevel) { event.setCancelled(true); if (event.getDamage() > 0) - MMOCore.plugin.configManager.getSimpleMessage("pvp-mode.cannot-hit.low-level-target").send(source); + ConfigMessage.fromKey("pvp-mode.cannot-hit.low-level-target").send(source); return; } if (sourceData.getLevel() < minLevel) { event.setCancelled(true); if (event.getDamage() > 0) - MMOCore.plugin.configManager.getSimpleMessage("pvp-mode.cannot-hit.low-level-self").send(source); + ConfigMessage.fromKey("pvp-mode.cannot-hit.low-level-self").send(source); return; } @@ -68,7 +69,7 @@ public class PvPModeListener implements Listener { if (maxLevelDiff > 0 && Math.abs(targetData. getLevel() - sourceData.getLevel()) > maxLevelDiff) { event.setCancelled(true); if (event.getDamage() > 0) - MMOCore.plugin.configManager.getSimpleMessage("pvp-mode.cannot-hit.high-level-difference").send(source); + ConfigMessage.fromKey("pvp-mode.cannot-hit.high-level-difference").send(source); return; } } @@ -80,7 +81,7 @@ public class PvPModeListener implements Listener { if (targetData.getCombat().isInvulnerable()) { if (event.getDamage() > 0) { final long left = targetData.getCombat().getInvulnerableTill() - System.currentTimeMillis(); - MMOCore.plugin.configManager.getSimpleMessage("pvp-mode.cannot-hit.invulnerable-target", + ConfigMessage.fromKey("pvp-mode.cannot-hit.invulnerable-target", "left", MythicLib.plugin.getMMOConfig().decimal.format(left / 1000d)).send(source); } event.setCancelled(true); @@ -91,7 +92,7 @@ public class PvPModeListener implements Listener { if (!MMOCore.plugin.configManager.pvpModeInvulnerabilityCanDamage && sourceData.getCombat().isInvulnerable()) { if (event.getDamage() > 0) { final long left = sourceData.getCombat().getInvulnerableTill() - System.currentTimeMillis(); - MMOCore.plugin.configManager.getSimpleMessage("pvp-mode.cannot-hit.invulnerable-self", + ConfigMessage.fromKey("pvp-mode.cannot-hit.invulnerable-self", "left", MythicLib.plugin.getMMOConfig().decimal.format(left / 1000d)).send(source); } event.setCancelled(true); @@ -108,14 +109,14 @@ public class PvPModeListener implements Listener { if (!targetData.getCombat().isInPvpMode()) { event.setCancelled(true); if (event.getDamage() > 0) - MMOCore.plugin.configManager.getSimpleMessage("pvp-mode.cannot-hit.pvp-mode-disabled-target").send(source); + ConfigMessage.fromKey("pvp-mode.cannot-hit.pvp-mode-disabled-target").send(source); } // Attacker has not enabled PvP mode else if (!sourceData.getCombat().isInPvpMode()) { event.setCancelled(true); if (event.getDamage() > 0) - MMOCore.plugin.configManager.getSimpleMessage("pvp-mode.cannot-hit.pvp-mode-disabled-self").send(source); + ConfigMessage.fromKey("pvp-mode.cannot-hit.pvp-mode-disabled-self").send(source); } } } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/experience/PlayerProfessions.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/experience/PlayerProfessions.java index b6e04f0f..28e0fb9d 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/experience/PlayerProfessions.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/experience/PlayerProfessions.java @@ -191,7 +191,7 @@ public class PlayerProfessions { // Display hologram if (hologramLocation != null) - MMOCoreUtils.displayIndicator(hologramLocation.add(.5, 1.5, .5), MMOCore.plugin.configManager.getSimpleMessage("exp-hologram", "exp", MythicLib.plugin.getMMOConfig().decimal.format(event.getExperience())).message()); + MMOCoreUtils.displayIndicator(hologramLocation.add(.5, 1.5, .5), ConfigMessage.fromKey("exp-hologram", "exp", MythicLib.plugin.getMMOConfig().decimal.format(event.getExperience())).asLine()); exp.put(profession.getId(), Math.max(0, exp.getOrDefault(profession.getId(), 0d) + event.getExperience())); int level, oldLevel = getLevel(profession); @@ -222,7 +222,7 @@ public class PlayerProfessions { if (check) { Bukkit.getPluginManager().callEvent(new PlayerLevelUpEvent(playerData, profession, oldLevel, level)); new SmallParticleEffect(playerData.getPlayer(), Particle.SPELL_INSTANT); - new ConfigMessage("profession-level-up").addPlaceholders("level", String.valueOf(level), "profession", profession.getName()) + ConfigMessage.fromKey("profession-level-up").addPlaceholders("level", String.valueOf(level), "profession", profession.getName()) .send(playerData.getPlayer()); MMOCore.plugin.soundManager.getSound(SoundEvent.LEVEL_UP).playTo(playerData.getPlayer()); playerData.getStats().updateStats(); @@ -233,7 +233,7 @@ public class PlayerProfessions { for (int j = 0; j < 20; j++) bar.append(j == chars ? "" + ChatColor.WHITE + ChatColor.BOLD : "").append("|"); if (playerData.isOnline()) - MMOCore.plugin.configManager.getSimpleMessage("exp-notification", "profession", profession.getName(), "progress", bar.toString(), "ratio", + ConfigMessage.fromKey("exp-notification", "profession", profession.getName(), "progress", bar.toString(), "ratio", MythicLib.plugin.getMMOConfig().decimal.format(exp / needed * 100)).send(playerData.getPlayer()); } } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/AttributeView.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/AttributeView.java index 970ae7f7..6b1dee52 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/AttributeView.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/AttributeView.java @@ -2,6 +2,7 @@ package net.Indyuce.mmocore.gui; import io.lumine.mythic.lib.manager.StatManager; import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.gui.api.EditableInventory; import net.Indyuce.mmocore.gui.api.GeneratedInventory; @@ -95,13 +96,13 @@ public class AttributeView extends EditableInventory { if (item.getFunction().equalsIgnoreCase("reallocation")) { int spent = playerData.getAttributes().countPoints(); if (spent < 1) { - MMOCore.plugin.configManager.getSimpleMessage("no-attribute-points-spent").send(player); + ConfigMessage.fromKey("no-attribute-points-spent").send(player); MMOCore.plugin.soundManager.getSound(SoundEvent.NOT_ENOUGH_POINTS).playTo(getPlayer()); return; } if (playerData.getAttributeReallocationPoints() < 1) { - MMOCore.plugin.configManager.getSimpleMessage("not-attribute-reallocation-point").send(player); + ConfigMessage.fromKey("not-attribute-reallocation-point").send(player); MMOCore.plugin.soundManager.getSound(SoundEvent.NOT_ENOUGH_POINTS).playTo(getPlayer()); return; } @@ -109,7 +110,7 @@ public class AttributeView extends EditableInventory { playerData.getAttributes().getInstances().forEach(ins -> ins.setBase(0)); playerData.giveAttributePoints(spent); playerData.giveAttributeReallocationPoints(-1); - MMOCore.plugin.configManager.getSimpleMessage("attribute-points-reallocated", "points", String.valueOf(playerData.getAttributePoints())).send(player); + ConfigMessage.fromKey("attribute-points-reallocated", "points", String.valueOf(playerData.getAttributePoints())).send(player); MMOCore.plugin.soundManager.getSound(SoundEvent.RESET_ATTRIBUTES).playTo(getPlayer()); open(); } @@ -118,14 +119,14 @@ public class AttributeView extends EditableInventory { PlayerAttribute attribute = ((AttributeItem) item).attribute; if (playerData.getAttributePoints() < 1) { - MMOCore.plugin.configManager.getSimpleMessage("not-attribute-point").send(player); + ConfigMessage.fromKey("not-attribute-point").send(player); MMOCore.plugin.soundManager.getSound(SoundEvent.NOT_ENOUGH_POINTS).playTo(getPlayer()); return; } PlayerAttributes.AttributeInstance ins = playerData.getAttributes().getInstance(attribute); if (attribute.hasMax() && ins.getBase() >= attribute.getMax()) { - MMOCore.plugin.configManager.getSimpleMessage("attribute-max-points-hit").send(player); + ConfigMessage.fromKey("attribute-max-points-hit").send(player); MMOCore.plugin.soundManager.getSound(SoundEvent.NOT_ENOUGH_POINTS).playTo(getPlayer()); return; } @@ -137,7 +138,7 @@ public class AttributeView extends EditableInventory { pointsSpent = Math.min(pointsSpent, attribute.getMax() - ins.getBase()); if (shiftClick && playerData.getAttributePoints() < pointsSpent) { - MMOCore.plugin.configManager.getSimpleMessage("not-attribute-point-shift", "shift_points", String.valueOf(pointsSpent)).send(player); + ConfigMessage.fromKey("not-attribute-point-shift", "shift_points", String.valueOf(pointsSpent)).send(player); MMOCore.plugin.soundManager.getSound(SoundEvent.NOT_ENOUGH_POINTS).playTo(getPlayer()); return; } @@ -150,7 +151,7 @@ public class AttributeView extends EditableInventory { while (pointsSpent-- > 0) attribute.getExperienceTable().claim(playerData, ins.getBase(), attribute); - MMOCore.plugin.configManager.getSimpleMessage("attribute-level-up", "attribute", attribute.getName(), "level", String.valueOf(ins.getBase())).send(player); + ConfigMessage.fromKey("attribute-level-up", "attribute", attribute.getName(), "level", String.valueOf(ins.getBase())).send(player); MMOCore.plugin.soundManager.getSound(SoundEvent.LEVEL_ATTRIBUTE).playTo(getPlayer()); PlayerAttributeUseEvent playerAttributeUseEvent = new PlayerAttributeUseEvent(playerData, attribute); diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/ClassConfirmation.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/ClassConfirmation.java index d94443a4..135662fa 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/ClassConfirmation.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/ClassConfirmation.java @@ -2,6 +2,7 @@ package net.Indyuce.mmocore.gui; import io.lumine.mythic.lib.UtilityMethods; import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.SoundEvent; import net.Indyuce.mmocore.api.event.PlayerChangeClassEvent; import net.Indyuce.mmocore.api.player.PlayerData; @@ -145,7 +146,7 @@ public class ClassConfirmation extends EditableInventory { else (playerData.hasSavedClass(profess) ? playerData.getClassInfo(profess) : new SavedClassInformation(MMOCore.plugin.dataProvider.getDataManager().getDefaultData())).load(profess, playerData); - MMOCore.plugin.configManager.getSimpleMessage("class-select", "class", profess.getName()).send(player); + ConfigMessage.fromKey("class-select", "class", profess.getName()).send(player); MMOCore.plugin.soundManager.getSound(SoundEvent.SELECT_CLASS).playTo(player); player.closeInventory(); if (profileRunnable != null) profileRunnable.run(); diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/ClassSelect.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/ClassSelect.java index 3ce50aba..b3b7668f 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/ClassSelect.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/ClassSelect.java @@ -28,10 +28,8 @@ import org.bukkit.persistence.PersistentDataType; import javax.annotation.Nullable; import java.util.ArrayList; -import java.util.Comparator; import java.util.List; import java.util.Objects; -import java.util.stream.Collectors; public class ClassSelect extends EditableInventory { public ClassSelect() { @@ -125,19 +123,19 @@ public class ClassSelect extends EditableInventory { if (profileRunnable == null && playerData.getClassPoints() < 1) { MMOCore.plugin.soundManager.getSound(SoundEvent.CANT_SELECT_CLASS).playTo(player); - new ConfigMessage("cant-choose-new-class").send(player); + ConfigMessage.fromKey("cant-choose-new-class").send(player); return; } if (profess.hasOption(ClassOption.NEEDS_PERMISSION) && !player.hasPermission("mmocore.class." + profess.getId().toLowerCase())) { MMOCore.plugin.soundManager.getSound(SoundEvent.CANT_SELECT_CLASS).playTo(player); - new ConfigMessage("no-permission-for-class").send(player); + ConfigMessage.fromKey("no-permission-for-class").send(player); return; } if (profess.equals(playerData.getProfess())) { MMOCore.plugin.soundManager.getSound(SoundEvent.CANT_SELECT_CLASS).playTo(player); - MMOCore.plugin.configManager.getSimpleMessage("already-on-class", "class", profess.getName()).send(player); + ConfigMessage.fromKey("already-on-class", "class", profess.getName()).send(player); return; } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/PlayerStats.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/PlayerStats.java index aa67f709..6729450e 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/PlayerStats.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/PlayerStats.java @@ -6,7 +6,9 @@ import io.lumine.mythic.lib.api.stat.modifier.StatModifier; import io.lumine.mythic.lib.manager.StatManager; import io.lumine.mythic.lib.version.VersionMaterial; import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.player.PlayerData; +import net.Indyuce.mmocore.api.player.attribute.PlayerAttribute; import net.Indyuce.mmocore.api.util.math.format.DelayFormat; import net.Indyuce.mmocore.experience.Booster; import net.Indyuce.mmocore.experience.Profession; @@ -18,12 +20,10 @@ import net.Indyuce.mmocore.gui.api.item.Placeholders; import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem; import net.Indyuce.mmocore.party.AbstractParty; import net.Indyuce.mmocore.player.stats.StatInfo; -import net.Indyuce.mmocore.api.player.attribute.PlayerAttribute; import org.apache.commons.lang.Validate; import org.bukkit.ChatColor; import org.bukkit.OfflinePlayer; import org.bukkit.configuration.ConfigurationSection; -import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.SkullMeta; @@ -307,7 +307,7 @@ public class PlayerStats extends EditableInventory { holders.register("author", boost.hasAuthor() ? boost.getAuthor() : "Server"); holders.register("value", (int) (boost.getExtra() * 100)); holders.register("left", boost.isTimedOut() ? - MMOCore.plugin.configManager.getSimpleMessage("booster-expired").message() + ConfigMessage.fromKey("booster-expired").asLine() : new DelayFormat(2).format(boost.getLeft())); return holders; @@ -332,7 +332,7 @@ public class PlayerStats extends EditableInventory { holders.register("profession", boost.getProfession().getName()); holders.register("value", (int) (boost.getExtra() * 100)); holders.register("left", boost.isTimedOut() ? - MMOCore.plugin.configManager.getSimpleMessage("booster-expired").message() + ConfigMessage.fromKey("booster-expired").asLine() : new DelayFormat(2).format(boost.getLeft())); return holders; diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/QuestViewer.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/QuestViewer.java index ec918c1e..2f19cff3 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/QuestViewer.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/QuestViewer.java @@ -1,6 +1,7 @@ package net.Indyuce.mmocore.gui; import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.SoundEvent; import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.quest.Quest; @@ -225,70 +226,53 @@ public class QuestViewer extends EditableInventory { if (playerData.getQuestData().hasCurrent()) { - /* - * check if the player is cancelling his ongoing quest. - */ + // Check if the player is cancelling his ongoing quest if (playerData.getQuestData().hasCurrent(quest)) { if (context.getClickType() == ClickType.RIGHT) { playerData.getQuestData().start(null); MMOCore.plugin.soundManager.getSound(SoundEvent.CANCEL_QUEST).playTo(player); - MMOCore.plugin.configManager.getSimpleMessage("cancel-quest").send(player); + ConfigMessage.fromKey("cancel-quest").send(player); open(); } return; } - /* - * the player cannot start a new quest if he is already - * doing one. - */ - MMOCore.plugin.configManager.getSimpleMessage("already-on-quest").send(player); + // The player cannot start a new quest if he is already doing one + ConfigMessage.fromKey("already-on-quest").send(player); return; } - /* - * check for level requirements. - */ + // Check for level requirements. int level; if (playerData.getLevel() < (level = quest.getLevelRestriction(null))) { - MMOCore.plugin.configManager.getSimpleMessage("quest-level-restriction", "level", "Lvl", "count", "" + level).send(player); + ConfigMessage.fromKey("quest-level-restriction", "level", "Lvl", "count", "" + level).send(player); return; } - for (Profession profession : quest.getLevelRestrictions()) - if (playerData.getCollectionSkills().getLevel(profession) < (level = quest.getLevelRestriction(profession))) { - MMOCore.plugin.configManager - .getSimpleMessage("quest-level-restriction", "level", profession.getName() + " Lvl", "count", "" + level) - .send(player); - return; - } + for (Profession profession : quest.getLevelRestrictions()) + if (playerData.getCollectionSkills().getLevel(profession) < (level = quest.getLevelRestriction(profession))) { + ConfigMessage.fromKey("quest-level-restriction", "level", profession.getName() + " Lvl", "count", "" + level) + .send(player); + return; + } if (playerData.getQuestData().hasFinished(quest)) { - /* - * if the player has already finished this quest, he can't - * start it again. - */ + // If the player has already finished this quest, he can't start it again if (!quest.isRedoable()) { - MMOCore.plugin.configManager.getSimpleMessage("cant-redo-quest").send(player); + ConfigMessage.fromKey("cant-redo-quest").send(player); return; } - /* - * - */ - if (!playerData.getQuestData().checkCooldownAvailability(quest)) { - MMOCore.plugin.configManager - .getSimpleMessage("quest-cooldown", "delay", new DelayFormat(2).format(playerData.getQuestData().getDelayFeft(quest))) - .send(player); - return; - } + // Has the player waited long enough + if (!playerData.getQuestData().checkCooldownAvailability(quest)) { + ConfigMessage.fromKey("quest-cooldown", "delay", new DelayFormat(2).format(playerData.getQuestData().getDelayFeft(quest))).send(player); + return; + } } - /* - * eventually start a new quest. - */ - MMOCore.plugin.configManager.getSimpleMessage("start-quest", "quest", quest.getName()).send(player); + // Eventually start the quest + ConfigMessage.fromKey("start-quest", "quest", quest.getName()).send(player); MMOCore.plugin.soundManager.getSound(SoundEvent.START_QUEST).playTo(player); playerData.getQuestData().start(quest); open(); diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/SkillList.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/SkillList.java index 3d2c9cd8..5966f2d6 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/SkillList.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/SkillList.java @@ -4,9 +4,9 @@ import io.lumine.mythic.lib.MythicLib; import io.lumine.mythic.lib.api.item.ItemTag; import io.lumine.mythic.lib.api.item.NBTItem; import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.SoundEvent; import net.Indyuce.mmocore.api.player.PlayerData; -import net.Indyuce.mmocore.skill.binding.SkillSlot; import net.Indyuce.mmocore.api.util.MMOCoreUtils; import net.Indyuce.mmocore.gui.api.EditableInventory; import net.Indyuce.mmocore.gui.api.GeneratedInventory; @@ -16,6 +16,7 @@ import net.Indyuce.mmocore.gui.api.item.Placeholders; import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem; import net.Indyuce.mmocore.skill.ClassSkill; import net.Indyuce.mmocore.skill.RegisteredSkill; +import net.Indyuce.mmocore.skill.binding.SkillSlot; import org.apache.commons.lang.Validate; import org.bukkit.ChatColor; import org.bukkit.Material; @@ -416,13 +417,13 @@ public class SkillList extends EditableInventory { int spent = getPlayerData().countSkillPointsSpent(); if (spent < 1) { - MMOCore.plugin.configManager.getSimpleMessage("no-skill-points-spent").send(player); + ConfigMessage.fromKey("no-skill-points-spent").send(player); MMOCore.plugin.soundManager.getSound(SoundEvent.NOT_ENOUGH_POINTS).playTo(getPlayer()); return; } if (playerData.getSkillReallocationPoints() < 1) { - MMOCore.plugin.configManager.getSimpleMessage("not-skill-reallocation-point").send(player); + ConfigMessage.fromKey("not-skill-reallocation-point").send(player); MMOCore.plugin.soundManager.getSound(SoundEvent.NOT_ENOUGH_POINTS).playTo(getPlayer()); return; } @@ -432,7 +433,7 @@ public class SkillList extends EditableInventory { playerData.giveSkillPoints(spent); playerData.setSkillReallocationPoints(playerData.getSkillReallocationPoints() - 1); - MMOCore.plugin.configManager.getSimpleMessage("skill-points-reallocated", "points", "" + playerData.getSkillPoints()).send(player); + ConfigMessage.fromKey("skill-points-reallocated", "points", "" + playerData.getSkillPoints()).send(player); MMOCore.plugin.soundManager.getSound(SoundEvent.RESET_SKILLS).playTo(getPlayer()); open(); } @@ -465,12 +466,12 @@ public class SkillList extends EditableInventory { // unbind if there is a current spell. if (context.getClickType() == ClickType.RIGHT) { if (!playerData.hasSkillBound(index)) { - MMOCore.plugin.configManager.getSimpleMessage("no-skill-bound").send(player); + ConfigMessage.fromKey("no-skill-bound").send(player); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 2); return; } if (!playerData.getProfess().getSkillSlot(index).canManuallyBind()) { - MMOCore.plugin.configManager.getSimpleMessage("cant-manually-bind").send(player); + ConfigMessage.fromKey("cant-manually-bind").send(player); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 2); return; } @@ -481,19 +482,19 @@ public class SkillList extends EditableInventory { } if (!playerData.hasUnlockedLevel(selected)) { - MMOCore.plugin.configManager.getSimpleMessage("skill-level-not-met").send(player); + ConfigMessage.fromKey("skill-level-not-met").send(player); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 2); return; } if (!skillSlot.canManuallyBind()) { - MMOCore.plugin.configManager.getSimpleMessage("cant-manually-bind").send(player); + ConfigMessage.fromKey("cant-manually-bind").send(player); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 2); return; } if (!skillSlot.acceptsSkill(selected)) { - MMOCore.plugin.configManager.getSimpleMessage("not-compatible-skill").send(player); + ConfigMessage.fromKey("not-compatible-skill").send(player); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 2); return; } @@ -509,26 +510,26 @@ public class SkillList extends EditableInventory { int shiftCost = ((UpgradeItem) item).shiftCost; if (!playerData.hasUnlockedLevel(selected)) { - MMOCore.plugin.configManager.getSimpleMessage("skill-level-not-met").send(player); + ConfigMessage.fromKey("skill-level-not-met").send(player); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 2); return; } if (playerData.getSkillPoints() < 1) { - MMOCore.plugin.configManager.getSimpleMessage("not-enough-skill-points").send(player); + ConfigMessage.fromKey("not-enough-skill-points").send(player); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 2); return; } if (selected.hasMaxLevel() && playerData.getSkillLevel(selected.getSkill()) >= selected.getMaxLevel()) { - MMOCore.plugin.configManager.getSimpleMessage("skill-max-level-hit").send(player); + ConfigMessage.fromKey("skill-max-level-hit").send(player); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 2); return; } if (context.getClickType().isShiftClick()) { if (playerData.getSkillPoints() < shiftCost) { - MMOCore.plugin.configManager.getSimpleMessage("not-enough-skill-points-shift", "shift_points", "" + shiftCost).send(player); + ConfigMessage.fromKey("not-enough-skill-points-shift", "shift_points", "" + shiftCost).send(player); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 2); return; } @@ -540,7 +541,7 @@ public class SkillList extends EditableInventory { playerData.setSkillLevel(selected.getSkill(), playerData.getSkillLevel(selected.getSkill()) + 1); } - MMOCore.plugin.configManager.getSimpleMessage("upgrade-skill", "skill", selected.getSkill().getName(), "level", + ConfigMessage.fromKey("upgrade-skill", "skill", selected.getSkill().getName(), "level", "" + playerData.getSkillLevel(selected.getSkill())).send(player); player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 1, 2); open(); diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/SubclassSelect.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/SubclassSelect.java index 3fce6040..7b01d1de 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/SubclassSelect.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/SubclassSelect.java @@ -14,9 +14,7 @@ import net.Indyuce.mmocore.manager.InventoryManager; import net.Indyuce.mmocore.api.player.profess.PlayerClass; import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.SoundEvent; -import net.Indyuce.mmocore.api.player.profess.Subclass; import org.apache.commons.lang.Validate; -import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.NamespacedKey; import org.bukkit.configuration.ConfigurationSection; @@ -28,7 +26,6 @@ import org.bukkit.persistence.PersistentDataType; import java.util.ArrayList; import java.util.List; import java.util.Objects; -import java.util.stream.Collectors; public class SubclassSelect extends EditableInventory { public SubclassSelect() { @@ -123,12 +120,12 @@ public class SubclassSelect extends EditableInventory { if (playerData.getClassPoints() < 1) { player.closeInventory(); MMOCore.plugin.soundManager.getSound(SoundEvent.CANT_SELECT_CLASS).playTo(getPlayer()); - new ConfigMessage("cant-choose-new-class").send(player); + ConfigMessage.fromKey("cant-choose-new-class").send(player); return; } if (profess.hasOption(ClassOption.NEEDS_PERMISSION) && !player.hasPermission("mmocore.class." + profess.getId().toLowerCase())) { MMOCore.plugin.soundManager.getSound(SoundEvent.CANT_SELECT_CLASS).playTo(player); - new ConfigMessage("no-permission-for-class").send(player); + ConfigMessage.fromKey("no-permission-for-class").send(player); return; } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/WaypointViewer.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/WaypointViewer.java index a782f98d..6bb461d6 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/WaypointViewer.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/WaypointViewer.java @@ -1,6 +1,7 @@ package net.Indyuce.mmocore.gui; import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.player.PlayerActivity; import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.gui.api.EditableInventory; @@ -244,25 +245,25 @@ public class WaypointViewer extends EditableInventory { // Locked waypoint? Waypoint waypoint = MMOCore.plugin.waypointManager.get(tag); if (!playerData.hasWaypoint(waypoint)) { - MMOCore.plugin.configManager.getSimpleMessage("not-unlocked-waypoint").send(player); + ConfigMessage.fromKey("not-unlocked-waypoint").send(player); return; } // Cannot teleport to current waypoint if (waypoint.equals(current)) { - MMOCore.plugin.configManager.getSimpleMessage("standing-on-waypoint").send(player); + ConfigMessage.fromKey("standing-on-waypoint").send(player); return; } // Waypoint does not have target as destination if (current != null && current.getPath(waypoint) == null) { - MMOCore.plugin.configManager.getSimpleMessage("cannot-teleport-to").send(player); + ConfigMessage.fromKey("cannot-teleport-to").send(player); return; } // Not dynamic waypoint if (current == null && !paths.containsKey(waypoint)) { - MMOCore.plugin.configManager.getSimpleMessage("not-dynamic-waypoint").send(player); + ConfigMessage.fromKey("not-dynamic-waypoint").send(player); return; } @@ -270,7 +271,7 @@ public class WaypointViewer extends EditableInventory { double withdraw = paths.get(waypoint).getCost(); double left = withdraw - playerData.getStellium(); if (left > 0) { - MMOCore.plugin.configManager.getSimpleMessage("not-enough-stellium", "more", decimal.format(left)).send(player); + ConfigMessage.fromKey("not-enough-stellium", "more", decimal.format(left)).send(player); return; } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/eco/DepositMenu.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/eco/DepositMenu.java index eb956832..d62ead9e 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/eco/DepositMenu.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/eco/DepositMenu.java @@ -3,13 +3,13 @@ package net.Indyuce.mmocore.gui.eco; import io.lumine.mythic.lib.api.item.NBTItem; import io.lumine.mythic.lib.api.util.SmartGive; import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.util.MMOCoreUtils; import net.Indyuce.mmocore.gui.api.InventoryClickContext; -import net.Indyuce.mmocore.util.item.SimpleItemBuilder; import net.Indyuce.mmocore.gui.api.PluginInventory; +import net.Indyuce.mmocore.util.item.SimpleItemBuilder; import net.milkbowl.vault.economy.EconomyResponse; import org.bukkit.Bukkit; -import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryCloseEvent; @@ -57,7 +57,7 @@ public class DepositMenu extends PluginInventory { event.getInventory().clear(); player.closeInventory(); player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 1, 2); - MMOCore.plugin.configManager.getSimpleMessage("deposit", "worth", String.valueOf(deposit)).send(player); + ConfigMessage.fromKey("deposit", "worth", String.valueOf(deposit)).send(player); return; } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/skilltree/SkillTreeViewer.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/skilltree/SkillTreeViewer.java index 6d63c51b..320339ea 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/skilltree/SkillTreeViewer.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/skilltree/SkillTreeViewer.java @@ -3,9 +3,7 @@ package net.Indyuce.mmocore.gui.skilltree; import io.lumine.mythic.lib.MythicLib; import io.lumine.mythic.lib.UtilityMethods; import net.Indyuce.mmocore.MMOCore; - -import java.util.logging.Level; - +import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.SoundEvent; import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.util.MMOCoreUtils; @@ -34,6 +32,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.util.*; +import java.util.logging.Level; import java.util.stream.Collectors; public class SkillTreeViewer extends EditableInventory { @@ -469,13 +468,13 @@ public class SkillTreeViewer extends EditableInventory { if (item.getFunction().equals("reallocation")) { int spent = playerData.getPointSpent(skillTree); if (spent < 1) { - MMOCore.plugin.configManager.getSimpleMessage("no-skill-tree-points-spent").send(player); + ConfigMessage.fromKey("no-skill-tree-points-spent").send(player); MMOCore.plugin.soundManager.getSound(SoundEvent.NOT_ENOUGH_POINTS).playTo(getPlayer()); return; } if (getPlayerData().getSkillTreeReallocationPoints() <= 0) { - MMOCore.plugin.configManager.getSimpleMessage("not-skill-tree-reallocation-point").send(player); + ConfigMessage.fromKey("not-skill-tree-reallocation-point").send(player); MMOCore.plugin.soundManager.getSound(SoundEvent.NOT_ENOUGH_POINTS).playTo(getPlayer()); return; } else { @@ -485,7 +484,7 @@ public class SkillTreeViewer extends EditableInventory { playerData.giveSkillTreeReallocationPoints(-1); playerData.resetSkillTree(skillTree); skillTree.setupNodeStates(playerData); - MMOCore.plugin.configManager.getSimpleMessage("reallocated-points", "points", "" + playerData.getSkillTreePoint(skillTree.getId()), "skill-tree", skillTree.getName()).send(player); + ConfigMessage.fromKey("reallocated-points", "points", "" + playerData.getSkillTreePoint(skillTree.getId()), "skill-tree", skillTree.getName()).send(player); MMOCore.plugin.soundManager.getSound(SoundEvent.RESET_SKILL_TREE).playTo(player); open(); return; @@ -512,31 +511,31 @@ public class SkillTreeViewer extends EditableInventory { } SkillTreeNode node = skillTree.getNode(new IntegerCoordinates(x, y)); if (playerData.getPointSpent(skillTree) >= skillTree.getMaxPointSpent()) { - MMOCore.plugin.configManager.getSimpleMessage("max-points-reached").send(player); + ConfigMessage.fromKey("max-points-reached").send(player); MMOCore.plugin.soundManager.getSound(SoundEvent.NOT_ENOUGH_POINTS).playTo(getPlayer()); return; } if (playerData.canIncrementNodeLevel(node)) { playerData.incrementNodeLevel(node); - MMOCore.plugin.configManager.getSimpleMessage("upgrade-skill-node", "skill-node", node.getName(), "level", "" + playerData.getNodeLevel(node)).send(player); + ConfigMessage.fromKey("upgrade-skill-node", "skill-node", node.getName(), "level", "" + playerData.getNodeLevel(node)).send(player); MMOCore.plugin.soundManager.getSound(SoundEvent.LEVEL_UP).playTo(getPlayer()); open(); } else if (playerData.getNodeStatus(node) == SkillTreeStatus.LOCKED || playerData.getNodeStatus(node) == SkillTreeStatus.FULLY_LOCKED) { - MMOCore.plugin.configManager.getSimpleMessage("locked-node").send(player); + ConfigMessage.fromKey("locked-node").send(player); MMOCore.plugin.soundManager.getSound(SoundEvent.NOT_ENOUGH_POINTS).playTo(getPlayer()); } else if (playerData.getNodeLevel(node) >= node.getMaxLevel()) { - MMOCore.plugin.configManager.getSimpleMessage("skill-node-max-level-hit").send(player); + ConfigMessage.fromKey("skill-node-max-level-hit").send(player); MMOCore.plugin.soundManager.getSound(SoundEvent.NOT_ENOUGH_POINTS).playTo(getPlayer()); } else if (!node.hasPermissionRequirement(playerData)) { - MMOCore.plugin.configManager.getSimpleMessage("missing-skill-node-permission").send(player); + ConfigMessage.fromKey("missing-skill-node-permission").send(player); MMOCore.plugin.soundManager.getSound(SoundEvent.NOT_ENOUGH_POINTS).playTo(getPlayer()); } //Else the player doesn't doesn't have the skill tree points else { - MMOCore.plugin.configManager.getSimpleMessage("not-enough-skill-tree-points", "point", "" + node.getSkillTreePointsConsumed()).send(player); + ConfigMessage.fromKey("not-enough-skill-tree-points", "point", "" + node.getSkillTreePointsConsumed()).send(player); MMOCore.plugin.soundManager.getSound(SoundEvent.NOT_ENOUGH_POINTS).playTo(getPlayer()); } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/social/friend/EditableFriendList.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/social/friend/EditableFriendList.java index eeb88cb9..9e7b3149 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/social/friend/EditableFriendList.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/social/friend/EditableFriendList.java @@ -1,14 +1,15 @@ package net.Indyuce.mmocore.gui.social.friend; import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.player.PlayerActivity; import net.Indyuce.mmocore.api.player.PlayerData; -import net.Indyuce.mmocore.gui.api.InventoryClickContext; import net.Indyuce.mmocore.api.util.input.ChatInput; import net.Indyuce.mmocore.api.util.input.PlayerInput.InputType; import net.Indyuce.mmocore.api.util.math.format.DelayFormat; import net.Indyuce.mmocore.gui.api.EditableInventory; import net.Indyuce.mmocore.gui.api.GeneratedInventory; +import net.Indyuce.mmocore.gui.api.InventoryClickContext; import net.Indyuce.mmocore.gui.api.item.InventoryItem; import net.Indyuce.mmocore.gui.api.item.Placeholders; import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem; @@ -199,7 +200,7 @@ public class EditableFriendList extends EditableInventory { long remaining = playerData.getActivityTimeOut(PlayerActivity.FRIEND_REQUEST); if (remaining > 0) { - MMOCore.plugin.configManager.getSimpleMessage("friend-request-cooldown", "cooldown", new DelayFormat().format(remaining)) + ConfigMessage.fromKey("friend-request-cooldown", "cooldown", new DelayFormat().format(remaining)) .send(player); return; } @@ -207,28 +208,28 @@ public class EditableFriendList extends EditableInventory { new ChatInput(player, InputType.FRIEND_REQUEST, context.getInventoryHolder(), input -> { Player target = Bukkit.getPlayer(input); if (target == null) { - MMOCore.plugin.configManager.getSimpleMessage("not-online-player", "player", input).send(player); + ConfigMessage.fromKey("not-online-player", "player", input).send(player); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 1); open(); return; } if (playerData.hasFriend(target.getUniqueId())) { - MMOCore.plugin.configManager.getSimpleMessage("already-friends", "player", target.getName()).send(player); + ConfigMessage.fromKey("already-friends", "player", target.getName()).send(player); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 1); open(); return; } if (playerData.getUniqueId().equals(target.getUniqueId())) { - MMOCore.plugin.configManager.getSimpleMessage("cant-request-to-yourself").send(player); + ConfigMessage.fromKey("cant-request-to-yourself").send(player); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 1); open(); return; } playerData.sendFriendRequest(PlayerData.get(target)); - MMOCore.plugin.configManager.getSimpleMessage("sent-friend-request", "player", target.getName()).send(player); + ConfigMessage.fromKey("sent-friend-request", "player", target.getName()).send(player); player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1, 1); open(); }); diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/social/friend/EditableFriendRemoval.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/social/friend/EditableFriendRemoval.java index 2f07ed07..2e995613 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/social/friend/EditableFriendRemoval.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/social/friend/EditableFriendRemoval.java @@ -1,13 +1,13 @@ package net.Indyuce.mmocore.gui.social.friend; -import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.player.PlayerData; -import net.Indyuce.mmocore.gui.api.InventoryClickContext; -import net.Indyuce.mmocore.gui.api.GeneratedInventory; -import net.Indyuce.mmocore.gui.api.item.InventoryItem; -import net.Indyuce.mmocore.manager.data.OfflinePlayerData; import net.Indyuce.mmocore.gui.api.EditableInventory; +import net.Indyuce.mmocore.gui.api.GeneratedInventory; +import net.Indyuce.mmocore.gui.api.InventoryClickContext; +import net.Indyuce.mmocore.gui.api.item.InventoryItem; import net.Indyuce.mmocore.gui.api.item.Placeholders; +import net.Indyuce.mmocore.manager.data.OfflinePlayerData; import org.bukkit.OfflinePlayer; import org.bukkit.Sound; import org.bukkit.configuration.ConfigurationSection; @@ -52,7 +52,7 @@ public class EditableFriendRemoval extends EditableInventory { playerData.removeFriend(friend.getUniqueId()); OfflinePlayerData.get(friend.getUniqueId()).removeFriend(playerData.getUniqueId()); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 1); - MMOCore.plugin.configManager.getSimpleMessage("no-longer-friends", "unfriend", friend.getName()).send(player); + ConfigMessage.fromKey("no-longer-friends", "unfriend", friend.getName()).send(player); last.open(); } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/social/guild/EditableGuildAdmin.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/social/guild/EditableGuildAdmin.java index 22405b53..2b886701 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/social/guild/EditableGuildAdmin.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/social/guild/EditableGuildAdmin.java @@ -1,16 +1,17 @@ package net.Indyuce.mmocore.gui.social.guild; import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.player.PlayerData; -import net.Indyuce.mmocore.api.util.math.format.DelayFormat; -import net.Indyuce.mmocore.gui.api.InventoryClickContext; import net.Indyuce.mmocore.api.util.input.ChatInput; import net.Indyuce.mmocore.api.util.input.PlayerInput; -import net.Indyuce.mmocore.gui.api.GeneratedInventory; -import net.Indyuce.mmocore.gui.api.item.InventoryItem; -import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem; +import net.Indyuce.mmocore.api.util.math.format.DelayFormat; import net.Indyuce.mmocore.gui.api.EditableInventory; +import net.Indyuce.mmocore.gui.api.GeneratedInventory; +import net.Indyuce.mmocore.gui.api.InventoryClickContext; +import net.Indyuce.mmocore.gui.api.item.InventoryItem; import net.Indyuce.mmocore.gui.api.item.Placeholders; +import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem; import org.apache.commons.lang.Validate; import org.bukkit.Bukkit; import org.bukkit.NamespacedKey; @@ -147,7 +148,7 @@ public class EditableGuildAdmin extends EditableInventory { if (item.getFunction().equals("invite")) { if (playerData.getGuild().countMembers() >= max) { - MMOCore.plugin.configManager.getSimpleMessage("guild-is-full").send(player); + ConfigMessage.fromKey("guild-is-full").send(player); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 1); return; } @@ -155,7 +156,7 @@ public class EditableGuildAdmin extends EditableInventory { new ChatInput(player, PlayerInput.InputType.GUILD_INVITE, context.getInventoryHolder(), input -> { Player target = Bukkit.getPlayer(input); if (target == null) { - MMOCore.plugin.configManager.getSimpleMessage("not-online-player", "player", input).send(player); + ConfigMessage.fromKey("not-online-player", "player", input).send(player); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 1); open(); return; @@ -163,7 +164,7 @@ public class EditableGuildAdmin extends EditableInventory { long remaining = playerData.getGuild().getLastInvite(target) + 60 * 2 * 1000 - System.currentTimeMillis(); if (remaining > 0) { - MMOCore.plugin.configManager.getSimpleMessage("guild-invite-cooldown", "player", target.getName(), "cooldown", + ConfigMessage.fromKey("guild-invite-cooldown", "player", target.getName(), "cooldown", new DelayFormat().format(remaining)).send(player); open(); return; @@ -171,14 +172,14 @@ public class EditableGuildAdmin extends EditableInventory { PlayerData targetData = PlayerData.get(target); if (playerData.getGuild().hasMember(target.getUniqueId())) { - MMOCore.plugin.configManager.getSimpleMessage("already-in-guild", "player", target.getName()).send(player); + ConfigMessage.fromKey("already-in-guild", "player", target.getName()).send(player); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 1); open(); return; } playerData.getGuild().sendGuildInvite(playerData, targetData); - MMOCore.plugin.configManager.getSimpleMessage("sent-guild-invite", "player", target.getName()).send(player); + ConfigMessage.fromKey("sent-guild-invite", "player", target.getName()).send(player); player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1, 1); open(); }); @@ -193,7 +194,7 @@ public class EditableGuildAdmin extends EditableInventory { return; playerData.getGuild().removeMember(target.getUniqueId()); - MMOCore.plugin.configManager.getSimpleMessage("kick-from-guild", "player", target.getName()).send(player); + ConfigMessage.fromKey("kick-from-guild", "player", target.getName()).send(player); player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1, 1); } } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/social/guild/EditableGuildCreation.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/social/guild/EditableGuildCreation.java index 7be41f1e..7a942933 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/social/guild/EditableGuildCreation.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/social/guild/EditableGuildCreation.java @@ -1,16 +1,17 @@ package net.Indyuce.mmocore.gui.social.guild; import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.player.PlayerData; -import net.Indyuce.mmocore.gui.api.InventoryClickContext; -import net.Indyuce.mmocore.manager.InventoryManager; -import net.Indyuce.mmocore.manager.data.GuildDataManager; import net.Indyuce.mmocore.api.util.input.ChatInput; import net.Indyuce.mmocore.api.util.input.PlayerInput; +import net.Indyuce.mmocore.gui.api.EditableInventory; import net.Indyuce.mmocore.gui.api.GeneratedInventory; +import net.Indyuce.mmocore.gui.api.InventoryClickContext; import net.Indyuce.mmocore.gui.api.item.InventoryItem; import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem; -import net.Indyuce.mmocore.gui.api.EditableInventory; +import net.Indyuce.mmocore.manager.InventoryManager; +import net.Indyuce.mmocore.manager.data.GuildDataManager; import org.bukkit.Sound; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; @@ -78,13 +79,13 @@ public class EditableGuildCreation extends EditableInventory { if(!MMOCore.plugin.dataProvider.getGuildManager().isRegistered(input)) return true; else - reason = MMOCore.plugin.configManager.getSimpleMessage("guild-creation.reasons.already-taken").message(); + reason = ConfigMessage.fromKey("guild-creation.reasons.already-taken").asLine(); else - reason = MMOCore.plugin.configManager.getSimpleMessage("guild-creation.reasons.invalid-characters").message(); + reason = ConfigMessage.fromKey("guild-creation.reasons.invalid-characters").asLine(); else - reason = MMOCore.plugin.configManager.getSimpleMessage("guild-creation.reasons.invalid-length", "min", "" + rules.getMin(), "max", "" + rules.getMax()).message(); + reason = ConfigMessage.fromKey("guild-creation.reasons.invalid-length", "min", "" + rules.getMin(), "max", "" + rules.getMax()).asLine(); - MMOCore.plugin.configManager.getSimpleMessage("guild-creation.failed", "reason", reason).send(player); + ConfigMessage.fromKey("guild-creation.failed", "reason", reason).send(player); return false; } } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/social/guild/EditableGuildView.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/social/guild/EditableGuildView.java index 797c42b9..89cb3abf 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/social/guild/EditableGuildView.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/social/guild/EditableGuildView.java @@ -1,17 +1,18 @@ package net.Indyuce.mmocore.gui.social.guild; import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.player.PlayerData; -import net.Indyuce.mmocore.api.util.math.format.DelayFormat; -import net.Indyuce.mmocore.gui.api.InventoryClickContext; import net.Indyuce.mmocore.api.util.input.ChatInput; import net.Indyuce.mmocore.api.util.input.PlayerInput; +import net.Indyuce.mmocore.api.util.math.format.DelayFormat; +import net.Indyuce.mmocore.gui.api.EditableInventory; import net.Indyuce.mmocore.gui.api.GeneratedInventory; +import net.Indyuce.mmocore.gui.api.InventoryClickContext; import net.Indyuce.mmocore.gui.api.item.InventoryItem; +import net.Indyuce.mmocore.gui.api.item.Placeholders; import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem; import net.Indyuce.mmocore.manager.data.OfflinePlayerData; -import net.Indyuce.mmocore.gui.api.EditableInventory; -import net.Indyuce.mmocore.gui.api.item.Placeholders; import org.apache.commons.lang.Validate; import org.bukkit.*; import org.bukkit.configuration.ConfigurationSection; @@ -196,7 +197,7 @@ public class EditableGuildView extends EditableInventory { /* * if (playerData.getGuild().getMembers().count() >= max) { - * MMOCore.plugin.configManager.getSimpleMessage("guild-is-full").send(player); + * ConfigMessage.fromKey("guild-is-full").send(player); * player.playSound(player.getLocation(), * Sound.ENTITY_VILLAGER_NO, 1, 1); return; } */ @@ -204,7 +205,7 @@ public class EditableGuildView extends EditableInventory { new ChatInput(player, PlayerInput.InputType.GUILD_INVITE, context.getInventoryHolder(), input -> { Player target = Bukkit.getPlayer(input); if (target == null) { - MMOCore.plugin.configManager.getSimpleMessage("not-online-player", "player", input).send(player); + ConfigMessage.fromKey("not-online-player", "player", input).send(player); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 1); open(); return; @@ -212,21 +213,21 @@ public class EditableGuildView extends EditableInventory { long remaining = playerData.getGuild().getLastInvite(target) + 60 * 2 * 1000 - System.currentTimeMillis(); if (remaining > 0) { - MMOCore.plugin.configManager.getSimpleMessage("guild-invite-cooldown", "player", target.getName(), "cooldown", new DelayFormat().format(remaining)).send(player); + ConfigMessage.fromKey("guild-invite-cooldown", "player", target.getName(), "cooldown", new DelayFormat().format(remaining)).send(player); open(); return; } PlayerData targetData = PlayerData.get(target); if (playerData.getGuild().hasMember(targetData.getUniqueId())) { - MMOCore.plugin.configManager.getSimpleMessage("already-in-guild", "player", target.getName()).send(player); + ConfigMessage.fromKey("already-in-guild", "player", target.getName()).send(player); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 1); open(); return; } playerData.getGuild().sendGuildInvite(playerData, targetData); - MMOCore.plugin.configManager.getSimpleMessage("sent-guild-invite", "player", target.getName()).send(player); + ConfigMessage.fromKey("sent-guild-invite", "player", target.getName()).send(player); player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1, 1); open(); }); @@ -245,7 +246,7 @@ public class EditableGuildView extends EditableInventory { return; playerData.getGuild().removeMember(target.getUniqueId()); - MMOCore.plugin.configManager.getSimpleMessage("kick-from-guild", "player", target.getName()).send(player); + ConfigMessage.fromKey("kick-from-guild", "player", target.getName()).send(player); player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1, 1); } } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/social/party/EditablePartyView.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/social/party/EditablePartyView.java index 00485646..765e3010 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/social/party/EditablePartyView.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/gui/social/party/EditablePartyView.java @@ -1,17 +1,18 @@ package net.Indyuce.mmocore.gui.social.party; import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.player.PlayerData; -import net.Indyuce.mmocore.api.util.math.format.DelayFormat; -import net.Indyuce.mmocore.gui.api.InventoryClickContext; -import net.Indyuce.mmocore.party.provided.Party; import net.Indyuce.mmocore.api.util.input.ChatInput; import net.Indyuce.mmocore.api.util.input.PlayerInput; -import net.Indyuce.mmocore.gui.api.GeneratedInventory; -import net.Indyuce.mmocore.gui.api.item.InventoryItem; -import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem; +import net.Indyuce.mmocore.api.util.math.format.DelayFormat; import net.Indyuce.mmocore.gui.api.EditableInventory; +import net.Indyuce.mmocore.gui.api.GeneratedInventory; +import net.Indyuce.mmocore.gui.api.InventoryClickContext; +import net.Indyuce.mmocore.gui.api.item.InventoryItem; import net.Indyuce.mmocore.gui.api.item.Placeholders; +import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem; +import net.Indyuce.mmocore.party.provided.Party; import org.apache.commons.lang.Validate; import org.bukkit.*; import org.bukkit.configuration.ConfigurationSection; @@ -147,7 +148,7 @@ public class EditablePartyView extends EditableInventory { if (item.getFunction().equals("invite")) { if (party.getMembers().size() >= MMOCore.plugin.configManager.maxPartyPlayers) { - MMOCore.plugin.configManager.getSimpleMessage("party-is-full").send(player); + ConfigMessage.fromKey("party-is-full").send(player); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 1); return; } @@ -155,7 +156,7 @@ public class EditablePartyView extends EditableInventory { new ChatInput(player, PlayerInput.InputType.PARTY_INVITE, context.getInventoryHolder(), input -> { Player target = Bukkit.getPlayer(input); if (target == null) { - MMOCore.plugin.configManager.getSimpleMessage("not-online-player", "player", input).send(player); + ConfigMessage.fromKey("not-online-player", "player", input).send(player); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 1); open(); return; @@ -163,14 +164,14 @@ public class EditablePartyView extends EditableInventory { long remaining = party.getLastInvite(target) + 60 * 2 * 1000 - System.currentTimeMillis(); if (remaining > 0) { - MMOCore.plugin.configManager.getSimpleMessage("party-invite-cooldown", "player", target.getName(), "cooldown", new DelayFormat().format(remaining)).send(player); + ConfigMessage.fromKey("party-invite-cooldown", "player", target.getName(), "cooldown", new DelayFormat().format(remaining)).send(player); open(); return; } PlayerData targetData = PlayerData.get(target); if (party.hasMember(target)) { - MMOCore.plugin.configManager.getSimpleMessage("already-in-party", "player", target.getName()).send(player); + ConfigMessage.fromKey("already-in-party", "player", target.getName()).send(player); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 1); open(); return; @@ -178,14 +179,14 @@ public class EditablePartyView extends EditableInventory { int levelDifference = Math.abs(targetData.getLevel() - party.getLevel()); if (levelDifference > MMOCore.plugin.configManager.maxPartyLevelDifference) { - MMOCore.plugin.configManager.getSimpleMessage("high-level-difference", "player", target.getName(), "diff", String.valueOf(levelDifference)).send(player); + ConfigMessage.fromKey("high-level-difference", "player", target.getName(), "diff", String.valueOf(levelDifference)).send(player); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 1); open(); return; } party.sendInvite(playerData, targetData); - MMOCore.plugin.configManager.getSimpleMessage("sent-party-invite", "player", target.getName()).send(player); + ConfigMessage.fromKey("sent-party-invite", "player", target.getName()).send(player); player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1, 1); open(); }); @@ -200,7 +201,7 @@ public class EditablePartyView extends EditableInventory { return; party.removeMember(PlayerData.get(target)); - MMOCore.plugin.configManager.getSimpleMessage("kick-from-party", "player", target.getName()).send(player); + ConfigMessage.fromKey("kick-from-party", "player", target.getName()).send(player); player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1, 1); } } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/guild/provided/Guild.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/guild/provided/Guild.java index 30b9451f..93feefc8 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/guild/provided/Guild.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/guild/provided/Guild.java @@ -1,6 +1,5 @@ package net.Indyuce.mmocore.guild.provided; -import io.lumine.mythic.lib.comp.interaction.relation.Relationship; import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.player.PlayerData; @@ -82,7 +81,7 @@ public class Guild implements AbstractGuild { // Transfer ownership if (owner.equals(uuid)) { owner = members.stream().findAny().get(); - MMOCore.plugin.configManager.getSimpleMessage("transfer-guild-ownership").send(Bukkit.getPlayer(owner)); + ConfigMessage.fromKey("transfer-guild-ownership").send(Bukkit.getPlayer(owner)); } } @@ -112,7 +111,7 @@ public class Guild implements AbstractGuild { public void sendGuildInvite(PlayerData inviter, PlayerData target) { invites.put(target.getUniqueId(), System.currentTimeMillis()); Request request = new GuildInvite(this, inviter, target); - new ConfigMessage("guild-invite").addPlaceholders("player", inviter.getPlayer().getName(), "uuid", request.getUniqueId().toString()).sendAsJSon(target.getPlayer()); + ConfigMessage.fromKey("guild-invite").addPlaceholders("player", inviter.getPlayer().getName(), "uuid", request.getUniqueId().toString()).send(target.getPlayer()); MMOCore.plugin.requestManager.registerRequest(request); } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/guild/provided/GuildInvite.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/guild/provided/GuildInvite.java index a07c262b..55cd4f7d 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/guild/provided/GuildInvite.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/guild/provided/GuildInvite.java @@ -1,9 +1,9 @@ package net.Indyuce.mmocore.guild.provided; -import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.player.PlayerData; -import net.Indyuce.mmocore.manager.InventoryManager; import net.Indyuce.mmocore.api.player.social.Request; +import net.Indyuce.mmocore.manager.InventoryManager; import org.bukkit.Bukkit; public class GuildInvite extends Request { @@ -29,10 +29,10 @@ public class GuildInvite extends Request { guild.removeLastInvite(getCreator().getPlayer()); guild.forEachMember(member -> { if (Bukkit.getPlayer(member) != null) { - MMOCore.plugin.configManager.getSimpleMessage("guild-joined-other", "player", + ConfigMessage.fromKey("guild-joined-other", "player", getTarget().getPlayer().getName()).send(Bukkit.getPlayer(member)); - MMOCore.plugin.configManager.getSimpleMessage("guild-joined", "owner", + ConfigMessage.fromKey("guild-joined", "owner", Bukkit.getPlayer(guild.getOwner()).getName()).send(getTarget().getPlayer()); } } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/manager/ConfigManager.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/manager/ConfigManager.java index 420427b5..f6ee9621 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/manager/ConfigManager.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/manager/ConfigManager.java @@ -1,10 +1,9 @@ package net.Indyuce.mmocore.manager; -import io.lumine.mythic.lib.MythicLib; import io.lumine.mythic.lib.UtilityMethods; import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.api.ConfigFile; -import net.Indyuce.mmocore.api.player.PlayerData; +import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.util.input.ChatInput; import net.Indyuce.mmocore.api.util.input.PlayerInput; import net.Indyuce.mmocore.api.util.input.PlayerInput.InputType; @@ -16,6 +15,7 @@ import org.bukkit.entity.Player; import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.util.Consumer; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.io.File; import java.io.IOException; @@ -125,7 +125,7 @@ public class ConfigManager { lootChestExpireTime = Math.max(MMOCore.plugin.getConfig().getInt("loot-chests.chest-expire-time"), 1) * 20; lootChestPlayerCooldown = (long) MMOCore.plugin.getConfig().getDouble("player-cooldown") * 1000L; globalSkillCooldown = MMOCore.plugin.getConfig().getLong("global-skill-cooldown") * 50; - noSkillBoundPlaceholder = getSimpleMessage("no-skill-placeholder").message(); + noSkillBoundPlaceholder = String.valueOf(messages.get("no-skill-placeholder")); lootChestsChanceWeight = MMOCore.plugin.getConfig().getDouble("chance-stat-weight.loot-chests"); dropItemsChanceWeight = MMOCore.plugin.getConfig().getDouble("chance-stat-weight.drop-items"); fishingDropsChanceWeight = MMOCore.plugin.getConfig().getDouble("chance-stat-weight.fishing-drops"); @@ -202,48 +202,41 @@ public class ConfigManager { } } + @Deprecated public List getMessage(String key) { return messages.getStringList(key); } - /** - * @deprecated TODO Merge with {@link net.Indyuce.mmocore.api.ConfigMessage} - */ - @Deprecated - public SimpleMessage getSimpleMessage(String key, String... placeholders) { - String format = messages.getString(key, "{MessageNotFound:\"" + key + "\"}"); - for (int j = 0; j < placeholders.length - 1; j += 2) - format = format.replace("{" + placeholders[j] + "}", placeholders[j + 1]); - return new SimpleMessage(MythicLib.plugin.parseColors(format)); + @Nullable + public Object getMessageObject(String key) { + return messages.get(key); + } + + @Deprecated + public SimpleMessage getSimpleMessage(String key, String... placeholders) { + SimpleMessage wrapper = new SimpleMessage(ConfigMessage.fromKey(key)); + wrapper.message.addPlaceholders(placeholders); + return wrapper; } - /** - * @deprecated TODO Merge with {@link net.Indyuce.mmocore.api.ConfigMessage} - */ @Deprecated public static class SimpleMessage { - private final String message; - private final boolean actionbar; - private final boolean hasPlaceholders; + private final ConfigMessage message; - public SimpleMessage(String message) { - this.actionbar = message.startsWith("%"); - this.message = actionbar ? message.substring(1) : message; - this.hasPlaceholders = this.message.contains("%"); + @Deprecated + public SimpleMessage(ConfigMessage message) { + this.message = message; } + @Deprecated public String message() { - return message; + return message.getLines().isEmpty() ? "" : message.getLines().get(0); } + @Deprecated public boolean send(Player player) { - String msg = hasPlaceholders ? MMOCore.plugin.placeholderParser.parse(player, message) : message; - - if (!msg.isEmpty()) { - if (actionbar) PlayerData.get(player).displayActionBar(msg); - else player.sendMessage(msg); - } - return !msg.isEmpty(); + message.send(player); + return !message.getLines().isEmpty(); } } } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/provided/Party.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/provided/Party.java index 1bceebd8..af023cda 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/provided/Party.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/provided/Party.java @@ -127,7 +127,7 @@ public class Party implements AbstractParty { if (owner.equals(data)) { owner = members.get(0); if (notify && owner.isOnline()) - MMOCore.plugin.configManager.getSimpleMessage("transfer-party-ownership").send(owner.getPlayer()); + ConfigMessage.fromKey("transfer-party-ownership").send(owner.getPlayer()); } } @@ -158,8 +158,8 @@ public class Party implements AbstractParty { public void sendInvite(PlayerData inviter, PlayerData target) { invites.put(target.getUniqueId(), System.currentTimeMillis()); Request request = new PartyInvite(this, inviter, target); - new ConfigMessage("party-invite").addPlaceholders("player", inviter.getPlayer().getName(), "uuid", request.getUniqueId().toString()) - .sendAsJSon(target.getPlayer()); + ConfigMessage.fromKey("party-invite").addPlaceholders("player", inviter.getPlayer().getName(), "uuid", request.getUniqueId().toString()) + .send(target.getPlayer()); MMOCore.plugin.requestManager.registerRequest(request); } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/provided/PartyInvite.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/provided/PartyInvite.java index a5e0ad2d..437740f5 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/provided/PartyInvite.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/provided/PartyInvite.java @@ -1,9 +1,10 @@ package net.Indyuce.mmocore.party.provided; import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.player.PlayerData; -import net.Indyuce.mmocore.manager.InventoryManager; import net.Indyuce.mmocore.api.player.social.Request; +import net.Indyuce.mmocore.manager.InventoryManager; public class PartyInvite extends Request { private final Party party; @@ -26,17 +27,17 @@ public class PartyInvite extends Request { @Override public void whenAccepted() { if (party.getMembers().size() >= MMOCore.plugin.configManager.maxPartyPlayers) { - MMOCore.plugin.configManager.getSimpleMessage("party-is-full").send(getTarget().getPlayer()); + ConfigMessage.fromKey("party-is-full").send(getTarget().getPlayer()); return; } if (getCreator().isOnline()) party.removeLastInvite(getCreator().getPlayer()); party.getMembers().forEach(member -> { if (member.isOnline()) - MMOCore.plugin.configManager.getSimpleMessage("party-joined-other", "player", getTarget().getPlayer().getName()).send(member.getPlayer()); + ConfigMessage.fromKey("party-joined-other", "player", getTarget().getPlayer().getName()).send(member.getPlayer()); }); if (party.getOwner().isOnline()) - MMOCore.plugin.configManager.getSimpleMessage("party-joined", "owner", party.getOwner().getPlayer().getName()).send(getTarget().getPlayer()); + ConfigMessage.fromKey("party-joined", "owner", party.getOwner().getPlayer().getName()).send(getTarget().getPlayer()); party.addMember(getTarget()); InventoryManager.PARTY_VIEW.newInventory(getTarget()).open(); } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/provided/PartyListener.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/provided/PartyListener.java index 3d1974fe..47bc7492 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/provided/PartyListener.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/party/provided/PartyListener.java @@ -1,9 +1,9 @@ package net.Indyuce.mmocore.party.provided; import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.event.social.PartyChatEvent; import net.Indyuce.mmocore.api.player.PlayerData; -import net.Indyuce.mmocore.manager.ConfigManager; import net.Indyuce.mmocore.party.AbstractParty; import org.bukkit.Bukkit; import org.bukkit.event.EventHandler; @@ -32,13 +32,12 @@ public class PartyListener implements Listener { event.setCancelled(true); // Running it in a delayed task is recommended - Bukkit.getScheduler().scheduleSyncDelayedTask(MMOCore.plugin, () -> { - ConfigManager.SimpleMessage format = MMOCore.plugin.configManager.getSimpleMessage("party-chat", "player", data.getPlayer().getName(), "message", + Bukkit.getScheduler().runTask(MMOCore.plugin, () -> { + ConfigMessage message = ConfigMessage.fromKey("party-chat", "player", data.getPlayer().getName(), "message", event.getMessage().substring(MMOCore.plugin.configManager.partyChatPrefix.length())); - PartyChatEvent called = new PartyChatEvent(party, data, format.message()); + PartyChatEvent called = new PartyChatEvent(party, data, message.asLine()); Bukkit.getPluginManager().callEvent(called); - if (!called.isCancelled()) - party.getOnlineMembers().forEach(member -> format.send(member.getPlayer())); + if (!called.isCancelled()) party.getOnlineMembers().forEach(member -> message.send(member.getPlayer())); }); } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/player/CombatHandler.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/player/CombatHandler.java index bb0ab12b..98ee399b 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/player/CombatHandler.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/player/CombatHandler.java @@ -2,6 +2,7 @@ package net.Indyuce.mmocore.player; import io.lumine.mythic.lib.util.Closeable; import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.event.PlayerCombatEvent; import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.command.PvpModeCommand; @@ -37,7 +38,7 @@ public class CombatHandler implements Closeable { // Entering combat } else { lastEntry = System.currentTimeMillis(); - MMOCore.plugin.configManager.getSimpleMessage("now-in-combat").send(player.getPlayer()); + ConfigMessage.fromKey("now-in-combat").send(player.getPlayer()); Bukkit.getPluginManager().callEvent(new PlayerCombatEvent(player, true)); task = newTask(); } @@ -109,7 +110,7 @@ public class CombatHandler implements Closeable { if (player.isOnline()) { Bukkit.getPluginManager().callEvent(new PlayerCombatEvent(player, false)); - MMOCore.plugin.configManager.getSimpleMessage("leave-combat").send(player.getPlayer()); + ConfigMessage.fromKey("leave-combat").send(player.getPlayer()); } } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/CastableSkill.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/CastableSkill.java index 670b48d0..c8854e65 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/CastableSkill.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/CastableSkill.java @@ -49,7 +49,7 @@ public class CastableSkill extends Skill { // Skill is not usable yet if (!playerData.hasUnlockedLevel(skill)) { - if (loud) MMOCore.plugin.configManager.getSimpleMessage("skill-level-not-met").send(playerData.getPlayer()); + if (loud) ConfigMessage.fromKey("skill-level-not-met").send(playerData.getPlayer()); return false; } @@ -59,14 +59,14 @@ public class CastableSkill extends Skill { // Cooldown check if (skillMeta.getCaster().getData().getCooldownMap().isOnCooldown(this)) { - if (loud) MMOCore.plugin.configManager.getSimpleMessage("casting.on-cooldown", + if (loud) ConfigMessage.fromKey("casting.on-cooldown", "cooldown", MythicLib.plugin.getMMOConfig().decimal.format(skillMeta.getCaster().getData().getCooldownMap().getCooldown(this))).send(playerData.getPlayer()); return false; } // Mana cost if (playerData.getMana() < skillMeta.getParameter("mana")) { - if (loud) MMOCore.plugin.configManager.getSimpleMessage("casting.no-mana", + if (loud) ConfigMessage.fromKey("casting.no-mana", "mana-required", MythicLib.plugin.getMMOConfig().decimal.format((skillMeta.getParameter("mana") - playerData.getMana())), "mana", playerData.getProfess().getManaDisplay().getName()).send(playerData.getPlayer()); return false; @@ -75,7 +75,7 @@ public class CastableSkill extends Skill { // Stamina cost if (playerData.getStamina() < skillMeta.getParameter("stamina")) { - if (loud) MMOCore.plugin.configManager.getSimpleMessage("casting.no-stamina").send(playerData.getPlayer()); + if (loud) ConfigMessage.fromKey("casting.no-stamina").send(playerData.getPlayer()); return false; } diff --git a/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/cast/handler/SkillBar.java b/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/cast/handler/SkillBar.java index 6850e3a8..c2238b75 100644 --- a/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/cast/handler/SkillBar.java +++ b/MMOCore-API/src/main/java/net/Indyuce/mmocore/skill/cast/handler/SkillBar.java @@ -5,11 +5,15 @@ import io.lumine.mythic.lib.api.player.EquipmentSlot; import io.lumine.mythic.lib.player.PlayerMetadata; import io.lumine.mythic.lib.skill.trigger.TriggerMetadata; import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.SoundEvent; import net.Indyuce.mmocore.api.event.PlayerKeyPressEvent; import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.skill.ClassSkill; -import net.Indyuce.mmocore.skill.cast.*; +import net.Indyuce.mmocore.skill.cast.PlayerKey; +import net.Indyuce.mmocore.skill.cast.SkillCastingHandler; +import net.Indyuce.mmocore.skill.cast.SkillCastingInstance; +import net.Indyuce.mmocore.skill.cast.SkillCastingMode; import org.bukkit.GameMode; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.entity.Player; @@ -59,11 +63,11 @@ public class SkillBar extends SkillCastingHandler { } public class CustomSkillCastingInstance extends SkillCastingInstance { - private final String ready = MMOCore.plugin.configManager.getSimpleMessage("casting.action-bar.ready").message(); - private final String onCooldown = MMOCore.plugin.configManager.getSimpleMessage("casting.action-bar.on-cooldown").message(); - private final String noMana = MMOCore.plugin.configManager.getSimpleMessage("casting.action-bar.no-mana").message(); - private final String noStamina = MMOCore.plugin.configManager.getSimpleMessage("casting.action-bar.no-stamina").message(); - private final String split = MMOCore.plugin.configManager.getSimpleMessage("casting.split").message(); + private final String ready = ConfigMessage.fromKey("casting.action-bar.ready").asLine(); + private final String onCooldown = ConfigMessage.fromKey("casting.action-bar.on-cooldown").asLine(); + private final String noMana = ConfigMessage.fromKey("casting.action-bar.no-mana").asLine(); + private final String noStamina = ConfigMessage.fromKey("casting.action-bar.no-stamina").asLine(); + private final String split = ConfigMessage.fromKey("casting.split").asLine(); private int j; @@ -113,7 +117,7 @@ public class SkillBar extends SkillCastingHandler { if (getCaster().leaveSkillCasting()) { MMOCore.plugin.soundManager.getSound(SoundEvent.SPELL_CAST_END).playTo(player); - MMOCore.plugin.configManager.getSimpleMessage("casting.no-longer").send(getCaster().getPlayer()); + ConfigMessage.fromKey("casting.no-longer").send(getCaster().getPlayer()); } } diff --git a/MMOCore-Dist/src/main/java/net/Indyuce/mmocore/listener/BlockListener.java b/MMOCore-Dist/src/main/java/net/Indyuce/mmocore/listener/BlockListener.java index 70d6a3d5..0bf3790f 100644 --- a/MMOCore-Dist/src/main/java/net/Indyuce/mmocore/listener/BlockListener.java +++ b/MMOCore-Dist/src/main/java/net/Indyuce/mmocore/listener/BlockListener.java @@ -3,6 +3,7 @@ package net.Indyuce.mmocore.listener; import io.lumine.mythic.lib.MythicLib; import io.lumine.mythic.lib.UtilityMethods; import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.block.BlockInfo; import net.Indyuce.mmocore.api.block.VanillaBlockType; import net.Indyuce.mmocore.api.event.CustomBlockMineEvent; @@ -77,13 +78,11 @@ public class BlockListener implements Listener { boolean canBreak = true; ItemStack item = player.getInventory().getItemInMainHand(); if (!MMOCore.plugin.restrictionManager.checkPermissions(item, info.getBlock())) { - MMOCore.plugin.configManager.getSimpleMessage("cannot-break").send(player); + ConfigMessage.fromKey("cannot-break").send(player); canBreak = false; } - /* - * Find the block drops - */ + // Find the block drops boolean conditionsMet = !info.hasDropTable() || info.getDropTable().areConditionsMet(new ConditionInstance(player)); List drops = conditionsMet && info.hasDropTable() ? info.getDropTable().collect(new LootBuilder(PlayerData.get(player), 0)) : new ArrayList<>(); diff --git a/MMOCore-Dist/src/main/java/net/Indyuce/mmocore/listener/GuildListener.java b/MMOCore-Dist/src/main/java/net/Indyuce/mmocore/listener/GuildListener.java index 4e25df06..784e4b2e 100644 --- a/MMOCore-Dist/src/main/java/net/Indyuce/mmocore/listener/GuildListener.java +++ b/MMOCore-Dist/src/main/java/net/Indyuce/mmocore/listener/GuildListener.java @@ -1,8 +1,9 @@ package net.Indyuce.mmocore.listener; import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.event.social.GuildChatEvent; -import net.Indyuce.mmocore.manager.ConfigManager; +import net.Indyuce.mmocore.api.player.PlayerData; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -10,8 +11,6 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.AsyncPlayerChatEvent; -import net.Indyuce.mmocore.api.player.PlayerData; - public class GuildListener implements Listener { @EventHandler(priority = EventPriority.LOW) public void a(AsyncPlayerChatEvent event) { @@ -24,12 +23,10 @@ public class GuildListener implements Listener { event.setCancelled(true); - /* - * running it in a delayed task is recommended - */ - Bukkit.getScheduler().scheduleSyncDelayedTask(MMOCore.plugin, () -> { - ConfigManager.SimpleMessage format = MMOCore.plugin.configManager.getSimpleMessage("guild-chat", "player", data.getPlayer().getName(), "tag", data.getGuild().getTag(), "message", event.getMessage().substring(MMOCore.plugin.dataProvider.getGuildManager().getConfig().getPrefix().length())); - GuildChatEvent called = new GuildChatEvent(data, format.message()); + // Run it sync + Bukkit.getScheduler().runTask(MMOCore.plugin, () -> { + ConfigMessage format = ConfigMessage.fromKey("guild-chat", "player", data.getPlayer().getName(), "tag", data.getGuild().getTag(), "message", event.getMessage().substring(MMOCore.plugin.dataProvider.getGuildManager().getConfig().getPrefix().length())); + GuildChatEvent called = new GuildChatEvent(data, format.asLine()); Bukkit.getPluginManager().callEvent(called); if (!called.isCancelled()) data.getGuild().forEachMember(member -> { diff --git a/MMOCore-Dist/src/main/java/net/Indyuce/mmocore/listener/WaypointsListener.java b/MMOCore-Dist/src/main/java/net/Indyuce/mmocore/listener/WaypointsListener.java index d48ed573..5772a44e 100644 --- a/MMOCore-Dist/src/main/java/net/Indyuce/mmocore/listener/WaypointsListener.java +++ b/MMOCore-Dist/src/main/java/net/Indyuce/mmocore/listener/WaypointsListener.java @@ -2,12 +2,13 @@ package net.Indyuce.mmocore.listener; import io.lumine.mythic.lib.api.item.NBTItem; import net.Indyuce.mmocore.MMOCore; -import net.Indyuce.mmocore.waypoint.Waypoint; -import net.Indyuce.mmocore.waypoint.WaypointOption; +import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.SoundEvent; import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.loot.chest.particle.SmallParticleEffect; import net.Indyuce.mmocore.manager.InventoryManager; +import net.Indyuce.mmocore.waypoint.Waypoint; +import net.Indyuce.mmocore.waypoint.WaypointOption; import org.bukkit.Particle; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -35,7 +36,7 @@ public class WaypointsListener implements Listener { if (waypoint.hasOption(WaypointOption.UNLOCKABLE) && !data.hasWaypoint(waypoint)) { data.unlockWaypoint(waypoint); new SmallParticleEffect(player, Particle.SPELL_WITCH); - MMOCore.plugin.configManager.getSimpleMessage("new-waypoint", "waypoint", waypoint.getName()).send(player); + ConfigMessage.fromKey("new-waypoint", "waypoint", waypoint.getName()).send(player); MMOCore.plugin.soundManager.getSound(SoundEvent.WARP_UNLOCK).playTo(player); return; } @@ -64,7 +65,7 @@ public class WaypointsListener implements Listener { playerData.unlockWaypoint(waypoint); event.getItem().setAmount(event.getItem().getAmount() - 1); // Consume item - MMOCore.plugin.configManager.getSimpleMessage("new-waypoint-book", "waypoint", waypoint.getName()).send(event.getPlayer()); + ConfigMessage.fromKey("new-waypoint-book", "waypoint", waypoint.getName()).send(event.getPlayer()); } } } diff --git a/MMOCore-Dist/src/main/java/net/Indyuce/mmocore/listener/option/DeathExperienceLoss.java b/MMOCore-Dist/src/main/java/net/Indyuce/mmocore/listener/option/DeathExperienceLoss.java index 410f8ee1..bddc12d9 100644 --- a/MMOCore-Dist/src/main/java/net/Indyuce/mmocore/listener/option/DeathExperienceLoss.java +++ b/MMOCore-Dist/src/main/java/net/Indyuce/mmocore/listener/option/DeathExperienceLoss.java @@ -20,6 +20,6 @@ public class DeathExperienceLoss implements Listener { int loss = (int) (data.getExperience() * this.loss); data.setExperience(data.getExperience() - loss); if (data.isOnline()) - new ConfigMessage("death-exp-loss").addPlaceholders("loss", "" + loss).send(data.getPlayer()); + ConfigMessage.fromKey("death-exp-loss").addPlaceholders("loss", "" + loss).send(data.getPlayer()); } } diff --git a/MMOCore-Dist/src/main/java/net/Indyuce/mmocore/listener/profession/FishingListener.java b/MMOCore-Dist/src/main/java/net/Indyuce/mmocore/listener/profession/FishingListener.java index cbbae34f..f1f71686 100644 --- a/MMOCore-Dist/src/main/java/net/Indyuce/mmocore/listener/profession/FishingListener.java +++ b/MMOCore-Dist/src/main/java/net/Indyuce/mmocore/listener/profession/FishingListener.java @@ -2,10 +2,11 @@ package net.Indyuce.mmocore.listener.profession; import io.lumine.mythic.lib.version.VersionSound; import net.Indyuce.mmocore.MMOCore; +import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.event.CustomPlayerFishEvent; -import net.Indyuce.mmocore.experience.EXPSource; import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.util.MMOCoreUtils; +import net.Indyuce.mmocore.experience.EXPSource; import net.Indyuce.mmocore.loot.LootBuilder; import net.Indyuce.mmocore.loot.fishing.FishingDropItem; import net.Indyuce.mmocore.manager.profession.FishingManager.FishingDropTable; @@ -50,7 +51,7 @@ public class FishingListener implements Listener { return; new FishingData(player, hook, table); - MMOCoreUtils.displayIndicator(hook.getLocation().add(0, 1.25, 0), MMOCore.plugin.configManager.getSimpleMessage("caught-fish").message()); + MMOCoreUtils.displayIndicator(hook.getLocation().add(0, 1.25, 0), ConfigMessage.fromKey("caught-fish").asLine()); } } @@ -186,7 +187,7 @@ public class FishingListener implements Listener { // Calculate yeet velocity Item item = hook.getWorld().dropItemNaturally(hook.getLocation(), collect); MMOCoreUtils.displayIndicator(location.add(0, 1.25, 0), - MMOCore.plugin.configManager.getSimpleMessage("fish-out-water" + (isCriticalFish() ? "-crit" : "")).message()); + ConfigMessage.fromKey("fish-out-water" + (isCriticalFish() ? "-crit" : "")).asLine()); Vector vec = player.getLocation().subtract(hook.getLocation()).toVector(); vec.setY(vec.getY() * .031 + vec.length() * .05); vec.setX(vec.getX() * .08);