Fixed a bug when logging off while in combat

This commit is contained in:
Jules 2023-10-27 20:29:42 +02:00
parent 71d0f7219f
commit 76b0d51b2a
48 changed files with 401 additions and 319 deletions

View File

@ -2,47 +2,137 @@ package net.Indyuce.mmocore.api;
import io.lumine.mythic.lib.MythicLib; import io.lumine.mythic.lib.MythicLib;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import org.bukkit.OfflinePlayer; import net.Indyuce.mmocore.api.player.PlayerData;
import org.bukkit.command.CommandSender; 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.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
public class ConfigMessage { public class ConfigMessage {
private final List<String> messages; private final String key;
private final List<String> lines;
private final boolean papiPlaceholders, actionbar, raw;
public ConfigMessage(String key) { private ConfigMessage(@NotNull String key) {
messages = MMOCore.plugin.configManager.getMessage(key); this.key = key;
final Object obj = MMOCore.plugin.configManager.getMessageObject(key);
this.lines = obj == null ? Arrays.asList("<message_not_found:'" + key + "'>") : obj instanceof List<?> ? (List<String>) 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++) { * Useful for things like indicators or specific lore lines which are
String line = messages.get(n); * 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() ? "<message_empty_" + key + ">" : lines.get(0);
}
@NotNull
public List<String> 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) { for (int j = 0; j < placeholders.length - 1; j += 2) {
String placeholder = placeholders[j]; final String placeholder = String.valueOf(placeholders[j]);
if (line.contains("{" + placeholder + "}")) line = line.replace("{" + placeholder + "}", String.valueOf(placeholders[j + 1]));
line = line.replace("{" + placeholder + "}", placeholders[j + 1]);
} }
messages.set(n, line);
lines.set(n, line);
} }
return this; return this;
} }
public void send(CommandSender sender) { @Deprecated
messages.forEach(line -> sender.sendMessage(format(sender, line))); public void sendAsJSon(Player player) {
send(player);
}
public void send(Player player) {
for (String line : lines) send(player, line);
} }
public void send(Collection<? extends Player> players) { public void send(Collection<? extends Player> 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) { @NotNull
String str = MythicLib.plugin.parseColors(input); private String format(@Nullable Player player, String input) {
return sender instanceof Player ? MMOCore.plugin.placeholderParser.parse((OfflinePlayer) sender, str) : str; 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;
} }
} }

View File

@ -5,6 +5,7 @@ import java.util.Set;
import java.util.UUID; import java.util.UUID;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.util.item.CurrencyItemBuilder; import net.Indyuce.mmocore.util.item.CurrencyItemBuilder;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Sound; import org.bukkit.Sound;
@ -38,7 +39,7 @@ public class Withdraw implements Listener {
return; return;
withdrawing.add(player.getUniqueId()); withdrawing.add(player.getUniqueId());
MMOCore.plugin.configManager.getSimpleMessage("withdrawing").send(player); ConfigMessage.fromKey("withdrawing").send(player);
Bukkit.getPluginManager().registerEvents(this, MMOCore.plugin); Bukkit.getPluginManager().registerEvents(this, MMOCore.plugin);
Bukkit.getScheduler().runTaskLater(MMOCore.plugin, this::close, 20 * 20); Bukkit.getScheduler().runTaskLater(MMOCore.plugin, this::close, 20 * 20);
} }
@ -60,7 +61,7 @@ public class Withdraw implements Listener {
if (!event.getPlayer().equals(player)) if (!event.getPlayer().equals(player))
return; return;
MMOCore.plugin.configManager.getSimpleMessage("withdraw-cancel").send(player); ConfigMessage.fromKey("withdraw-cancel").send(player);
close(); close();
} }
@ -75,13 +76,13 @@ public class Withdraw implements Listener {
try { try {
worth = Integer.parseInt(event.getMessage()); worth = Integer.parseInt(event.getMessage());
} catch (Exception e) { } 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; return;
} }
int left = (int) (MMOCore.plugin.economy.getEconomy().getBalance(player) - worth); int left = (int) (MMOCore.plugin.economy.getEconomy().getBalance(player) - worth);
if (left < 0) { 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; return;
} }
@ -91,7 +92,7 @@ public class Withdraw implements Listener {
MMOCore.plugin.economy.getEconomy().withdrawPlayer(player, worth); MMOCore.plugin.economy.getEconomy().withdrawPlayer(player, worth);
withdrawAlgorythm(worth); withdrawAlgorythm(worth);
player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 1, 1); 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);
}); });
} }

View File

@ -357,7 +357,7 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD
/** /**
* @return If the item is unlocked by the player * @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) { public boolean hasUnlocked(Unlockable unlockable) {
return unlockable.isUnlockedByDefault() || unlockedItems.contains(unlockable.getUnlockNamespacedKey()); return unlockable.isUnlockedByDefault() || unlockedItems.contains(unlockable.getUnlockNamespacedKey());
@ -726,7 +726,7 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD
setLastActivity(PlayerActivity.FRIEND_REQUEST); setLastActivity(PlayerActivity.FRIEND_REQUEST);
FriendRequest request = new FriendRequest(this, target); 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); MMOCore.plugin.requestManager.registerRequest(request);
} }
@ -757,13 +757,13 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD
public void run() { public void run() {
if (!isOnline() || getPlayer().getLocation().getBlockX() != x || getPlayer().getLocation().getBlockY() != y || getPlayer().getLocation().getBlockZ() != z) { 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.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); giveStellium(cost, PlayerResourceUpdateEvent.UpdateReason.USE_WAYPOINT);
cancel(); cancel();
return; 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) { if (hasPerm || t++ >= warpTime) {
getPlayer().teleport(target.getLocation()); getPlayer().teleport(target.getLocation());
getPlayer().addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 20, 1, false, false)); getPlayer().addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 20, 1, false, false));
@ -840,7 +840,7 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD
// Experience hologram // Experience hologram
if (hologramLocation != null && isOnline()) 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()); experience = Math.max(0, experience + event.getExperience());
@ -864,7 +864,7 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD
if (level > oldLevel) { if (level > oldLevel) {
Bukkit.getPluginManager().callEvent(new PlayerLevelUpEvent(this, null, oldLevel, level)); Bukkit.getPluginManager().callEvent(new PlayerLevelUpEvent(this, null, oldLevel, level));
if (isOnline()) { 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()); MMOCore.plugin.soundManager.getSound(SoundEvent.LEVEL_UP).playTo(getPlayer());
new SmallParticleEffect(getPlayer(), Particle.SPELL_INSTANT); 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 * @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() { public boolean setSkillCasting() {
Validate.isTrue(!isCasting(), "Player already in casting mode"); 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 * @return If player successfully left skill casting i.e the Bukkit
* event has not been cancelled * event has not been cancelled
*/ */
public boolean leaveSkillCasting() { public boolean leaveSkillCasting() {
return leaveSkillCasting(false); return leaveSkillCasting(false);
@ -1045,7 +1045,7 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD
/** /**
* @param skipEvent Skip firing the exit event * @param skipEvent Skip firing the exit event
* @return If player successfully left skill casting i.e the Bukkit * @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) { public boolean leaveSkillCasting(boolean skipEvent) {
Validate.isTrue(isCasting(), "Player not in casting mode"); Validate.isTrue(isCasting(), "Player not in casting mode");
@ -1063,8 +1063,13 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD
} }
public void displayActionBar(String message) { public void displayActionBar(String message) {
displayActionBar(message, false);
}
public void displayActionBar(String message, boolean raw) {
setLastActivity(PlayerActivity.ACTION_BAR_MESSAGE); 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 @Deprecated
@ -1219,7 +1224,7 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD
* checks if they could potentially upgrade to one of these * checks if they could potentially upgrade to one of these
* *
* @return If the player can change its current class to * @return If the player can change its current class to
* a subclass * a subclass
*/ */
@Deprecated @Deprecated
public boolean canChooseSubclass() { public boolean canChooseSubclass() {

View File

@ -1,6 +1,6 @@
package net.Indyuce.mmocore.api.player.social; 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.PlayerActivity;
import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.PlayerData;
import org.bukkit.Sound; import org.bukkit.Sound;
@ -21,8 +21,8 @@ public class FriendRequest extends Request {
getCreator().addFriend(getTarget().getUniqueId()); getCreator().addFriend(getTarget().getUniqueId());
getTarget().addFriend(getCreator().getUniqueId()); getTarget().addFriend(getCreator().getUniqueId());
if (getCreator().isOnline()) { if (getCreator().isOnline()) {
MMOCore.plugin.configManager.getSimpleMessage("now-friends", "player", getTarget().getPlayer().getName()).send(getCreator().getPlayer()); ConfigMessage.fromKey("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", getCreator().getPlayer().getName()).send(getTarget().getPlayer());
} }
} }
} }

View File

@ -1,6 +1,7 @@
package net.Indyuce.mmocore.api.util.input; 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.Material;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
@ -12,8 +13,6 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.util.Consumer; import org.bukkit.util.Consumer;
import io.lumine.mythic.lib.MythicLib;
@Deprecated @Deprecated
public class AnvilGUI extends PlayerInput { public class AnvilGUI extends PlayerInput {
private final int containerId; private final int containerId;
@ -24,7 +23,7 @@ public class AnvilGUI extends PlayerInput {
ItemStack paper = new ItemStack(Material.PAPER); ItemStack paper = new ItemStack(Material.PAPER);
ItemMeta paperMeta = paper.getItemMeta(); 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); paper.setItemMeta(paperMeta);
MythicLib.plugin.getVersion().getWrapper().handleInventoryCloseEvent(player); MythicLib.plugin.getVersion().getWrapper().handleInventoryCloseEvent(player);

View File

@ -1,6 +1,7 @@
package net.Indyuce.mmocore.api.util.input; package net.Indyuce.mmocore.api.util.input;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.gui.api.PluginInventory; import net.Indyuce.mmocore.gui.api.PluginInventory;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -37,8 +38,8 @@ public class ChatInput extends PlayerInput {
this.lastOpened = lastOpened; this.lastOpened = lastOpened;
player.closeInventory(); player.closeInventory();
MMOCore.plugin.configManager.getSimpleMessage("player-input.chat." + inputType.getLowerCaseName()).send(player); ConfigMessage.fromKey("player-input.chat." + inputType.getLowerCaseName()).send(player);
MMOCore.plugin.configManager.getSimpleMessage("player-input.chat.cancel").send(player); ConfigMessage.fromKey("player-input.chat.cancel").send(player);
} }
@Override @Override
@ -56,7 +57,7 @@ public class ChatInput extends PlayerInput {
if (event.getMessage().equals("cancel")) { if (event.getMessage().equals("cancel")) {
if (lastOpened != null) if (lastOpened != null)
Bukkit.getScheduler().runTask(MMOCore.plugin, () -> lastOpened.open()); 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 } else
// Run sync // Run sync
Bukkit.getScheduler().runTask(MMOCore.plugin, () -> output(event.getMessage())); Bukkit.getScheduler().runTask(MMOCore.plugin, () -> output(event.getMessage()));

View File

@ -27,7 +27,7 @@ public class DepositCommand extends RegisteredCommand {
// if (sender instanceof Player) // if (sender instanceof Player)
// if (!isNearEnderchest(((Player) sender).getLocation())) { // if (!isNearEnderchest(((Player) sender).getLocation())) {
// sender.sendMessage(MMOCore.plugin.configManager.getSimpleMessage("stand-near-enderchest")); // sender.sendMessage(ConfigMessage.fromKey("stand-near-enderchest"));
// return true; // return true;
// } // }

View File

@ -3,6 +3,7 @@ package net.Indyuce.mmocore.command;
import io.lumine.mythic.lib.MythicLib; import io.lumine.mythic.lib.MythicLib;
import io.lumine.mythic.lib.comp.flags.CustomFlag; import io.lumine.mythic.lib.comp.flags.CustomFlag;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.command.api.RegisteredCommand; import net.Indyuce.mmocore.command.api.RegisteredCommand;
import net.Indyuce.mmocore.command.api.ToggleableCommand; import net.Indyuce.mmocore.command.api.ToggleableCommand;
@ -26,7 +27,7 @@ public class PvpModeCommand extends RegisteredCommand {
} }
if (!sender.hasPermission("mmocore.pvpmode")) { 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; return false;
} }
@ -34,7 +35,7 @@ public class PvpModeCommand extends RegisteredCommand {
// Command cooldown // Command cooldown
if (playerData.getCooldownMap().isOnCooldown(COOLDOWN_KEY)) { 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; return true;
} }
@ -45,12 +46,12 @@ public class PvpModeCommand extends RegisteredCommand {
if (playerData.getCombat().isInPvpMode() && if (playerData.getCombat().isInPvpMode() &&
MythicLib.plugin.getFlags().isFlagAllowed(playerData.getPlayer(), CustomFlag.PVP_MODE)) { MythicLib.plugin.getFlags().isFlagAllowed(playerData.getPlayer(), CustomFlag.PVP_MODE)) {
playerData.getCombat().setInvulnerable(MMOCore.plugin.configManager.pvpModeInvulnerabilityTimeCommand); 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()); MythicLib.plugin.getMMOConfig().decimal.format(MMOCore.plugin.configManager.pvpModeInvulnerabilityTimeCommand)).send(playerData.getPlayer());
// Just send message otherwise // Just send message otherwise
} else } 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; return true;
} }
} }

