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 net.Indyuce.mmocore.MMOCore;
import org.bukkit.OfflinePlayer;
import org.bukkit.command.CommandSender;
import net.Indyuce.mmocore.api.player.PlayerData;
import net.md_5.bungee.api.ChatMessageType;
import net.md_5.bungee.api.chat.TextComponent;
import org.apache.commons.lang.Validate;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
public class ConfigMessage {
private final List<String> messages;
private final String key;
private final List<String> lines;
private final boolean papiPlaceholders, actionbar, raw;
public ConfigMessage(String key) {
messages = MMOCore.plugin.configManager.getMessage(key);
private ConfigMessage(@NotNull String key) {
this.key = key;
final Object obj = MMOCore.plugin.configManager.getMessageObject(key);
this.lines = obj == null ? Arrays.asList("<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++) {
String line = messages.get(n);
/**
* Useful for things like indicators or specific lore lines which are
* string tags not requiring more than one string object. If the
* message is empty, an error string is returned. Either way,
* the returned value is non null for better user feedback.
*
* @return First line of message, if it exists.
*/
@NotNull
public String asLine() {
return lines.isEmpty() ? "<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) {
String placeholder = placeholders[j];
if (line.contains("{" + placeholder + "}"))
line = line.replace("{" + placeholder + "}", placeholders[j + 1]);
final String placeholder = String.valueOf(placeholders[j]);
line = line.replace("{" + placeholder + "}", String.valueOf(placeholders[j + 1]));
}
messages.set(n, line);
lines.set(n, line);
}
return this;
}
public void send(CommandSender sender) {
messages.forEach(line -> sender.sendMessage(format(sender, line)));
@Deprecated
public void sendAsJSon(Player player) {
send(player);
}
public void send(Player player) {
for (String line : lines) send(player, line);
}
public void send(Collection<? 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) {
String str = MythicLib.plugin.parseColors(input);
return sender instanceof Player ? MMOCore.plugin.placeholderParser.parse((OfflinePlayer) sender, str) : str;
@NotNull
private String format(@Nullable Player player, String input) {
input = MythicLib.plugin.parseColors(input);
if (!papiPlaceholders || player == null) return input; // Optimization
return MMOCore.plugin.placeholderParser.parse(player, input);
}
@NotNull
public static ConfigMessage fromKey(@NotNull String key, Object... placeholders) {
Validate.notNull(MMOCore.plugin.configManager, "MMOCore has not finished enabling");
final ConfigMessage message = new ConfigMessage(key);
if (placeholders.length != 0) message.addPlaceholders(placeholders);
return message;
}
}

View File

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

View File

@ -357,7 +357,7 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD
/**
* @return If the item is unlocked by the player
* This is used for skills that can be locked & unlocked.
* This is used for skills that can be locked & unlocked.
*/
public boolean hasUnlocked(Unlockable unlockable) {
return unlockable.isUnlockedByDefault() || unlockedItems.contains(unlockable.getUnlockNamespacedKey());
@ -726,7 +726,7 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD
setLastActivity(PlayerActivity.FRIEND_REQUEST);
FriendRequest request = new FriendRequest(this, target);
new ConfigMessage("friend-request").addPlaceholders("player", getPlayer().getName(), "uuid", request.getUniqueId().toString()).sendAsJSon(target.getPlayer());
ConfigMessage.fromKey("friend-request").addPlaceholders("player", getPlayer().getName(), "uuid", request.getUniqueId().toString()).send(target.getPlayer());
MMOCore.plugin.requestManager.registerRequest(request);
}
@ -757,13 +757,13 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD
public void run() {
if (!isOnline() || getPlayer().getLocation().getBlockX() != x || getPlayer().getLocation().getBlockY() != y || getPlayer().getLocation().getBlockZ() != z) {
MMOCore.plugin.soundManager.getSound(SoundEvent.WARP_CANCELLED).playTo(getPlayer());
MMOCore.plugin.configManager.getSimpleMessage("warping-canceled").send(getPlayer());
ConfigMessage.fromKey("warping-canceled").send(getPlayer());
giveStellium(cost, PlayerResourceUpdateEvent.UpdateReason.USE_WAYPOINT);
cancel();
return;
}
MMOCore.plugin.configManager.getSimpleMessage("warping-comencing", "left", String.valueOf((warpTime - t) / 20)).send(getPlayer());
ConfigMessage.fromKey("warping-comencing", "left", String.valueOf((warpTime - t) / 20)).send(getPlayer());
if (hasPerm || t++ >= warpTime) {
getPlayer().teleport(target.getLocation());
getPlayer().addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 20, 1, false, false));
@ -840,7 +840,7 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD
// Experience hologram
if (hologramLocation != null && isOnline())
MMOCoreUtils.displayIndicator(hologramLocation, MMOCore.plugin.configManager.getSimpleMessage("exp-hologram", "exp", MythicLib.plugin.getMMOConfig().decimal.format(event.getExperience())).message());
MMOCoreUtils.displayIndicator(hologramLocation, ConfigMessage.fromKey("exp-hologram", "exp", MythicLib.plugin.getMMOConfig().decimal.format(event.getExperience())).asLine());
experience = Math.max(0, experience + event.getExperience());
@ -864,7 +864,7 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD
if (level > oldLevel) {
Bukkit.getPluginManager().callEvent(new PlayerLevelUpEvent(this, null, oldLevel, level));
if (isOnline()) {
new ConfigMessage("level-up").addPlaceholders("level", String.valueOf(level)).send(getPlayer());
ConfigMessage.fromKey("level-up").addPlaceholders("level", String.valueOf(level)).send(getPlayer());
MMOCore.plugin.soundManager.getSound(SoundEvent.LEVEL_UP).playTo(getPlayer());
new SmallParticleEffect(getPlayer(), Particle.SPELL_INSTANT);
}
@ -1017,7 +1017,7 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD
/**
* @return If the PlayerEnterCastingModeEvent successfully put the player
* into casting mode, otherwise if the event is cancelled, returns false.
* into casting mode, otherwise if the event is cancelled, returns false.
*/
public boolean setSkillCasting() {
Validate.isTrue(!isCasting(), "Player already in casting mode");
@ -1036,7 +1036,7 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD
/**
* @return If player successfully left skill casting i.e the Bukkit
* event has not been cancelled
* event has not been cancelled
*/
public boolean leaveSkillCasting() {
return leaveSkillCasting(false);
@ -1045,7 +1045,7 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD
/**
* @param skipEvent Skip firing the exit event
* @return If player successfully left skill casting i.e the Bukkit
* event has not been cancelled
* event has not been cancelled
*/
public boolean leaveSkillCasting(boolean skipEvent) {
Validate.isTrue(isCasting(), "Player not in casting mode");
@ -1063,8 +1063,13 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD
}
public void displayActionBar(String message) {
displayActionBar(message, false);
}
public void displayActionBar(String message, boolean raw) {
setLastActivity(PlayerActivity.ACTION_BAR_MESSAGE);
getPlayer().spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(message));
if (raw) MythicLib.plugin.getVersion().getWrapper().sendActionBarRaw(getPlayer(), message);
else getPlayer().spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(message));
}
@Deprecated
@ -1219,7 +1224,7 @@ public class PlayerData extends SynchronizedDataHolder implements OfflinePlayerD
* checks if they could potentially upgrade to one of these
*
* @return If the player can change its current class to
* a subclass
* a subclass
*/
@Deprecated
public boolean canChooseSubclass() {

View File

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

View File

@ -1,6 +1,7 @@
package net.Indyuce.mmocore.api.util.input;
import net.Indyuce.mmocore.MMOCore;
import io.lumine.mythic.lib.MythicLib;
import net.Indyuce.mmocore.api.ConfigMessage;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
@ -12,8 +13,6 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.util.Consumer;
import io.lumine.mythic.lib.MythicLib;
@Deprecated
public class AnvilGUI extends PlayerInput {
private final int containerId;
@ -24,7 +23,7 @@ public class AnvilGUI extends PlayerInput {
ItemStack paper = new ItemStack(Material.PAPER);
ItemMeta paperMeta = paper.getItemMeta();
paperMeta.setDisplayName(MMOCore.plugin.configManager.getSimpleMessage("player-input.anvil." + type.getLowerCaseName()).message());
paperMeta.setDisplayName(ConfigMessage.fromKey("player-input.anvil." + type.getLowerCaseName()).asLine());
paper.setItemMeta(paperMeta);
MythicLib.plugin.getVersion().getWrapper().handleInventoryCloseEvent(player);

View File

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

View File

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

View File

@ -3,6 +3,7 @@ package net.Indyuce.mmocore.command;
import io.lumine.mythic.lib.MythicLib;
import io.lumine.mythic.lib.comp.flags.CustomFlag;
import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.command.api.RegisteredCommand;
import net.Indyuce.mmocore.command.api.ToggleableCommand;
@ -26,7 +27,7 @@ public class PvpModeCommand extends RegisteredCommand {
}
if (!sender.hasPermission("mmocore.pvpmode")) {
MMOCore.plugin.configManager.getSimpleMessage("not-enough-perms").send((Player) sender);
ConfigMessage.fromKey("not-enough-perms").send((Player) sender);
return false;
}
@ -34,7 +35,7 @@ public class PvpModeCommand extends RegisteredCommand {
// Command cooldown
if (playerData.getCooldownMap().isOnCooldown(COOLDOWN_KEY)) {
MMOCore.plugin.configManager.getSimpleMessage("pvp-mode.cooldown", "remaining", MythicLib.plugin.getMMOConfig().decimal.format(playerData.getCooldownMap().getCooldown(COOLDOWN_KEY))).send((Player) sender);
ConfigMessage.fromKey("pvp-mode.cooldown", "remaining", MythicLib.plugin.getMMOConfig().decimal.format(playerData.getCooldownMap().getCooldown(COOLDOWN_KEY))).send((Player) sender);
return true;
}
@ -45,12 +46,12 @@ public class PvpModeCommand extends RegisteredCommand {
if (playerData.getCombat().isInPvpMode() &&
MythicLib.plugin.getFlags().isFlagAllowed(playerData.getPlayer(), CustomFlag.PVP_MODE)) {
playerData.getCombat().setInvulnerable(MMOCore.plugin.configManager.pvpModeInvulnerabilityTimeCommand);
MMOCore.plugin.configManager.getSimpleMessage("pvp-mode.toggle.on-invulnerable", "time",
ConfigMessage.fromKey("pvp-mode.toggle.on-invulnerable", "time",
MythicLib.plugin.getMMOConfig().decimal.format(MMOCore.plugin.configManager.pvpModeInvulnerabilityTimeCommand)).send(playerData.getPlayer());
// Just send message otherwise
} else
MMOCore.plugin.configManager.getSimpleMessage("pvp-mode.toggle." + (playerData.getCombat().isInPvpMode() ? "on" : "off") + "-safe").send((Player) sender);
ConfigMessage.fromKey("pvp-mode.toggle." + (playerData.getCombat().isInPvpMode() ? "on" : "off") + "-safe").send((Player) sender);
return true;
}
}

View File

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

View File

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

View File

@ -1,6 +1,8 @@
package net.Indyuce.mmocore.command;
import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.eco.Withdraw;
import net.Indyuce.mmocore.command.api.RegisteredCommand;
import net.Indyuce.mmocore.command.api.ToggleableCommand;
import org.apache.commons.lang.Validate;
@ -11,8 +13,6 @@ import org.bukkit.command.CommandSender;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
import net.Indyuce.mmocore.api.eco.Withdraw;
public class WithdrawCommand extends RegisteredCommand {
public WithdrawCommand(ConfigurationSection config) {
super(config, ToggleableCommand.WITHDRAW);
@ -37,7 +37,7 @@ public class WithdrawCommand extends RegisteredCommand {
amount = Integer.parseInt(amountArgument);
Validate.isTrue(amount >= 0);
} catch (IllegalArgumentException exception) {
sender.sendMessage(MMOCore.plugin.configManager.getSimpleMessage("wrong-number", "arg", "" + args[0]).message());
sender.sendMessage(ConfigMessage.fromKey("wrong-number", "arg", "" + args[0]).asLine());
return true;
}
@ -50,14 +50,14 @@ public class WithdrawCommand extends RegisteredCommand {
int left = (int) MMOCore.plugin.economy.getEconomy().getBalance(player) - amount;
if (left < 0) {
MMOCore.plugin.configManager.getSimpleMessage("not-enough-money", "left", "" + -left).send(player);
ConfigMessage.fromKey("not-enough-money", "left", "" + -left).send(player);
return true;
}
MMOCore.plugin.economy.getEconomy().withdrawPlayer(player, amount);
request.withdrawAlgorythm(amount);
player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 1, 1);
MMOCore.plugin.configManager.getSimpleMessage("withdrew", "worth", "" + amount).send(player);
ConfigMessage.fromKey("withdrew", "worth", amount).send(player);
return true;
}
}

View File

@ -1,20 +1,20 @@
package net.Indyuce.mmocore.command.rpg.admin;
import io.lumine.mythic.lib.command.api.CommandTreeNode;
import io.lumine.mythic.lib.command.api.Parameter;
import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.event.PlayerChangeClassEvent;
import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.api.player.profess.PlayerClass;
import net.Indyuce.mmocore.api.player.profess.SavedClassInformation;
import net.Indyuce.mmocore.command.api.CommandVerbose;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Sound;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import net.Indyuce.mmocore.api.player.profess.SavedClassInformation;
import net.Indyuce.mmocore.command.api.CommandVerbose;
import io.lumine.mythic.lib.command.api.CommandTreeNode;
import io.lumine.mythic.lib.command.api.Parameter;
public class ClassCommandTreeNode extends CommandTreeNode {
public ClassCommandTreeNode(CommandTreeNode parent) {
super(parent, "class");
@ -54,7 +54,7 @@ public class ClassCommandTreeNode extends CommandTreeNode {
(data.hasSavedClass(profess) ? data.getClassInfo(profess)
: new SavedClassInformation(MMOCore.plugin.dataProvider.getDataManager().getDefaultData())).load(profess, data);
if (data.isOnline()) {
MMOCore.plugin.configManager.getSimpleMessage("class-select", "class", profess.getName()).send(data.getPlayer());
ConfigMessage.fromKey("class-select", "class", profess.getName()).send(data.getPlayer());
data.getPlayer().playSound(data.getPlayer().getLocation(), Sound.UI_TOAST_CHALLENGE_COMPLETE, 1, 1);
}

View File

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

View File

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

View File

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

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.WorldGuardFlags;
import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.command.PvpModeCommand;
import java.util.Objects;
@ -64,7 +65,7 @@ public class PvPModeHandler extends MMOCoreFlagHandler {
final boolean pvpEnabled = playerData.getCombat().isInPvpMode() && !playerData.getCombat().canQuitPvpMode() && pvpFlag;
lastMessage = System.currentTimeMillis();
final double remaining = (playerData.getCombat().getLastHit() + MMOCore.plugin.configManager.pvpModeCombatTimeout * 1000.0D - System.currentTimeMillis()) / 1000.0D;
MMOCore.plugin.configManager.getSimpleMessage("pvp-mode.leave.pvp-" + (pvpEnabled ? "allowed" : "denied"), "remaining",
ConfigMessage.fromKey("pvp-mode.leave.pvp-" + (pvpEnabled ? "allowed" : "denied"), "remaining",
(MythicLib.plugin.getMMOConfig()).decimal.format(remaining)).send(playerData.getPlayer());
}
} else if (newPvpMode && !lastPvpMode) {
@ -80,7 +81,7 @@ public class PvPModeHandler extends MMOCoreFlagHandler {
// Send message
if (canSendMessage()) {
lastMessage = System.currentTimeMillis();
MMOCore.plugin.configManager.getSimpleMessage("pvp-mode.enter.pvp-mode-" + (applyInvulnerability ? "on" : "off"), "time",
ConfigMessage.fromKey("pvp-mode.enter.pvp-mode-" + (applyInvulnerability ? "on" : "off"), "time",
MythicLib.plugin.getMMOConfig().decimal.format(MMOCore.plugin.configManager.pvpModeInvulnerabilityTimeRegionChange)).send(playerData.getPlayer());
}
}

View File

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

View File

@ -191,7 +191,7 @@ public class PlayerProfessions {
// Display hologram
if (hologramLocation != null)
MMOCoreUtils.displayIndicator(hologramLocation.add(.5, 1.5, .5), MMOCore.plugin.configManager.getSimpleMessage("exp-hologram", "exp", MythicLib.plugin.getMMOConfig().decimal.format(event.getExperience())).message());
MMOCoreUtils.displayIndicator(hologramLocation.add(.5, 1.5, .5), ConfigMessage.fromKey("exp-hologram", "exp", MythicLib.plugin.getMMOConfig().decimal.format(event.getExperience())).asLine());
exp.put(profession.getId(), Math.max(0, exp.getOrDefault(profession.getId(), 0d) + event.getExperience()));
int level, oldLevel = getLevel(profession);
@ -222,7 +222,7 @@ public class PlayerProfessions {
if (check) {
Bukkit.getPluginManager().callEvent(new PlayerLevelUpEvent(playerData, profession, oldLevel, level));
new SmallParticleEffect(playerData.getPlayer(), Particle.SPELL_INSTANT);
new ConfigMessage("profession-level-up").addPlaceholders("level", String.valueOf(level), "profession", profession.getName())
ConfigMessage.fromKey("profession-level-up").addPlaceholders("level", String.valueOf(level), "profession", profession.getName())
.send(playerData.getPlayer());
MMOCore.plugin.soundManager.getSound(SoundEvent.LEVEL_UP).playTo(playerData.getPlayer());
playerData.getStats().updateStats();
@ -233,7 +233,7 @@ public class PlayerProfessions {
for (int j = 0; j < 20; j++)
bar.append(j == chars ? "" + ChatColor.WHITE + ChatColor.BOLD : "").append("|");
if (playerData.isOnline())
MMOCore.plugin.configManager.getSimpleMessage("exp-notification", "profession", profession.getName(), "progress", bar.toString(), "ratio",
ConfigMessage.fromKey("exp-notification", "profession", profession.getName(), "progress", bar.toString(), "ratio",
MythicLib.plugin.getMMOConfig().decimal.format(exp / needed * 100)).send(playerData.getPlayer());
}
}

View File

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

View File

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

View File

@ -28,10 +28,8 @@ import org.bukkit.persistence.PersistentDataType;
import javax.annotation.Nullable;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
public class ClassSelect extends EditableInventory {
public ClassSelect() {
@ -125,19 +123,19 @@ public class ClassSelect extends EditableInventory {
if (profileRunnable == null && playerData.getClassPoints() < 1) {
MMOCore.plugin.soundManager.getSound(SoundEvent.CANT_SELECT_CLASS).playTo(player);
new ConfigMessage("cant-choose-new-class").send(player);
ConfigMessage.fromKey("cant-choose-new-class").send(player);
return;
}
if (profess.hasOption(ClassOption.NEEDS_PERMISSION) && !player.hasPermission("mmocore.class." + profess.getId().toLowerCase())) {
MMOCore.plugin.soundManager.getSound(SoundEvent.CANT_SELECT_CLASS).playTo(player);
new ConfigMessage("no-permission-for-class").send(player);
ConfigMessage.fromKey("no-permission-for-class").send(player);
return;
}
if (profess.equals(playerData.getProfess())) {
MMOCore.plugin.soundManager.getSound(SoundEvent.CANT_SELECT_CLASS).playTo(player);
MMOCore.plugin.configManager.getSimpleMessage("already-on-class", "class", profess.getName()).send(player);
ConfigMessage.fromKey("already-on-class", "class", profess.getName()).send(player);
return;
}

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

View File

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

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

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

View File

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

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.util.SmartGive;
import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.util.MMOCoreUtils;
import net.Indyuce.mmocore.gui.api.InventoryClickContext;
import net.Indyuce.mmocore.util.item.SimpleItemBuilder;
import net.Indyuce.mmocore.gui.api.PluginInventory;
import net.Indyuce.mmocore.util.item.SimpleItemBuilder;
import net.milkbowl.vault.economy.EconomyResponse;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryCloseEvent;
@ -57,7 +57,7 @@ public class DepositMenu extends PluginInventory {
event.getInventory().clear();
player.closeInventory();
player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 1, 2);
MMOCore.plugin.configManager.getSimpleMessage("deposit", "worth", String.valueOf(deposit)).send(player);
ConfigMessage.fromKey("deposit", "worth", String.valueOf(deposit)).send(player);
return;
}

View File

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

View File

@ -1,14 +1,15 @@
package net.Indyuce.mmocore.gui.social.friend;
import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.player.PlayerActivity;
import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.gui.api.InventoryClickContext;
import net.Indyuce.mmocore.api.util.input.ChatInput;
import net.Indyuce.mmocore.api.util.input.PlayerInput.InputType;
import net.Indyuce.mmocore.api.util.math.format.DelayFormat;
import net.Indyuce.mmocore.gui.api.EditableInventory;
import net.Indyuce.mmocore.gui.api.GeneratedInventory;
import net.Indyuce.mmocore.gui.api.InventoryClickContext;
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
import net.Indyuce.mmocore.gui.api.item.Placeholders;
import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem;
@ -199,7 +200,7 @@ public class EditableFriendList extends EditableInventory {
long remaining = playerData.getActivityTimeOut(PlayerActivity.FRIEND_REQUEST);
if (remaining > 0) {
MMOCore.plugin.configManager.getSimpleMessage("friend-request-cooldown", "cooldown", new DelayFormat().format(remaining))
ConfigMessage.fromKey("friend-request-cooldown", "cooldown", new DelayFormat().format(remaining))
.send(player);
return;
}
@ -207,28 +208,28 @@ public class EditableFriendList extends EditableInventory {
new ChatInput(player, InputType.FRIEND_REQUEST, context.getInventoryHolder(), input -> {
Player target = Bukkit.getPlayer(input);
if (target == null) {
MMOCore.plugin.configManager.getSimpleMessage("not-online-player", "player", input).send(player);
ConfigMessage.fromKey("not-online-player", "player", input).send(player);
player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 1);
open();
return;
}
if (playerData.hasFriend(target.getUniqueId())) {
MMOCore.plugin.configManager.getSimpleMessage("already-friends", "player", target.getName()).send(player);
ConfigMessage.fromKey("already-friends", "player", target.getName()).send(player);
player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 1);
open();
return;
}
if (playerData.getUniqueId().equals(target.getUniqueId())) {
MMOCore.plugin.configManager.getSimpleMessage("cant-request-to-yourself").send(player);
ConfigMessage.fromKey("cant-request-to-yourself").send(player);
player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 1);
open();
return;
}
playerData.sendFriendRequest(PlayerData.get(target));
MMOCore.plugin.configManager.getSimpleMessage("sent-friend-request", "player", target.getName()).send(player);
ConfigMessage.fromKey("sent-friend-request", "player", target.getName()).send(player);
player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1, 1);
open();
});

View File

@ -1,13 +1,13 @@
package net.Indyuce.mmocore.gui.social.friend;
import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.gui.api.InventoryClickContext;
import net.Indyuce.mmocore.gui.api.GeneratedInventory;
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
import net.Indyuce.mmocore.manager.data.OfflinePlayerData;
import net.Indyuce.mmocore.gui.api.EditableInventory;
import net.Indyuce.mmocore.gui.api.GeneratedInventory;
import net.Indyuce.mmocore.gui.api.InventoryClickContext;
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
import net.Indyuce.mmocore.gui.api.item.Placeholders;
import net.Indyuce.mmocore.manager.data.OfflinePlayerData;
import org.bukkit.OfflinePlayer;
import org.bukkit.Sound;
import org.bukkit.configuration.ConfigurationSection;
@ -52,7 +52,7 @@ public class EditableFriendRemoval extends EditableInventory {
playerData.removeFriend(friend.getUniqueId());
OfflinePlayerData.get(friend.getUniqueId()).removeFriend(playerData.getUniqueId());
player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 1);
MMOCore.plugin.configManager.getSimpleMessage("no-longer-friends", "unfriend", friend.getName()).send(player);
ConfigMessage.fromKey("no-longer-friends", "unfriend", friend.getName()).send(player);
last.open();
}

View File

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

View File

@ -1,16 +1,17 @@
package net.Indyuce.mmocore.gui.social.guild;
import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.gui.api.InventoryClickContext;
import net.Indyuce.mmocore.manager.InventoryManager;
import net.Indyuce.mmocore.manager.data.GuildDataManager;
import net.Indyuce.mmocore.api.util.input.ChatInput;
import net.Indyuce.mmocore.api.util.input.PlayerInput;
import net.Indyuce.mmocore.gui.api.EditableInventory;
import net.Indyuce.mmocore.gui.api.GeneratedInventory;
import net.Indyuce.mmocore.gui.api.InventoryClickContext;
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem;
import net.Indyuce.mmocore.gui.api.EditableInventory;
import net.Indyuce.mmocore.manager.InventoryManager;
import net.Indyuce.mmocore.manager.data.GuildDataManager;
import org.bukkit.Sound;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
@ -78,13 +79,13 @@ public class EditableGuildCreation extends EditableInventory {
if(!MMOCore.plugin.dataProvider.getGuildManager().isRegistered(input))
return true;
else
reason = MMOCore.plugin.configManager.getSimpleMessage("guild-creation.reasons.already-taken").message();
reason = ConfigMessage.fromKey("guild-creation.reasons.already-taken").asLine();
else
reason = MMOCore.plugin.configManager.getSimpleMessage("guild-creation.reasons.invalid-characters").message();
reason = ConfigMessage.fromKey("guild-creation.reasons.invalid-characters").asLine();
else
reason = MMOCore.plugin.configManager.getSimpleMessage("guild-creation.reasons.invalid-length", "min", "" + rules.getMin(), "max", "" + rules.getMax()).message();
reason = ConfigMessage.fromKey("guild-creation.reasons.invalid-length", "min", "" + rules.getMin(), "max", "" + rules.getMax()).asLine();
MMOCore.plugin.configManager.getSimpleMessage("guild-creation.failed", "reason", reason).send(player);
ConfigMessage.fromKey("guild-creation.failed", "reason", reason).send(player);
return false;
}
}

View File

@ -1,17 +1,18 @@
package net.Indyuce.mmocore.gui.social.guild;
import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.api.util.math.format.DelayFormat;
import net.Indyuce.mmocore.gui.api.InventoryClickContext;
import net.Indyuce.mmocore.api.util.input.ChatInput;
import net.Indyuce.mmocore.api.util.input.PlayerInput;
import net.Indyuce.mmocore.api.util.math.format.DelayFormat;
import net.Indyuce.mmocore.gui.api.EditableInventory;
import net.Indyuce.mmocore.gui.api.GeneratedInventory;
import net.Indyuce.mmocore.gui.api.InventoryClickContext;
import net.Indyuce.mmocore.gui.api.item.InventoryItem;
import net.Indyuce.mmocore.gui.api.item.Placeholders;
import net.Indyuce.mmocore.gui.api.item.SimplePlaceholderItem;
import net.Indyuce.mmocore.manager.data.OfflinePlayerData;
import net.Indyuce.mmocore.gui.api.EditableInventory;
import net.Indyuce.mmocore.gui.api.item.Placeholders;
import org.apache.commons.lang.Validate;
import org.bukkit.*;
import org.bukkit.configuration.ConfigurationSection;
@ -196,7 +197,7 @@ public class EditableGuildView extends EditableInventory {
/*
* if (playerData.getGuild().getMembers().count() >= max) {
* MMOCore.plugin.configManager.getSimpleMessage("guild-is-full").send(player);
* ConfigMessage.fromKey("guild-is-full").send(player);
* player.playSound(player.getLocation(),
* Sound.ENTITY_VILLAGER_NO, 1, 1); return; }
*/
@ -204,7 +205,7 @@ public class EditableGuildView extends EditableInventory {
new ChatInput(player, PlayerInput.InputType.GUILD_INVITE, context.getInventoryHolder(), input -> {
Player target = Bukkit.getPlayer(input);
if (target == null) {
MMOCore.plugin.configManager.getSimpleMessage("not-online-player", "player", input).send(player);
ConfigMessage.fromKey("not-online-player", "player", input).send(player);
player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 1);
open();
return;
@ -212,21 +213,21 @@ public class EditableGuildView extends EditableInventory {
long remaining = playerData.getGuild().getLastInvite(target) + 60 * 2 * 1000 - System.currentTimeMillis();
if (remaining > 0) {
MMOCore.plugin.configManager.getSimpleMessage("guild-invite-cooldown", "player", target.getName(), "cooldown", new DelayFormat().format(remaining)).send(player);
ConfigMessage.fromKey("guild-invite-cooldown", "player", target.getName(), "cooldown", new DelayFormat().format(remaining)).send(player);
open();
return;
}
PlayerData targetData = PlayerData.get(target);
if (playerData.getGuild().hasMember(targetData.getUniqueId())) {
MMOCore.plugin.configManager.getSimpleMessage("already-in-guild", "player", target.getName()).send(player);
ConfigMessage.fromKey("already-in-guild", "player", target.getName()).send(player);
player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, 1);
open();
return;
}
playerData.getGuild().sendGuildInvite(playerData, targetData);
MMOCore.plugin.configManager.getSimpleMessage("sent-guild-invite", "player", target.getName()).send(player);
ConfigMessage.fromKey("sent-guild-invite", "player", target.getName()).send(player);
player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1, 1);
open();
});
@ -245,7 +246,7 @@ public class EditableGuildView extends EditableInventory {
return;
playerData.getGuild().removeMember(target.getUniqueId());
MMOCore.plugin.configManager.getSimpleMessage("kick-from-guild", "player", target.getName()).send(player);
ConfigMessage.fromKey("kick-from-guild", "player", target.getName()).send(player);
player.playSound(player.getLocation(), Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 1, 1);
}
}

View File

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

View File

@ -1,6 +1,5 @@
package net.Indyuce.mmocore.guild.provided;
import io.lumine.mythic.lib.comp.interaction.relation.Relationship;
import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.player.PlayerData;
@ -82,7 +81,7 @@ public class Guild implements AbstractGuild {
// Transfer ownership
if (owner.equals(uuid)) {
owner = members.stream().findAny().get();
MMOCore.plugin.configManager.getSimpleMessage("transfer-guild-ownership").send(Bukkit.getPlayer(owner));
ConfigMessage.fromKey("transfer-guild-ownership").send(Bukkit.getPlayer(owner));
}
}
@ -112,7 +111,7 @@ public class Guild implements AbstractGuild {
public void sendGuildInvite(PlayerData inviter, PlayerData target) {
invites.put(target.getUniqueId(), System.currentTimeMillis());
Request request = new GuildInvite(this, inviter, target);
new ConfigMessage("guild-invite").addPlaceholders("player", inviter.getPlayer().getName(), "uuid", request.getUniqueId().toString()).sendAsJSon(target.getPlayer());
ConfigMessage.fromKey("guild-invite").addPlaceholders("player", inviter.getPlayer().getName(), "uuid", request.getUniqueId().toString()).send(target.getPlayer());
MMOCore.plugin.requestManager.registerRequest(request);
}

View File

@ -1,9 +1,9 @@
package net.Indyuce.mmocore.guild.provided;
import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.manager.InventoryManager;
import net.Indyuce.mmocore.api.player.social.Request;
import net.Indyuce.mmocore.manager.InventoryManager;
import org.bukkit.Bukkit;
public class GuildInvite extends Request {
@ -29,10 +29,10 @@ public class GuildInvite extends Request {
guild.removeLastInvite(getCreator().getPlayer());
guild.forEachMember(member -> {
if (Bukkit.getPlayer(member) != null) {
MMOCore.plugin.configManager.getSimpleMessage("guild-joined-other", "player",
ConfigMessage.fromKey("guild-joined-other", "player",
getTarget().getPlayer().getName()).send(Bukkit.getPlayer(member));
MMOCore.plugin.configManager.getSimpleMessage("guild-joined", "owner",
ConfigMessage.fromKey("guild-joined", "owner",
Bukkit.getPlayer(guild.getOwner()).getName()).send(getTarget().getPlayer());
}
}

View File

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

View File

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

View File

@ -1,9 +1,10 @@
package net.Indyuce.mmocore.party.provided;
import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.manager.InventoryManager;
import net.Indyuce.mmocore.api.player.social.Request;
import net.Indyuce.mmocore.manager.InventoryManager;
public class PartyInvite extends Request {
private final Party party;
@ -26,17 +27,17 @@ public class PartyInvite extends Request {
@Override
public void whenAccepted() {
if (party.getMembers().size() >= MMOCore.plugin.configManager.maxPartyPlayers) {
MMOCore.plugin.configManager.getSimpleMessage("party-is-full").send(getTarget().getPlayer());
ConfigMessage.fromKey("party-is-full").send(getTarget().getPlayer());
return;
}
if (getCreator().isOnline())
party.removeLastInvite(getCreator().getPlayer());
party.getMembers().forEach(member -> {
if (member.isOnline())
MMOCore.plugin.configManager.getSimpleMessage("party-joined-other", "player", getTarget().getPlayer().getName()).send(member.getPlayer());
ConfigMessage.fromKey("party-joined-other", "player", getTarget().getPlayer().getName()).send(member.getPlayer());
});
if (party.getOwner().isOnline())
MMOCore.plugin.configManager.getSimpleMessage("party-joined", "owner", party.getOwner().getPlayer().getName()).send(getTarget().getPlayer());
ConfigMessage.fromKey("party-joined", "owner", party.getOwner().getPlayer().getName()).send(getTarget().getPlayer());
party.addMember(getTarget());
InventoryManager.PARTY_VIEW.newInventory(getTarget()).open();
}

View File

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

View File

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

View File

@ -49,7 +49,7 @@ public class CastableSkill extends Skill {
// Skill is not usable yet
if (!playerData.hasUnlockedLevel(skill)) {
if (loud) MMOCore.plugin.configManager.getSimpleMessage("skill-level-not-met").send(playerData.getPlayer());
if (loud) ConfigMessage.fromKey("skill-level-not-met").send(playerData.getPlayer());
return false;
}
@ -59,14 +59,14 @@ public class CastableSkill extends Skill {
// Cooldown check
if (skillMeta.getCaster().getData().getCooldownMap().isOnCooldown(this)) {
if (loud) MMOCore.plugin.configManager.getSimpleMessage("casting.on-cooldown",
if (loud) ConfigMessage.fromKey("casting.on-cooldown",
"cooldown", MythicLib.plugin.getMMOConfig().decimal.format(skillMeta.getCaster().getData().getCooldownMap().getCooldown(this))).send(playerData.getPlayer());
return false;
}
// Mana cost
if (playerData.getMana() < skillMeta.getParameter("mana")) {
if (loud) MMOCore.plugin.configManager.getSimpleMessage("casting.no-mana",
if (loud) ConfigMessage.fromKey("casting.no-mana",
"mana-required", MythicLib.plugin.getMMOConfig().decimal.format((skillMeta.getParameter("mana") - playerData.getMana())),
"mana", playerData.getProfess().getManaDisplay().getName()).send(playerData.getPlayer());
return false;
@ -75,7 +75,7 @@ public class CastableSkill extends Skill {
// Stamina cost
if (playerData.getStamina() < skillMeta.getParameter("stamina")) {
if (loud) MMOCore.plugin.configManager.getSimpleMessage("casting.no-stamina").send(playerData.getPlayer());
if (loud) ConfigMessage.fromKey("casting.no-stamina").send(playerData.getPlayer());
return false;
}

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

View File

@ -3,6 +3,7 @@ package net.Indyuce.mmocore.listener;
import io.lumine.mythic.lib.MythicLib;
import io.lumine.mythic.lib.UtilityMethods;
import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.block.BlockInfo;
import net.Indyuce.mmocore.api.block.VanillaBlockType;
import net.Indyuce.mmocore.api.event.CustomBlockMineEvent;
@ -77,13 +78,11 @@ public class BlockListener implements Listener {
boolean canBreak = true;
ItemStack item = player.getInventory().getItemInMainHand();
if (!MMOCore.plugin.restrictionManager.checkPermissions(item, info.getBlock())) {
MMOCore.plugin.configManager.getSimpleMessage("cannot-break").send(player);
ConfigMessage.fromKey("cannot-break").send(player);
canBreak = false;
}
/*
* Find the block drops
*/
// Find the block drops
boolean conditionsMet = !info.hasDropTable() || info.getDropTable().areConditionsMet(new ConditionInstance(player));
List<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;
import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.event.social.GuildChatEvent;
import net.Indyuce.mmocore.manager.ConfigManager;
import net.Indyuce.mmocore.api.player.PlayerData;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
@ -10,8 +11,6 @@ import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import net.Indyuce.mmocore.api.player.PlayerData;
public class GuildListener implements Listener {
@EventHandler(priority = EventPriority.LOW)
public void a(AsyncPlayerChatEvent event) {
@ -24,12 +23,10 @@ public class GuildListener implements Listener {
event.setCancelled(true);
/*
* running it in a delayed task is recommended
*/
Bukkit.getScheduler().scheduleSyncDelayedTask(MMOCore.plugin, () -> {
ConfigManager.SimpleMessage format = MMOCore.plugin.configManager.getSimpleMessage("guild-chat", "player", data.getPlayer().getName(), "tag", data.getGuild().getTag(), "message", event.getMessage().substring(MMOCore.plugin.dataProvider.getGuildManager().getConfig().getPrefix().length()));
GuildChatEvent called = new GuildChatEvent(data, format.message());
// Run it sync
Bukkit.getScheduler().runTask(MMOCore.plugin, () -> {
ConfigMessage format = ConfigMessage.fromKey("guild-chat", "player", data.getPlayer().getName(), "tag", data.getGuild().getTag(), "message", event.getMessage().substring(MMOCore.plugin.dataProvider.getGuildManager().getConfig().getPrefix().length()));
GuildChatEvent called = new GuildChatEvent(data, format.asLine());
Bukkit.getPluginManager().callEvent(called);
if (!called.isCancelled())
data.getGuild().forEachMember(member -> {

View File

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

View File

@ -20,6 +20,6 @@ public class DeathExperienceLoss implements Listener {
int loss = (int) (data.getExperience() * this.loss);
data.setExperience(data.getExperience() - loss);
if (data.isOnline())
new ConfigMessage("death-exp-loss").addPlaceholders("loss", "" + loss).send(data.getPlayer());
ConfigMessage.fromKey("death-exp-loss").addPlaceholders("loss", "" + loss).send(data.getPlayer());
}
}

View File

@ -2,10 +2,11 @@ package net.Indyuce.mmocore.listener.profession;
import io.lumine.mythic.lib.version.VersionSound;
import net.Indyuce.mmocore.MMOCore;
import net.Indyuce.mmocore.api.ConfigMessage;
import net.Indyuce.mmocore.api.event.CustomPlayerFishEvent;
import net.Indyuce.mmocore.experience.EXPSource;
import net.Indyuce.mmocore.api.player.PlayerData;
import net.Indyuce.mmocore.api.util.MMOCoreUtils;
import net.Indyuce.mmocore.experience.EXPSource;
import net.Indyuce.mmocore.loot.LootBuilder;
import net.Indyuce.mmocore.loot.fishing.FishingDropItem;
import net.Indyuce.mmocore.manager.profession.FishingManager.FishingDropTable;
@ -50,7 +51,7 @@ public class FishingListener implements Listener {
return;
new FishingData(player, hook, table);
MMOCoreUtils.displayIndicator(hook.getLocation().add(0, 1.25, 0), MMOCore.plugin.configManager.getSimpleMessage("caught-fish").message());
MMOCoreUtils.displayIndicator(hook.getLocation().add(0, 1.25, 0), ConfigMessage.fromKey("caught-fish").asLine());
}
}
@ -186,7 +187,7 @@ public class FishingListener implements Listener {
// Calculate yeet velocity
Item item = hook.getWorld().dropItemNaturally(hook.getLocation(), collect);
MMOCoreUtils.displayIndicator(location.add(0, 1.25, 0),
MMOCore.plugin.configManager.getSimpleMessage("fish-out-water" + (isCriticalFish() ? "-crit" : "")).message());
ConfigMessage.fromKey("fish-out-water" + (isCriticalFish() ? "-crit" : "")).asLine());
Vector vec = player.getLocation().subtract(hook.getLocation()).toVector();
vec.setY(vec.getY() * .031 + vec.length() * .05);
vec.setX(vec.getX() * .08);