View File

@ -2,8 +2,9 @@ package net.Indyuce.mmocore.command;
import io.lumine.mythic.lib.UtilityMethods; import io.lumine.mythic.lib.UtilityMethods;
import net.Indyuce.mmocore.MMOCore; 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.event.MMOCommandEvent;
import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.command.api.RegisteredCommand; import net.Indyuce.mmocore.command.api.RegisteredCommand;
import net.Indyuce.mmocore.command.api.ToggleableCommand; import net.Indyuce.mmocore.command.api.ToggleableCommand;
import net.Indyuce.mmocore.manager.InventoryManager; import net.Indyuce.mmocore.manager.InventoryManager;
@ -45,7 +46,7 @@ public class SkillTreesCommand extends RegisteredCommand {
InventoryManager.TREE_VIEW.newInventory(data).open(); InventoryManager.TREE_VIEW.newInventory(data).open();
return true; return true;
} else { } else {
MMOCore.plugin.configManager.getSimpleMessage("no-skill-tree").send(player); ConfigMessage.fromKey("no-skill-tree").send(player);
return false; return false;
} }
} }

View File

@ -1,11 +1,11 @@
package net.Indyuce.mmocore.command; 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.api.player.PlayerData;
import net.Indyuce.mmocore.command.api.RegisteredCommand; import net.Indyuce.mmocore.command.api.RegisteredCommand;
import net.Indyuce.mmocore.command.api.ToggleableCommand; import net.Indyuce.mmocore.command.api.ToggleableCommand;
import net.Indyuce.mmocore.manager.InventoryManager; import net.Indyuce.mmocore.manager.InventoryManager;
import net.Indyuce.mmocore.api.event.MMOCommandEvent;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;
@ -27,7 +27,7 @@ public class SkillsCommand extends RegisteredCommand {
if(event.isCancelled()) return true; if(event.isCancelled()) return true;
if (data.getUnlockedSkills().isEmpty()) { if (data.getUnlockedSkills().isEmpty()) {
MMOCore.plugin.configManager.getSimpleMessage("no-class-skill").send((Player) sender); ConfigMessage.fromKey("no-class-skill").send((Player) sender);
return true; return true;
} }

View File

@ -1,6 +1,8 @@
package net.Indyuce.mmocore.command; package net.Indyuce.mmocore.command;
import net.Indyuce.mmocore.MMOCore; 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.RegisteredCommand;
import net.Indyuce.mmocore.command.api.ToggleableCommand; import net.Indyuce.mmocore.command.api.ToggleableCommand;
import org.apache.commons.lang.Validate; import org.apache.commons.lang.Validate;
@ -11,8 +13,6 @@ import org.bukkit.command.CommandSender;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import net.Indyuce.mmocore.api.eco.Withdraw;
public class WithdrawCommand extends RegisteredCommand { public class WithdrawCommand extends RegisteredCommand {
public WithdrawCommand(ConfigurationSection config) { public WithdrawCommand(ConfigurationSection config) {
super(config, ToggleableCommand.WITHDRAW); super(config, ToggleableCommand.WITHDRAW);
@ -37,7 +37,7 @@ public class WithdrawCommand extends RegisteredCommand {
amount = Integer.parseInt(amountArgument); amount = Integer.parseInt(amountArgument);
Validate.isTrue(amount >= 0); Validate.isTrue(amount >= 0);
} catch (IllegalArgumentException exception) { } 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; return true;
} }
@ -50,14 +50,14 @@ public class WithdrawCommand extends RegisteredCommand {
int left = (int) MMOCore.plugin.economy.getEconomy().getBalance(player) - amount; int left = (int) MMOCore.plugin.economy.getEconomy().getBalance(player) - amount;
if (left < 0) { 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; return true;
} }
MMOCore.plugin.economy.getEconomy().withdrawPlayer(player, amount); MMOCore.plugin.economy.getEconomy().withdrawPlayer(player, amount);
request.withdrawAlgorythm(amount); request.withdrawAlgorythm(amount);
player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 1, 1); 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; return true;
} }
} }

View File

@ -1,20 +1,20 @@
package net.Indyuce.mmocore.command.rpg.admin; 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.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.event.PlayerChangeClassEvent;
import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.api.player.profess.PlayerClass; 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.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Sound; import org.bukkit.Sound;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; 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 class ClassCommandTreeNode extends CommandTreeNode {
public ClassCommandTreeNode(CommandTreeNode parent) { public ClassCommandTreeNode(CommandTreeNode parent) {
super(parent, "class"); super(parent, "class");
@ -54,7 +54,7 @@ public class ClassCommandTreeNode extends CommandTreeNode {
(data.hasSavedClass(profess) ? data.getClassInfo(profess) (data.hasSavedClass(profess) ? data.getClassInfo(profess)
: new SavedClassInformation(MMOCore.plugin.dataProvider.getDataManager().getDefaultData())).load(profess, data); : new SavedClassInformation(MMOCore.plugin.dataProvider.getDataManager().getDefaultData())).load(profess, data);
if (data.isOnline()) { 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); data.getPlayer().playSound(data.getPlayer().getLocation(), Sound.UI_TOAST_CHALLENGE_COMPLETE, 1, 1);
} }

View File

@ -49,7 +49,7 @@ public class CreateCommandTreeNode extends CommandTreeNode {
if (args[2].equalsIgnoreCase("main")) { if (args[2].equalsIgnoreCase("main")) {
MMOCore.plugin.boosterManager.register(new Booster(args.length > 5 ? args[5] : null, extra, length)); 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)); Bukkit.getOnlinePlayers().forEach(player -> player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1, 1));
return CommandResult.SUCCESS; return CommandResult.SUCCESS;
} }
@ -62,7 +62,7 @@ public class CreateCommandTreeNode extends CommandTreeNode {
Profession profession = MMOCore.plugin.professionManager.get(format); Profession profession = MMOCore.plugin.professionManager.get(format);
MMOCore.plugin.boosterManager.register(new Booster(args.length > 5 ? args[5] : null, profession, extra, length)); 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()); .send(Bukkit.getOnlinePlayers());
Bukkit.getOnlinePlayers().forEach(player -> player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1, 1)); Bukkit.getOnlinePlayers().forEach(player -> player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1, 1));
return CommandResult.SUCCESS; return CommandResult.SUCCESS;

View File

@ -143,9 +143,8 @@ public class RPGPlaceholders extends PlaceholderExpansion {
} else if (identifier.startsWith("cooldown_bound_")) { } else if (identifier.startsWith("cooldown_bound_")) {
int slot = Math.max(0, Integer.parseInt(identifier.substring(15))); int slot = Math.max(0, Integer.parseInt(identifier.substring(15)));
if (playerData.hasSkillBound(slot)) if (playerData.hasSkillBound(slot))
return "" + playerData.getCooldownMap().getCooldown(playerData.getBoundSkill(slot)); return Double.toString(playerData.getCooldownMap().getCooldown(playerData.getBoundSkill(slot)));
else else return MMOCore.plugin.configManager.noSkillBoundPlaceholder;
return MMOCore.plugin.configManager.noSkillBoundPlaceholder;
} else if (identifier.startsWith("profession_experience_")) } else if (identifier.startsWith("profession_experience_"))
return MythicLib.plugin.getMMOConfig().decimal.format( return MythicLib.plugin.getMMOConfig().decimal.format(
playerData.getCollectionSkills().getExperience(identifier.substring(22).replace(" ", "-").replace("_", "-").toLowerCase())); playerData.getCollectionSkills().getExperience(identifier.substring(22).replace(" ", "-").replace("_", "-").toLowerCase()));

View File

@ -10,6 +10,7 @@ import com.sk89q.worldguard.session.MoveType;
import com.sk89q.worldguard.session.Session; import com.sk89q.worldguard.session.Session;
import io.lumine.mythic.lib.MythicLib; import io.lumine.mythic.lib.MythicLib;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
public class PvPFlagHandler extends MMOCoreFlagHandler { public class PvPFlagHandler extends MMOCoreFlagHandler {
@ -50,7 +51,7 @@ public class PvPFlagHandler extends MMOCoreFlagHandler {
// Send message // Send message
if (canSendMessage()) { if (canSendMessage()) {
lastMessage = System.currentTimeMillis(); 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()); MythicLib.plugin.getMMOConfig().decimal.format(MMOCore.plugin.configManager.pvpModeInvulnerabilityTimeRegionChange)).send(playerData.getPlayer());
} }
} }

View File

@ -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.CustomFlag;
import io.lumine.mythic.lib.comp.flags.WorldGuardFlags; import io.lumine.mythic.lib.comp.flags.WorldGuardFlags;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.command.PvpModeCommand; import net.Indyuce.mmocore.command.PvpModeCommand;
import java.util.Objects; import java.util.Objects;
@ -64,7 +65,7 @@ public class PvPModeHandler extends MMOCoreFlagHandler {
final boolean pvpEnabled = playerData.getCombat().isInPvpMode() && !playerData.getCombat().canQuitPvpMode() && pvpFlag; final boolean pvpEnabled = playerData.getCombat().isInPvpMode() && !playerData.getCombat().canQuitPvpMode() && pvpFlag;
lastMessage = System.currentTimeMillis(); lastMessage = System.currentTimeMillis();
final double remaining = (playerData.getCombat().getLastHit() + MMOCore.plugin.configManager.pvpModeCombatTimeout * 1000.0D - System.currentTimeMillis()) / 1000.0D; 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()); (MythicLib.plugin.getMMOConfig()).decimal.format(remaining)).send(playerData.getPlayer());
} }
} else if (newPvpMode && !lastPvpMode) { } else if (newPvpMode && !lastPvpMode) {
@ -80,7 +81,7 @@ public class PvPModeHandler extends MMOCoreFlagHandler {
// Send message // Send message
if (canSendMessage()) { if (canSendMessage()) {
lastMessage = System.currentTimeMillis(); 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()); MythicLib.plugin.getMMOConfig().decimal.format(MMOCore.plugin.configManager.pvpModeInvulnerabilityTimeRegionChange)).send(playerData.getPlayer());
} }
} }

View File

@ -6,6 +6,7 @@ import io.lumine.mythic.lib.MythicLib;
import io.lumine.mythic.lib.UtilityMethods; import io.lumine.mythic.lib.UtilityMethods;
import io.lumine.mythic.lib.comp.flags.CustomFlag; import io.lumine.mythic.lib.comp.flags.CustomFlag;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.PlayerData;
import org.apache.commons.lang.Validate; import org.apache.commons.lang.Validate;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -53,14 +54,14 @@ public class PvPModeListener implements Listener {
if (targetData.getLevel() < minLevel) { if (targetData.getLevel() < minLevel) {
event.setCancelled(true); event.setCancelled(true);
if (event.getDamage() > 0) 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; return;
} }
if (sourceData.getLevel() < minLevel) { if (sourceData.getLevel() < minLevel) {
event.setCancelled(true); event.setCancelled(true);
if (event.getDamage() > 0) 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; return;
} }
@ -68,7 +69,7 @@ public class PvPModeListener implements Listener {
if (maxLevelDiff > 0 && Math.abs(targetData. getLevel() - sourceData.getLevel()) > maxLevelDiff) { if (maxLevelDiff > 0 && Math.abs(targetData. getLevel() - sourceData.getLevel()) > maxLevelDiff) {
event.setCancelled(true); event.setCancelled(true);
if (event.getDamage() > 0) 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; return;
} }
} }
@ -80,7 +81,7 @@ public class PvPModeListener implements Listener {
if (targetData.getCombat().isInvulnerable()) { if (targetData.getCombat().isInvulnerable()) {
if (event.getDamage() > 0) { if (event.getDamage() > 0) {
final long left = targetData.getCombat().getInvulnerableTill() - System.currentTimeMillis(); 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); "left", MythicLib.plugin.getMMOConfig().decimal.format(left / 1000d)).send(source);
} }
event.setCancelled(true); event.setCancelled(true);
@ -91,7 +92,7 @@ public class PvPModeListener implements Listener {
if (!MMOCore.plugin.configManager.pvpModeInvulnerabilityCanDamage && sourceData.getCombat().isInvulnerable()) { if (!MMOCore.plugin.configManager.pvpModeInvulnerabilityCanDamage && sourceData.getCombat().isInvulnerable()) {
if (event.getDamage() > 0) { if (event.getDamage() > 0) {
final long left = sourceData.getCombat().getInvulnerableTill() - System.currentTimeMillis(); 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); "left", MythicLib.plugin.getMMOConfig().decimal.format(left / 1000d)).send(source);
} }
event.setCancelled(true); event.setCancelled(true);
@ -108,14 +109,14 @@ public class PvPModeListener implements Listener {
if (!targetData.getCombat().isInPvpMode()) { if (!targetData.getCombat().isInPvpMode()) {
event.setCancelled(true); event.setCancelled(true);
if (event.getDamage() > 0) 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 // Attacker has not enabled PvP mode
else if (!sourceData.getCombat().isInPvpMode()) { else if (!sourceData.getCombat().isInPvpMode()) {
event.setCancelled(true); event.setCancelled(true);
if (event.getDamage() > 0) 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);
} }
} }
} }

View File

@ -191,7 +191,7 @@ public class PlayerProfessions {
// Display hologram // Display hologram
if (hologramLocation != null) 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())); exp.put(profession.getId(), Math.max(0, exp.getOrDefault(profession.getId(), 0d) + event.getExperience()));
int level, oldLevel = getLevel(profession); int level, oldLevel = getLevel(profession);
@ -222,7 +222,7 @@ public class PlayerProfessions {
if (check) { if (check) {
Bukkit.getPluginManager().callEvent(new PlayerLevelUpEvent(playerData, profession, oldLevel, level)); Bukkit.getPluginManager().callEvent(new PlayerLevelUpEvent(playerData, profession, oldLevel, level));
new SmallParticleEffect(playerData.getPlayer(), Particle.SPELL_INSTANT); 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()); .send(playerData.getPlayer());
MMOCore.plugin.soundManager.getSound(SoundEvent.LEVEL_UP).playTo(playerData.getPlayer()); MMOCore.plugin.soundManager.getSound(SoundEvent.LEVEL_UP).playTo(playerData.getPlayer());
playerData.getStats().updateStats(); playerData.getStats().updateStats();
@ -233,7 +233,7 @@ public class PlayerProfessions {
for (int j = 0; j < 20; j++) for (int j = 0; j < 20; j++)
bar.append(j == chars ? "" + ChatColor.WHITE + ChatColor.BOLD : "").append("|"); bar.append(j == chars ? "" + ChatColor.WHITE + ChatColor.BOLD : "").append("|");
if (playerData.isOnline()) 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()); MythicLib.plugin.getMMOConfig().decimal.format(exp / needed * 100)).send(playerData.getPlayer());
} }
} }

View File

@ -2,6 +2,7 @@ package net.Indyuce.mmocore.gui;
import io.lumine.mythic.lib.manager.StatManager; import io.lumine.mythic.lib.manager.StatManager;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.gui.api.EditableInventory; import net.Indyuce.mmocore.gui.api.EditableInventory;
import net.Indyuce.mmocore.gui.api.GeneratedInventory; import net.Indyuce.mmocore.gui.api.GeneratedInventory;
@ -95,13 +96,13 @@ public class AttributeView extends EditableInventory {
if (item.getFunction().equalsIgnoreCase("reallocation")) { if (item.getFunction().equalsIgnoreCase("reallocation")) {
int spent = playerData.getAttributes().countPoints(); int spent = playerData.getAttributes().countPoints();
if (spent < 1) { 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()); MMOCore.plugin.soundManager.getSound(SoundEvent.NOT_ENOUGH_POINTS).playTo(getPlayer());
return; return;
} }
if (playerData.getAttributeReallocationPoints() < 1) { 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()); MMOCore.plugin.soundManager.getSound(SoundEvent.NOT_ENOUGH_POINTS).playTo(getPlayer());
return; return;
} }
@ -109,7 +110,7 @@ public class AttributeView extends EditableInventory {
playerData.getAttributes().getInstances().forEach(ins -> ins.setBase(0)); playerData.getAttributes().getInstances().forEach(ins -> ins.setBase(0));
playerData.giveAttributePoints(spent); playerData.giveAttributePoints(spent);
playerData.giveAttributeReallocationPoints(-1); 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()); MMOCore.plugin.soundManager.getSound(SoundEvent.RESET_ATTRIBUTES).playTo(getPlayer());
open(); open();
} }
@ -118,14 +119,14 @@ public class AttributeView extends EditableInventory {
PlayerAttribute attribute = ((AttributeItem) item).attribute; PlayerAttribute attribute = ((AttributeItem) item).attribute;
if (playerData.getAttributePoints() < 1) { 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()); MMOCore.plugin.soundManager.getSound(SoundEvent.NOT_ENOUGH_POINTS).playTo(getPlayer());
return; return;
} }
PlayerAttributes.AttributeInstance ins = playerData.getAttributes().getInstance(attribute); PlayerAttributes.AttributeInstance ins = playerData.getAttributes().getInstance(attribute);
if (attribute.hasMax() && ins.getBase() >= attribute.getMax()) { 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()); MMOCore.plugin.soundManager.getSound(SoundEvent.NOT_ENOUGH_POINTS).playTo(getPlayer());
return; return;
} }
@ -137,7 +138,7 @@ public class AttributeView extends EditableInventory {
pointsSpent = Math.min(pointsSpent, attribute.getMax() - ins.getBase()); pointsSpent = Math.min(pointsSpent, attribute.getMax() - ins.getBase());
if (shiftClick && playerData.getAttributePoints() < pointsSpent) { 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()); MMOCore.plugin.soundManager.getSound(SoundEvent.NOT_ENOUGH_POINTS).playTo(getPlayer());
return; return;
} }
@ -150,7 +151,7 @@ public class AttributeView extends EditableInventory {
while (pointsSpent-- > 0) while (pointsSpent-- > 0)
attribute.getExperienceTable().claim(playerData, ins.getBase(), attribute); 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()); MMOCore.plugin.soundManager.getSound(SoundEvent.LEVEL_ATTRIBUTE).playTo(getPlayer());
PlayerAttributeUseEvent playerAttributeUseEvent = new PlayerAttributeUseEvent(playerData, attribute); PlayerAttributeUseEvent playerAttributeUseEvent = new PlayerAttributeUseEvent(playerData, attribute);

View File

@ -2,6 +2,7 @@ package net.Indyuce.mmocore.gui;
import io.lumine.mythic.lib.UtilityMethods; import io.lumine.mythic.lib.UtilityMethods;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.SoundEvent; import net.Indyuce.mmocore.api.SoundEvent;
import net.Indyuce.mmocore.api.event.PlayerChangeClassEvent; import net.Indyuce.mmocore.api.event.PlayerChangeClassEvent;
import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.PlayerData;
@ -145,7 +146,7 @@ public class ClassConfirmation extends EditableInventory {
else else
(playerData.hasSavedClass(profess) ? playerData.getClassInfo(profess) (playerData.hasSavedClass(profess) ? playerData.getClassInfo(profess)
: new SavedClassInformation(MMOCore.plugin.dataProvider.getDataManager().getDefaultData())).load(profess, playerData); : 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); MMOCore.plugin.soundManager.getSound(SoundEvent.SELECT_CLASS).playTo(player);
player.closeInventory(); player.closeInventory();
if (profileRunnable != null) profileRunnable.run(); if (profileRunnable != null) profileRunnable.run();

View File

@ -28,10 +28,8 @@ import org.bukkit.persistence.PersistentDataType;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors;
public class ClassSelect extends EditableInventory { public class ClassSelect extends EditableInventory {
public ClassSelect() { public ClassSelect() {
@ -125,19 +123,19 @@ public class ClassSelect extends EditableInventory {
if (profileRunnable == null && playerData.getClassPoints() < 1) { if (profileRunnable == null && playerData.getClassPoints() < 1) {
MMOCore.plugin.soundManager.getSound(SoundEvent.CANT_SELECT_CLASS).playTo(player); 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; return;
} }
if (profess.hasOption(ClassOption.NEEDS_PERMISSION) && !player.hasPermission("mmocore.class." + profess.getId().toLowerCase())) { if (profess.hasOption(ClassOption.NEEDS_PERMISSION) && !player.hasPermission("mmocore.class." + profess.getId().toLowerCase())) {
MMOCore.plugin.soundManager.getSound(SoundEvent.CANT_SELECT_CLASS).playTo(player); 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; return;
} }
if (profess.equals(playerData.getProfess())) { if (profess.equals(playerData.getProfess())) {
MMOCore.plugin.soundManager.getSound(SoundEvent.CANT_SELECT_CLASS).playTo(player); 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; return;
} }

View File

@ -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.manager.StatManager;
import io.lumine.mythic.lib.version.VersionMaterial; import io.lumine.mythic.lib.version.VersionMaterial;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.player.PlayerData; 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.api.util.math.format.DelayFormat;
import net.Indyuce.mmocore.experience.Booster; import net.Indyuce.mmocore.experience.Booster;
import net.Indyuce.mmocore.experience.Profession; 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.gui.api.item.SimplePlaceholderItem;
import net.Indyuce.mmocore.party.AbstractParty; import net.Indyuce.mmocore.party.AbstractParty;
import net.Indyuce.mmocore.player.stats.StatInfo; import net.Indyuce.mmocore.player.stats.StatInfo;
import net.Indyuce.mmocore.api.player.attribute.PlayerAttribute;
import org.apache.commons.lang.Validate; import org.apache.commons.lang.Validate;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.SkullMeta; 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("author", boost.hasAuthor() ? boost.getAuthor() : "Server");
holders.register("value", (int) (boost.getExtra() * 100)); holders.register("value", (int) (boost.getExtra() * 100));
holders.register("left", boost.isTimedOut() ? holders.register("left", boost.isTimedOut() ?
MMOCore.plugin.configManager.getSimpleMessage("booster-expired").message() ConfigMessage.fromKey("booster-expired").asLine()
: new DelayFormat(2).format(boost.getLeft())); : new DelayFormat(2).format(boost.getLeft()));
return holders; return holders;
@ -332,7 +332,7 @@ public class PlayerStats extends EditableInventory {
holders.register("profession", boost.getProfession().getName()); holders.register("profession", boost.getProfession().getName());
holders.register("value", (int) (boost.getExtra() * 100)); holders.register("value", (int) (boost.getExtra() * 100));
holders.register("left", boost.isTimedOut() ? holders.register("left", boost.isTimedOut() ?
MMOCore.plugin.configManager.getSimpleMessage("booster-expired").message() ConfigMessage.fromKey("booster-expired").asLine()
: new DelayFormat(2).format(boost.getLeft())); : new DelayFormat(2).format(boost.getLeft()));
return holders; return holders;

View File

@ -1,6 +1,7 @@
package net.Indyuce.mmocore.gui; package net.Indyuce.mmocore.gui;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.SoundEvent; import net.Indyuce.mmocore.api.SoundEvent;
import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.api.quest.Quest; import net.Indyuce.mmocore.api.quest.Quest;
@ -225,70 +226,53 @@ public class QuestViewer extends EditableInventory {
if (playerData.getQuestData().hasCurrent()) { 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 (playerData.getQuestData().hasCurrent(quest)) {
if (context.getClickType() == ClickType.RIGHT) { if (context.getClickType() == ClickType.RIGHT) {
playerData.getQuestData().start(null); playerData.getQuestData().start(null);
MMOCore.plugin.soundManager.getSound(SoundEvent.CANCEL_QUEST).playTo(player); MMOCore.plugin.soundManager.getSound(SoundEvent.CANCEL_QUEST).playTo(player);
MMOCore.plugin.configManager.getSimpleMessage("cancel-quest").send(player); ConfigMessage.fromKey("cancel-quest").send(player);
open(); open();
} }
return; return;
} }
/* // The player cannot start a new quest if he is already doing one
* the player cannot start a new quest if he is already ConfigMessage.fromKey("already-on-quest").send(player);
* doing one.
*/
MMOCore.plugin.configManager.getSimpleMessage("already-on-quest").send(player);
return; return;
} }
/* // Check for level requirements.
* check for level requirements.
*/
int level; int level;
if (playerData.getLevel() < (level = quest.getLevelRestriction(null))) { 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; return;
} }
for (Profession profession : quest.getLevelRestrictions()) for (Profession profession : quest.getLevelRestrictions())
if (playerData.getCollectionSkills().getLevel(profession) < (level = quest.getLevelRestriction(profession))) { if (playerData.getCollectionSkills().getLevel(profession) < (level = quest.getLevelRestriction(profession))) {
MMOCore.plugin.configManager ConfigMessage.fromKey("quest-level-restriction", "level", profession.getName() + " Lvl", "count", "" + level)
.getSimpleMessage("quest-level-restriction", "level", profession.getName() + " Lvl", "count", "" + level) .send(player);
.send(player); return;
return; }
}
if (playerData.getQuestData().hasFinished(quest)) { 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()) { if (!quest.isRedoable()) {
MMOCore.plugin.configManager.getSimpleMessage("cant-redo-quest").send(player); ConfigMessage.fromKey("cant-redo-quest").send(player);
return; 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);
if (!playerData.getQuestData().checkCooldownAvailability(quest)) { return;
MMOCore.plugin.configManager }
.getSimpleMessage("quest-cooldown", "delay", new DelayFormat(2).format(playerData.getQuestData().getDelayFeft(quest)))
.send(player);
return;
}
} }
/* // Eventually start the quest
* eventually start a new quest. ConfigMessage.fromKey("start-quest", "quest", quest.getName()).send(player);
*/
MMOCore.plugin.configManager.getSimpleMessage("start-quest", "quest", quest.getName()).send(player);
MMOCore.plugin.soundManager.getSound(SoundEvent.START_QUEST).playTo(player); MMOCore.plugin.soundManager.getSound(SoundEvent.START_QUEST).playTo(player);
playerData.getQuestData().start(quest); playerData.getQuestData().start(quest);
open(); open();

View File

@ -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.ItemTag;
import io.lumine.mythic.lib.api.item.NBTItem; import io.lumine.mythic.lib.api.item.NBTItem;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.SoundEvent; import net.Indyuce.mmocore.api.SoundEvent;
import net.Indyuce.mmocore.api.player.PlayerData; 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.api.util.MMOCoreUtils;
import net.Indyuce.mmocore.gui.api.EditableInventory; import net.Indyuce.mmocore.gui.api.EditableInventory;
import net.Indyuce.mmocore.gui.api.GeneratedInventory; 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.gui.api.item.SimplePlaceholderItem;
import net.Indyuce.mmocore.skill.ClassSkill; import net.Indyuce.mmocore.skill.ClassSkill;
import net.Indyuce.mmocore.skill.RegisteredSkill; import net.Indyuce.mmocore.skill.RegisteredSkill;
import net.Indyuce.mmocore.skill.binding.SkillSlot;
import org.apache.commons.lang.Validate; import org.apache.commons.lang.Validate;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Material; import org.bukkit.Material;
@ -416,13 +417,13 @@ public class SkillList extends EditableInventory {
int spent = getPlayerData().countSkillPointsSpent(); int spent = getPlayerData().countSkillPointsSpent();
if (spent < 1) { 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()); MMOCore.plugin.soundManager.getSound(SoundEvent.NOT_ENOUGH_POINTS).playTo(getPlayer());
return; return;
} }
if (playerData.getSkillReallocationPoints() < 1) { 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()); MMOCore.plugin.soundManager.getSound(SoundEvent.NOT_ENOUGH_POINTS).playTo(getPlayer());
return; return;
} }
@ -432,7 +433,7 @@ public class SkillList extends EditableInventory {
playerData.giveSkillPoints(spent); playerData.giveSkillPoints(spent);
playerData.setSkillReallocationPoints(playerData.getSkillReallocationPoints() - 1); 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()); MMOCore.plugin.soundManager.getSound(SoundEvent.RESET_SKILLS).playTo(getPlayer());
open(); open();
} }
@ -465,12 +466,12 @@ public class SkillList extends EditableInventory {
// unbind if there is a current spell. // unbind if there is a current spell.
if (context.getClickType() == ClickType.RIGHT) { if (context.getClickType() == ClickType.RIGHT) {
if (!playerData.hasSkillBound(index)) { 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); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 2);
return; return;
} }
if (!playerData.getProfess().getSkillSlot(index).canManuallyBind()) { 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); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 2);
return; return;
} }
@ -481,19 +482,19 @@ public class SkillList extends EditableInventory {
} }
if (!playerData.hasUnlockedLevel(selected)) { 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); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 2);
return; return;
} }
if (!skillSlot.canManuallyBind()) { 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); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 2);
return; return;
} }
if (!skillSlot.acceptsSkill(selected)) { 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); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 2);
return; return;
} }
@ -509,26 +510,26 @@ public class SkillList extends EditableInventory {
int shiftCost = ((UpgradeItem) item).shiftCost; int shiftCost = ((UpgradeItem) item).shiftCost;
if (!playerData.hasUnlockedLevel(selected)) { 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); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 2);
return; return;
} }
if (playerData.getSkillPoints() < 1) { 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); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 2);
return; return;
} }
if (selected.hasMaxLevel() && playerData.getSkillLevel(selected.getSkill()) >= selected.getMaxLevel()) { 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); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 2);
return; return;
} }
if (context.getClickType().isShiftClick()) { if (context.getClickType().isShiftClick()) {
if (playerData.getSkillPoints() < shiftCost) { 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); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 2);
return; return;
} }
@ -540,7 +541,7 @@ public class SkillList extends EditableInventory {
playerData.setSkillLevel(selected.getSkill(), playerData.getSkillLevel(selected.getSkill()) + 1); 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); "" + playerData.getSkillLevel(selected.getSkill())).send(player);
player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 1, 2); player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 1, 2);
open(); open();

View File

@ -14,9 +14,7 @@ import net.Indyuce.mmocore.manager.InventoryManager;
import net.Indyuce.mmocore.api.player.profess.PlayerClass; import net.Indyuce.mmocore.api.player.profess.PlayerClass;
import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.SoundEvent; import net.Indyuce.mmocore.api.SoundEvent;
import net.Indyuce.mmocore.api.player.profess.Subclass;
import org.apache.commons.lang.Validate; import org.apache.commons.lang.Validate;
import org.bukkit.Bukkit;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.NamespacedKey; import org.bukkit.NamespacedKey;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;
@ -28,7 +26,6 @@ import org.bukkit.persistence.PersistentDataType;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors;
public class SubclassSelect extends EditableInventory { public class SubclassSelect extends EditableInventory {
public SubclassSelect() { public SubclassSelect() {
@ -123,12 +120,12 @@ public class SubclassSelect extends EditableInventory {
if (playerData.getClassPoints() < 1) { if (playerData.getClassPoints() < 1) {
player.closeInventory(); player.closeInventory();
MMOCore.plugin.soundManager.getSound(SoundEvent.CANT_SELECT_CLASS).playTo(getPlayer()); 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; return;
} }
if (profess.hasOption(ClassOption.NEEDS_PERMISSION) && !player.hasPermission("mmocore.class." + profess.getId().toLowerCase())) { if (profess.hasOption(ClassOption.NEEDS_PERMISSION) && !player.hasPermission("mmocore.class." + profess.getId().toLowerCase())) {
MMOCore.plugin.soundManager.getSound(SoundEvent.CANT_SELECT_CLASS).playTo(player); 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; return;
} }

View File

@ -1,6 +1,7 @@
package net.Indyuce.mmocore.gui; package net.Indyuce.mmocore.gui;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.player.PlayerActivity; import net.Indyuce.mmocore.api.player.PlayerActivity;
import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.gui.api.EditableInventory; import net.Indyuce.mmocore.gui.api.EditableInventory;
@ -244,25 +245,25 @@ public class WaypointViewer extends EditableInventory {
// Locked waypoint? // Locked waypoint?
Waypoint waypoint = MMOCore.plugin.waypointManager.get(tag); Waypoint waypoint = MMOCore.plugin.waypointManager.get(tag);
if (!playerData.hasWaypoint(waypoint)) { if (!playerData.hasWaypoint(waypoint)) {
MMOCore.plugin.configManager.getSimpleMessage("not-unlocked-waypoint").send(player); ConfigMessage.fromKey("not-unlocked-waypoint").send(player);
return; return;
} }
// Cannot teleport to current waypoint // Cannot teleport to current waypoint
if (waypoint.equals(current)) { if (waypoint.equals(current)) {
MMOCore.plugin.configManager.getSimpleMessage("standing-on-waypoint").send(player); ConfigMessage.fromKey("standing-on-waypoint").send(player);
return; return;
} }
// Waypoint does not have target as destination // Waypoint does not have target as destination
if (current != null && current.getPath(waypoint) == null) { if (current != null && current.getPath(waypoint) == null) {
MMOCore.plugin.configManager.getSimpleMessage("cannot-teleport-to").send(player); ConfigMessage.fromKey("cannot-teleport-to").send(player);
return; return;
} }
// Not dynamic waypoint // Not dynamic waypoint
if (current == null && !paths.containsKey(waypoint)) { if (current == null && !paths.containsKey(waypoint)) {
MMOCore.plugin.configManager.getSimpleMessage("not-dynamic-waypoint").send(player); ConfigMessage.fromKey("not-dynamic-waypoint").send(player);
return; return;
} }
@ -270,7 +271,7 @@ public class WaypointViewer extends EditableInventory {
double withdraw = paths.get(waypoint).getCost(); double withdraw = paths.get(waypoint).getCost();
double left = withdraw - playerData.getStellium(); double left = withdraw - playerData.getStellium();
if (left > 0) { 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; return;
} }

View File

@ -3,13 +3,13 @@ package net.Indyuce.mmocore.gui.eco;
import io.lumine.mythic.lib.api.item.NBTItem; import io.lumine.mythic.lib.api.item.NBTItem;
import io.lumine.mythic.lib.api.util.SmartGive; import io.lumine.mythic.lib.api.util.SmartGive;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.util.MMOCoreUtils; import net.Indyuce.mmocore.api.util.MMOCoreUtils;
import net.Indyuce.mmocore.gui.api.InventoryClickContext; 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.gui.api.PluginInventory;
import net.Indyuce.mmocore.util.item.SimpleItemBuilder;
import net.milkbowl.vault.economy.EconomyResponse; import net.milkbowl.vault.economy.EconomyResponse;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Sound; import org.bukkit.Sound;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryCloseEvent; import org.bukkit.event.inventory.InventoryCloseEvent;
@ -57,7 +57,7 @@ public class DepositMenu extends PluginInventory {
event.getInventory().clear(); event.getInventory().clear();
player.closeInventory(); player.closeInventory();
player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 1, 2); 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; return;
} }

View File

@ -3,9 +3,7 @@ package net.Indyuce.mmocore.gui.skilltree;
import io.lumine.mythic.lib.MythicLib; import io.lumine.mythic.lib.MythicLib;
import io.lumine.mythic.lib.UtilityMethods; import io.lumine.mythic.lib.UtilityMethods;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import java.util.logging.Level;
import net.Indyuce.mmocore.api.SoundEvent; import net.Indyuce.mmocore.api.SoundEvent;
import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.api.util.MMOCoreUtils; import net.Indyuce.mmocore.api.util.MMOCoreUtils;
@ -34,6 +32,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import java.util.*; import java.util.*;
import java.util.logging.Level;
import java.util.stream.Collectors; import java.util.stream.Collectors;
public class SkillTreeViewer extends EditableInventory { public class SkillTreeViewer extends EditableInventory {
@ -469,13 +468,13 @@ public class SkillTreeViewer extends EditableInventory {
if (item.getFunction().equals("reallocation")) { if (item.getFunction().equals("reallocation")) {
int spent = playerData.getPointSpent(skillTree); int spent = playerData.getPointSpent(skillTree);
if (spent < 1) { 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()); MMOCore.plugin.soundManager.getSound(SoundEvent.NOT_ENOUGH_POINTS).playTo(getPlayer());
return; return;
} }
if (getPlayerData().getSkillTreeReallocationPoints() <= 0) { 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()); MMOCore.plugin.soundManager.getSound(SoundEvent.NOT_ENOUGH_POINTS).playTo(getPlayer());
return; return;
} else { } else {
@ -485,7 +484,7 @@ public class SkillTreeViewer extends EditableInventory {
playerData.giveSkillTreeReallocationPoints(-1); playerData.giveSkillTreeReallocationPoints(-1);
playerData.resetSkillTree(skillTree); playerData.resetSkillTree(skillTree);
skillTree.setupNodeStates(playerData); 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); MMOCore.plugin.soundManager.getSound(SoundEvent.RESET_SKILL_TREE).playTo(player);
open(); open();
return; return;
@ -512,31 +511,31 @@ public class SkillTreeViewer extends EditableInventory {
} }
SkillTreeNode node = skillTree.getNode(new IntegerCoordinates(x, y)); SkillTreeNode node = skillTree.getNode(new IntegerCoordinates(x, y));
if (playerData.getPointSpent(skillTree) >= skillTree.getMaxPointSpent()) { 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()); MMOCore.plugin.soundManager.getSound(SoundEvent.NOT_ENOUGH_POINTS).playTo(getPlayer());
return; return;
} }
if (playerData.canIncrementNodeLevel(node)) { if (playerData.canIncrementNodeLevel(node)) {
playerData.incrementNodeLevel(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()); MMOCore.plugin.soundManager.getSound(SoundEvent.LEVEL_UP).playTo(getPlayer());
open(); open();
} else if (playerData.getNodeStatus(node) == SkillTreeStatus.LOCKED || playerData.getNodeStatus(node) == SkillTreeStatus.FULLY_LOCKED) { } 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()); MMOCore.plugin.soundManager.getSound(SoundEvent.NOT_ENOUGH_POINTS).playTo(getPlayer());
} else if (playerData.getNodeLevel(node) >= node.getMaxLevel()) { } 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()); MMOCore.plugin.soundManager.getSound(SoundEvent.NOT_ENOUGH_POINTS).playTo(getPlayer());
} else if (!node.hasPermissionRequirement(playerData)) { } 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()); MMOCore.plugin.soundManager.getSound(SoundEvent.NOT_ENOUGH_POINTS).playTo(getPlayer());
} }
//Else the player doesn't doesn't have the skill tree points //Else the player doesn't doesn't have the skill tree points
else { 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()); MMOCore.plugin.soundManager.getSound(SoundEvent.NOT_ENOUGH_POINTS).playTo(getPlayer());
} }

View File

@ -1,14 +1,15 @@
package net.Indyuce.mmocore.gui.social.friend; package net.Indyuce.mmocore.gui.social.friend;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.player.PlayerActivity; import net.Indyuce.mmocore.api.player.PlayerActivity;
import net.Indyuce.mmocore.api.player.PlayerData; 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.ChatInput;
import net.Indyuce.mmocore.api.util.input.PlayerInput.InputType; import net.Indyuce.mmocore.api.util.input.PlayerInput.InputType;
import net.Indyuce.mmocore.api.util.math.format.DelayFormat; import net.Indyuce.mmocore.api.util.math.format.DelayFormat;
import net.Indyuce.mmocore.gui.api.EditableInventory; import net.Indyuce.mmocore.gui.api.EditableInventory;
import net.Indyuce.mmocore.gui.api.GeneratedInventory; 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.InventoryItem;
import net.Indyuce.mmocore.gui.api.item.Placeholders; import net.Indyuce.mmocore.gui.api.item.Placeholders;
import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem; import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem;
@ -199,7 +200,7 @@ public class EditableFriendList extends EditableInventory {
long remaining = playerData.getActivityTimeOut(PlayerActivity.FRIEND_REQUEST); long remaining = playerData.getActivityTimeOut(PlayerActivity.FRIEND_REQUEST);
if (remaining > 0) { 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); .send(player);
return; return;
} }
@ -207,28 +208,28 @@ public class EditableFriendList extends EditableInventory {
new ChatInput(player, InputType.FRIEND_REQUEST, context.getInventoryHolder(), input -> { new ChatInput(player, InputType.FRIEND_REQUEST, context.getInventoryHolder(), input -> {
Player target = Bukkit.getPlayer(input); Player target = Bukkit.getPlayer(input);
if (target == null) { 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); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 1);
open(); open();
return; return;
} }
if (playerData.hasFriend(target.getUniqueId())) { 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); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 1);
open(); open();
return; return;
} }
if (playerData.getUniqueId().equals(target.getUniqueId())) { 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); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 1);
open(); open();
return; return;
} }
playerData.sendFriendRequest(PlayerData.get(target)); 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); player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1, 1);
open(); open();
}); });

View File

@ -1,13 +1,13 @@
package net.Indyuce.mmocore.gui.social.friend; 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.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.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.Placeholders;
import net.Indyuce.mmocore.manager.data.OfflinePlayerData;
import org.bukkit.OfflinePlayer; import org.bukkit.OfflinePlayer;
import org.bukkit.Sound; import org.bukkit.Sound;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;
@ -52,7 +52,7 @@ public class EditableFriendRemoval extends EditableInventory {
playerData.removeFriend(friend.getUniqueId()); playerData.removeFriend(friend.getUniqueId());
OfflinePlayerData.get(friend.getUniqueId()).removeFriend(playerData.getUniqueId()); OfflinePlayerData.get(friend.getUniqueId()).removeFriend(playerData.getUniqueId());
player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 1); 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(); last.open();
} }

View File

@ -1,16 +1,17 @@
package net.Indyuce.mmocore.gui.social.guild; package net.Indyuce.mmocore.gui.social.guild;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.player.PlayerData; 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.ChatInput;
import net.Indyuce.mmocore.api.util.input.PlayerInput; import net.Indyuce.mmocore.api.util.input.PlayerInput;
import net.Indyuce.mmocore.gui.api.GeneratedInventory; import net.Indyuce.mmocore.api.util.math.format.DelayFormat;
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.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.Placeholders;
import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem;
import org.apache.commons.lang.Validate; import org.apache.commons.lang.Validate;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.NamespacedKey; import org.bukkit.NamespacedKey;
@ -147,7 +148,7 @@ public class EditableGuildAdmin extends EditableInventory {
if (item.getFunction().equals("invite")) { if (item.getFunction().equals("invite")) {
if (playerData.getGuild().countMembers() >= max) { 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); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 1);
return; return;
} }
@ -155,7 +156,7 @@ public class EditableGuildAdmin extends EditableInventory {
new ChatInput(player, PlayerInput.InputType.GUILD_INVITE, context.getInventoryHolder(), input -> { new ChatInput(player, PlayerInput.InputType.GUILD_INVITE, context.getInventoryHolder(), input -> {
Player target = Bukkit.getPlayer(input); Player target = Bukkit.getPlayer(input);
if (target == null) { 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); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 1);
open(); open();
return; return;
@ -163,7 +164,7 @@ public class EditableGuildAdmin extends EditableInventory {
long remaining = playerData.getGuild().getLastInvite(target) + 60 * 2 * 1000 - System.currentTimeMillis(); long remaining = playerData.getGuild().getLastInvite(target) + 60 * 2 * 1000 - System.currentTimeMillis();
if (remaining > 0) { 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); new DelayFormat().format(remaining)).send(player);
open(); open();
return; return;
@ -171,14 +172,14 @@ public class EditableGuildAdmin extends EditableInventory {
PlayerData targetData = PlayerData.get(target); PlayerData targetData = PlayerData.get(target);
if (playerData.getGuild().hasMember(target.getUniqueId())) { 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); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 1);
open(); open();
return; return;
} }
playerData.getGuild().sendGuildInvite(playerData, targetData); 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); player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1, 1);
open(); open();
}); });
@ -193,7 +194,7 @@ public class EditableGuildAdmin extends EditableInventory {
return; return;
playerData.getGuild().removeMember(target.getUniqueId()); 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); player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1, 1);
} }
} }

View File

@ -1,16 +1,17 @@
package net.Indyuce.mmocore.gui.social.guild; package net.Indyuce.mmocore.gui.social.guild;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.player.PlayerData; 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.ChatInput;
import net.Indyuce.mmocore.api.util.input.PlayerInput; 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.GeneratedInventory;
import net.Indyuce.mmocore.gui.api.InventoryClickContext;
import net.Indyuce.mmocore.gui.api.item.InventoryItem; import net.Indyuce.mmocore.gui.api.item.InventoryItem;
import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem; 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.Sound;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -78,13 +79,13 @@ public class EditableGuildCreation extends EditableInventory {
if(!MMOCore.plugin.dataProvider.getGuildManager().isRegistered(input)) if(!MMOCore.plugin.dataProvider.getGuildManager().isRegistered(input))
return true; return true;
else else
reason = MMOCore.plugin.configManager.getSimpleMessage("guild-creation.reasons.already-taken").message(); reason = ConfigMessage.fromKey("guild-creation.reasons.already-taken").asLine();
else else
reason = MMOCore.plugin.configManager.getSimpleMessage("guild-creation.reasons.invalid-characters").message(); reason = ConfigMessage.fromKey("guild-creation.reasons.invalid-characters").asLine();
else 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; return false;
} }
} }

View File

@ -1,17 +1,18 @@
package net.Indyuce.mmocore.gui.social.guild; package net.Indyuce.mmocore.gui.social.guild;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.player.PlayerData; 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.ChatInput;
import net.Indyuce.mmocore.api.util.input.PlayerInput; 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.GeneratedInventory;
import net.Indyuce.mmocore.gui.api.InventoryClickContext;
import net.Indyuce.mmocore.gui.api.item.InventoryItem; 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.gui.api.item.SimplePlaceholderItem;
import net.Indyuce.mmocore.manager.data.OfflinePlayerData; 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.apache.commons.lang.Validate;
import org.bukkit.*; import org.bukkit.*;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;
@ -196,7 +197,7 @@ public class EditableGuildView extends EditableInventory {
/* /*
* if (playerData.getGuild().getMembers().count() >= max) { * 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(), * player.playSound(player.getLocation(),
* Sound.ENTITY_VILLAGER_NO, 1, 1); return; } * 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 -> { new ChatInput(player, PlayerInput.InputType.GUILD_INVITE, context.getInventoryHolder(), input -> {
Player target = Bukkit.getPlayer(input); Player target = Bukkit.getPlayer(input);
if (target == null) { 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); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 1);
open(); open();
return; return;
@ -212,21 +213,21 @@ public class EditableGuildView extends EditableInventory {
long remaining = playerData.getGuild().getLastInvite(target) + 60 * 2 * 1000 - System.currentTimeMillis(); long remaining = playerData.getGuild().getLastInvite(target) + 60 * 2 * 1000 - System.currentTimeMillis();
if (remaining > 0) { 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(); open();
return; return;
} }
PlayerData targetData = PlayerData.get(target); PlayerData targetData = PlayerData.get(target);
if (playerData.getGuild().hasMember(targetData.getUniqueId())) { 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); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 1);
open(); open();
return; return;
} }
playerData.getGuild().sendGuildInvite(playerData, targetData); 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); player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1, 1);
open(); open();
}); });
@ -245,7 +246,7 @@ public class EditableGuildView extends EditableInventory {
return; return;
playerData.getGuild().removeMember(target.getUniqueId()); 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); player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1, 1);
} }
} }

View File

@ -1,17 +1,18 @@
package net.Indyuce.mmocore.gui.social.party; package net.Indyuce.mmocore.gui.social.party;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.player.PlayerData; 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.ChatInput;
import net.Indyuce.mmocore.api.util.input.PlayerInput; import net.Indyuce.mmocore.api.util.input.PlayerInput;
import net.Indyuce.mmocore.gui.api.GeneratedInventory; import net.Indyuce.mmocore.api.util.math.format.DelayFormat;
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.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.Placeholders;
import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem;
import net.Indyuce.mmocore.party.provided.Party;
import org.apache.commons.lang.Validate; import org.apache.commons.lang.Validate;
import org.bukkit.*; import org.bukkit.*;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;
@ -147,7 +148,7 @@ public class EditablePartyView extends EditableInventory {
if (item.getFunction().equals("invite")) { if (item.getFunction().equals("invite")) {
if (party.getMembers().size() >= MMOCore.plugin.configManager.maxPartyPlayers) { 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); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 1);
return; return;
} }
@ -155,7 +156,7 @@ public class EditablePartyView extends EditableInventory {
new ChatInput(player, PlayerInput.InputType.PARTY_INVITE, context.getInventoryHolder(), input -> { new ChatInput(player, PlayerInput.InputType.PARTY_INVITE, context.getInventoryHolder(), input -> {
Player target = Bukkit.getPlayer(input); Player target = Bukkit.getPlayer(input);
if (target == null) { 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); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 1);
open(); open();
return; return;
@ -163,14 +164,14 @@ public class EditablePartyView extends EditableInventory {
long remaining = party.getLastInvite(target) + 60 * 2 * 1000 - System.currentTimeMillis(); long remaining = party.getLastInvite(target) + 60 * 2 * 1000 - System.currentTimeMillis();
if (remaining > 0) { 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(); open();
return; return;
} }
PlayerData targetData = PlayerData.get(target); PlayerData targetData = PlayerData.get(target);
if (party.hasMember(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); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 1);
open(); open();
return; return;
@ -178,14 +179,14 @@ public class EditablePartyView extends EditableInventory {
int levelDifference = Math.abs(targetData.getLevel() - party.getLevel()); int levelDifference = Math.abs(targetData.getLevel() - party.getLevel());
if (levelDifference > MMOCore.plugin.configManager.maxPartyLevelDifference) { 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); player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 1);
open(); open();
return; return;
} }
party.sendInvite(playerData, targetData); 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); player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1, 1);
open(); open();
}); });
@ -200,7 +201,7 @@ public class EditablePartyView extends EditableInventory {
return; return;
party.removeMember(PlayerData.get(target)); 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); player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1, 1);
} }
} }

View File

@ -1,6 +1,5 @@
package net.Indyuce.mmocore.guild.provided; package net.Indyuce.mmocore.guild.provided;
import io.lumine.mythic.lib.comp.interaction.relation.Relationship;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage; import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.PlayerData;
@ -82,7 +81,7 @@ public class Guild implements AbstractGuild {
// Transfer ownership // Transfer ownership
if (owner.equals(uuid)) { if (owner.equals(uuid)) {
owner = members.stream().findAny().get(); 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) { public void sendGuildInvite(PlayerData inviter, PlayerData target) {
invites.put(target.getUniqueId(), System.currentTimeMillis()); invites.put(target.getUniqueId(), System.currentTimeMillis());
Request request = new GuildInvite(this, inviter, target); 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); MMOCore.plugin.requestManager.registerRequest(request);
} }

View File

@ -1,9 +1,9 @@
package net.Indyuce.mmocore.guild.provided; 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.api.player.PlayerData;
import net.Indyuce.mmocore.manager.InventoryManager;
import net.Indyuce.mmocore.api.player.social.Request; import net.Indyuce.mmocore.api.player.social.Request;
import net.Indyuce.mmocore.manager.InventoryManager;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
public class GuildInvite extends Request { public class GuildInvite extends Request {
@ -29,10 +29,10 @@ public class GuildInvite extends Request {
guild.removeLastInvite(getCreator().getPlayer()); guild.removeLastInvite(getCreator().getPlayer());
guild.forEachMember(member -> { guild.forEachMember(member -> {
if (Bukkit.getPlayer(member) != null) { 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)); 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()); Bukkit.getPlayer(guild.getOwner()).getName()).send(getTarget().getPlayer());
} }
} }

View File

@ -1,10 +1,9 @@
package net.Indyuce.mmocore.manager; package net.Indyuce.mmocore.manager;
import io.lumine.mythic.lib.MythicLib;
import io.lumine.mythic.lib.UtilityMethods; import io.lumine.mythic.lib.UtilityMethods;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigFile; 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.ChatInput;
import net.Indyuce.mmocore.api.util.input.PlayerInput; import net.Indyuce.mmocore.api.util.input.PlayerInput;
import net.Indyuce.mmocore.api.util.input.PlayerInput.InputType; 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.event.entity.EntityDamageEvent;
import org.bukkit.util.Consumer; import org.bukkit.util.Consumer;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.io.File; import java.io.File;
import java.io.IOException; 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; lootChestExpireTime = Math.max(MMOCore.plugin.getConfig().getInt("loot-chests.chest-expire-time"), 1) * 20;
lootChestPlayerCooldown = (long) MMOCore.plugin.getConfig().getDouble("player-cooldown") * 1000L; lootChestPlayerCooldown = (long) MMOCore.plugin.getConfig().getDouble("player-cooldown") * 1000L;
globalSkillCooldown = MMOCore.plugin.getConfig().getLong("global-skill-cooldown") * 50; 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"); lootChestsChanceWeight = MMOCore.plugin.getConfig().getDouble("chance-stat-weight.loot-chests");
dropItemsChanceWeight = MMOCore.plugin.getConfig().getDouble("chance-stat-weight.drop-items"); dropItemsChanceWeight = MMOCore.plugin.getConfig().getDouble("chance-stat-weight.drop-items");
fishingDropsChanceWeight = MMOCore.plugin.getConfig().getDouble("chance-stat-weight.fishing-drops"); fishingDropsChanceWeight = MMOCore.plugin.getConfig().getDouble("chance-stat-weight.fishing-drops");
@ -202,48 +202,41 @@ public class ConfigManager {
} }
} }
@Deprecated
public List<String> getMessage(String key) { public List<String> getMessage(String key) {
return messages.getStringList(key); return messages.getStringList(key);
} }
/** @Nullable
* @deprecated TODO Merge with {@link net.Indyuce.mmocore.api.ConfigMessage} public Object getMessageObject(String key) {
*/ return messages.get(key);
@Deprecated }
public SimpleMessage getSimpleMessage(String key, String... placeholders) {
String format = messages.getString(key, "{MessageNotFound:\"" + key + "\"}"); @Deprecated
for (int j = 0; j < placeholders.length - 1; j += 2) public SimpleMessage getSimpleMessage(String key, String... placeholders) {
format = format.replace("{" + placeholders[j] + "}", placeholders[j + 1]); SimpleMessage wrapper = new SimpleMessage(ConfigMessage.fromKey(key));
return new SimpleMessage(MythicLib.plugin.parseColors(format)); wrapper.message.addPlaceholders(placeholders);
return wrapper;
} }
/**
* @deprecated TODO Merge with {@link net.Indyuce.mmocore.api.ConfigMessage}
*/
@Deprecated @Deprecated
public static class SimpleMessage { public static class SimpleMessage {
private final String message; private final ConfigMessage message;
private final boolean actionbar;
private final boolean hasPlaceholders;
public SimpleMessage(String message) { @Deprecated
this.actionbar = message.startsWith("%"); public SimpleMessage(ConfigMessage message) {
this.message = actionbar ? message.substring(1) : message; this.message = message;
this.hasPlaceholders = this.message.contains("%");
} }
@Deprecated
public String message() { public String message() {
return message; return message.getLines().isEmpty() ? "" : message.getLines().get(0);
} }
@Deprecated
public boolean send(Player player) { public boolean send(Player player) {
String msg = hasPlaceholders ? MMOCore.plugin.placeholderParser.parse(player, message) : message; message.send(player);
return !message.getLines().isEmpty();
if (!msg.isEmpty()) {
if (actionbar) PlayerData.get(player).displayActionBar(msg);
else player.sendMessage(msg);
}
return !msg.isEmpty();
} }
} }
} }

View File

@ -127,7 +127,7 @@ public class Party implements AbstractParty {
if (owner.equals(data)) { if (owner.equals(data)) {
owner = members.get(0); owner = members.get(0);
if (notify && owner.isOnline()) 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) { public void sendInvite(PlayerData inviter, PlayerData target) {
invites.put(target.getUniqueId(), System.currentTimeMillis()); invites.put(target.getUniqueId(), System.currentTimeMillis());
Request request = new PartyInvite(this, inviter, target); Request request = new PartyInvite(this, inviter, target);
new ConfigMessage("party-invite").addPlaceholders("player", inviter.getPlayer().getName(), "uuid", request.getUniqueId().toString()) ConfigMessage.fromKey("party-invite").addPlaceholders("player", inviter.getPlayer().getName(), "uuid", request.getUniqueId().toString())
.sendAsJSon(target.getPlayer()); .send(target.getPlayer());
MMOCore.plugin.requestManager.registerRequest(request); MMOCore.plugin.requestManager.registerRequest(request);
} }

View File

@ -1,9 +1,10 @@
package net.Indyuce.mmocore.party.provided; package net.Indyuce.mmocore.party.provided;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.player.PlayerData; 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.api.player.social.Request;
import net.Indyuce.mmocore.manager.InventoryManager;
public class PartyInvite extends Request { public class PartyInvite extends Request {
private final Party party; private final Party party;
@ -26,17 +27,17 @@ public class PartyInvite extends Request {
@Override @Override
public void whenAccepted() { public void whenAccepted() {
if (party.getMembers().size() >= MMOCore.plugin.configManager.maxPartyPlayers) { 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; return;
} }
if (getCreator().isOnline()) if (getCreator().isOnline())
party.removeLastInvite(getCreator().getPlayer()); party.removeLastInvite(getCreator().getPlayer());
party.getMembers().forEach(member -> { party.getMembers().forEach(member -> {
if (member.isOnline()) 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()) 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()); party.addMember(getTarget());
InventoryManager.PARTY_VIEW.newInventory(getTarget()).open(); InventoryManager.PARTY_VIEW.newInventory(getTarget()).open();
} }

View File

@ -1,9 +1,9 @@
package net.Indyuce.mmocore.party.provided; package net.Indyuce.mmocore.party.provided;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.event.social.PartyChatEvent; import net.Indyuce.mmocore.api.event.social.PartyChatEvent;
import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.manager.ConfigManager;
import net.Indyuce.mmocore.party.AbstractParty; import net.Indyuce.mmocore.party.AbstractParty;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
@ -32,13 +32,12 @@ public class PartyListener implements Listener {
event.setCancelled(true); event.setCancelled(true);
// Running it in a delayed task is recommended // Running it in a delayed task is recommended
Bukkit.getScheduler().scheduleSyncDelayedTask(MMOCore.plugin, () -> { Bukkit.getScheduler().runTask(MMOCore.plugin, () -> {
ConfigManager.SimpleMessage format = MMOCore.plugin.configManager.getSimpleMessage("party-chat", "player", data.getPlayer().getName(), "message", ConfigMessage message = ConfigMessage.fromKey("party-chat", "player", data.getPlayer().getName(), "message",
event.getMessage().substring(MMOCore.plugin.configManager.partyChatPrefix.length())); 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); Bukkit.getPluginManager().callEvent(called);
if (!called.isCancelled()) if (!called.isCancelled()) party.getOnlineMembers().forEach(member -> message.send(member.getPlayer()));
party.getOnlineMembers().forEach(member -> format.send(member.getPlayer()));
}); });
} }

View File

@ -2,6 +2,7 @@ package net.Indyuce.mmocore.player;
import io.lumine.mythic.lib.util.Closeable; import io.lumine.mythic.lib.util.Closeable;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.event.PlayerCombatEvent; import net.Indyuce.mmocore.api.event.PlayerCombatEvent;
import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.command.PvpModeCommand; import net.Indyuce.mmocore.command.PvpModeCommand;
@ -37,7 +38,7 @@ public class CombatHandler implements Closeable {
// Entering combat // Entering combat
} else { } else {
lastEntry = System.currentTimeMillis(); 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)); Bukkit.getPluginManager().callEvent(new PlayerCombatEvent(player, true));
task = newTask(); task = newTask();
} }
@ -109,7 +110,7 @@ public class CombatHandler implements Closeable {
if (player.isOnline()) { if (player.isOnline()) {
Bukkit.getPluginManager().callEvent(new PlayerCombatEvent(player, false)); Bukkit.getPluginManager().callEvent(new PlayerCombatEvent(player, false));
MMOCore.plugin.configManager.getSimpleMessage("leave-combat").send(player.getPlayer()); ConfigMessage.fromKey("leave-combat").send(player.getPlayer());
} }
} }

View File

@ -49,7 +49,7 @@ public class CastableSkill extends Skill {
// Skill is not usable yet // Skill is not usable yet
if (!playerData.hasUnlockedLevel(skill)) { 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; return false;
} }
@ -59,14 +59,14 @@ public class CastableSkill extends Skill {
// Cooldown check // Cooldown check
if (skillMeta.getCaster().getData().getCooldownMap().isOnCooldown(this)) { 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()); "cooldown", MythicLib.plugin.getMMOConfig().decimal.format(skillMeta.getCaster().getData().getCooldownMap().getCooldown(this))).send(playerData.getPlayer());
return false; return false;
} }
// Mana cost // Mana cost
if (playerData.getMana() < skillMeta.getParameter("mana")) { 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-required", MythicLib.plugin.getMMOConfig().decimal.format((skillMeta.getParameter("mana") - playerData.getMana())),
"mana", playerData.getProfess().getManaDisplay().getName()).send(playerData.getPlayer()); "mana", playerData.getProfess().getManaDisplay().getName()).send(playerData.getPlayer());
return false; return false;
@ -75,7 +75,7 @@ public class CastableSkill extends Skill {
// Stamina cost // Stamina cost
if (playerData.getStamina() < skillMeta.getParameter("stamina")) { 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; return false;
} }

View File

@ -5,11 +5,15 @@ import io.lumine.mythic.lib.api.player.EquipmentSlot;
import io.lumine.mythic.lib.player.PlayerMetadata; import io.lumine.mythic.lib.player.PlayerMetadata;
import io.lumine.mythic.lib.skill.trigger.TriggerMetadata; import io.lumine.mythic.lib.skill.trigger.TriggerMetadata;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.SoundEvent; import net.Indyuce.mmocore.api.SoundEvent;
import net.Indyuce.mmocore.api.event.PlayerKeyPressEvent; import net.Indyuce.mmocore.api.event.PlayerKeyPressEvent;
import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.skill.ClassSkill; 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.GameMode;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -59,11 +63,11 @@ public class SkillBar extends SkillCastingHandler {
} }
public class CustomSkillCastingInstance extends SkillCastingInstance { public class CustomSkillCastingInstance extends SkillCastingInstance {
private final String ready = MMOCore.plugin.configManager.getSimpleMessage("casting.action-bar.ready").message(); private final String ready = ConfigMessage.fromKey("casting.action-bar.ready").asLine();
private final String onCooldown = MMOCore.plugin.configManager.getSimpleMessage("casting.action-bar.on-cooldown").message(); private final String onCooldown = ConfigMessage.fromKey("casting.action-bar.on-cooldown").asLine();
private final String noMana = MMOCore.plugin.configManager.getSimpleMessage("casting.action-bar.no-mana").message(); private final String noMana = ConfigMessage.fromKey("casting.action-bar.no-mana").asLine();
private final String noStamina = MMOCore.plugin.configManager.getSimpleMessage("casting.action-bar.no-stamina").message(); private final String noStamina = ConfigMessage.fromKey("casting.action-bar.no-stamina").asLine();
private final String split = MMOCore.plugin.configManager.getSimpleMessage("casting.split").message(); private final String split = ConfigMessage.fromKey("casting.split").asLine();
private int j; private int j;
@ -113,7 +117,7 @@ public class SkillBar extends SkillCastingHandler {
if (getCaster().leaveSkillCasting()) { if (getCaster().leaveSkillCasting()) {
MMOCore.plugin.soundManager.getSound(SoundEvent.SPELL_CAST_END).playTo(player); 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());
} }
} }

View File

@ -3,6 +3,7 @@ package net.Indyuce.mmocore.listener;
import io.lumine.mythic.lib.MythicLib; import io.lumine.mythic.lib.MythicLib;
import io.lumine.mythic.lib.UtilityMethods; import io.lumine.mythic.lib.UtilityMethods;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.block.BlockInfo; import net.Indyuce.mmocore.api.block.BlockInfo;
import net.Indyuce.mmocore.api.block.VanillaBlockType; import net.Indyuce.mmocore.api.block.VanillaBlockType;
import net.Indyuce.mmocore.api.event.CustomBlockMineEvent; import net.Indyuce.mmocore.api.event.CustomBlockMineEvent;
@ -77,13 +78,11 @@ public class BlockListener implements Listener {
boolean canBreak = true; boolean canBreak = true;
ItemStack item = player.getInventory().getItemInMainHand(); ItemStack item = player.getInventory().getItemInMainHand();
if (!MMOCore.plugin.restrictionManager.checkPermissions(item, info.getBlock())) { if (!MMOCore.plugin.restrictionManager.checkPermissions(item, info.getBlock())) {
MMOCore.plugin.configManager.getSimpleMessage("cannot-break").send(player); ConfigMessage.fromKey("cannot-break").send(player);
canBreak = false; canBreak = false;
} }
/* // Find the block drops
* Find the block drops
*/
boolean conditionsMet = !info.hasDropTable() || info.getDropTable().areConditionsMet(new ConditionInstance(player)); boolean conditionsMet = !info.hasDropTable() || info.getDropTable().areConditionsMet(new ConditionInstance(player));
List<ItemStack> drops = conditionsMet && info.hasDropTable() ? info.getDropTable().collect(new LootBuilder(PlayerData.get(player), 0)) : new ArrayList<>(); List<ItemStack> drops = conditionsMet && info.hasDropTable() ? info.getDropTable().collect(new LootBuilder(PlayerData.get(player), 0)) : new ArrayList<>();

View File

@ -1,8 +1,9 @@
package net.Indyuce.mmocore.listener; package net.Indyuce.mmocore.listener;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.event.social.GuildChatEvent; 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.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
@ -10,8 +11,6 @@ import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent; import org.bukkit.event.player.AsyncPlayerChatEvent;
import net.Indyuce.mmocore.api.player.PlayerData;
public class GuildListener implements Listener { public class GuildListener implements Listener {
@EventHandler(priority = EventPriority.LOW) @EventHandler(priority = EventPriority.LOW)
public void a(AsyncPlayerChatEvent event) { public void a(AsyncPlayerChatEvent event) {
@ -24,12 +23,10 @@ public class GuildListener implements Listener {
event.setCancelled(true); event.setCancelled(true);
/* // Run it sync
* running it in a delayed task is recommended 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()));
Bukkit.getScheduler().scheduleSyncDelayedTask(MMOCore.plugin, () -> { GuildChatEvent called = new GuildChatEvent(data, format.asLine());
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());
Bukkit.getPluginManager().callEvent(called); Bukkit.getPluginManager().callEvent(called);
if (!called.isCancelled()) if (!called.isCancelled())
data.getGuild().forEachMember(member -> { data.getGuild().forEachMember(member -> {

View File

@ -2,12 +2,13 @@ package net.Indyuce.mmocore.listener;
import io.lumine.mythic.lib.api.item.NBTItem; import io.lumine.mythic.lib.api.item.NBTItem;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.waypoint.Waypoint; import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.waypoint.WaypointOption;
import net.Indyuce.mmocore.api.SoundEvent; import net.Indyuce.mmocore.api.SoundEvent;
import net.Indyuce.mmocore.api.player.PlayerData; import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.loot.chest.particle.SmallParticleEffect; import net.Indyuce.mmocore.loot.chest.particle.SmallParticleEffect;
import net.Indyuce.mmocore.manager.InventoryManager; 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.Particle;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
@ -35,7 +36,7 @@ public class WaypointsListener implements Listener {
if (waypoint.hasOption(WaypointOption.UNLOCKABLE) && !data.hasWaypoint(waypoint)) { if (waypoint.hasOption(WaypointOption.UNLOCKABLE) && !data.hasWaypoint(waypoint)) {
data.unlockWaypoint(waypoint); data.unlockWaypoint(waypoint);
new SmallParticleEffect(player, Particle.SPELL_WITCH); 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); MMOCore.plugin.soundManager.getSound(SoundEvent.WARP_UNLOCK).playTo(player);
return; return;
} }
@ -64,7 +65,7 @@ public class WaypointsListener implements Listener {
playerData.unlockWaypoint(waypoint); playerData.unlockWaypoint(waypoint);
event.getItem().setAmount(event.getItem().getAmount() - 1); // Consume item 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());
} }
} }
} }

View File

@ -20,6 +20,6 @@ public class DeathExperienceLoss implements Listener {
int loss = (int) (data.getExperience() * this.loss); int loss = (int) (data.getExperience() * this.loss);
data.setExperience(data.getExperience() - loss); data.setExperience(data.getExperience() - loss);
if (data.isOnline()) 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());
} }
} }

View File

@ -2,10 +2,11 @@ package net.Indyuce.mmocore.listener.profession;
import io.lumine.mythic.lib.version.VersionSound; import io.lumine.mythic.lib.version.VersionSound;
import net.Indyuce.mmocore.MMOCore; import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.event.CustomPlayerFishEvent; 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.player.PlayerData;
import net.Indyuce.mmocore.api.util.MMOCoreUtils; import net.Indyuce.mmocore.api.util.MMOCoreUtils;
import net.Indyuce.mmocore.experience.EXPSource;
import net.Indyuce.mmocore.loot.LootBuilder; import net.Indyuce.mmocore.loot.LootBuilder;
import net.Indyuce.mmocore.loot.fishing.FishingDropItem; import net.Indyuce.mmocore.loot.fishing.FishingDropItem;
import net.Indyuce.mmocore.manager.profession.FishingManager.FishingDropTable; import net.Indyuce.mmocore.manager.profession.FishingManager.FishingDropTable;
@ -50,7 +51,7 @@ public class FishingListener implements Listener {
return; return;
new FishingData(player, hook, table); 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 // Calculate yeet velocity
Item item = hook.getWorld().dropItemNaturally(hook.getLocation(), collect); Item item = hook.getWorld().dropItemNaturally(hook.getLocation(), collect);
MMOCoreUtils.displayIndicator(location.add(0, 1.25, 0), 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(); Vector vec = player.getLocation().subtract(hook.getLocation()).toVector();
vec.setY(vec.getY() * .031 + vec.length() * .05); vec.setY(vec.getY() * .031 + vec.length() * .05);
vec.setX(vec.getX() * .08); vec.setX(vec.getX() * .08);