Crowdin support

This commit is contained in:
Jules 2023-01-25 21:24:26 +01:00
parent 56bc8ba551
commit 573a957446
64 changed files with 604 additions and 2292 deletions

View File

@ -1,90 +1,97 @@
package net.Indyuce.mmoitems.api; package net.Indyuce.mmoitems.api;
import net.Indyuce.mmoitems.MMOItems;
import net.Indyuce.mmoitems.api.item.ItemReference;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.plugin.Plugin;
import org.jetbrains.annotations.NotNull;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.logging.Level; import java.util.logging.Level;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.plugin.Plugin;
import net.Indyuce.mmoitems.MMOItems;
import net.Indyuce.mmoitems.api.item.ItemReference;
public class ConfigFile { public class ConfigFile {
private final Plugin plugin; private final Plugin plugin;
private final String path, name; private final String path, name;
private final boolean exists; private final boolean exists;
private final FileConfiguration config;
private final FileConfiguration config; public ConfigFile(String name) {
this(MMOItems.plugin, "", name);
}
public ConfigFile(String name) { public ConfigFile(Plugin plugin, String name) {
this(MMOItems.plugin, "", name); this(plugin, "", name);
} }
public ConfigFile(Plugin plugin, String name) { public ConfigFile(String path, String name) {
this(plugin, "", name); this(MMOItems.plugin, path, name);
} }
public ConfigFile(String path, String name) { /**
this(MMOItems.plugin, path, name); * Configuration file path is /server_root/plugins/plugin_name/path/name
} *
* @param plugin Plugin owning config file
* @param path Folder path
* @param name Config file name
*/
public ConfigFile(Plugin plugin, String path, String name) {
this.plugin = plugin;
this.path = path;
this.name = name;
public ConfigFile(Plugin plugin, String path, String name) { final File file = new File(plugin.getDataFolder() + path, name + ".yml");
this.plugin = plugin; exists = file.exists();
this.path = path; config = YamlConfiguration.loadConfiguration(file);
this.name = name; }
File file = new File(plugin.getDataFolder() + path, name + ".yml"); @NotNull
exists = file.exists(); public FileConfiguration getConfig() {
config = YamlConfiguration.loadConfiguration(file); return config;
} }
public FileConfiguration getConfig() { public boolean exists() {
return config; return exists;
} }
public boolean exists() { public void save() {
return exists; try {
} config.save(new File(plugin.getDataFolder() + path, name + ".yml"));
} catch (IOException exception) {
MMOItems.plugin.getLogger().log(Level.SEVERE, "Could not save " + name + ".yml: " + exception.getMessage());
}
}
public void save() { @SuppressWarnings("ResultOfMethodCallIgnored")
try { public void setup() {
config.save(new File(plugin.getDataFolder() + path, name + ".yml")); try {
} catch (IOException exception) { if (!new File(plugin.getDataFolder() + path).exists())
MMOItems.plugin.getLogger().log(Level.SEVERE, "Could not save " + name + ".yml: " + exception.getMessage()); new File(plugin.getDataFolder() + path).mkdir();
}
}
@SuppressWarnings("ResultOfMethodCallIgnored") if (!new File(plugin.getDataFolder() + path, name + ".yml").exists()) {
public void setup() { new File(plugin.getDataFolder() + path, name + ".yml").createNewFile();
try { }
if (!new File(plugin.getDataFolder() + path).exists()) } catch (IOException exception) {
new File(plugin.getDataFolder() + path).mkdir(); MMOItems.plugin.getLogger().log(Level.SEVERE, "Could not generate " + name + ".yml: " + exception.getMessage());
}
}
if (!new File(plugin.getDataFolder() + path, name + ".yml").exists()) { public void registerTemplateEdition(ItemReference ref) {
new File(plugin.getDataFolder() + path, name + ".yml").createNewFile();
}
} catch (IOException exception) {
MMOItems.plugin.getLogger().log(Level.SEVERE, "Could not generate " + name + ".yml: " + exception.getMessage());
}
}
public void registerTemplateEdition(ItemReference ref) { /*
* saves the changes before asking for a template update
*/
save();
/* /*
* saves the changes before asking for a template update * goes for a template update once the change has been saved. this
*/ * simply unloads the currently saved template and reloads it
save(); */
MMOItems.plugin.getTemplates().requestTemplateUpdate(ref.getType(), ref.getId());
/*
* goes for a template update once the change has been saved. this
* simply unloads the currently saved template and reloads it
*/
MMOItems.plugin.getTemplates().requestTemplateUpdate(ref.getType(), ref.getId());
/* update the database UUID for the dynamic item updater /* update the database UUID for the dynamic item updater
if (MMOItems.plugin.getUpdater().hasData(ref)) if (MMOItems.plugin.getUpdater().hasData(ref))
MMOItems.plugin.getUpdater().getData(ref).setUniqueId(UUID.randomUUID());*/ MMOItems.plugin.getUpdater().getData(ref).setUniqueId(UUID.randomUUID());*/
} }
} }

View File

@ -1,7 +1,7 @@
package net.Indyuce.mmoitems.api; package net.Indyuce.mmoitems.api;
import io.lumine.mythic.lib.UtilityMethods; import io.lumine.mythic.lib.UtilityMethods;
import io.lumine.mythic.lib.comp.target.InteractionType; import io.lumine.mythic.lib.comp.interaction.InteractionType;
import io.lumine.mythic.lib.damage.AttackMetadata; import io.lumine.mythic.lib.damage.AttackMetadata;
import io.lumine.mythic.lib.damage.DamageType; import io.lumine.mythic.lib.damage.DamageType;
import io.lumine.mythic.lib.version.VersionSound; import io.lumine.mythic.lib.version.VersionSound;

View File

@ -3,7 +3,7 @@ package net.Indyuce.mmoitems.api.interaction.weapon.untargeted;
import io.lumine.mythic.lib.UtilityMethods; import io.lumine.mythic.lib.UtilityMethods;
import io.lumine.mythic.lib.api.item.NBTItem; import io.lumine.mythic.lib.api.item.NBTItem;
import io.lumine.mythic.lib.api.player.EquipmentSlot; import io.lumine.mythic.lib.api.player.EquipmentSlot;
import io.lumine.mythic.lib.comp.target.InteractionType; import io.lumine.mythic.lib.comp.interaction.InteractionType;
import io.lumine.mythic.lib.damage.DamageType; import io.lumine.mythic.lib.damage.DamageType;
import io.lumine.mythic.lib.player.PlayerMetadata; import io.lumine.mythic.lib.player.PlayerMetadata;
import io.lumine.mythic.lib.version.VersionSound; import io.lumine.mythic.lib.version.VersionSound;

View File

@ -3,7 +3,7 @@ package net.Indyuce.mmoitems.api.interaction.weapon.untargeted;
import io.lumine.mythic.lib.UtilityMethods; import io.lumine.mythic.lib.UtilityMethods;
import io.lumine.mythic.lib.api.item.NBTItem; import io.lumine.mythic.lib.api.item.NBTItem;
import io.lumine.mythic.lib.api.player.EquipmentSlot; import io.lumine.mythic.lib.api.player.EquipmentSlot;
import io.lumine.mythic.lib.comp.target.InteractionType; import io.lumine.mythic.lib.comp.interaction.InteractionType;
import io.lumine.mythic.lib.damage.DamageType; import io.lumine.mythic.lib.damage.DamageType;
import io.lumine.mythic.lib.player.PlayerMetadata; import io.lumine.mythic.lib.player.PlayerMetadata;
import io.lumine.mythic.lib.util.RayTrace; import io.lumine.mythic.lib.util.RayTrace;

View File

@ -3,7 +3,7 @@ package net.Indyuce.mmoitems.api.interaction.weapon.untargeted;
import io.lumine.mythic.lib.UtilityMethods; import io.lumine.mythic.lib.UtilityMethods;
import io.lumine.mythic.lib.api.item.NBTItem; import io.lumine.mythic.lib.api.item.NBTItem;
import io.lumine.mythic.lib.api.player.EquipmentSlot; import io.lumine.mythic.lib.api.player.EquipmentSlot;
import io.lumine.mythic.lib.comp.target.InteractionType; import io.lumine.mythic.lib.comp.interaction.InteractionType;
import io.lumine.mythic.lib.damage.DamageType; import io.lumine.mythic.lib.damage.DamageType;
import io.lumine.mythic.lib.player.PlayerMetadata; import io.lumine.mythic.lib.player.PlayerMetadata;
import io.lumine.mythic.lib.util.RayTrace; import io.lumine.mythic.lib.util.RayTrace;

View File

@ -3,7 +3,7 @@ package net.Indyuce.mmoitems.api.interaction.weapon.untargeted;
import io.lumine.mythic.lib.UtilityMethods; import io.lumine.mythic.lib.UtilityMethods;
import io.lumine.mythic.lib.api.item.NBTItem; import io.lumine.mythic.lib.api.item.NBTItem;
import io.lumine.mythic.lib.api.player.EquipmentSlot; import io.lumine.mythic.lib.api.player.EquipmentSlot;
import io.lumine.mythic.lib.comp.target.InteractionType; import io.lumine.mythic.lib.comp.interaction.InteractionType;
import io.lumine.mythic.lib.damage.DamageType; import io.lumine.mythic.lib.damage.DamageType;
import io.lumine.mythic.lib.player.PlayerMetadata; import io.lumine.mythic.lib.player.PlayerMetadata;
import io.lumine.mythic.lib.util.RayTrace; import io.lumine.mythic.lib.util.RayTrace;

View File

@ -2,7 +2,7 @@ package net.Indyuce.mmoitems.api.interaction.weapon.untargeted.lute;
import io.lumine.mythic.lib.UtilityMethods; import io.lumine.mythic.lib.UtilityMethods;
import io.lumine.mythic.lib.api.item.NBTItem; import io.lumine.mythic.lib.api.item.NBTItem;
import io.lumine.mythic.lib.comp.target.InteractionType; import io.lumine.mythic.lib.comp.interaction.InteractionType;
import io.lumine.mythic.lib.damage.DamageType; import io.lumine.mythic.lib.damage.DamageType;
import io.lumine.mythic.lib.player.PlayerMetadata; import io.lumine.mythic.lib.player.PlayerMetadata;
import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.MMOItems;

View File

@ -2,7 +2,7 @@ package net.Indyuce.mmoitems.api.interaction.weapon.untargeted.lute;
import io.lumine.mythic.lib.UtilityMethods; import io.lumine.mythic.lib.UtilityMethods;
import io.lumine.mythic.lib.api.item.NBTItem; import io.lumine.mythic.lib.api.item.NBTItem;
import io.lumine.mythic.lib.comp.target.InteractionType; import io.lumine.mythic.lib.comp.interaction.InteractionType;
import io.lumine.mythic.lib.damage.DamageType; import io.lumine.mythic.lib.damage.DamageType;
import io.lumine.mythic.lib.player.PlayerMetadata; import io.lumine.mythic.lib.player.PlayerMetadata;
import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.MMOItems;

View File

@ -2,7 +2,7 @@ package net.Indyuce.mmoitems.api.interaction.weapon.untargeted.lute;
import io.lumine.mythic.lib.UtilityMethods; import io.lumine.mythic.lib.UtilityMethods;
import io.lumine.mythic.lib.api.item.NBTItem; import io.lumine.mythic.lib.api.item.NBTItem;
import io.lumine.mythic.lib.comp.target.InteractionType; import io.lumine.mythic.lib.comp.interaction.InteractionType;
import io.lumine.mythic.lib.damage.DamageType; import io.lumine.mythic.lib.damage.DamageType;
import io.lumine.mythic.lib.player.PlayerMetadata; import io.lumine.mythic.lib.player.PlayerMetadata;
import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.MMOItems;

View File

@ -2,7 +2,7 @@ package net.Indyuce.mmoitems.api.interaction.weapon.untargeted.lute;
import io.lumine.mythic.lib.UtilityMethods; import io.lumine.mythic.lib.UtilityMethods;
import io.lumine.mythic.lib.api.item.NBTItem; import io.lumine.mythic.lib.api.item.NBTItem;
import io.lumine.mythic.lib.comp.target.InteractionType; import io.lumine.mythic.lib.comp.interaction.InteractionType;
import io.lumine.mythic.lib.damage.DamageType; import io.lumine.mythic.lib.damage.DamageType;
import io.lumine.mythic.lib.player.PlayerMetadata; import io.lumine.mythic.lib.player.PlayerMetadata;
import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.MMOItems;

View File

@ -2,7 +2,7 @@ package net.Indyuce.mmoitems.api.interaction.weapon.untargeted.lute;
import io.lumine.mythic.lib.UtilityMethods; import io.lumine.mythic.lib.UtilityMethods;
import io.lumine.mythic.lib.api.item.NBTItem; import io.lumine.mythic.lib.api.item.NBTItem;
import io.lumine.mythic.lib.comp.target.InteractionType; import io.lumine.mythic.lib.comp.interaction.InteractionType;
import io.lumine.mythic.lib.damage.DamageType; import io.lumine.mythic.lib.damage.DamageType;
import io.lumine.mythic.lib.player.PlayerMetadata; import io.lumine.mythic.lib.player.PlayerMetadata;
import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.MMOItems;

View File

@ -3,7 +3,7 @@ package net.Indyuce.mmoitems.api.interaction.weapon.untargeted.staff;
import io.lumine.mythic.lib.UtilityMethods; import io.lumine.mythic.lib.UtilityMethods;
import io.lumine.mythic.lib.api.item.NBTItem; import io.lumine.mythic.lib.api.item.NBTItem;
import io.lumine.mythic.lib.api.player.EquipmentSlot; import io.lumine.mythic.lib.api.player.EquipmentSlot;
import io.lumine.mythic.lib.comp.target.InteractionType; import io.lumine.mythic.lib.comp.interaction.InteractionType;
import io.lumine.mythic.lib.damage.DamageType; import io.lumine.mythic.lib.damage.DamageType;
import io.lumine.mythic.lib.player.PlayerMetadata; import io.lumine.mythic.lib.player.PlayerMetadata;
import io.lumine.mythic.lib.util.RayTrace; import io.lumine.mythic.lib.util.RayTrace;

View File

@ -3,7 +3,7 @@ package net.Indyuce.mmoitems.api.interaction.weapon.untargeted.staff;
import io.lumine.mythic.lib.UtilityMethods; import io.lumine.mythic.lib.UtilityMethods;
import io.lumine.mythic.lib.api.item.NBTItem; import io.lumine.mythic.lib.api.item.NBTItem;
import io.lumine.mythic.lib.api.player.EquipmentSlot; import io.lumine.mythic.lib.api.player.EquipmentSlot;
import io.lumine.mythic.lib.comp.target.InteractionType; import io.lumine.mythic.lib.comp.interaction.InteractionType;
import io.lumine.mythic.lib.damage.DamageType; import io.lumine.mythic.lib.damage.DamageType;
import io.lumine.mythic.lib.player.PlayerMetadata; import io.lumine.mythic.lib.player.PlayerMetadata;
import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.MMOItems;

View File

@ -3,7 +3,7 @@ package net.Indyuce.mmoitems.api.interaction.weapon.untargeted.staff;
import io.lumine.mythic.lib.UtilityMethods; import io.lumine.mythic.lib.UtilityMethods;
import io.lumine.mythic.lib.api.item.NBTItem; import io.lumine.mythic.lib.api.item.NBTItem;
import io.lumine.mythic.lib.api.player.EquipmentSlot; import io.lumine.mythic.lib.api.player.EquipmentSlot;
import io.lumine.mythic.lib.comp.target.InteractionType; import io.lumine.mythic.lib.comp.interaction.InteractionType;
import io.lumine.mythic.lib.damage.DamageType; import io.lumine.mythic.lib.damage.DamageType;
import io.lumine.mythic.lib.player.PlayerMetadata; import io.lumine.mythic.lib.player.PlayerMetadata;
import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.MMOItems;

View File

@ -3,7 +3,7 @@ package net.Indyuce.mmoitems.api.interaction.weapon.untargeted.staff;
import io.lumine.mythic.lib.UtilityMethods; import io.lumine.mythic.lib.UtilityMethods;
import io.lumine.mythic.lib.api.item.NBTItem; import io.lumine.mythic.lib.api.item.NBTItem;
import io.lumine.mythic.lib.api.player.EquipmentSlot; import io.lumine.mythic.lib.api.player.EquipmentSlot;
import io.lumine.mythic.lib.comp.target.InteractionType; import io.lumine.mythic.lib.comp.interaction.InteractionType;
import io.lumine.mythic.lib.damage.DamageType; import io.lumine.mythic.lib.damage.DamageType;
import io.lumine.mythic.lib.player.PlayerMetadata; import io.lumine.mythic.lib.player.PlayerMetadata;
import io.lumine.mythic.lib.version.VersionSound; import io.lumine.mythic.lib.version.VersionSound;

View File

@ -3,7 +3,7 @@ package net.Indyuce.mmoitems.api.interaction.weapon.untargeted.staff;
import io.lumine.mythic.lib.UtilityMethods; import io.lumine.mythic.lib.UtilityMethods;
import io.lumine.mythic.lib.api.item.NBTItem; import io.lumine.mythic.lib.api.item.NBTItem;
import io.lumine.mythic.lib.api.player.EquipmentSlot; import io.lumine.mythic.lib.api.player.EquipmentSlot;
import io.lumine.mythic.lib.comp.target.InteractionType; import io.lumine.mythic.lib.comp.interaction.InteractionType;
import io.lumine.mythic.lib.damage.DamageType; import io.lumine.mythic.lib.damage.DamageType;
import io.lumine.mythic.lib.player.PlayerMetadata; import io.lumine.mythic.lib.player.PlayerMetadata;
import io.lumine.mythic.lib.version.VersionSound; import io.lumine.mythic.lib.version.VersionSound;

View File

@ -3,7 +3,7 @@ package net.Indyuce.mmoitems.api.interaction.weapon.untargeted.staff;
import io.lumine.mythic.lib.UtilityMethods; import io.lumine.mythic.lib.UtilityMethods;
import io.lumine.mythic.lib.api.item.NBTItem; import io.lumine.mythic.lib.api.item.NBTItem;
import io.lumine.mythic.lib.api.player.EquipmentSlot; import io.lumine.mythic.lib.api.player.EquipmentSlot;
import io.lumine.mythic.lib.comp.target.InteractionType; import io.lumine.mythic.lib.comp.interaction.InteractionType;
import io.lumine.mythic.lib.damage.DamageType; import io.lumine.mythic.lib.damage.DamageType;
import io.lumine.mythic.lib.player.PlayerMetadata; import io.lumine.mythic.lib.player.PlayerMetadata;
import io.lumine.mythic.lib.util.RayTrace; import io.lumine.mythic.lib.util.RayTrace;

View File

@ -1,114 +1,125 @@
package net.Indyuce.mmoitems.api.util.message; package net.Indyuce.mmoitems.api.util.message;
import net.Indyuce.mmoitems.MMOItems; import io.lumine.mythic.lib.MythicLib;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.jetbrains.annotations.NotNull;
import java.util.Objects;
public enum Message { public enum Message {
RECEIVED_ITEM("You received &6#item#&e#amount#."), RECEIVED_ITEM("You received &6#item#&e#amount#."),
// General restrictions // General restrictions
HANDS_TOO_CHARGED("You can't do anything, your hands are too charged.", "two-handed"), HANDS_TOO_CHARGED("You can't do anything, your hands are too charged.", "two-handed"),
SPELL_ON_COOLDOWN("#progress# &eYou must wait #left# second#s# before casting this spell.", "ability-cooldown"), SPELL_ON_COOLDOWN("#progress# &eYou must wait #left# second#s# before casting this spell.", "ability-cooldown"),
ITEM_ON_COOLDOWN("This item is on cooldown! Please wait #left# second#s#.", "item-cooldown"), ITEM_ON_COOLDOWN("This item is on cooldown! Please wait #left# second#s#.", "item-cooldown"),
NOT_ENOUGH_PERMS_COMMAND("You don't have enough permissions."), NOT_ENOUGH_PERMS_COMMAND("You don't have enough permissions."),
// Item restrictions // Item restrictions
NOT_ENOUGH_LEVELS("You don't have enough levels to use this item!", "cant-use-item"), NOT_ENOUGH_LEVELS("You don't have enough levels to use this item!", "cant-use-item"),
SOULBOUND_RESTRICTION("This item is linked to another player, you can't use it!", "cant-use-item"), SOULBOUND_RESTRICTION("This item is linked to another player, you can't use it!", "cant-use-item"),
NOT_ENOUGH_PERMS("You don't have enough permissions to use this.", "cant-use-item"), NOT_ENOUGH_PERMS("You don't have enough permissions to use this.", "cant-use-item"),
WRONG_CLASS("You don't have the right class!", "cant-use-item"), WRONG_CLASS("You don't have the right class!", "cant-use-item"),
NOT_ENOUGH_MANA("You don't have enough mana!", "not-enough-mana"), NOT_ENOUGH_MANA("You don't have enough mana!", "not-enough-mana"),
NOT_ENOUGH_STAMINA("You don't have enough stamina!", "not-enough-stamina"), NOT_ENOUGH_STAMINA("You don't have enough stamina!", "not-enough-stamina"),
NOT_ENOUGH_ATTRIBUTE("You don't have enough #attribute#!", "cant-use-item"), NOT_ENOUGH_ATTRIBUTE("You don't have enough #attribute#!", "cant-use-item"),
NOT_ENOUGH_PROFESSION("You don't have enough levels in #profession#!", "cant-use-item"), NOT_ENOUGH_PROFESSION("You don't have enough levels in #profession#!", "cant-use-item"),
UNIDENTIFIED_ITEM("You can't use an unidentified item!", "cant-use-item"), UNIDENTIFIED_ITEM("You can't use an unidentified item!", "cant-use-item"),
// Sustom durability // Sustom durability
// ITEM_BROKE("Your #item#&c broke."), // ITEM_BROKE("Your #item#&c broke."),
ZERO_DURABILITY("This item is broken, you first need to repair it.", "item-break"), ZERO_DURABILITY("This item is broken, you first need to repair it.", "item-break"),
// Consumables & Gem stones // Consumables & Gem stones
CANNOT_IDENTIFY_STACKED_ITEMS("You may only identify one item at a time."), CANNOT_IDENTIFY_STACKED_ITEMS("You may only identify one item at a time."),
SUCCESSFULLY_IDENTIFIED("You successfully identified &6#item#&e."), SUCCESSFULLY_IDENTIFIED("You successfully identified &6#item#&e."),
SUCCESSFULLY_DECONSTRUCTED("You successfully deconstructed &6#item#&e."), SUCCESSFULLY_DECONSTRUCTED("You successfully deconstructed &6#item#&e."),
GEM_STONE_APPLIED("You successfully applied &6#gem#&e onto your &6#item#&e."), GEM_STONE_APPLIED("You successfully applied &6#gem#&e onto your &6#item#&e."),
GEM_STONE_BROKE("Your gem stone &6#gem#&c broke while trying to apply it onto &6#item#&c."), GEM_STONE_BROKE("Your gem stone &6#gem#&c broke while trying to apply it onto &6#item#&c."),
REPAIRED_ITEM("You successfully repaired &6#item#&e for &6#amount# &euses."), REPAIRED_ITEM("You successfully repaired &6#item#&e for &6#amount# &euses."),
SKIN_APPLIED("You successfully applied the skin onto your &6#item#&e!"), SKIN_APPLIED("You successfully applied the skin onto your &6#item#&e!"),
SKIN_REMOVED("You successfully removed the skin from your &6#item#&e!"), SKIN_REMOVED("You successfully removed the skin from your &6#item#&e!"),
SKIN_BROKE("Your skin broke while trying to apply it onto your &6#item#&c."), SKIN_BROKE("Your skin broke while trying to apply it onto your &6#item#&c."),
SKIN_REJECTED("A skin has already been applied onto your &6#item#&c!"), SKIN_REJECTED("A skin has already been applied onto your &6#item#&c!"),
SKIN_INCOMPATIBLE("This skin is not compatible with your &6#item#&c!"), SKIN_INCOMPATIBLE("This skin is not compatible with your &6#item#&c!"),
RANDOM_UNSOCKET_GEM_TOO_OLD("The gems have bonded strongly with your item. Cannot remove."), RANDOM_UNSOCKET_GEM_TOO_OLD("The gems have bonded strongly with your item. Cannot remove."),
RANDOM_UNSOCKET_SUCCESS("&aYou removed &3#gem# &afrom your &6#item#&a!"), RANDOM_UNSOCKET_SUCCESS("&aYou removed &3#gem# &afrom your &6#item#&a!"),
// Soulbound // Soulbound
CANT_BIND_ITEM("This item is currently linked to #player# by a Lvl #level# soulbound. You will have to break this soulbound first."), CANT_BIND_ITEM("This item is currently linked to #player# by a Lvl #level# soulbound. You will have to break this soulbound first."),
NO_SOULBOUND("This item is not bound to anyone."), NO_SOULBOUND("This item is not bound to anyone."),
CANT_BIND_STACKED("You can't bind stacked items."), CANT_BIND_STACKED("You can't bind stacked items."),
UNSUCCESSFUL_SOULBOUND("Your soulbound failed."), UNSUCCESSFUL_SOULBOUND("Your soulbound failed."),
UNSUCCESSFUL_SOULBOUND_BREAK("You couldn't break the soulbound."), UNSUCCESSFUL_SOULBOUND_BREAK("You couldn't break the soulbound."),
LOW_SOULBOUND_LEVEL("This item soulbound is Lvl #level#. You will need a higher soulbound level on your consumable to break this soulbound."), LOW_SOULBOUND_LEVEL("This item soulbound is Lvl #level#. You will need a higher soulbound level on your consumable to break this soulbound."),
SUCCESSFULLY_BIND_ITEM("You successfully applied a Lvl &6#level# &esoulbound to your &6#item#&e."), SUCCESSFULLY_BIND_ITEM("You successfully applied a Lvl &6#level# &esoulbound to your &6#item#&e."),
SUCCESSFULLY_BREAK_BIND("You successfully broke the Lvl &6#level# &eitem soulbound!"), SUCCESSFULLY_BREAK_BIND("You successfully broke the Lvl &6#level# &eitem soulbound!"),
SOULBOUND_ITEM_LORE("&4Linked to #player#//&4Lvl #level# Soulbound"), SOULBOUND_ITEM_LORE("&4Linked to #player#//&4Lvl #level# Soulbound"),
// Upgrade // Upgrade
CANT_UPGRADED_STACK("You can't upgrade stacked items."), CANT_UPGRADED_STACK("You can't upgrade stacked items."),
MAX_UPGRADES_HIT("This item cannot be upgraded anymore."), MAX_UPGRADES_HIT("This item cannot be upgraded anymore."),
UPGRADE_FAIL("Your upgrade failed and you lost your consumable."), UPGRADE_FAIL("Your upgrade failed and you lost your consumable."),
UPGRADE_FAIL_STATION("Your upgrade failed and you lost your materials."), UPGRADE_FAIL_STATION("Your upgrade failed and you lost your materials."),
WRONG_UPGRADE_REFERENCE("You cannot upgrade this item with this consumable."), WRONG_UPGRADE_REFERENCE("You cannot upgrade this item with this consumable."),
UPGRADE_SUCCESS("You successfully upgraded your &6#item#&e!"), UPGRADE_SUCCESS("You successfully upgraded your &6#item#&e!"),
NOT_HAVE_ITEM_UPGRADE("You don't have the item to upgrade!"), NOT_HAVE_ITEM_UPGRADE("You don't have the item to upgrade!"),
UPGRADE_REQUIREMENT_SAFE_CHECK("You would not meet the upgraded item requirements."), UPGRADE_REQUIREMENT_SAFE_CHECK("You would not meet the upgraded item requirements."),
DEATH_DOWNGRADING("&cYour &6#item#&c got severely damaged that fight..."), DEATH_DOWNGRADING("&cYour &6#item#&c got severely damaged that fight..."),
// Crafting stations // Crafting stations
NOT_ENOUGH_MATERIALS("You do not have enough materials to craft this item."), NOT_ENOUGH_MATERIALS("You do not have enough materials to craft this item."),
CONDITIONS_NOT_MET("You cannot craft this item."), CONDITIONS_NOT_MET("You cannot craft this item."),
CRAFTING_CANCELED("You cancelled a crafting recipe."), CRAFTING_CANCELED("You cancelled a crafting recipe."),
CRAFTING_QUEUE_FULL("The crafting queue is currently full."), CRAFTING_QUEUE_FULL("The crafting queue is currently full."),
STATION_BIG_STACK("Amount Crafted: #size#"), STATION_BIG_STACK("Amount Crafted: #size#"),
RECIPE_PREVIEW("Recipe Preview"), RECIPE_PREVIEW("Recipe Preview"),
UNABLE_TO_REPAIR("This item can't be repaired by this consumable!"), UNABLE_TO_REPAIR("This item can't be repaired by this consumable!"),
; ;
private final String defaultMessage, path, actionBarConfigPath; private final String defaultMessage, path, actionBarConfigPath;
private Message(String defaultMessage, String actionBarConfigPath) { @NotNull
this.defaultMessage = defaultMessage; private String current;
this.path = name().toLowerCase().replace("_", "-");
this.actionBarConfigPath = actionBarConfigPath;
}
private Message(String defaultMessage) { private Message(String defaultMessage, String actionBarConfigPath) {
this(defaultMessage, null); this.defaultMessage = defaultMessage;
} this.current = defaultMessage;
this.path = name().toLowerCase().replace("_", "-");
this.actionBarConfigPath = actionBarConfigPath;
}
public String getDefault() { private Message(String defaultMessage) {
return defaultMessage; this(defaultMessage, null);
} }
public String getUpdated() { public String getDefault() {
return MMOItems.plugin.getLanguage().getMessage(path); return defaultMessage;
} }
public boolean isActionBarMessage() { public String getUpdated() {
return actionBarConfigPath != null; return MythicLib.plugin.parseColors(current);
} }
public String getActionBarConfigPath() { public void setCurrent(@NotNull String str) {
return actionBarConfigPath; this.current = Objects.requireNonNull(str);
} }
@Deprecated public boolean isActionBarMessage() {
public String formatRaw(ChatColor prefix, String... toReplace) { return actionBarConfigPath != null;
return format(prefix, toReplace).toString(); }
}
public FormattedMessage format(ChatColor prefix, String... toReplace) { public String getActionBarConfigPath() {
return new FormattedMessage(this).format(prefix, toReplace); return actionBarConfigPath;
} }
@Deprecated
public String formatRaw(ChatColor prefix, String... toReplace) {
return format(prefix, toReplace).toString();
}
public FormattedMessage format(ChatColor prefix, String... toReplace) {
return new FormattedMessage(this).format(prefix, toReplace);
}
} }

View File

@ -5,7 +5,7 @@ import io.lumine.mythic.lib.UtilityMethods;
import io.lumine.mythic.lib.api.event.PlayerAttackEvent; import io.lumine.mythic.lib.api.event.PlayerAttackEvent;
import io.lumine.mythic.lib.api.item.NBTItem; import io.lumine.mythic.lib.api.item.NBTItem;
import io.lumine.mythic.lib.api.player.EquipmentSlot; import io.lumine.mythic.lib.api.player.EquipmentSlot;
import io.lumine.mythic.lib.comp.target.InteractionType; import io.lumine.mythic.lib.comp.interaction.InteractionType;
import io.lumine.mythic.lib.damage.MeleeAttackMetadata; import io.lumine.mythic.lib.damage.MeleeAttackMetadata;
import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.MMOItems;
import net.Indyuce.mmoitems.api.Type; import net.Indyuce.mmoitems.api.Type;

View File

@ -1,8 +1,6 @@
package net.Indyuce.mmoitems.manager; package net.Indyuce.mmoitems.manager;
import io.lumine.mythic.lib.MythicLib;
import io.lumine.mythic.lib.UtilityMethods; import io.lumine.mythic.lib.UtilityMethods;
import io.lumine.mythic.lib.api.util.AltChar;
import io.lumine.mythic.lib.skill.trigger.TriggerType; import io.lumine.mythic.lib.skill.trigger.TriggerType;
import net.Indyuce.mmoitems.MMOItems; import net.Indyuce.mmoitems.MMOItems;
import net.Indyuce.mmoitems.api.ConfigFile; import net.Indyuce.mmoitems.api.ConfigFile;
@ -11,13 +9,13 @@ import net.Indyuce.mmoitems.api.item.util.ConfigItem;
import net.Indyuce.mmoitems.api.item.util.ConfigItems; import net.Indyuce.mmoitems.api.item.util.ConfigItems;
import net.Indyuce.mmoitems.api.util.NumericStatFormula; import net.Indyuce.mmoitems.api.util.NumericStatFormula;
import net.Indyuce.mmoitems.api.util.message.Message; import net.Indyuce.mmoitems.api.util.message.Message;
import net.Indyuce.mmoitems.skill.RegisteredSkill;
import net.Indyuce.mmoitems.stat.GemUpgradeScaling; import net.Indyuce.mmoitems.stat.GemUpgradeScaling;
import net.Indyuce.mmoitems.stat.LuteAttackEffectStat.LuteAttackEffect; import net.Indyuce.mmoitems.stat.LuteAttackEffectStat.LuteAttackEffect;
import net.Indyuce.mmoitems.stat.StaffSpiritStat.StaffSpirit; import net.Indyuce.mmoitems.stat.StaffSpiritStat.StaffSpirit;
import net.Indyuce.mmoitems.util.MMOUtils; import net.Indyuce.mmoitems.util.LanguageFile;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.potion.PotionEffectType; import org.bukkit.potion.PotionEffectType;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -25,18 +23,23 @@ import org.jetbrains.annotations.NotNull;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.StandardCopyOption; import java.util.*;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.jar.JarEntry; import java.util.jar.JarEntry;
import java.util.jar.JarFile; import java.util.jar.JarFile;
import java.util.logging.Level; import java.util.logging.Level;
/**
* Handles configuration options and language. Since MMOItems 6.9+
* language is handled by Crowdin which automatically pushes commits.
*/
public class ConfigManager implements Reloadable { public class ConfigManager implements Reloadable {
// cached config files // cached config files
private ConfigFile abilities, loreFormat, messages, potionEffects, stats, attackEffects, dynLore; private ConfigFile loreFormat, stats, dynLore;
// Language
private final Map<TriggerType, String> triggerTypeNames = new HashMap<>();
private final Map<PotionEffectType, String> potionNames = new HashMap<>();
// Cached config options // Cached config options
public boolean replaceMushroomDrops, worldGenEnabled, upgradeRequirementsCheck, keepSoulboundOnDeath, rerollOnItemUpdate, opStatsEnabled; public boolean replaceMushroomDrops, worldGenEnabled, upgradeRequirementsCheck, keepSoulboundOnDeath, rerollOnItemUpdate, opStatsEnabled;
@ -46,9 +49,6 @@ public class ConfigManager implements Reloadable {
public ReforgeOptions revisionOptions, phatLootsOptions; public ReforgeOptions revisionOptions, phatLootsOptions;
public final List<String> opStats = new ArrayList<>(); public final List<String> opStats = new ArrayList<>();
private static final String[] fileNames = {"abilities", "messages", "potion-effects", "stats", "items", "attack-effects"};
private static final String[] languages = {"french", "chinese", "spanish", "russian", "polish"};
public ConfigManager() { public ConfigManager() {
mkdir("layouts"); mkdir("layouts");
mkdir("item"); mkdir("item");
@ -74,24 +74,6 @@ public class ConfigManager implements Reloadable {
} else MMOItems.plugin.getLogger().log(Level.WARNING, "Could not create directory!"); } else MMOItems.plugin.getLogger().log(Level.WARNING, "Could not create directory!");
} }
// Setup non existing language files
for (String language : languages) {
File languageFolder = new File(MMOItems.plugin.getDataFolder() + "/language/" + language);
if (!languageFolder.exists())
if (languageFolder.mkdir()) {
for (String fileName : fileNames)
if (!new File(MMOItems.plugin.getDataFolder() + "/language/" + language, fileName + ".yml").exists()) {
try {
Files.copy(MMOItems.plugin.getResource("language/" + language + "/" + fileName + ".yml"),
new File(MMOItems.plugin.getDataFolder() + "/language/" + language, fileName + ".yml").getAbsoluteFile().toPath(),
StandardCopyOption.REPLACE_EXISTING);
} catch (IOException e) {
e.printStackTrace();
}
}
} else MMOItems.plugin.getLogger().log(Level.WARNING, "Could not load default crafting stations.");
}
// Load files with default configuration // Load files with default configuration
for (DefaultFile file : DefaultFile.values()) for (DefaultFile file : DefaultFile.values())
if (file.isAutomatic()) if (file.isAutomatic())
@ -103,6 +85,24 @@ public class ConfigManager implements Reloadable {
*/ */
MMOItems.plugin.getTypes().getAll().forEach(type -> type.getConfigFile().setup()); MMOItems.plugin.getTypes().getAll().forEach(type -> type.getConfigFile().setup());
/*
* Only load config files after they have been initialized (above) so
* they do not crash the first time they generate and so we do not have
* to restart the server
*/
reload();
}
/**
* This does both:
* - check that all fields are input in the config file
* - loads fields that it could find into MMOItems
* <p>
* These two steps are necessary for smooth language updates
*/
private void loadTranslations() {
// TODO items
ConfigFile items = new ConfigFile("/language", "items"); ConfigFile items = new ConfigFile("/language", "items");
for (ConfigItem item : ConfigItems.values) { for (ConfigItem item : ConfigItems.values) {
if (!items.getConfig().contains(item.getId())) { if (!items.getConfig().contains(item.getId())) {
@ -113,74 +113,51 @@ public class ConfigManager implements Reloadable {
} }
items.save(); items.save();
ConfigFile messages = new ConfigFile("/language", "messages"); // TODO messages
final LanguageFile messages = new LanguageFile("messages");
for (Message message : Message.values()) { for (Message message : Message.values()) {
String path = message.name().toLowerCase().replace("_", "-"); String path = message.name().toLowerCase().replace("_", "-");
if (!messages.getConfig().contains(path)) if (!messages.getConfig().contains(path))
messages.getConfig().set(path, message.getDefault()); messages.getConfig().set(path, message.getDefault());
} }
messages.save(); messages.save();
ConfigFile abilities = new ConfigFile("/language", "abilities"); // Potion effects
for (RegisteredSkill ability : MMOItems.plugin.getSkills().getAll()) { final LanguageFile potionEffects = new LanguageFile("potion-effects");
String path = ability.getHandler().getLowerCaseId(); for (PotionEffectType effect : PotionEffectType.values())
if (!abilities.getConfig().getKeys(true).contains("ability." + path)) potionNames.put(effect, potionEffects.computeTranslation(effect.getName().toLowerCase().replace("_", "-"),
abilities.getConfig().set("ability." + path, ability.getName()); () -> UtilityMethods.caseOnWords(effect.getName().toLowerCase().replace("_", " "))));
for (String modifier : ability.getHandler().getModifiers())
if (!abilities.getConfig().getKeys(true).contains("modifier." + modifier))
abilities.getConfig().set("modifier." + modifier, MMOUtils.caseOnWords(modifier.replace("-", " ")));
}
for (TriggerType mode : TriggerType.values())
if (!abilities.getConfig().contains("cast-mode." + mode.getLowerCaseId()))
abilities.getConfig().set("cast-mode." + mode.getLowerCaseId(), mode.getName());
abilities.save();
ConfigFile potionEffects = new ConfigFile("/language", "potion-effects");
for (PotionEffectType effect : PotionEffectType.values()) {
if (effect == null)
continue;
String path = effect.getName().toLowerCase().replace("_", "-");
if (!potionEffects.getConfig().contains(path))
potionEffects.getConfig().set(path, MMOUtils.caseOnWords(effect.getName().toLowerCase().replace("_", " ")));
}
potionEffects.save(); potionEffects.save();
ConfigFile attackEffects = new ConfigFile("/language", "attack-effects"); // Staff spirits
for (StaffSpirit spirit : StaffSpirit.values()) { final LanguageFile attackEffects = new LanguageFile("attack-effects");
String path = spirit.name().toLowerCase().replace("_", "-"); for (StaffSpirit sp : StaffSpirit.values())
if (!attackEffects.getConfig().contains("staff-spirit." + path)) sp.setName(attackEffects.computeTranslation("staff-spirit." + sp.name().toLowerCase().replace("_", "-"),
attackEffects.getConfig().set("staff-spirit." + path, "&7" + AltChar.listSquare + " " + spirit.getDefaultName()); () -> UtilityMethods.caseOnWords(sp.name().toLowerCase().replace("_", " "))));
}
for (LuteAttackEffect effect : LuteAttackEffect.values()) { // Lute attack effects
String path = effect.name().toLowerCase().replace("_", "-"); for (LuteAttackEffect eff : LuteAttackEffect.values())
if (!attackEffects.getConfig().contains("lute-attack." + path)) eff.setName(attackEffects.computeTranslation("lute-attack." + eff.name().toLowerCase().replace("_", "-"),
attackEffects.getConfig().set("lute-attack." + path, "&7" + AltChar.listSquare + " " + effect.getDefaultName() + " Attacks"); () -> UtilityMethods.caseOnWords(eff.name().toLowerCase().replace("_", " "))));
}
attackEffects.save(); attackEffects.save();
/* // Trigger types
* Only load config files after they have been initialized (above) so triggerTypeNames.clear();
* they do not crash the first time they generate and so we do not have final FileConfiguration abilities = new ConfigFile("/language", "abilities").getConfig();
* to restart the server for (TriggerType type : TriggerType.values())
*/ triggerTypeNames.put(type, abilities.getString("cast-mode." + type.getLowerCaseId(), type.getName()));
reload();
} }
public void reload() { public void reload() {
MMOItems.plugin.reloadConfig(); MMOItems.plugin.reloadConfig();
abilities = new ConfigFile("/language", "abilities");
loreFormat = new ConfigFile("/language", "lore-format"); loreFormat = new ConfigFile("/language", "lore-format");
messages = new ConfigFile("/language", "messages");
potionEffects = new ConfigFile("/language", "potion-effects");
stats = new ConfigFile("/language", "stats"); stats = new ConfigFile("/language", "stats");
attackEffects = new ConfigFile("/language", "attack-effects");
dynLore = new ConfigFile("/language", "dynamic-lore"); dynLore = new ConfigFile("/language", "dynamic-lore");
loadTranslations();
/* /*
* Reload cached config options for quicker access - these options are * Reload cached config options for quicker access - these options are
* used in runnables, it is thus better to cache them * used in runnables, it is thus better to cache them
@ -221,7 +198,7 @@ public class ConfigManager implements Reloadable {
+ exception.getMessage()); + exception.getMessage());
} }
ConfigFile items = new ConfigFile("/language", "items"); final ConfigFile items = new ConfigFile("/language", "items");
for (ConfigItem item : ConfigItems.values) for (ConfigItem item : ConfigItems.values)
item.update(items.getConfig().getConfigurationSection(item.getId())); item.update(items.getConfig().getConfigurationSection(item.getId()));
} }
@ -240,38 +217,39 @@ public class ConfigManager implements Reloadable {
return found == null ? "<TranslationNotFound:" + path + ">" : found; return found == null ? "<TranslationNotFound:" + path + ">" : found;
} }
@NotNull @Deprecated
public String getMessage(String path) { public String getMessage(String path) {
String found = messages.getConfig().getString(path); return Message.valueOf(UtilityMethods.enumName(path)).getUpdated();
return MythicLib.plugin.parseColors(found == null ? "<MessageNotFound:" + path + ">" : found);
} }
@NotNull @NotNull
public String getCastingModeName(@NotNull TriggerType mode) { public String getCastingModeName(@NotNull TriggerType triggerType) {
return abilities.getConfig().getString("cast-mode." + mode.getLowerCaseId(), mode.name()); return Objects.requireNonNull(triggerTypeNames.get(triggerType), "Trigger type name for '" + triggerType.name() + "' not found");
} }
@Deprecated @Deprecated
public String getModifierName(String path) { public String getModifierName(String path) {
return abilities.getConfig().getString("modifier." + path); return UtilityMethods.caseOnWords(path.toLowerCase().replace("-", " ").replace("_", " "));
} }
@NotNull
public List<String> getDefaultLoreFormat() { public List<String> getDefaultLoreFormat() {
return loreFormat.getConfig().getStringList("lore-format"); return loreFormat.getConfig().getStringList("lore-format");
} }
@NotNull
public String getPotionEffectName(PotionEffectType type) { public String getPotionEffectName(PotionEffectType type) {
return potionEffects.getConfig().getString(type.getName().toLowerCase().replace("_", "-")); return Objects.requireNonNull(potionNames.get(type), "Potion effect name for '" + type.getName() + "' not found");
} }
@Deprecated
public String getLuteAttackEffectName(LuteAttackEffect effect) { public String getLuteAttackEffectName(LuteAttackEffect effect) {
return attackEffects.getConfig().getString("lute-attack." + effect.name().toLowerCase().replace("_", "-")); return effect.getName();
} }
@Deprecated
public String getStaffSpiritName(StaffSpirit spirit) { public String getStaffSpiritName(StaffSpirit spirit) {
return attackEffects.getConfig().getString("staff-spirit." + spirit.name().toLowerCase().replace("_", "-")); return spirit.getName();
} }
/** /**
@ -295,9 +273,10 @@ public class ConfigManager implements Reloadable {
MMOItems.plugin.getLogger().log(Level.WARNING, "Could not create directory!"); MMOItems.plugin.getLogger().log(Level.WARNING, "Could not create directory!");
} }
/* /**
* All config files that have a default configuration are stored here, they * All config files that have a default configuration
* get copied into the plugin folder when the plugin enables * are stored here, they get copied into the plugin
* folder when the plugin enables.
*/ */
public enum DefaultFile { public enum DefaultFile {
@ -311,8 +290,14 @@ public class ConfigManager implements Reloadable {
EXAMPLE_MODIFIERS("modifiers", "example-modifiers"), EXAMPLE_MODIFIERS("modifiers", "example-modifiers"),
CUSTOM_STATS("", "custom-stats"), CUSTOM_STATS("", "custom-stats"),
// Default language files -> /MMOItems/language // Default EN language files
ABILITIES("language", "abilities"),
ATTACK_EFFECTS("language", "attack-effects"),
CRAFTING_STATIONS("language", "crafting-stations"),
ITEMS("language", "items"),
LORE_FORMAT("language", "lore-format"), LORE_FORMAT("language", "lore-format"),
MESSAGES("language", "messages"),
POTION_EFFECTS("language", "potion-effects"),
STATS("language", "stats"), STATS("language", "stats"),
// Station layouts // Station layouts

View File

@ -2,7 +2,7 @@ package net.Indyuce.mmoitems.skill;
import io.lumine.mythic.lib.UtilityMethods; import io.lumine.mythic.lib.UtilityMethods;
import io.lumine.mythic.lib.api.item.NBTItem; import io.lumine.mythic.lib.api.item.NBTItem;
import io.lumine.mythic.lib.comp.target.InteractionType; import io.lumine.mythic.lib.comp.interaction.InteractionType;
import io.lumine.mythic.lib.damage.DamageMetadata; import io.lumine.mythic.lib.damage.DamageMetadata;
import io.lumine.mythic.lib.damage.DamageType; import io.lumine.mythic.lib.damage.DamageType;
import io.lumine.mythic.lib.player.PlayerMetadata; import io.lumine.mythic.lib.player.PlayerMetadata;

View File

@ -1,5 +1,6 @@
package net.Indyuce.mmoitems.stat; package net.Indyuce.mmoitems.stat;
import io.lumine.mythic.lib.UtilityMethods;
import io.lumine.mythic.lib.api.item.ItemTag; import io.lumine.mythic.lib.api.item.ItemTag;
import io.lumine.mythic.lib.api.item.NBTItem; import io.lumine.mythic.lib.api.item.NBTItem;
import io.lumine.mythic.lib.version.VersionMaterial; import io.lumine.mythic.lib.version.VersionMaterial;
@ -12,10 +13,13 @@ import net.Indyuce.mmoitems.stat.data.StringData;
import net.Indyuce.mmoitems.stat.data.type.StatData; import net.Indyuce.mmoitems.stat.data.type.StatData;
import net.Indyuce.mmoitems.stat.type.GemStoneStat; import net.Indyuce.mmoitems.stat.type.GemStoneStat;
import net.Indyuce.mmoitems.stat.type.StringStat; import net.Indyuce.mmoitems.stat.type.StringStat;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.event.inventory.InventoryAction; import org.bukkit.event.inventory.InventoryAction;
import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryClickEvent;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.util.Objects;
public class LuteAttackEffectStat extends StringStat implements GemStoneStat { public class LuteAttackEffectStat extends StringStat implements GemStoneStat {
public LuteAttackEffectStat() { public LuteAttackEffectStat() {
super("LUTE_ATTACK_EFFECT", VersionMaterial.DIAMOND_HORSE_ARMOR.toMaterial(), "Lute Attack Effect", super("LUTE_ATTACK_EFFECT", VersionMaterial.DIAMOND_HORSE_ARMOR.toMaterial(), "Lute Attack Effect",
@ -37,7 +41,7 @@ public class LuteAttackEffectStat extends StringStat implements GemStoneStat {
LuteAttackEffect effect = LuteAttackEffect.valueOf(message.toUpperCase().replace(" ", "_").replace("-", "_")); LuteAttackEffect effect = LuteAttackEffect.valueOf(message.toUpperCase().replace(" ", "_").replace("-", "_"));
inv.getEditedSection().set("lute-attack-effect", effect.name()); inv.getEditedSection().set("lute-attack-effect", effect.name());
inv.registerTemplateEdition(); inv.registerTemplateEdition();
inv.getPlayer().sendMessage(MMOItems.plugin.getPrefix() + "Lute attack effect successfully changed to " + effect.getDefaultName() + "."); inv.getPlayer().sendMessage(MMOItems.plugin.getPrefix() + "Lute attack effect successfully changed to " + effect.getName() + ".");
} }
@Override @Override
@ -56,6 +60,9 @@ public class LuteAttackEffectStat extends StringStat implements GemStoneStat {
private final LuteAttackHandler handler; private final LuteAttackHandler handler;
@NotNull
private String name = UtilityMethods.caseOnWords(name().toLowerCase().replace("_", " "));
LuteAttackEffect(LuteAttackHandler handler) { LuteAttackEffect(LuteAttackHandler handler) {
this.handler = handler; this.handler = handler;
} }
@ -64,12 +71,17 @@ public class LuteAttackEffectStat extends StringStat implements GemStoneStat {
return handler; return handler;
} }
@Deprecated
public String getDefaultName() { public String getDefaultName() {
return name().charAt(0) + name().substring(1).toLowerCase(); return name().charAt(0) + name().substring(1).toLowerCase();
} }
public String getName() { public String getName() {
return MMOItems.plugin.getLanguage().getLuteAttackEffectName(this); return name;
}
public void setName(@NotNull String str) {
this.name = Objects.requireNonNull(str);
} }
public static LuteAttackEffect get(NBTItem item) { public static LuteAttackEffect get(NBTItem item) {

View File

@ -1,5 +1,6 @@
package net.Indyuce.mmoitems.stat; package net.Indyuce.mmoitems.stat;
import io.lumine.mythic.lib.UtilityMethods;
import io.lumine.mythic.lib.api.item.ItemTag; import io.lumine.mythic.lib.api.item.ItemTag;
import io.lumine.mythic.lib.api.item.NBTItem; import io.lumine.mythic.lib.api.item.NBTItem;
import io.lumine.mythic.lib.version.VersionMaterial; import io.lumine.mythic.lib.version.VersionMaterial;
@ -10,80 +11,84 @@ import net.Indyuce.mmoitems.gui.edition.EditionInventory;
import net.Indyuce.mmoitems.stat.data.StringData; import net.Indyuce.mmoitems.stat.data.StringData;
import net.Indyuce.mmoitems.stat.type.StringStat; import net.Indyuce.mmoitems.stat.type.StringStat;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class StaffSpiritStat extends StringStat { public class StaffSpiritStat extends StringStat {
public StaffSpiritStat() { public StaffSpiritStat() {
super("STAFF_SPIRIT", VersionMaterial.BONE_MEAL.toMaterial(), "Staff Spirit", super("STAFF_SPIRIT", VersionMaterial.BONE_MEAL.toMaterial(), "Staff Spirit",
new String[] { "Spirit changes the texture", "of the magic attack.", "&9Tip: /mi list spirit" }, new String[] { "staff", "wand" }); new String[]{"Spirit changes the texture", "of the magic attack.", "&9Tip: /mi list spirit"}, new String[]{"staff", "wand"});
} }
@Override @Override
public void whenInput(@NotNull EditionInventory inv, @NotNull String message, Object... info) { public void whenInput(@NotNull EditionInventory inv, @NotNull String message, Object... info) {
try { try {
StaffSpirit spirit = StaffSpirit.valueOf(message.toUpperCase().replace(" ", "_").replace("-", "_")); StaffSpirit spirit = StaffSpirit.valueOf(message.toUpperCase().replace(" ", "_").replace("-", "_"));
inv.getEditedSection().set("staff-spirit", spirit.name()); inv.getEditedSection().set("staff-spirit", spirit.name());
inv.registerTemplateEdition(); inv.registerTemplateEdition();
inv.getPlayer().sendMessage(MMOItems.plugin.getPrefix() + "Staff Spirit successfully changed to " + spirit.getName() + "."); inv.getPlayer().sendMessage(MMOItems.plugin.getPrefix() + "Staff Spirit successfully changed to " + spirit.getName() + ".");
} catch (IllegalArgumentException exception) { } catch (IllegalArgumentException exception) {
throw new IllegalArgumentException(exception.getMessage() + " (See all Staff Spirits here: /mi list spirit)."); throw new IllegalArgumentException(exception.getMessage() + " (See all Staff Spirits here: /mi list spirit).");
} }
} }
@Override @Override
public void whenApplied(@NotNull ItemStackBuilder item, @NotNull StringData data) { public void whenApplied(@NotNull ItemStackBuilder item, @NotNull StringData data) {
StaffSpirit staffSpirit = StaffSpirit.valueOf(data.toString().toUpperCase().replace(" ", "_").replace("-", "_")); StaffSpirit staffSpirit = StaffSpirit.valueOf(data.toString().toUpperCase().replace(" ", "_").replace("-", "_"));
item.addItemTag(new ItemTag("MMOITEMS_STAFF_SPIRIT", staffSpirit.name())); item.addItemTag(new ItemTag("MMOITEMS_STAFF_SPIRIT", staffSpirit.name()));
item.getLore().insert("staff-spirit", staffSpirit.getName()); item.getLore().insert("staff-spirit", staffSpirit.getName());
} }
public enum StaffSpirit { public enum StaffSpirit {
NETHER_SPIRIT("Nether Spirit", "Shoots fire beams.", new NetherSpirit()), NETHER_SPIRIT("Shoots fire beams.", new NetherSpirit()),
VOID_SPIRIT("Void Spirit", "Shoots shulker missiles.", new VoidSpirit()), VOID_SPIRIT("Shoots shulker missiles.", new VoidSpirit()),
MANA_SPIRIT("Mana Spirit", "Summons mana bolts.", new ManaSpirit()), MANA_SPIRIT("Summons mana bolts.", new ManaSpirit()),
LIGHTNING_SPIRIT("Lightning Spirit", "Summons lightning bolts.", new LightningSpirit()), LIGHTNING_SPIRIT("Summons lightning bolts.", new LightningSpirit()),
XRAY_SPIRIT("X-Ray Spirit", "Fires piercing & powerful X-rays.", new XRaySpirit()), XRAY_SPIRIT("Fires piercing & powerful X-rays.", new XRaySpirit()),
THUNDER_SPIRIT("Thunder Spirit", "Fires AoE damaging thunder strikes.", new ThunderSpirit()), THUNDER_SPIRIT("Fires AoE damaging thunder strikes.", new ThunderSpirit()),
SUNFIRE_SPIRIT("Sunfire Spirit", "Fires AoE damaging fire comets.", new SunfireSpirit()), SUNFIRE_SPIRIT("Fires AoE damaging fire comets.", new SunfireSpirit()),
// CURSED_SPIRIT(ChatColor.DARK_PURPLE, "Cursed Spirit", "Fires a // CURSED_SPIRIT(ChatColor.DARK_PURPLE, "Cursed Spirit", "Fires a
// targeted cursed projectile."), new CursedSpirit()), // targeted cursed projectile."), new CursedSpirit()),
; ;
private final String name, defaultLore; private final String defaultLore;
private final StaffAttackHandler handler; private final StaffAttackHandler handler;
StaffSpirit(String name, String defaultLore, StaffAttackHandler handler) { @NotNull
this.name = name; private String name = UtilityMethods.caseOnWords(name().toLowerCase().replace("_", " "));
this.defaultLore = defaultLore;
this.handler = handler;
}
public static StaffSpirit get(NBTItem item) { StaffSpirit(String description, StaffAttackHandler handler) {
try { this.defaultLore = description;
return StaffSpirit.valueOf(item.getString("MMOITEMS_STAFF_SPIRIT")); this.handler = handler;
} catch (Exception e) { }
return null;
}
}
public String getDefaultName() { @Nullable
return name; public static StaffSpirit get(NBTItem item) {
} try {
return StaffSpirit.valueOf(item.getString("MMOITEMS_STAFF_SPIRIT"));
} catch (Exception e) {
return null;
}
}
public String getName() { public String getName() {
return MMOItems.plugin.getLanguage().getStaffSpiritName(this); return name;
} }
public boolean hasLore() { public boolean hasLore() {
return defaultLore != null; return defaultLore != null;
} }
public String getDefaultLore() { public String getDefaultLore() {
return defaultLore; return defaultLore;
} }
public StaffAttackHandler getAttack() { public StaffAttackHandler getAttack() {
return handler; return handler;
} }
}
public void setName(String str) {
this.name = str;
}
}
} }

View File

@ -0,0 +1,42 @@
package net.Indyuce.mmoitems.util;
import net.Indyuce.mmoitems.MMOItems;
import net.Indyuce.mmoitems.api.ConfigFile;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.logging.Level;
/**
* Util class to make sure language files are up to date
*
* @author jules
*/
public class LanguageFile extends ConfigFile {
private boolean change;
public LanguageFile(String name) {
super(MMOItems.plugin, "/language", name);
}
@NotNull
public String computeTranslation(String path, Provider<String> defaultTranslation) {
@Nullable String found = getConfig().getString(path);
if (found == null) {
change = true;
getConfig().set(path, found = defaultTranslation.get());
MMOItems.plugin.getLogger().log(Level.INFO, "Could not find translation for '" + path + "', generating it");
}
return found;
}
/**
* Only saves if changes have been detected.
*/
@Override
public void save() {
if (change)
super.save();
}
}

View File

@ -0,0 +1,6 @@
package net.Indyuce.mmoitems.util;
@FunctionalInterface
public interface Provider<T> {
T get();
}

View File

@ -0,0 +1,23 @@
cast-mode:
cast: Cast
shoot-bow: Shoot Bow
shoot-trident: Shoot Trident
sneak: Sneak
shift-left-click: Shift Left Click
arrow-tick: Arrow Tick
timer: Timer
death: Death
trident-land: Trident Land
arrow-land: Arrow Land
trident-tick: Trident Tick
kill-entity: Kill Entity
right-click: Right Click
attack: Attack
arrow-hit: Arrow Hit
login: Login
api: Api
damaged: Damaged
left-click: Left Click
trident-hit: Trident Hit
damaged-by-entity: Damaged By Entity
shift-right-click: Shift Right Click

View File

@ -0,0 +1,41 @@
condition:
profession:
positive: '&a✔ Requires #level# in #profession#'
negative: '&c✖ Requires #level# in #profession#'
mana:
positive: '&a✔ Requires #mana# Mana'
negative: '&c✖ Requires #mana# Mana'
money:
positive: '&a✔ Requires $#money#'
negative: '&c✖ Requires $#money#'
level:
positive: '&a✔ Requires Level #level#'
negative: '&c✖ Requires Level #level#'
stellium:
positive: '&a✔ Requires #stellium# Stellium'
negative: '&c✖ Requires #stellium# Stellium'
stamina:
positive: '&a✔ Requires #stamina# Stamina'
negative: '&c✖ Requires #stamina# Stamina'
permission:
positive: '&a✔ #display#'
negative: '&c✖ #display#'
placeholder:
positive: '&a✔ #display#'
negative: '&c✖ #display#'
attribute:
positive: '&a✔ Requires #points# #attribute#'
negative: '&c✖ Requires #points# #attribute#'
class:
positive: '&a✔ Required Class: #class#'
negative: '&c✖ Required Class: #class#'
food:
positive: '&a✔ Requires #food# Food'
negative: '&c✖ Requires #food# Food'
ingredient:
mmoitem:
positive: '&8✔ &7#amount# #level##item#'
negative: '&c✖ &7#amount# #level##item#'
vanilla:
positive: '&8✔ &7#amount# #item#'
negative: '&c✖ &7#amount# #item#'

View File

@ -0,0 +1,55 @@
CONFIRM:
name: '&aConfirm'
lore: []
FILL:
name: '&8'
lore: []
PREVIOUS_PAGE:
name: '&aPrevious Page'
lore: []
NEXT_PAGE:
name: '&aNext Page'
lore: []
PREVIOUS_IN_QUEUE:
name: '&aPrevious'
lore: []
NEXT_IN_QUEUE:
name: '&aNext'
lore: []
BACK:
name: '&aBack'
lore: []
CRAFTING_RECIPE_DISPLAY:
name: '&a&lCraft&f #name#'
lore:
- '{conditions}'
- '{conditions}&8Conditions:'
- '{crafting_time}'
- '{crafting_time}&7Crafting Time: &c#crafting-time#&7s'
- ''
- '&8Ingredients:'
- '#ingredients#'
- ''
- '&eLeft-Click to craft!'
- '&eRight-Click to preview!'
UPGRADING_RECIPE_DISPLAY:
name: '&e&lUpgrade&f #name#'
lore:
- '{conditions}'
- '{conditions}&8Conditions:'
- ''
- '&8Ingredients:'
- '#ingredients#'
- ''
- '&eLeft-Click to craft!'
- '&eRight-Click to preview!'
QUEUE_ITEM_DISPLAY:
name: '&6&lQueue&f #name#'
lore:
- '{ready}&7&oThis item was successfully crafted.'
- '{queue}&7&oThis item is in the crafting queue.'
- '{queue}'
- '{queue}&7Time Left: &c#left#'
- ''
- '{ready}&eClick to claim!'
- '{queue}&eClick to cancel.'

View File

@ -0,0 +1,53 @@
received-item: 'You received &6#item#&e#amount#.'
hands-too-charged: 'You can''t do anything, your hands are too charged.'
spell-on-cooldown: '#progress# &eYou must wait #left# second#s# before casting this spell.'
item-on-cooldown: 'This item is on cooldown! Please wait #left# second#s#.'
not-enough-perms-command: 'You don''t have enough permissions.'
not-enough-levels: 'You don''t have enough levels to use this item!'
soulbound-restriction: 'This item is linked to another player, you can''t use it!'
not-enough-perms: 'You don''t have enough permissions to use this.'
wrong-class: 'You don''t have the right class!'
not-enough-mana: 'You don''t have enough mana!'
not-enough-stamina: 'You don''t have enough stamina!'
not-enough-attribute: 'You don''t have enough #attribute#!'
not-enough-profession: 'You don''t have enough levels in #profession#!'
unidentified-item: 'You can''t use an unidentified item!'
zero-durability: 'This item is broken, you first need to repair it.'
cannot-identify-stacked-items: 'You may only identify one item at a time.'
successfully-identified: 'You successfully identified &6#item#&e.'
successfully-deconstructed: 'You successfully deconstructed &6#item#&e.'
gem-stone-applied: 'You successfully applied &6#gem#&e onto your &6#item#&e.'
gem-stone-broke: 'Your gem stone &6#gem#&c broke while trying to apply it onto &6#item#&c.'
repaired-item: 'You successfully repaired &6#item#&e for &6#amount# &euses.'
skin-applied: 'You successfully applied the skin onto your &6#item#&e!'
skin-removed: 'You successfully removed the skin from your &6#item#&e!'
skin-broke: 'Your skin broke while trying to apply it onto your &6#item#&c.'
skin-rejected: 'A skin has already been applied onto your &6#item#&c!'
skin-incompatible: 'This skin is not compatible with your &6#item#&c!'
random-unsocket-gem-too-old: 'The gems have bonded strongly with your item. Cannot remove.'
random-unsocket-success: '&aYou removed &3#gem# &afrom your &6#item#&a!'
cant-bind-item: 'This item is currently linked to #player# by a Lvl #level# soulbound. You will have to break this soulbound first.'
no-soulbound: 'This item is not bound to anyone.'
cant-bind-stacked: 'You can''t bind stacked items.'
unsuccessful-soulbound: 'Your soulbound failed.'
unsuccessful-soulbound-break: 'You couldn''t break the soulbound.'
low-soulbound-level: 'This item soulbound is Lvl #level#. You will need a higher soulbound level on your consumable to break this soulbound.'
successfully-bind-item: 'You successfully applied a Lvl &6#level# &esoulbound to your &6#item#&e.'
successfully-break-bind: 'You successfully broke the Lvl &6#level# &eitem soulbound!'
soulbound-item-lore: '&4Linked to #player#//&4Lvl #level# Soulbound'
cant-upgraded-stack: 'You can''t upgrade stacked items.'
max-upgrades-hit: 'This item cannot be upgraded anymore.'
upgrade-fail: 'Your upgrade failed and you lost your consumable.'
upgrade-fail-station: 'Your upgrade failed and you lost your materials.'
wrong-upgrade-reference: 'You cannot upgrade this item with this consumable.'
upgrade-success: 'You successfully upgraded your &6#item#&e!'
not-have-item-upgrade: 'You don''t have the item to upgrade!'
upgrade-requirement-safe-check: 'You would not meet the upgraded item requirements.'
death-downgrading: '&cYour &6#item#&c got severely damaged that fight...'
not-enough-materials: 'You do not have enough materials to craft this item.'
conditions-not-met: 'You cannot craft this item.'
crafting-canceled: 'You cancelled a crafting recipe.'
crafting-queue-full: 'The crafting queue is currently full.'
station-big-stack: 'Amount Crafted: #size#'
recipe-preview: 'Recipe Preview'
unable-to-repair: 'This item can''t be repaired by this consumable!'

View File

@ -0,0 +1,33 @@
speed: Speed
slow: Slow
fast-digging: Fast Digging
slow-digging: Slow Digging
increase-damage: Increase Damage
heal: Heal
harm: Harm
jump: Jump
confusion: Confusion
regeneration: Regeneration
damage-resistance: Damage Resistance
fire-resistance: Fire Resistance
water-breathing: Water Breathing
invisibility: Invisibility
blindness: Blindness
night-vision: Night Vision
hunger: Hunger
weakness: Weakness
poison: Poison
wither: Wither
health-boost: Health Boost
absorption: Absorption
saturation: Saturation
glowing: Glowing
levitation: Levitation
luck: Luck
unluck: Unluck
slow-falling: Slow Falling
conduit-power: Conduit Power
dolphins-grace: Dolphins Grace
bad-omen: Bad Omen
hero-of-the-village: Hero Of The Village
darkness: Darkness

View File

@ -1,97 +0,0 @@
# Translated by TUCAOEVER
# Data: 10-13-2018
ability:
shulker-missile: 武装导弹
overload: 强制过载
magical-shield: 法力护盾
heal: 细胞再生
fire-meteor: 火球术
leap: 撤离
light-dash: 急袭
burn: 点燃
starfall: 流星陨落
wither: 凋零
vampirism: 吸血
shockwave: 震荡
sparkle: 神明之力
smite: 重击
corrupt: 腐蚀
tnt-throw: TNT 投掷
arcane-hail: 绝对领域
grand-heal: 生命之树
firebolt: 烈焰光束
magical-path: 法术之翼
earthquake: 地震
stun: 昏迷
swiftness: 迅捷
holy-missile: 上帝审判
black-hole: 黑洞
slow: 减速
circular-slash: 死亡之眼
cursed-beam: 诅咒光束
thrust: 穿透
heavy-charge: 无畏冲锋
item-throw: 物品投掷
corrupted-fangs: 腐蚀之牙
ice-crystal: 冰霜结晶
blind: 失明
shock: 震撼
shadow-veil: 铁幕
poison: 中毒
lightning-beam: 祝福光束
blink: 闪现
sky-smash: 击飞
bloodbath: 血祭
confuse: 眩晕
bouncy-fireball: 弹射火球
burning-hands: 烈焰护符
throw-up: 投掷
frog-mode: 青蛙模式
death-mark: 死亡标记
life-ender: 生命伴侣
freezing-curse: 寒冰诅咒
firefly: 萤火
bunny-mode: 兔子模式
item-bomb: 物品爆炸
freeze: Freeze
blizzard: Blizzard
tactical-grenade: Tactical Grenade
ignite: Ignite
rain-of-arrows: Rain of Arrows
eggpocalypse: Eggpocalypse
minor-explosion: Minor Explosion
regen-ally: Regen Ally
contamination: Contamination
corrosion: Corrosion
weaken-target: Weaken Target
chicken-wraith: Chicken Wraith
targeted-fireball: Targeted Fireball
magma-fissure: Magma Fissure
modifier:
duration: 持续时间
damage: 伤害
mana: 法力消耗
stamina: 体力消耗
cooldown: 冷却时间
effect-duration: 效果持续时间
radius: 半径
power: 伤害加成
heal: 生命
knockback: 击退
force: 影响
length: 距离
amplifier: 增益
drain: 磨损
knock-up: 唤醒
limit: 限制
ignite: 点燃
range: 范围
amount: 数量
speed: 速度
jump-force: 强制跳跃
slow-amplifier: 减速等级
slow-duration: 减速持续时间
inaccuracy: Inaccuracy
max-ignite: Max Ignite
extra-damage: Extra Damage

View File

@ -1,23 +0,0 @@
condition:
stamina:
positive: '&a✔ Requires #stamina# Stamina'
negative: '&c✖ Requires #stamina# Stamina'
level:
positive: '&a✔ Requires Level #level#'
negative: '&c✖ Requires Level #level#'
mana:
positive: '&a✔ Requires #mana# Mana'
negative: '&c✖ Requires #mana# Mana'
class:
positive: '&a✔ Required Class: #class#'
negative: '&c✖ Required Class: #class#'
food:
positive: '&a✔ Requires #food# Food'
negative: '&c✖ Requires #food# Food'
ingredient:
mmoitem:
positive: '&8✔ &7#amount# #item#'
negative: '&c✖ &7#amount# #item#'
vanilla:
positive: '&8✔ &7#amount# #item#'
negative: '&c✖ &7#amount# #item#'

View File

@ -1,20 +0,0 @@
UNIDENTIFIED_ITEM:
name: '&kUnidentified'
lore:
- '&e&oThis item is &c&o&nunidentified&e&o.'
- '&e&oI''ll have to find a way to identify this.'
BACK:
name: Back
lore: []
NEXT_PAGE:
name: Next Page
lore: []
PREVIOUS_PAGE:
name: Previous Page
lore: []
NO_ITEM:
name: '- No Item -'
lore: []
NO_GEM_STONE:
name: '- Empty Gem Socket -'
lore: []

View File

@ -1,42 +0,0 @@
hands-too-charged: 请将需要改变属性的物品置于手中
spell-on-cooldown: '#progress#'
item-on-cooldown: '#progress#'
not-enough-perms-command: 你没有权限执行该命令
attack-blocked: '阻挡 #percent#% 伤害'
attack-dodged: 格挡攻击
attack-parried: 闪避攻击
not-enough-levels: '&f[&c&l等级受限&f]'
soulbound-restriction: '&f[&5&l灵魂绑定&f]'
not-enough-perms: '&f[&6&l权限受限&f]'
broken-item: 物品已损坏 请先修复该物品
item-broke: '#item# 已损坏'
zero-durability: 物品已无耐久值 请先修复该物品
not-enough-mana: '&f[&b&l法力值受限&f]'
not-enough-stamina: '&f[&d&l体力值受限&f]'
wrong-class: '&f[&9&l职业受限&f]'
successfully-identified: '&2成功识别 #item#'
successfully-deconstructed: '&c成功拆解 #item#'
gem-stone-applied: '&f[&b&l+&f] #gem# 镶嵌至 #item# 成功 ✔'
gem-stone-broke: '&f[&c&l-&f] #gem# 镶嵌至 #item# 失败 x'
repaired-item: '修复 #amount# x #item#'
gave-item: '&f给予 #amount# x #item# 至 #player#'
received-item: '&f获得 #amount# x #item#'
cant-update-item: 无法更新物品
update-item: 更新完成
empty-workbench-first: '&c请先清空合成台'
not-enough-perms-craft: '&c你没有权限制作该物品'
cant-bind-item: '该物品绑定至 #player# 绑定等级 #level# 若需重新绑定请破坏原绑定'
no-soulbound: 无绑定
cant-bind-stacked: 无法绑定堆叠物品
unsuccessful-soulbound: 绑定失败
unsuccessful-soulbound-break: 无法破坏绑定
low-soulbound-level: '绑定等级 #level# 若需重新绑定 绑定等级需高于该绑定等级'
successfully-bind-item: '成功绑定 绑定等级 #level# 绑定物品 #item#'
successfully-break-bind: '绑定破坏 绑定等级 #level#'
soulbound-item-lore: '&f绑定至 #player# &8| &n绑定等级 &7&l#level#'
soulbound-command-no: 无绑定
soulbound-command-info: '物品绑定至 #player# 绑定等级 #level#'
advanced-workbench: 高级合成台
advanced-recipes: 高级合成
gem-stats: 宝石数据
click-advanced-recipe: '#d &7点击以查看高级合成'

View File

@ -1,30 +0,0 @@
# Translation by tucaoever
# Date: 10-13-2018
speed: 速度提升
slow: 缓慢
fast-digging: 急迫
slow-digging: 挖掘疲劳
increase-damage: 力量
heal: 生命恢复
harm: 伤害
jump: 跳跃提升
confusion: 眩晕
regeneration: 生命恢复
damage-resistance: 抗性提升
fire-resistance: 火焰保护
water-breathing: 水下呼吸
invisibility: 隐身
blindness: 失明
night-vision: 夜视
hunger: 饥饿
weakness: 虚弱
poison: 中毒
wither: 凋零
health-boost: 生命提升
absorption: 伤害吸收
saturation: 饱和
glowing: 发光
levitation: 悬浮
luck: 幸运
unluck: 不幸

View File

@ -1,151 +0,0 @@
# Weapon Stats
attack-damage: '&3 &7➸ 攻击伤害: &f{value}'
attack-speed: '&3 &7➸ 攻击速度: &f{value}'
critical-strike-chance: '&3 &7■ 暴击概率: &f<plus>{value}%'
critical-strike-power: '&3 &7■ 暴击附加: &f<plus>{value}%'
skill-critical-strike-chance: '&3 &7■ Skill Crit Chance: &f<plus>{value}%'
skill-critical-strike-power: '&3 &7■ Skill Crit Power: &f<plus>{value}%'
range: '&3 &7■ 范围: &f{value}'
mana-cost: '&9■ 消耗 {value} 法力值'
stamina-cost: '&9■ 消耗 {value} 体力'
arrow-velocity: '&3 &7■ 箭矢速度: &f{value}'
blunt-power: '&3 &7■ AOE 伤害半径: &f{value}'
blunt-rating: '&3 &7■ AOE 伤害比例: &f{value}%'
two-handed: '&3 &7■ 双持'
handworn: '&3 &7■ Handworn'
knockback: '&3 &7■ 击退: &f{value}'
recoil: '&3 &7■ 后坐力: &f{value}%'
note-weight: '&3 &7■ Note Weight: &f{value}'
lifesteal: '&3 &7■ Lifesteal: &c+{value}%'
spell-vampirism: '&3 &7■ Spell Vampirism: &c+{value}%'
# Extra Damage
pve-damage: '&3 &7■ PvE 伤害加成: &f<plus>{value}%'
pvp-damage: '&3 &7■ PvP 伤害加成: &f<plus>{value}%'
magic-damage: '&3 &7■ 法术伤害加成: &f<plus>{value}%'
weapon-damage: '&3 &7■ 武器伤害加成: &f<plus>{value}%'
undead-damage: '&3 &7■ 不死生物伤害加成: &f<plus>{value}%'
skill-damage: '&3 &7■ Skill Damage: &f<plus>{value}%'
physical-damage: '&3 &7■ Physical Damage: &f<plus>{value}%'
projectile-damage: '&3 &7■ Projectile Damage: &f<plus>{value}%'
faction-damage-undead: '&3 &7■ Undead Faction Damage: &f<plus>{value}%'
# Abilities
ability-format: '&a>&8| &7{trigger} &8|&e|&8| &7&l{ability}'
ability-modifier: ' &3>&8|&7 {modifier}&8: &f{value}'
ability-splitter: '&8'
# Armor Stats
block-power: '&3 &7■ 阻挡: &f<plus>{value}%'
block-rating: '&3 &7■ 阻挡概率: &f<plus>{value}%'
block-cooldown-reduction: '&3 &7■ 阻挡冷却缩减: &f<plus>{value}%'
dodge-rating: '&3 &7■ 闪避几率: &f<plus>{value}%'
dodge-cooldown-reduction: '&3 &7■ 闪避冷却缩减: &f<plus>{value}%'
parry-rating: '&3 &7■ 招架几率: &f<plus>{value}%'
parry-cooldown-reduction: '&3 &7■ 招架冷却缩减: &f<plus>{value}%'
armor: '&3 &7✠ 护甲[B]: &f<plus>{value}'
armor-toughness: '&3 &7✠ 护甲[A]: &f<plus>{value}'
knockback-resistance: '&3 &7✠ 击退保护: &f<plus>{value}%'
max-health: '&c❤ 生命值: <plus>{value}'
movement-speed: '&3 &7■ 移动速度: &f<plus>{value}'
# Damage Reduction
defense: '&3 &7■ Defense: &f<plus>{value}'
damage-reduction: '&3 &7■ 伤害减免: &f<plus>{value}%'
fall-damage-reduction: '&3 &7■ 摔落伤害减免: &f<plus>{value}%'
fire-damage-reduction: '&3 &7■ 火焰伤害减免: &f<plus>{value}%'
magic-damage-reduction: '&3 &7■ 魔法伤害减免: &f<plus>{value}%'
projectile-damage-reduction: '&3 &7■ Projectile Damage Reduction: &f<plus>{value}%'
physical-damage-reduction: '&3 &7■ Physical Damage Reduction: &f<plus>{value}%'
pve-damage-reduction: '&3 &7■ PvE Damage Reduction: &f<plus>{value}%'
pvp-damage-reduction: '&3 &7■ PvP Damage Reduction: &f<plus>{value}%'
# RPG Stats
health-regeneration: '&3 &7■ Health Regeneration: &f<plus>{value}'
max-mana: '&3 &7■ 最大法力值加成: &f<plus>{value}'
mana-regeneration: '&3 &7■ Mana Regeneration: &f<plus>{value}'
max-stamina: '&3 &7■ Max Stamina: &f<plus>{value}'
stamina-regeneration: '&3 &7■ Stamina Regeneration: &f<plus>{value}'
cooldown-reduction: '&3 &7■ Skill Cooldown Reduction: &f<plus>{value}%'
additional-experience: '&3 &7■ Additional Experience: &f<plus>{value}%'
additional-experience-alchemy: '&3 &7■ Additional Alchemy Experience: &f<plus>{value}%'
additional-experience-enchanting: '&3 &7■ Additional Enchanting Experience: &f<plus>{value}%'
additional-experience-farming: '&3 &7■ Additional Farming Experience: &f<plus>{value}%'
additional-experience-fishing: '&3 &7■ Additional Fishing Experience: &f<plus>{value}%'
additional-experience-mining: '&3 &7■ Additional Mining Experience: &f<plus>{value}%'
additional-experience-smelting: '&3 &7■ Additional Smelting Experience: &f<plus>{value}%'
additional-experience-smithing: '&3 &7■ Additional Smithing Experience: &f<plus>{value}%'
additional-experience-woodcutting: '&3 &7■ Additional Woodcutting Experience: &f<plus>{value}%'
# Extra Options
perm-effect: '&3 &7■ 效果 &f{effect}'
command: '&3 &7■ 指令: &f{format} &7(&f{cooldown}&7s)'
item-cooldown: '&3 &7■ &f{value}&7 秒 冷却'
arrow-potion-effects: '&3 &7■ Arrow Effect: &f{effect}'
# Consumables
restore-health: '&3 &7■ 恢复 &f{value} &7生命值'
restore-food: '&3 &7■ 恢复 &f{value} &7饥饿值'
restore-saturation: '&3 &7■ 恢复 &f{value} &7饱和度'
restore-mana: '&3 &7■ 恢复 &f{value} &7法力值'
restore-stamina: '&3 &7■ 恢复 &f{value} &7法力值'
effect: '&3 &7■ 获得 &f{effect} &7持续 &f{duration}&7 秒'
repair: '&3 &7■ 修复: &f{value}'
repair-percent: '&3 &7■ Repair: &f{value}%'
can-identify: '&3 &7■ 可识别'
can-deconstruct: '&3 &7■ 可分解'
can-deskin: '&3 &7■ Can de-skin skinned items.'
success-rate: '&3 &7■ 成功概率: &a&l{value}%'
max-consume: '&3 &7■ Max Consume: &f{value} &7uses'
# Gem Stones
empty-gem-socket: '&a◆ Empty {name} Gem Socket'
filled-gem-socket: '&a◆ {name}'
when-applied: '&a镶嵌时间:'
gem-stone-lore: '&8&l[&2&l*&8&l] 放置宝石以镶嵌'
# Soulbound
soulbinding-chance: '&3 &7■ &a{value}%&7 几率绑定物品'
soulbound-break-chance: '&3 &7■ &a{value}%&7 几率破坏绑定'
soulbound-level: '&3 &7■ 绑定等级 &e{value}'
# Tool
autosmelt: '&3 &7■ &f自动熔炼'
bouncing-crack: '&3 &7■ &f 范围破坏'
pickaxe-power: '&3 &7■ &fPickaxe Power: &a{value}'
durability: '&7Durability: {current} / {max}'
# General
item-type: '&3 &7> 类型: {type}'
tier: '&3 &7[&f&l品质&7]: {value}'
required-class: '&3 &7> &9&l职业限制&7&l: {value}'
required-level: '&3 &7> &c&l等级限制&7&l: {value}'
# MMOCore Attributes
required-dexterity: '&eRequires &c{value} &eDexterity'
required-strength: '&eRequires &c{value} &eStrength'
required-intelligence: '&eRequires &c{value} &eIntelligence'
additional-dexterity: '&3 &7■ Extra Dexterity: &f<plus>{value}'
additional-strength: '&3 &7■ Extra Strength: &f<plus>{value}'
additional-intelligence: '&3 &7■ Extra Intelligence: &f<plus>{value}'
# Professions
profession-alchemy: '&eAlchemy Level: &c{value}'
profession-enchanting: '&eEnchanting Level: &c{value}'
profession-farming: '&eFarming Level: &c{value}'
profession-fishing: '&eFishing Level: &c{value}'
profession-mining: '&eMining Level: &c{value}'
profession-smelting: '&eSmelting Level: &c{value}'
profession-smithing: '&eSmithing Level: &c{value}'
profession-woodcutting: '&eWoodcutting Level: &c{value}'
# Elemental Stat Format
elemental-damage: '{color}{icon}&7 {value} {element} Damage'
elemental-damage-percent: '{color}{icon}&7 +{value}% {element} Damage'
elemental-defense: '{color}{icon}&7 {value} {element} Defense'
elemental-defense-percent: '{color}{icon}&7 +{value}% {element} Defense'
elemental-weakness: '{color}{icon}&7 {value}% {element} Weakness'
# Custom stats
custom-myluck: '&3 &7■ 机会: &f<plus>{value}'

View File

@ -1,105 +0,0 @@
ability:
overload: Surchage
shulker-missile: Missile de Shulker
magical-shield: Ecu magique
heal: Soins
fire-meteor: Météorite
leap: Bond
light-dash: Dash léger
burn: Embrasement
starfall: Court-circuit
wither: Wither
vampirism: Vol de vie
shockwave: Onde de choc
smite: Châtiment
sparkle: Etincelle
corrupt: Dépravation
tnt-throw: Lancer de TNT
firebolt: Boule de feu
earthquake: Tremblement de terre
stun: Etourdissement
swiftness: Agilité
holy-missile: Projectile béni
black-hole: Trou noir
slow: Ralentissement
circular-slash: Attaque circulaire
cursed-beam: Projectile maudit
heavy-charge: Charge puissante
thrust: Coup d'estoc
item-throw: Lancer d'objet
corrupted-fangs: Crocs maudits
ice-crystal: Crystal de glace
blind: Aveuglement
shock: Choc
shadow-veil: Voile ténébreuse
poison: Poison
blink: Téléportation
sky-smash: Uppercut
bloodbath: Bain de sang
confuse: Confusion
hoearthquake: Trembl'houement de terre
freeze: Gel
blizzard: Blizzard
bouncy-fireball: Boule de feu rebondissante
burning-hands: Mains flamboyantes
tactical-grenade: Grenade tactique
ignite: Combustion
throw-up: Vommissement
minor-explosion: Explosion mineure
frog-mode: Mode grenouille
regen-ally: Régénération amie
lightning-beam: Foudroiement
death-mark: Marque de la mort
contamination: Contamination
corrosion: Corrosion
explosive-turkey: Poulet explosif
snowman-turret: Tourelle de neige
arcane-hail: Grêle des arcanes
grand-heal: Guérison générale
magical-path: Chemin magique
life-ender: Terminateur de vie
present-throw: Lancement de cadeau
weaken-target: Faiblesse
chicken-wraith: Soulèvement des poulets
freezing-curse: Malédiction de gel
arcane-rift: Faille des arcanes
targeted-fireball: Boule de feu guidée
firefly: Papillons de feu
frozen-aura: Aura glaciale
magma-fissure: Fissure de magma
bunny-mode: Mode lapin
item-bomb: Bombe artisanale
modifier:
damage: Dégats
mana: Mana
stamina: Stamina
cooldown: Délai
radius: Rayon
duration: Durée
effect-duration: Durée d'effet
power: Puissance
heal: Soin
knockback: Recul
force: Force
length: Longueur
amplifier: Puissance d'effet
drain: Drain
knock-up: Recul
limit: Limite
ignite: Enflammement
range: Portée
amount: Quantité
inaccuracy: Imprécision
speed: Vitesse
max-ignite: Enflammement maximum
jump-force: Puissance de saut
extra-damage: Dégats supplémentaires
slow-duration: Temps de ralentissement
slow-amplifier: Niveau de ralentissement
cast-mode:
on-hit: A l'impact
when-hit: A l'impact*
left-click: Clic gauche
right-click: Clic droit
shift-left-click: Shift Clic gauche
shift-right-click: Shift Clic droit

View File

@ -1,14 +0,0 @@
staff-spirit:
nether-spirit: '&7■ Esprit du Nether'
void-spirit: '&7■ Esprit du Néant'
mana-spirit: '&7■ Esprit du Mana'
lightning-spirit: '&7■ Esprit de la Foudre'
xray-spirit: '&7■ Esprit du Rayon-X'
thunder-spirit: '&7■ Esprit de l''Orage'
sunfire-spirit: '&7■ Esprit du Rayon de Soleil'
lute-attack:
wave: '&7■ Attaques par vague'
circular: '&7■ Attaques circulaires'
simple: '&7■ Attaques simples'
brute: '&7■ Attaques brutales'
slash: '&7■ Attaques Slash'

View File

@ -1,23 +0,0 @@
condition:
stamina:
positive: '&a✔ Requiert #stamina# Stamina'
negative: '&c✖ Requiert #stamina# Stamina'
level:
positive: '&a✔ Niveau #level# requis'
negative: '&c✖ Niveau #level# requis'
mana:
positive: '&a✔ Requiert #mana# Mana'
negative: '&c✖ Requiert #mana# Mana'
class:
positive: '&a✔ Classe: #class#'
negative: '&c✖ Classe: #class#'
food:
positive: '&a✔ Nourriture requise: #food#'
negative: '&c✖ Nourriture requise: #food#'
ingredient:
mmoitem:
positive: '&8✔ &7#amount# #item#'
negative: '&c✖ &7#amount# #item#'
vanilla:
positive: '&8✔ &7#amount# #item#'
negative: '&c✖ &7#amount# #item#'

View File

@ -1,54 +0,0 @@
NO_ITEM:
name: '&c- Aucun objet -'
lore: []
NO_TYPE:
name: '&c- Aucun type -'
lore: []
TYPE_DISPLAY:
name: '&a#type# &8(Cliquer pour explorer)'
lore:
- '&7Cette catégorie regroupe &6#recipes#&7 recettes.'
PREVIOUS_PAGE:
name: '&aPage précédente'
lore: []
NEXT_PAGE:
name: '&aPage suivante'
lore: []
BACK:
name: '&aPrécedent'
lore: []
RECIPE_LIST:
name: '&aRecettes avancées'
lore: []
RECIPE_DISPLAY:
name: '&a&lFabriquer&f #name#'
lore:
- '{conditions}'
- '{conditions}&8Exigences:'
- '{crafting_time}'
- '{crafting_time}&7Temps de fabrication: &c#crafting-time#&7s'
- ''
- '&8Ingrédients:'
- '#ingredients#'
- ''
- '&eCliquez pour fabriquer cet objet!'
UPGRADING_RECIPE_DISPLAY:
name: '&e&lAméliorer&f #name#'
lore:
- ''
- '{conditions}&8Exigences:'
- '&8Ingrédients:'
- '#ingredients#'
- ''
- '&eClic gauche pour le fabriquer'
- '&eClic droit pour un aperçu'
QUEUE_ITEM_DISPLAY:
name: '&6&lEn attente&f #name#'
lore:
- '{ready}&7&oCet objet a été fabriqué avec succès.'
- '{queue}&7&oCet objet est encore en fabrication.'
- '{queue}'
- '{queue}&7Temps restant: &c#left#'
- ''
- '{ready}&eCliquez pour récupérer cet objet.'
- '{queue}&eCliquez pour annuler.'

View File

@ -1,40 +0,0 @@
hands-too-charged: 'Vos mains sont trop chargées, vous ne pouvez rien faire.'
spell-on-cooldown: '#progress# &eYou devez attendre #left# seconde#s#.'
item-on-cooldown: Cet objet est en récupération.
not-enough-perms-command: 'Vous n''avez pas la permission.'
attack-blocked: 'Vous avez bloqué #percent#% des dégats!'
attack-dodged: 'Vous avez esquivé une attaque.'
attack-parried: 'Vous avez parré une attaque.'
not-enough-levels: 'Vous n''avez pas le niveau nécessaire pour utiliser cet objet.'
soulbound-restriction: 'Cet objet est lié à un autre joueur, vous ne pouvez donc pas l''utiliser.'
not-enough-perms: 'Vous n''avez pas la permission.'
item-broke: 'Votre objet #item#&c est cassé.'
zero-durability: 'Cet objet est cassé, vous devez d''abord le réparer.'
not-enough-mana: 'Vous n''avez pas assez de mana.'
not-enough-stamina: 'Vous n''avez pas assez d''énergie.'
wrong-class: 'Vous n''avez pas la classe requise.'
successfully-identified: 'Vous avez identifié cet objet: #item#&e.'
successfully-deconstructed: 'Vous avez décomposé cet object: #item#&e.'
gem-stone-applied: 'Vous avez appliqué votre gemme &f#gem#&e sur votre objet &f#item#&e.'
gem-stone-broke: 'Vous avez cassé votre gemme (#gem#) en essayant de l''appliquer sur votre #item#.'
repaired-item: 'Vous avez réparé &f#item#&e de &f#amount# &epoints de durabilité.'
received-item: '&eVous avez reçu &f#item#&e#amount#.'
empty-workbench-first: 'Videz la grille de fabrication dans un premier temps.'
not-enough-perms-craft: 'Vous n''avez pas la permission d''utiliser cette recette.'
cant-bind-item: 'Cet objet est lié à #player# par un lien d''âme de niveau #level#. Vous devez dans un premier temps le détruire.'
no-soulbound: 'Cet objet n''est lié à aucune personne.'
cant-bind-stacked: 'Vous ne pouvez pas créer un lien d''âme sur des objets stackés.'
unsuccessful-soulbound: 'Vous avez raté votre lien d''âme.'
unsuccessful-soulbound-break: 'Votre n''avez pas réussi à créer un lien d''âme.'
low-soulbound-level: 'Vous avez besoin d''un objet d''un niveau de lien d''âme supérieur.'
successfully-bind-item: 'Vous avez appliqué un lien d''âme de niveau &6#level# &esur votre &6#item#&e.'
successfully-break-bind: 'Vous avez rompu le lien d''âme de niveau &6#level#&e avec brio.'
soulbound-item-lore: '&7//&4Lié à #player#//&4Lien d''âme de niv. #level#'
not-enough-materials: 'Vous n''avez pas assez de matériaux pour fabriquer cet objet.'
conditions-not-met: 'Vous ne pouvez pas fabriquer cet objet.'
crafting-canceled: 'Vous avez interrompu la fabrication de votre objet.'
already-crafting: 'Vous fabriquez déjà un autre objet!'
crafting-subtitle: '#bar# Temps restant: &e#left#'
advanced-workbench: 'Etabli avancé'
advanced-recipes: 'Recettes avancées'
click-advanced-recipe: '#d Cliquez pour afficher cette recette.'

View File

@ -1,30 +0,0 @@
speed: Vitesse
slow: Lenteur
fast-digging: Vitesse de minage
slow-digging: Lenteur de minage
increase-damage: Force
heal: Soins
harm: Dégats
jump: Saut
confusion: Confusion
regeneration: Régénération
damage-resistance: Résistance aux dégats
fire-resistance: Résistance au feu
water-breathing: Respiration
invisibility: Invisibilité
blindness: Aveuglement
night-vision: Nyctalopie
hunger: Faim
weakness: Faiblesse
poison: Poison
wither: Wither
health-boost: Vie améliorée
absorption: Absorption
saturation: Saturation
glowing: Brillance
levitation: Lévitation
luck: Chance
unluck: Malchance
slow-falling: Chute lente
conduit-power: Force du conduit
dolphins-grace: Grâce du dauphin

View File

@ -1,151 +0,0 @@
# Weapon Stats
attack-damage: '&7➸ Dégats d''attaque: &f{value}'
attack-speed: '&7➸ Vitesse d''attaque: &f{value}'
critical-strike-chance: '&7■ Chance de coup critique: &f<plus>{value}%'
critical-strike-power: '&7■ Puissance de coup critique: &f<plus>{value}%'
skill-critical-strike-chance: '&3 &7■ Chance de cp crit. (sorts): &f<plus>{value}%'
skill-critical-strike-power: '&3 &7■ Dégats critiques (sorts): &f<plus>{value}%'
range: '&7■ Portée: &f{value}'
mana-cost: '&9■ Consomme {value} Mana'
stamina-cost: '&9■ Consomme {value} Stamina'
arrow-velocity: '&7■ Vitesse de projectile: &f{value}'
blunt-power: '&7■ Ecrasement: &f{value}'
blunt-rating: '&7■ Ratio d''écrasement: &f{value}%'
two-handed: '&7■ Deux mains'
handworn: '&3 &7■ Handworn'
knockback: '&7■ Recul: &f{value}'
recoil: '&7■ Recul visuel: &f{value}%'
note-weight: '&7■ Poids des notes: &f{value}'
lifesteal: '&3 &7■ Vol de vie: &c+{value}%'
spell-vampirism: '&3 &7■ Vampirisme (sorts): &c+{value}%'
# Extra Damage
pve-damage: '&7■ Dégats PvE: &f<plus>{value}%'
pvp-damage: '&7■ Dégats PvP: &f<plus>{value}%'
magic-damage: '&7■ Dégats magiques: &f<plus>{value}%'
weapon-damage: '&7■ Dégats des armes: &f<plus>{value}%'
undead-damage: '&7■ Dégats contre les morts-vivants: &f<plus>{value}%'
skill-damage: '&7■ Dégats des sorts: &f<plus>{value}%'
physical-damage: '&7■ Dégats physiques: &f<plus>{value}%'
projectile-damage: '&7■ Dégats des projectiles: &f<plus>{value}%'
faction-damage-undead: '&3 &7■ Dégats contre les morts-vivants: &f<plus>{value}%'
# Abilities
ability-format: '&2{trigger}: {ability}'
ability-modifier: '&2{modifier}: {value}'
ability-splitter: '&2'
# Armor Stats
block-power: '&7■ Puissance de blocage: &f<plus>{value}%'
block-rating: '&7■ Chance de blocage: &f<plus>{value}%'
block-cooldown-reduction: '&7■ Réduction du délai de blocage: &f<plus>{value}%'
dodge-rating: '&7■ Chance d''esquive: &f<plus>{value}%'
dodge-cooldown-reduction: '&7■ Réduction du délai d''esquive: &f<plus>{value}%'
parry-rating: '&7■ Chance de parrade: &f<plus>{value}%'
parry-cooldown-reduction: '&7■ Réduction du délai de parrade: &f<plus>{value}%'
armor: '&7✠ Armure: &f<plus>{value}'
armor-toughness: '&7✠ Robustesse: &f<plus>{value}'
knockback-resistance: '&7✠ Résistance au recul: &f<plus>{value}%'
max-health: '&c❤ Points de vie: <plus>{value}'
movement-speed: '&7■ Vitesse de déplacement: &f<plus>{value}'
# Damage Reduction
defense: '&3 &7■ Defense: &f<plus>{value}'
damage-reduction: '&7■ Réduction de dégats: &f<plus>{value}%'
fall-damage-reduction: '&7■ Réduction de dégats de chute: &f<plus>{value}%'
fire-damage-reduction: '&7■ Réduction de dégats de feu: &f<plus>{value}%'
magic-damage-reduction: '&7■ Réduction de dégats magiques: &f<plus>{value}%'
projectile-damage-reduction: '&7■ Réduction de dégats des projectiles: &f<plus>{value}%'
physical-damage-reduction: '&7■ Réduction de dégats physiques: &f<plus>{value}%'
pve-damage-reduction: '&3 &7■ PvE Damage Reduction: &f<plus>{value}%'
pvp-damage-reduction: '&3 &7■ PvP Damage Reduction: &f<plus>{value}%'
# RPG stats
health-regeneration: '&7■ Régénération de vie: &f<plus>{value}'
max-mana: '&7■ Mana Max: &f<plus>{value}'
mana-regeneration: '&7■ Régénération de mana: &f<plus>{value}'
max-stamina: '&7■ Stamina Max: &f<plus>{value}'
stamina-regeneration: '&7■ Régénération d''énergie: &f<plus>{value}'
cooldown-reduction: '&7■ Réduction des délais de récup.: &f<plus>{value}%'
additional-experience: '&7■ Exp. supplémentaire: &f<plus>{value}%'
additional-experience-alchemy: '&7■ Exp. supp. (Alchimie): &f<plus>{value}%'
additional-experience-enchanting: '&7■ Exp. supp. (Enchantement): &f<plus>{value}%'
additional-experience-farming: '&7■ Exp. supp. (Agriculture): &f<plus>{value}%'
additional-experience-fishing: '&7■ Exp. supp. (pêche): &f<plus>{value}%'
additional-experience-mining: '&7■ Exp. supp. (Minage): &f<plus>{value}%'
additional-experience-smelting: '&7■ Exp. supp. (Fonte): &f<plus>{value}%'
additional-experience-smithing: '&7■ Exp. supp. (Forge): &f<plus>{value}%'
additional-experience-woodcutting: '&7■ Exp. supp. (Abattage): &f<plus>{value}%'
# Extra Options
perm-effect: '&7■ &f# &7 permanent'
command: '&7■ Commande: &f{format}c &7(&f{cooldown}&7s)'
item-cooldown: '&7■ &f{value}&7s de récupération'
arrow-potion-effects: '&3 &7■ Effet de potion: &f{effect}'
# Consumables
restore-health: '&7■ Restaure &f{value} &7Health'
restore-food: '&7■ Restaure &f{value} &7Food'
restore-saturation: '&7■ Restaure &f{value} &7Saturation'
restore-mana: '&7■ Restaure &f{value} &7Mana'
restore-stamina: '&7■ Restaure &f{value} &7Stamina'
effect: '&7■ Octroit &f{effect} &7for &f{duration} &7s'
repair: '&7■ Répare &f{value} &7utilisations'
repair-percent: '&3 &7■ Repair: &f{value}%'
can-identify: '&7■ Peut identifier des objets.'
can-deconstruct: '&7■ Peut déconstruire des objets.'
can-deskin: '&3 &7■ Peut retirer des skins.'
success-rate: '&7■ Chance de réussite: &a&l{value}%'
max-consume: '&7■ Utilisations max: &f{value} &7uses'
# Gem Stones
empty-gem-socket: '&a◆ Emplacement de gemme {name} vide'
filled-gem-socket: '&a◆ {name}'
when-applied: '&aQuand appliqué:'
gem-stone-lore: '&8&l[&2&l*&8&l] &aDéposez la &7sur un objet pour l''appliquer!'
# Soulbound
soulbinding-chance: '&7■ Chance de créer un soulbound: &a{value}%'
soulbound-break-chance: '&7■ Chance de détruire un soulbound: &a{value}%'
soulbound-level: '&7■ &7Soulbound de niv. &e{value}'
# Tools
autosmelt: '&7■ &fAutosmelt'
bouncing-crack: '&7■ &fFaille rebondissante'
pickaxe-power: '&7■ &fPuissance de pioche: &a{value}'
durability: '&7Durabilité: {current} / {max}'
# General
item-type: '&c{type}'
tier: '{value}'
required-class: '&7Classe requise: {value}'
required-level: '&eRequiert niv. {value}'
# MMOCore Attributes
required-dexterity: '&eRequiert &c{value} &eDextérité'
required-strength: '&eRequiert &c{value} &eForce'
required-intelligence: '&eRequiert &c{value} &eIntelligence'
additional-dexterity: '&3 &7■ Extra Dexterity: &f<plus>{value}'
additional-strength: '&3 &7■ Extra Strength: &f<plus>{value}'
additional-intelligence: '&3 &7■ Extra Intelligence: &f<plus>{value}'
# Professions
profession-alchemy: '&eAlchemy Level: &c{value}'
profession-enchanting: '&eEnchanting Level: &c{value}'
profession-farming: '&eFarming Level: &c{value}'
profession-fishing: '&eFishing Level: &c{value}'
profession-mining: '&eMining Level: &c{value}'
profession-smelting: '&eSmelting Level: &c{value}'
profession-smithing: '&eSmithing Level: &c{value}'
profession-woodcutting: '&eWoodcutting Level: &c{value}'
# Elemental Stat Format
elemental-damage: '{color}{icon}&7 {value} {element} Damage'
elemental-damage-percent: '{color}{icon}&7 +{value}% {element} Damage'
elemental-defense: '{color}{icon}&7 {value} {element} Defense'
elemental-defense-percent: '{color}{icon}&7 +{value}% {element} Defense'
elemental-weakness: '{color}{icon}&7 {value}% {element} Weakness'
# Custom stats
custom-myluck: '&3 &7■ Chance: &f<plus>{value}'

View File

@ -1,105 +0,0 @@
ability:
overload: Przeladowanie
freeze: Zamrozenie
magical-shield: Magiczna Tarcza
bouncy-fireball: Skoczna Kula Ognia
burning-hands: Plomienne Rece
fire-meteor: Ognisty Meteor
light-dash: Blyskawiczny Ped
tactical-grenade: Granat Taktyczny
ignite: Podpalenie
sparkle: Iskra
tnt-throw: Rzut TNT
rain-of-arrows: Deszcz Strzal
earthquake: Trzesienie Ziemi
stun: Ogluszenie
holy-missile: Swiety Pocisk
black-hole: Czarna Dziura
throw-up: Podrzut
circular-slash: Okrezne Ciecie
cursed-beam: Przeklety Promien
slow: Spowolnienie
thrust: Pchniecie
heavy-charge: Ciezka Szarza
item-throw: Rzut Przedmiotem
shock: Szok
minor-explosion: Mniejsza Eksplozja
shadow-veil: Zaslona Cieni
frog-mode: Tryb Zaby
regen-ally: Ulecz Sojusznika
lightning-beam: Piorun
death-mark: Znak Smierci
confuse: Dezorientacja
shulker-missile: Pocisk Shulkera
contamination: Skazenie
heal: Uzdrowienie
corrosion: Korozja
leap: Skok
explosive-turkey: Wybuchowy Indyk
hoearthquake: Moc Farmera
burn: Spalenie
starfall: Upadek Gwiazdy
wither: Uschniecie
shockwave: Fala Uderzeniowa
vampirism: Wampiryzm
smite: Cios
snowman-turret: Wiezyczka Balwanow
corrupt: Skazenie
arcane-hail: Tajemne Pozdrowienie
firebolt: Ognisty Pocisk
grand-heal: Wielkie Uleczenie
magical-path: Magiczna Sciezka
life-ender: Kres Zycia
swiftness: Szybkosc
present-throw: Rzut Prezentem
weaken-target: Oslabienie Celu
chicken-wraith: Widmo Kurczaka
freezing-curse: Mrozna Klatwa
arcane-rift: Tajemne Rozszczepienie
targeted-fireball: Wycelowana Kula Ognia
corrupted-fangs: Skazone Kly
ice-crystal: Krysztal Lodu
blind: Oslepienie
firefly: Swietlik
poison: Otruj
blink: Mrugniecie
sky-smash: Podniebne Zderzenie
frozen-aura: Mrozna Aura
bunny-mode: Tryb Krolika
magma-fissure: Magmowa Rozpadlina
bloodbath: Masakra
item-bomb: Bomba
modifier:
damage: Obrazenia
mana: Mana
stamina: Wytrzymalosc
cooldown: Czas Oczekiwania
radius: Zasieg
duration: Czas Trwania
amplifier: Wzmacniacz
inaccuracy: Niecelnosc
force: Sila
power: Moc
ignite: Podpalenie
speed: Szybkosc
knockback: Odrzucenie
length: Dlugosc
knock-up: Rozgrzewka
max-ignite: Maksymalne Rozpalenie
limit: Limit
jump-force: Sila Skoku
heal: Uleczenie
effect-duration: Dlugosc Trwania Efektu
drain: Wyczerpanie
extra-damage: Dodatkowe Obrazenia
range: Zasieg
amount: Ilosc
slow-duration: Dlugosc Spowolnienia
slow-amplifier: Wzmocnienie Spowolnienia
cast-mode:
on-hit: Po uderzeniu
when-hit: Kiedy Uderzony
left-click: LPM
right-click: PPM
shift-left-click: Shift + LPM
shift-right-click: Shift + PPM

View File

@ -1,14 +0,0 @@
staff-spirit:
nether-spirit: '&7■ Dusza Netheru'
void-spirit: '&7■ Dusza Pustki'
mana-spirit: '&7■ Dusza Many'
lightning-spirit: '&7■ Dusza Blyskawic'
xray-spirit: '&7■ Dusza X-Raya'
thunder-spirit: '&7■ Dusza Burzy'
sunfire-spirit: '&7■ Dusza Ognia Slonecznego'
lute-attack:
wave: '&7■ Ataki fali'
circular: '&7■ Ataki okrezne'
simple: '&7■ Ataki proste'
brute: '&7■ Ataki brutalne'
slash: '&7■ Ataki ciecia'

View File

@ -1,23 +0,0 @@
condition:
stamina:
positive: '&a✔ Requires #stamina# Stamina'
negative: '&c✖ Requires #stamina# Stamina'
level:
positive: '&a✔ Requires Level #level#'
negative: '&c✖ Requires Level #level#'
mana:
positive: '&a✔ Requires #mana# Mana'
negative: '&c✖ Requires #mana# Mana'
class:
positive: '&a✔ Required Class: #class#'
negative: '&c✖ Required Class: #class#'
food:
positive: '&a✔ Requires #food# Food'
negative: '&c✖ Requires #food# Food'
ingredient:
mmoitem:
positive: '&8✔ &7#amount# #item#'
negative: '&c✖ &7#amount# #item#'
vanilla:
positive: '&8✔ &7#amount# #item#'
negative: '&c✖ &7#amount# #item#'

View File

@ -1,30 +0,0 @@
UNIDENTIFIED_ITEM:
name: '&kNiezidentyfikowany'
lore:
- '&e&oTen przedmiot jest &c&o&nniezindentyfikowany&e&o.'
- '&e&oMusisz znalezc sposob by go zidentyfikowac'
TYPE_DISPLAY:
name: '#type# &8(Nacisnij by przegladac)'
lore:
- '&7Jest &6#recipes#&7 dostepnych przepisow.'
RECIPE_LIST:
name: Zaawansowane przepisy
lore: []
BACK:
name: Wroc
lore: []
NEXT_PAGE:
name: Nastepna Strona
lore: []
PREVIOUS_PAGE:
name: Poprzednia strona
lore: []
NO_ITEM:
name: '- Brak Przedmiotu -'
lore: []
NO_TYPE:
name: '- Brak rodzaju -'
lore: []
NO_GEM_STONE:
name: '- Puste gniazdo na klejnot -'
lore: []

View File

@ -1,49 +0,0 @@
hands-too-charged: Nie mozesz nic zrobic, twoje rece sa zbyt naladowane
spell-on-cooldown: '#progress# &eMusisz poczekac #left# second#s# przed rzuceniem
tego zaklecia.'
item-on-cooldown: Ten przedmiot nie jest jeszcze gotowy!
not-enough-perms-command: Nie masz wystarczajacych uprawnien!
attack-blocked: 'Wlasnie zablokowales #percent#% z obrazen z tego ataku!'
attack-dodged: Wlasnie uniknales ataku!
attack-parried: Wlasnie sparowales atak!
not-enough-levels: Nie masz wystarczajacego poziomu by uzyc tego przedmiotu!
soulbound-restriction: Ten przedmiot jest przypisany do innego gracza, nie mozesz
go uzyc!
not-enough-perms: Nie masz wystarczajacych uprawnien by tego uzyc!
broken-item: Ten przedmiot jest zniszczony, musisz go naprawic.
item-broke: 'Twoj #item#&c zostal zniszczony.'
zero-durability: Twoj przedmiot nie ma juz wytrzymalosci, napraw go by go uzywac.
not-enough-mana: Nie masz wystarczajaco many!
not-enough-stamina: Nie masz wystarczajaco staminy!
wrong-class: Nie masz odpowiedniej klasy!
successfully-identified: 'Udalo ci sie zidentyfikowac #item#&e.'
successfully-deconstructed: 'Udalo ci sie rozlozyc #item#&e.'
gem-stone-applied: Udalo ci sie wlozyc &f#gem#&e do twojego &f#item#&e.
gem-stone-broke: Twoj klejnot &f#gem#&c zostal zniszczony kiedy probowales wlozyc
go do &f#item#&c.
repaired-item: Udalo ci sie naprawic &f#item#&e za &f#amount# &euzyc.
gave-item: '&eDales &f#item#&e#amount# dla &f#player#&e.'
received-item: '&eOtrzymales &f#item#&e#amount#.'
cant-update-item: Nie bylo mozliwe ulepszenie twojego przedmiotu.
update-item: Udalo sie ulepszyc twoj przedmiot.
empty-workbench-first: Oproznij stol warsztatowy
not-enough-perms-craft: Nie posiadasz uprawnien by wytworzyc ten przedmiot
cant-bind-item: 'Ten przedmiot jest aktualnie przypisany do #player# za pomoca wiezu
poziomu #level#. Musisz najpierw przerwac wiez'
no-soulbound: Ten przedmiot nie jest przypisany do nikogo.
cant-bind-stacked: Nie mozesz przywiazach zestackowanych przedmiotow.
unsuccessful-soulbound: Twoja proba zwiazania nie udala sie.
unsuccessful-soulbound-break: Nie byles w stanie przerwac wiezu.
low-soulbound-level: 'Ten przedmiot jest jest przypisany wiezem poziomu #level#. Potrzebujesz
wiekszego poziomu wiezu na twoim przedmiocie by zerwac ten wiaz.'
successfully-bind-item: Udalo ci sie uzyc przywiazania poziomu &6#level# &e na twoim
&6#item#&e.
successfully-break-bind: Udalo ci sie przerwac przywiazanie poziomu &6#level# do &eprzedmiotu!
soulbound-item-lore: '&7//&4Przypisany do #player#//&4Lvl #level#'
soulbound-command-no: Ten przedmiot nie jest do nikogo przypisany
soulbound-command-info: Twoj przedmiot jest przypisany do &6#player# &eza pomoca wiezu
poziomu &6#level# &e.
advanced-workbench: Zaawansowany stol warsztatowy
advanced-recipes: Zaawansowane przepisy
gem-stats: Klejnoty
click-advanced-recipe: '#d Kliknij by poznac przepis.'

View File

@ -1,32 +0,0 @@
speed: Szybkosc
slow: Spowolnienie
fast-digging: Szybkie Kopanie
slow-digging: Wolne Kopanie
increase-damage: Sila
heal: Uzdrowienie
harm: Uszkodzenie
jump: Skok
confusion: Dezorientacja
regeneration: Regeneracja
damage-resistance: Odpornosc Na Obrazenia
fire-resistance: Odpornosc Na Ogien
water-breathing: Oddychanie Pod Woda
invisibility: Niewidzialnosc
blindness: Oslepienie
night-vision: Widzenie W Ciemnosci
hunger: Glod
weakness: Oslabienie
poison: Trucizna
wither: Uschniecie
health-boost: Doladowanie Zdrowia
absorption: Absorbcja
saturation: Nasycenie
glowing: Swiecenie
levitation: Lewitacja
luck: Szczescie
unluck: Pech
slow-falling: Powolne opadanie
conduit-power: Przewodnia Potega
dolphins-grace: Wdziecznosc Delfinow
bad-omen: Zly Omen
hero-of-the-village: Bohater Wioski

View File

@ -1,151 +0,0 @@
# Weapon Stats
attack-damage: '&7➸ Obrazenia: &f{value}'
attack-speed: '&7➸ Szybkosc Ataku: &f{value}'
critical-strike-chance: '&7■ Szansa na krytyka: &f<plus>{value}%'
critical-strike-power: '&7■ Sila krytyka: &f<plus>{value}%'
skill-critical-strike-chance: '&3 &7■ Skill Crit Chance: &f<plus>{value}%'
skill-critical-strike-power: '&3 &7■ Skill Crit Power: &f<plus>{value}%'
range: '&7■ Zasieg: &f{value}'
mana-cost: '&9■ Uzywa {value} Many'
stamina-cost: '&9■ Uzywa # Wytrzymalosci'
arrow-velocity: '&7■ Predkosc Strzaly: &f{value}'
blunt-power: '&7■ Sila Obuchowa: &f{value}%'
blunt-rating: '&7■ Klasa Obuchu: &f{value}%'
two-handed: '&7■ Dwureczny'
handworn: '&3 &7■ Handworn'
knockback: '&7■ Odrzut: &f{value}'
recoil: '&7■ Odrzut: &f{value}%'
note-weight: '&7■ Waga: &f{value}'
lifesteal: '&3 &7■ Lifesteal: &c+{value}%'
spell-vampirism: '&3 &7■ Spell Vampirism: &c+{value}%'
# Extra Damage
pve-damage: '&7■ Obrazenia PvE: &f<plus>{value}%'
pvp-damage: '&7■ Obrazenia PvP: &f<plus>{value}%'
magic-damage: '&7■ Obrazenia Magiczne: &f<plus>{value}%'
weapon-damage: '&7■ Obrazenia Od Broni: &f<plus>{value}%'
undead-damage: '&7■ Obrazenia Dla Nieumarlych: &f<plus>{value}%'
skill-damage: '&7■ Skill Damage: &f<plus>{value}%'
physical-damage: '&7■ Physical Damage: &f<plus>{value}%'
projectile-damage: '&7■ Projectile Damage: &f<plus>{value}%'
faction-damage-undead: '&3 &7■ Undead Faction Damage: &f<plus>{value}%'
# Abilities
ability-format: '&2{trigger}: {ability}'
ability-modifier: '&2{modifier}: {value}'
ability-splitter: '&2'
# Armor Stats
block-power: '&7■ Sila Bloku: &f<plus>{value}%'
block-rating: '&7■ Klasa Bloku: &f<plus>{value}%'
block-cooldown-reduction: '&7■ Zmniejszenie Czasu Odnowienia Bloku: &f<plus>{value}%'
dodge-rating: '&7■ Klasa Uniku: &f<plus>{value}%'
dodge-cooldown-reduction: '&7■ Zmniejszenie Czasu Odnowienia Uniku: &f<plus>{value}%'
parry-rating: '&7■ Klasa Parowania: &f<plus>{value}%'
parry-cooldown-reduction: '&7■ Zmniejszenie Czasu Odnowienia Parowania: &f<plus>{value}%'
armor: '&7✠ Pancerz: &f<plus>{value}'
armor-toughness: '&7✠ Wytrzymalosc Pancerza: &f<plus>{value}'
knockback-resistance: '&7✠ Odpornosc Na Odepchniecie: &f<plus>{value}%'
max-health: '&c❤ Zdrowie: <plus>{value}'
movement-speed: '&7■ Szybkosc Ruchu: &f<plus>{value}'
# Damage Reduction
defense: '&3 &7■ Defense: &f<plus>{value}'
damage-reduction: '&7■ Zmniejszenie Obrazen: &f<plus>{value}%'
fall-damage-reduction: '&7■ Zmniejszenie Obrazen Od Upadku: &f<plus>{value}%'
fire-damage-reduction: '&7■ Zmniejszenie Obrazen Od Ognia: &f<plus>{value}%'
magic-damage-reduction: '&7■ Zmniejszenie Obrazen Magicznych: &f<plus>{value}%'
projectile-damage-reduction: '&7■ Projectile Damage Reduction: &f<plus>{value}%'
physical-damage-reduction: '&7■ Zmniejszenie Obrazen Psychicznych: &f<plus>{value}%'
pve-damage-reduction: '&3 &7■ PvE Damage Reduction: &f<plus>{value}%'
pvp-damage-reduction: '&3 &7■ PvP Damage Reduction: &f<plus>{value}%'
# RPG stats
health-regeneration: '&7■ Regeneracja Zdrowia: &f<plus>{value}%'
max-mana: '&7■ Maksymalna Mana: &f<plus>{value}'
mana-regeneration: '&7■ Mana Regeneration: &f<plus>{value}'
max-stamina: '&7■ Max Stamina: &f<plus>{value}'
stamina-regeneration: '&7■ Stamina Regeneration: &f<plus>{value}'
cooldown-reduction: '&7■ Skill Cooldown Reduction: &f<plus>{value}%'
additional-experience: '&7■ Additional Experience: &f<plus>{value}%'
additional-experience-alchemy: '&7■ Additional Alchemy Experience: &f<plus>{value}%'
additional-experience-enchanting: '&7■ Additional Enchanting Experience: &f<plus>{value}%'
additional-experience-farming: '&7■ Additional Farming Experience: &f<plus>{value}%'
additional-experience-fishing: '&7■ Additional Fishing Experience: &f<plus>{value}%'
additional-experience-mining: '&7■ Additional Mining Experience: &f<plus>{value}%'
additional-experience-smelting: '&7■ Additional Smelting Experience: &f<plus>{value}%'
additional-experience-smithing: '&7■ Additional Smithing Experience: &f<plus>{value}%'
additional-experience-woodcutting: '&7■ Additional Woodcutting Experience: &f<plus>{value}%'
# Extra Options
perm-effect: '&7■ Staly &f{effect}'
command: '&7■ Komenda: &f{format} &7(&f{cooldown}&7s)'
item-cooldown: '&7■ &f#&7s Czas Odnowienia'
arrow-potion-effects: '&3 &7■ Arrow Effect: &f{effect}'
# Consumables
restore-health: '&7■ Odnawia &f{value} &7Zdrowia'
restore-food: '&7■ Odnawia &f{value} &7Jedzenia'
restore-saturation: '&7■ Odnawia &f{value} &7Nasycenia'
restore-mana: '&7■ Odnawia &f{value} &7Many'
restore-stamina: '&7■ Odnawia &f{value} &7Wytrzymalosci'
effect: '&7■ Zapewnia &f#e &7na &f{duration}&7s'
repair: '&7■ Napraw: &f{value}'
repair-percent: '&3 &7■ Repair: &f{value}%'
can-identify: '&7■ Moze identyfikowac przedmioty.'
can-deconstruct: '&7■ Moze rozkladac wielopoziomowe przedmioty.'
can-deskin: '&3 &7■ Can de-skin skinned items.'
success-rate: '&7■ Szansa na sukces: &a&l#%'
max-consume: '&7■ Max Consume: &f{value} &7uses'
# Gem Stones
empty-gem-socket: '&a◆ Puste Miejsce Na Klejnot'
filled-gem-socket: '&a◆ {name}'
when-applied: '&aKiedy Wlozony:'
gem-stone-lore: '&8&l[&2&l*&8&l] &aPrzesun na przedmiot &7by uzyc!'
# Soulbound
soulbinding-chance: '&7■ Ma &a#%&7 szansy by przywiazac twoj przedmiot.'
soulbound-break-chance: '&7■ Ma &a{value}%&7 szansy by zlamac twoje wiezi.'
soulbound-level: '&7■ Wiez poziomu &e{value} &7'
# Tools
autosmelt: '&7■ &fAutomatyczne Wytapianie'
bouncing-crack: '&7■Skoczne Pekniecie &f'
pickaxe-power: '&7■ &fPickaxe Power: &a{value}'
durability: '&7Durability: {current} / {max}'
# General
item-type: '&c{type}'
tier: '# PRZEDMIOT'
required-class: '&7{value} Przedmiot'
required-level: '&ePoziom {value}'
# MMOCore Attributes
required-dexterity: '&eRequires &c{value} &eDexterity'
required-strength: '&eRequires &c{value} &eStrength'
required-intelligence: '&eRequires &c{value} &eIntelligence'
additional-dexterity: '&3 &7■ Extra Dexterity: &f<plus>{value}'
additional-strength: '&3 &7■ Extra Strength: &f<plus>{value}'
additional-intelligence: '&3 &7■ Extra Intelligence: &f<plus>{value}'
# Professions
profession-alchemy: '&eAlchemy Level: &c{value}'
profession-enchanting: '&eEnchanting Level: &c{value}'
profession-farming: '&eFarming Level: &c{value}'
profession-fishing: '&eFishing Level: &c{value}'
profession-mining: '&eMining Level: &c{value}'
profession-smelting: '&eSmelting Level: &c{value}'
profession-smithing: '&eSmithing Level: &c{value}'
profession-woodcutting: '&eWoodcutting Level: &c{value}'
# Elemental Stat Format
elemental-damage: '{color}{icon}&7 {value} {element} Damage'
elemental-damage-percent: '{color}{icon}&7 +{value}% {element} Damage'
elemental-defense: '{color}{icon}&7 {value} {element} Defense'
elemental-defense-percent: '{color}{icon}&7 +{value}% {element} Defense'
elemental-weakness: '{color}{icon}&7 {value}% {element} Weakness'
# Custom stats
custom-myluck: '&3 &7■ Szansa: &f<plus>{value}'

View File

@ -1,105 +0,0 @@
ability:
overload: Перегрузка
freeze: Заморозка
magical-shield: Магический Щит
blizzard: Снежная Буря
bouncy-fireball: Скачущий Огненный Шар
burning-hands: Горящие Руки
fire-meteor: Огненный Метеор
light-dash: Бросок
tactical-grenade: Тактическая Граната
ignite: Поджог
sparkle: Искра
tnt-throw: Бросок TNT
earthquake: Землятрясение
stun: Оглушение
holy-missile: Святая Ракета
black-hole: Черная Дыра
cursed-beam: Проклятый Луч
circular-slash: Круговое Рассечение
throw-up: Подбрасывание
slow: Замедление
heavy-charge: Тяжелый Выпад
thrust: Колющий Удар
item-throw: Бросок Предмета
shock: Шок
minor-explosion: Небольшой Взрыв
shadow-veil: Исчезновение
frog-mode: Режим Лягушки
regen-ally: Исцеление Союзников
lightning-beam: Удар Молнией
death-mark: Метка Смерти
confuse: Сбивание
shulker-missile: Снаряд Шалкера
contamination: Заражение
heal: Восстановление
corrosion: Коррозия
leap: Прыжок
explosive-turkey: Взрывной Турк
hoearthquake: Большая Вскопка
burn: Поджог
starfall: Звездопад
wither: Иссушение
shockwave: Ударная Волна
vampirism: Вампризм
snowman-turret: Турель - Снеговик
smite: Молния
corrupt: Искажение
arcane-hail: Волшебный Дождь
firebolt: Огненный Шар
grand-heal: Массовое Исцеление
magical-path: Магия Полета
life-ender: Месть Эндера
swiftness: Ускорение
present-throw: Бросок Подарка
weaken-target: Ослабление Противника
chicken-wraith: Куриный Призрак
freezing-curse: Проклятие Заморозки
arcane-rift: Чародейский Разлом
targeted-fireball: Нацеленный огненный Шар
corrupted-fangs: Клыки Искажения
ice-crystal: Ледяной Кристалл
blind: Слепота
firefly: Светлячок
poison: Яд
blink: Блинк
frozen-aura: Аура Обморожения
sky-smash: Воздушный Бросок
magma-fissure: Трещина Магмы
bunny-mode: Режим Кролика
bloodbath: Резня
item-bomb: Бомба
modifier:
damage: Урон
mana: Мана
stamina: Стамина
cooldown: Перезарядка
radius: Радиус
duration: Длителньость
amplifier: Усиление
power: Мощь
inaccuracy: Неточность
force: Сила
ignite: Поджог
speed: Скорость
knockback: Отбрасывание
length: Длина
knock-up: Вертикальное Отбрасывание
max-ignite: Максимальная длительность Горения
limit: Лимит
jump-force: Сила Прыжка
heal: Восстановление
effect-duration: Длительность Эффекта
drain: Вампризм
extra-damage: Дополнительный урон
range: Дальность
amount: Количество
slow-duration: Длительность Замедления
slow-amplifier: Усиление Замедления
cast-mode:
on-hit: При Попадании
when-hit: При получении Урона
left-click: Левый Клик
right-click: Правый Клик
shift-left-click: Шифт + Левый Клик
shift-right-click: Шифт + Првый Клик

View File

@ -1,14 +0,0 @@
staff-spirit:
nether-spirit: '&7■ Дух Ада'
void-spirit: '&7■ Дух Пустоты'
mana-spirit: '&7■ Дух Маны'
lightning-spirit: '&7■ Дух Молнии'
xray-spirit: '&7■ Дух X-Ray '
thunder-spirit: '&7■ Дух Грозы'
sunfire-spirit: '&7■ Дух Солнца'
lute-attack:
wave: '&7■ Волновая Атака'
circular: '&7■ Круговая Атака'
simple: '&7■ Простая Атака'
brute: '&7■ Грубая Атака'
slash: '&7■ Разящая Атака'

View File

@ -1,23 +0,0 @@
condition:
stamina:
positive: '&a✔ Требуется #stamina# ед. Стамины'
negative: '&c✖ Требуется #stamina# ед. Стамины'
level:
positive: '&a✔ Требуется #level# Уровень'
negative: '&c✖ Требуется #level# Уровень'
mana:
positive: '&a✔ Требуется #mana# ед. Маны'
negative: '&c✖ Требуется #mana# ед. Маны'
class:
positive: '&a✔ Required Class: #class#'
negative: '&c✖ Required Class: #class#'
food:
positive: '&a✔ Требуется #food# ед. Еды'
negative: '&c✖ Требуется #food# ед. Еды'
ingredient:
mmoitem:
positive: '&8✔ &7#amount# #item#'
negative: '&c✖ &7#amount# #item#'
vanilla:
positive: '&8✔ &7#amount# #item#'
negative: '&c✖ &7#amount# #item#'

View File

@ -1,60 +0,0 @@
NO_ITEM:
name: '&c- Нет Предмета -'
lore: []
NO_TYPE:
name: '&c- Нет Типа -'
lore: []
TYPE_DISPLAY:
name: '&a#type# &8(Нажмите, чтобы просмотреть)'
lore:
- '&7Есть &6#recipes#&7 доступных рецептов.'
PREVIOUS_PAGE:
name: '&aПредыдущая Страница'
lore: []
NEXT_PAGE:
name: '&aСледующая Страница'
lore: []
PREVIOUS_IN_QUEUE:
name: '&aПредыдущая'
lore: []
NEXT_IN_QUEUE:
name: '&aСледующая'
lore: []
BACK:
name: '&aНазад'
lore: []
RECIPE_LIST:
name: '&aУлучшенные Рецепты'
lore: []
CRAFTING_RECIPE_DISPLAY:
name: '&a&lСоздание&f #name#'
lore:
- '{conditions}'
- '{conditions}&8Conditions:'
- '{crafting_time}'
- '{crafting_time}&7Время Создания: &c#crafting-time#&7s'
- ''
- '&8Ингредиенты:'
- '#ingredients#'
- ''
- '&eНажмите, чтобы скрафтить!'
UPGRADING_RECIPE_DISPLAY:
name: '&e&lУлучшение&f #name#'
lore:
- '{conditions}'
- '{conditions}&8Conditions:'
- ''
- '&8Ингредиенты:'
- '#ingredients#'
- ''
- '&eНажмите, чтобы улучшить!'
QUEUE_ITEM_DISPLAY:
name: '&6&lОчередь&f #name#'
lore:
- '{ready}&7&oЭтот предмет был успешно создан.'
- '{queue}&7&oЭтот предмет находиться в очереди создания.'
- '{queue}'
- '{queue}&7Времени Осталось: &c#left#'
- ''
- '{ready}&eНажмите, чтобы взять!'
- '{queue}&eНажмите, чтобы отменить.'

View File

@ -1,48 +0,0 @@
received-item: Вы получили &6#item#&e#amount#.
hands-too-charged: Вы не можете ничего сделать, ваши руки слишком напряжены.
spell-on-cooldown: '#progress# &eВы должны подождать #left# сек.#s#, преждем чем использовать это
заклинание.'
item-on-cooldown: Этот предмет перезарежается!
not-enough-perms-command: У вас недостаточно прав.
attack-blocked: 'Вы заблокировали #percent#% от урона!'
attack-dodged: Вы уклонились от атаки!
attack-parried: Вы парировали атаку!
not-enough-levels: У вас недостаточно уровня, чтобы использовать этот предмет!
soulbound-restriction: Этот предмет привязан к другому игроку, вы не можете использовать его!
not-enough-perms: У вас недостаточно прав, чтобы использовать это.
wrong-class: У вас нет правильного класса, чтобы использовать этот предмет!
not-enough-mana: У вас недостаточно маны!
not-enough-stamina: У вас недостаточно стамины!
item-broke: 'Ваш #item#&c сломался.'
zero-durability: Этот предмет сломан, вам сначала нужно его починить.
successfully-identified: Вы успешно идентифицировали &6#item#&e.
successfully-deconstructed: Вы успешно деконструировали &6#item#&e.
gem-stone-applied: Вы успешно вставили самоцвет &6#gem#&e в ваш &6#item#&e.
gem-stone-broke: Ваш самоцвет &6#gem#&c сломался пока Вы пытались вставить его в &6#item#&c.
repaired-item: Вы успешно почнили &6#item#&e на &6#amount# ед. &eпрочности.
advanced-workbench: Улучшенный Верстак
empty-workbench-first: Пожалуйста, сначала очистите верстак.
not-enough-perms-craft: У вас недостаточно прав, чтобы создать этот предмет.
advanced-recipes: Улучшенные Рецепты
click-advanced-recipe: '#d Нажмите, чтобы увидеть этот рецепт.'
cant-bind-item: 'Этот предмет связан с #player# #level# уровнем персонализации.
Сначала Вы должны сломать эту свзяь.'
no-soulbound: Этот предмет не привязан ни к кому.
cant-bind-stacked: Вы не можете связать предметы в стаке.
unsuccessful-soulbound: Ваша персонализация не удалась.
unsuccessful-soulbound-break: Вы не смогли сломать связь.
low-soulbound-level: 'Этот предмет имеет #level# уровень персонализации. Вам понадобится более высокий уровень персонализации
на вашем расходнике, чтобы сломать эту свзять.'
successfully-bind-item: Вы успешно наложили &6#level# уровень &eперсонализации на ваш
&6#item#&e.
successfully-break-bind: Вы успешно сломали &6#level# уровень &eперсонализации!
soulbound-item-lore: '&4Связано с #player#//&4#level# уровнем Персонализации'
max-upgrades-hit: Этот предмет не может быть больше улучшен.
upgrade-fail: Ваше улучшение не удалось, и Вы потеряли расходник.
wrong-upgrade-reference: Вы не можете улучшить этот предмет с этим расходником.
upgrade-success: Вы успешно улучшили ваш &6#item#&e!
not-have-item-upgrade: У вас нет предмета для улучшения!
not-enough-materials: У вас недостаточно материалов, чтобы создать это.
conditions-not-met: Вы не можете создать этот предмет.
crafting-canceled: Вы отменили рецепт создания.
crafting-queue-full: В настоящее время очередь создания заполнена.

View File

@ -1,30 +0,0 @@
speed: Скорость
slow: Замедление
fast-digging: Спешка
slow-digging: Усталость
increase-damage: Сила
heal: Исцеление
harm: Моментальный Урон
jump: Прыгучесть
confusion: Тошнота
regeneration: Регенерация
damage-resistance: Сопротивление
fire-resistance: Огнестойкость
water-breathing: Подводное дыхание
invisibility: Невидимость
blindness: Слепота
night-vision: Ночное зрение
hunger: Голод
weakness: Слабость
poison: Отравление
wither: Иссушение
health-boost: Прилив здоровья
absorption: Поглощение
saturation: Насыщение
glowing: Свечение
levitation: Левитация
luck: Удача
unluck: Невезение
slow-falling: Медленное Падение
conduit-power: Морская Сила
dolphins-grace: Дельфинья Грация

View File

@ -1,151 +0,0 @@
# Weapon Stats
attack-damage: '&4➸ Уровень Атаки: {value}'
attack-speed: '&c➸ Скорость Атаки: {value}'
critical-strike-chance: '&7■ Шанс Критической Атаки: &f<plus>{value}%'
critical-strike-power: '&7■ Сила Критической Атаки: &f<plus>{value}%'
skill-critical-strike-chance: '&3 &7■ Skill Crit Chance: &f<plus>{value}%'
skill-critical-strike-power: '&3 &7■ Skill Crit Power: &f<plus>{value}%'
range: '&7■ Радиус: &f{value}'
mana-cost: '&9■ Маны за Использование: {value}'
stamina-cost: '&9■ Стамины за Использование: {value}'
arrow-velocity: '&7■ Arrow Velocity: &f{value}'
blunt-power: '&7■ Сила Блока: &f{value}'
blunt-rating: '&7■ Шанс Блока: &f{value}%'
two-handed: '&7■ &cДвуручное'
handworn: '&3 &7■ Handworn'
knockback: '&7■ Отталкивание: &f{value}'
recoil: '&7■ Отдача: &f{value}%'
note-weight: '&7■ Примечание Вес: &f{value}'
lifesteal: '&3 &7■ Lifesteal: &c+{value}%'
spell-vampirism: '&3 &7■ Spell Vampirism: &c+{value}%'
# Extra Damage
pve-damage: '&7■ PvE Урон: &f<plus>{value}%'
pvp-damage: '&7■ PvP Урон: &f<plus>{value}%'
magic-damage: '&7■ Магический Урон: &f<plus>{value}%'
weapon-damage: '&7■ Урон от Оружия: &f<plus>{value}%'
undead-damage: '&7■ Урон по Нежити: &f<plus>{value}%'
skill-damage: '&7■ Skill Damage: &f<plus>{value}%'
physical-damage: '&7■ Physical Damage: &f<plus>{value}%'
projectile-damage: '&7■ Projectile Damage: &f<plus>{value}%'
faction-damage-undead: '&3 &7■ Undead Faction Damage: &f<plus>{value}%'
# Abilities
ability-format: '&2{trigger}: {ability}'
ability-modifier: '&2{modifier}: {value}'
ability-splitter: '&2'
# Armor Stats
block-power: '&7■ Сила Блокирования: &f<plus>{value}%'
block-rating: '&7■ Шанс Блокирования: &f<plus>{value}%'
block-cooldown-reduction: '&7■ Уменьшение Перезарядки Блокирования: &f<plus>{value}%'
dodge-rating: '&7■ Шанс Уклонения: &f<plus>{value}%'
dodge-cooldown-reduction: '&7■ Уменьшение Перезарядки Уклонения: &f<plus>{value}%'
parry-rating: '&7■ Шанс Парирования: &f<plus>{value}%'
parry-cooldown-reduction: '&7■ Уменьшение Перезарядки Парирования: &f<plus>{value}%'
armor: '&7✠ Защита: &f<plus>{value}'
armor-toughness: '&7✠ Прочность Брони: &f<plus>{value}'
knockback-resistance: '&7✠ Сопротивление Отталкиванию: &f<plus>{value}%'
max-health: '&c❤ Здоровье: <plus>{value}'
movement-speed: '&7■ Скорость Передвижения: &f<plus>{value}'
# Damage Reduction
defense: '&3 &7■ Defense: &f<plus>{value}'
damage-reduction: '&7■ Снижение Урона: &f<plus>{value}%'
fall-damage-reduction: '&7■ Снижение Урона от Падения: &f<plus>{value}%'
fire-damage-reduction: '&7■ Снижение Урона от Огня: &f<plus>{value}%'
magic-damage-reduction: '&7■ Снижение Урона от Магии: &f<plus>{value}%'
projectile-damage-reduction: '&7■ Projectile Damage Reduction: &f<plus>{value}%'
physical-damage-reduction: '&7■ Physical Damage Reduction: &f<plus>{value}%'
pve-damage-reduction: '&3 &7■ PvE Damage Reduction: &f<plus>{value}%'
pvp-damage-reduction: '&3 &7■ PvP Damage Reduction: &f<plus>{value}%'
# RPG stats
health-regeneration: '&7■ Регенерация Здоровья: &f<plus>{value%'
max-mana: '&9■ Максимальная Мана: <plus>{value'
mana-regeneration: '&7■ Mana Regeneration: &f<plus>{value'
max-stamina: '&7■ Max Stamina: &f<plus>{value'
stamina-regeneration: '&7■ Stamina Regeneration: &f<plus>{value'
cooldown-reduction: '&7■ Skill Cooldown Reduction: &f<plus>{value%'
additional-experience: '&7■ Additional Experience: &f<plus>{value%'
additional-experience-alchemy: '&7■ Additional Alchemy Experience: &f<plus>{value}%'
additional-experience-enchanting: '&7■ Additional Enchanting Experience: &f<plus>{value}%'
additional-experience-farming: '&7■ Additional Farming Experience: &f<plus>{value}%'
additional-experience-fishing: '&7■ Additional Fishing Experience: &f<plus>{value}%'
additional-experience-mining: '&7■ Additional Mining Experience: &f<plus>{value}%'
additional-experience-smelting: '&7■ Additional Smelting Experience: &f<plus>{value}%'
additional-experience-smithing: '&7■ Additional Smithing Experience: &f<plus>{value}%'
additional-experience-woodcutting: '&7■ Additional Woodcutting Experience: &f<plus>{value}%'
# Extra Options
perm-effect: '&7■ Бесконечный &f{effect}'
command: '&7■ Команда: &f{format} &7(&f{cooldown}&7s)'
item-cooldown: '&7■ &f{value}&7 сек перезарядка'
arrow-potion-effects: '&3 &7■ Arrow Effect: &f{effect}'
# Consumables
restore-health: '&7■ Восстанавливает &f{value} &7Здоровья'
restore-food: '&7■ Восстанавливает &f{value} &7Еды'
restore-saturation: '&7■ Восстанавливает &f{value} &7Насыщения'
restore-mana: '&7■ Восстанавливает &f{value} &7Маны'
restore-stamina: '&7■ Восстанавливает &f{value} &7Стамины'
effect: '&7■ Даёт &f{effect} &7на &f{duration}&7сек'
repair: '&7■ Ремонт: &f{value}'
repair-percent: '&3 &7■ Repair: &f{value}%'
can-identify: '&7■ Может идентифицировать предметы.'
can-deconstruct: '&7■ Может разобрать тировые предметы.'
can-deskin: '&3 &7■ Can de-skin skinned items.'
success-rate: '&7■ Шанс Успеха: &a&l{value}%'
max-consume: '&7■ Max Consume: &f{value} &7uses'
# Gem Stones
empty-gem-socket: '&a◆ Пустой {name} слотя для Самоцвета'
filled-gem-socket: '&a◆ {name}'
when-applied: '&aКогда Применён:'
gem-stone-lore: '&8&l[&2&l*&8&l] &aПеретащите на предмет, чтобы &7применить!'
# Soulbound
soulbinding-chance: '&7■ Имеет &a{value}%&7 шанс связать предмет.'
soulbound-break-chance: '&7■ имеет &a{value}%&7 шанс убрать персонализацию.'
soulbound-level: '&7■ Уровень &e{value} &7Персонализации'
# Tools
autosmelt: '&7■ &fАвтоплавлка'
bouncing-crack: '&7■ &fТрещина'
pickaxe-power: '&7■ &fPickaxe Power: &a{value}'
durability: '&7Durability: {current} / {max}'
# General
item-type: '&c■ {type}'
tier: '{value} Предмет'
required-class: '&7Требуется Класс: &7{value}'
required-level: '&eНеобходимый Уровень: {value}'
# MMOCore Attributes
required-dexterity: '&eRequires &c{value} &eDexterity'
required-strength: '&eRequires &c{value} &eStrength'
required-intelligence: '&eRequires &c{value} &eIntelligence'
additional-dexterity: '&3 &7■ Extra Dexterity: &f<plus>{value}'
additional-strength: '&3 &7■ Extra Strength: &f<plus>{value}'
additional-intelligence: '&3 &7■ Extra Intelligence: &f<plus>{value}'
# Professions
profession-alchemy: '&eAlchemy Level: &c{value}'
profession-enchanting: '&eEnchanting Level: &c{value}'
profession-farming: '&eFarming Level: &c{value}'
profession-fishing: '&eFishing Level: &c{value}'
profession-mining: '&eMining Level: &c{value}'
profession-smelting: '&eSmelting Level: &c{value}'
profession-smithing: '&eSmithing Level: &c{value}'
profession-woodcutting: '&eWoodcutting Level: &c{value}'
# Elemental Stat Format
elemental-damage: '{color}{icon}&7 {value} {element} Damage'
elemental-damage-percent: '{color}{icon}&7 +{value}% {element} Damage'
elemental-defense: '{color}{icon}&7 {value} {element} Defense'
elemental-defense-percent: '{color}{icon}&7 +{value}% {element} Defense'
elemental-weakness: '{color}{icon}&7 {value}% {element} Weakness'
# Custom stats
custom-myluck: '&3 &7■ Шанс: &f<plus>{value}'

View File

@ -1,76 +0,0 @@
ability:
overload: Sobrecarga
magical-shield: Escudo Mágico
bouncy-fireball: Bouncy Fireball
burning-hands: Arma flameante
fire-meteor: Meteorito
light-dash: Embestida de Luz
sparkle: Destellos
tnt-throw: TNT
earthquake: Terremoto
stun: Aturdir
holy-missile: Misil sagrado
black-hole: Agujero negro
slow: Relentizar
throw-up: Maldición Podrida
circular-slash: Circulo mortal
cursed-beam: Viga maldita
thrust: Thrust
heavy-charge: Super carga
item-throw: Lanzar
shock: Electrocutar
shadow-veil: Velo de Sombras
frog-mode: Modo rana
lightning-beam: Rayo de luz
death-mark: Marca mortal
confuse: Confusión
shulker-missile: Misil Shulker
heal: Cura
leap: Salto
burn: Quemar
starfall: Lluvia de Estrellas
wither: Wither
shockwave: Onda de Choque
vampirism: Vampirismo
smite: Herida profunda
corrupt: Corrupción
arcane-hail: Maldición del protector
grand-heal: Gran meditación
firebolt: Rayo de Fuego
magical-path: Botas mágicas
life-ender: Diluvio Letal
swiftness: Rapidez
freezing-curse: Congelar
ice-crystal: Cristal de hielo
blind: Cegar
firefly: Mariposa
poison: Veneno
blink: Teletransporte
sky-smash: Aplaste Aéreo
bloodbath: Baño de sangre
bunny-mode: Modo conejo
item-bomb: Bomba
modifier:
damage: '&7Daño'
mana: Mana
stamina: '&7Stamina'
cooldown: '&7Enfriamiento'
radius: '&7Radio'
duration: '&7Duración'
power: '&7Poder'
ignite: '&7Ignición'
speed: '&7Velocidad'
knockback: '&7Empuje'
length: '&7Longitud'
limit: '&7Límite'
force: '&7Fuerza'
amplifier: '&7Mejora'
jump-force: '&7Fuerza de salto'
slow-amplifier: '&7Mejora de relentización'
effect-duration: '&7Duración del efecto'
heal: '&7Curación'
knock-up: '&7Aturdir'
drain: '&7Drenar'
range: '&7Rango'
amount: '&7Cantidad'
slow-duration: '&7Tiempo de relentización'

View File

@ -1,15 +0,0 @@
staff-spirit:
nether-spirit: '&7■ Nether Spirit'
void-spirit: '&7■ Void Spirit'
mana-spirit: '&7■ Mana Spirit'
lightning-spirit: '&7■ Lightning Spirit'
xray-spirit: '&7■ X-Ray Spirit'
thunder-spirit: '&7■ Thunder Spirit'
sunfire-spirit: '&7■ Sunfire Spirit'
lute-attack:
wave: '&7■ Wave Melody'
circular: '&7■ Circular Melody'
slash: '&7■ Slashing Melody'
simple: '&7■ Simple Melody'
brute: '&7■ Brute Melody'
heavy: '&7■ Heavy Melody'

View File

@ -1,23 +0,0 @@
condition:
stamina:
positive: '&a✔ Requires #stamina# Stamina'
negative: '&c✖ Requires #stamina# Stamina'
level:
positive: '&a✔ Requires Level #level#'
negative: '&c✖ Requires Level #level#'
mana:
positive: '&a✔ Requires #mana# Mana'
negative: '&c✖ Requires #mana# Mana'
class:
positive: '&a✔ Required Class: #class#'
negative: '&c✖ Required Class: #class#'
food:
positive: '&a✔ Requires #food# Food'
negative: '&c✖ Requires #food# Food'
ingredient:
mmoitem:
positive: '&8✔ &7#amount# #item#'
negative: '&c✖ &7#amount# #item#'
vanilla:
positive: '&8✔ &7#amount# #item#'
negative: '&c✖ &7#amount# #item#'

View File

@ -1,21 +0,0 @@
UNIDENTIFIED_ITEM:
name: '&kSin identificar'
lore:
- '&e&oEste ítem esta &c&o&nsin identificar&e&o.'
- '&e&oBusca una manera de identificarlo.'
- '&e&oPodría ser un objeto raro o común.'
BACK:
name: Volver
lore: []
NEXT_PAGE:
name: Página siguiente
lore: []
PREVIOUS_PAGE:
name: Página anterior
lore: []
NO_ITEM:
name: '- Sin ítem -'
lore: []
NO_GEM_STONE:
name: '- Espacio para gema vacío -'
lore: []

View File

@ -1,33 +0,0 @@
hands-too-charged: Estás usando un ítem a dos manos, no puedes hacer eso.
spell-on-cooldown: '#progress# &e#left# Segundo#s#'
item-on-cooldown: Aún no esta listo!
item-command-on-cooldown: Aún no esta listo!
not-enough-perms-command: '&fComando desconocido usa "/ayuda" para mas info'
attack-blocked: 'Has bloqueado #percent#% de daño recibido!'
attack-dodged: Has esquivado un ataque!
not-enough-levels: '&e&lNo tienes nivel suficiente para usar este ítem'
not-enough-perms: '&c&lNo puedes hacer eso.'
not-enough-mana: No tienes mana suficiente!
not-enough-stamina: No tienes suficiente resistencia!
not-identified: No puedes usar un ítem sin identificar.
wrong-class: You don't have the right class!
successfully-identified: 'Ítem identificado: #item#&e.'
successfully-deconstructed: 'Has destruido: #item#&e.'
gem-stone-applied: Has aplicado &f#gem#&e a &f#item#&e.
repaired-item: Has reparado &f#item#&e por &f#amount# &ede durabilidad.
gave-item: '&eHas dado &f#item#&e#amount# a &f#player#&e.'
received-item: '&a&l➱ &eHas recibido &f#item#&e#amount#.'
cant-update-item: El ítem no se puede actualizar.
update-item: Ítem actualizado.
empty-workbench-first: Primero vacía la mesa de creación.
not-enough-perms-craft: '&fComando desconocido usa "/ayuda" para mas info'
miss-spell: Fallaste &c#spell#&e.
advanced-workbench: Mesa de creación avanzada
advanced-recipes: Recetas avanzadas
gem-stats: Estadísticas de gemas
click-advanced-recipe: Clic para ver la receta.
attack-parried: Has reflejado un ataque!
gem-stone-broke: La gema &f#gem#&c se ha roto al intentar aplicarse a &f#item#&c.
broken-item: This item is broken, you first need to repair it.
item-broke: 'Your #item#&c broke.'
zero-durability: Your item has no durability left. Repair it in order to use it again.

View File

@ -1,27 +0,0 @@
speed: Velocidad
slow: Relentización
fast-digging: Fast Digging
slow-digging: Slow Digging
increase-damage: Aumento de daño
heal: Curación
harm: Daño instantaneo
jump: Salto
confusion: Confusión
regeneration: Regeneración
damage-resistance: Resistencia
fire-resistance: Inmunidad al fuego
water-breathing: Respiración
invisibility: Invisibilidad
blindness: Ceguera
night-vision: Visión nocturna
hunger: Hambre
weakness: Debilidad
poison: Toxicidad
wither: Wither
health-boost: Mejora de vida
absorption: Absorción
saturation: Saturación
glowing: Brillo
levitation: Levitación
luck: Suerte
unluck: Mala suerte

View File

@ -1,151 +0,0 @@
# Weapon Stats
attack-damage: '&3 &7➸ Daño de ataque: &f{value}'
attack-speed: '&3 &7➸ Velocidad de ataque: &f{value}'
critical-strike-chance: '&3 &7■ Probabilidad de crítico: &f<plus>{value}%'
critical-strike-power: '&3 &7■ Poder de crítico: &f<plus>{value}%'
skill-critical-strike-chance: '&3 &7■ Skill Crit Chance: &f<plus>{value}%'
skill-critical-strike-power: '&3 &7■ Skill Crit Power: &f<plus>{value}%'
range: '&3 &7■ Rango: &f{value}'
mana-cost: '&9■ Usa {value} de Mana'
stamina-cost: '&9■ Usa {value} de Stamina'
arrow-velocity: '&3 &7■ Velocidad de flechas: &f{value}'
blunt-power: '&3 &7■ Radio de Daño de Area: &f{value}'
blunt-rating: '&3 &7■ Fracción de Daño de Area: &f{value}%'
two-handed: '&3 &7■ Necesita ambas manos'
handworn: '&3 &7■ Ignora necesitar ambas manos'
knockback: '&3 &7■ Empuje: &f{value}'
recoil: '&3 &7■ Retroceso: &f{value}%'
note-weight: '&3 &7■ Peso Musical: &f{value}'
lifesteal: '&3 &7■ Lifesteal: &c+{value}%'
spell-vampirism: '&3 &7■ Spell Vampirism: &c+{value}%'
# Extra Damage
pve-damage: '&3 &7■ Daño PVE: &f<plus>{value}%'
pvp-damage: '&3 &7■ Daño PVP: &f<plus>{value}%'
magic-damage: '&3 &7■ Daño mágico: &f<plus>{value}%'
weapon-damage: '&3 &7■ Daño de arma: &f<plus>{value}%'
undead-damage: '&3 &7■ Daño a monstruos: &f<plus>{value}%'
skill-damage: '&3 &7■ Daño de abilidad: &f<plus>{value}%'
physical-damage: '&3 &7■ Daño físico: &f<plus>{value}%'
projectile-damage: '&3 &7■ Daño de projectiles: &f<plus>{value}%'
faction-damage-undead: '&3 &7■ Daño a los Undead: &f<plus>{value}%'
# Abilities
ability-format: '&a>&8| &7{trigger} &8|&e|&8| &3 &7&l{ability}'
ability-modifier: ' &3>&8|&7 {modifier}&8: &f{value}'
ability-splitter: '&8'
# Armor Stats
block-power: '&3 &7■ Bloqueo: &f<plus>{value}%'
block-rating: '&3 &7■ Probabilidad de bloqueo: &f<plus>{value}%'
block-cooldown-reduction: '&3 &7■ Frequencia de bloqueo: &f<plus>{value}%'
dodge-rating: '&3 &7■ Probabilidad de evasión: &f<plus>{value}%'
dodge-cooldown-reduction: '&3 &7■ Frequencia de evasión: &f<plus>{value}%'
parry-rating: '&3 &7■ Probabilidad de contraatacar: &f<plus>{value}%'
parry-cooldown-reduction: '&3 &7■ Frequencia de contraataque: &f<plus>{value}%'
armor: '&3 &7✠ Defensa: &f<plus>{value}'
armor-toughness: '&3 &7✠ Resistencia de armadura: &f<plus>{value}'
knockback-resistance: '&3 &7✠ Resistencia al empuje: &f<plus>{value}%'
max-health: '&c❤ Vida máxima: <plus>{value}'
movement-speed: '&3 &7■ Velocidad: &f<plus>{value}'
# Damage Reduction
defense: '&3 &7■ Defensa: &f<plus>{value}'
damage-reduction: '&3 &7■ Reducción de daño: &f<plus>{value}%'
fall-damage-reduction: '&3 &7■ Reducción de daño por caída: &f<plus>{value}%'
fire-damage-reduction: '&3 &7■ Reducción de daño por fuego: &f<plus>{value}%'
magic-damage-reduction: '&3 &7■ Reducción de daño mágico: &f<plus>{value}%'
projectile-damage-reduction: '&3 &7■ Reducción de daño de projectiles: &f<plus>{value}%'
physical-damage-reduction: '&3 &7■ Reducción de daño físico: &f<plus>{value}%'
pve-damage-reduction: '&3 &7■ PvE Damage Reduction: &f<plus>{value}%'
pvp-damage-reduction: '&3 &7■ PvP Damage Reduction: &f<plus>{value}%'
# RPG stats
health-regeneration: '&3 &7■ Regeneración de vida: &f<plus>{value}%'
max-mana: '&3 &7■ Mana máximo: &f<plus>{value}'
mana-regeneration: '&3 &7■ Regeneración de mana: &f<plus>{value}'
max-stamina: '&3 &7■ Stamina máxima: &f<plus>{value}'
stamina-regeneration: '&3 &7■ Regeneracion de stamina: &f<plus>{value}'
cooldown-reduction: '&3 &7■ Frequencia de abilidades: &f<plus>{value}%'
additional-experience: '&3 &7■ Experiencia adicional: &f<plus>{value}%'
additional-experience-alchemy: '&7■ Additional Alchemy Experience: &f<plus>{value}%'
additional-experience-enchanting: '&7■ Additional Enchanting Experience: &f<plus>{value}%'
additional-experience-farming: '&7■ Additional Farming Experience: &f<plus>{value}%'
additional-experience-fishing: '&7■ Additional Fishing Experience: &f<plus>{value}%'
additional-experience-mining: '&7■ Additional Mining Experience: &f<plus>{value}%'
additional-experience-smelting: '&7■ Additional Smelting Experience: &f<plus>{value}%'
additional-experience-smithing: '&7■ Additional Smithing Experience: &f<plus>{value}%'
additional-experience-woodcutting: '&7■ Additional Woodcutting Experience: &f<plus>{value}%'
# Extra Options
perm-effect: '&3 &7■ Permanente &f{effect}'
command: '&3 &7■ Comando: &f{format} &3 &7(&f{cooldown}&3 &7s)'
item-cooldown: '&3 &7■ &3 &7Se puede usar cada {value}&3 &7s'
arrow-potion-effects: '&3 &7■ Flecha envinada: &f{effect}'
# Consumables
restore-health: '&3 &7■ Da &f{value} &3 &7de vida'
restore-food: '&3 &7■ Restaura &f{value} &3 &7de hambre'
restore-saturation: '&3 &7■ Da &f{value} &3 &7de saturación'
restore-mana: '&3 &7■ Da &f{value} &3 &7de mana'
restore-stamina: '&3 &7■ Da &f{value} &3 &7de stamina'
effect: '&3 &7■ Al consumir otorga &f{effect} &3 &7por &f{duration}&3 &7s'
repair: '&3 &7■ Repara: &f{value}'
repair-percent: '&3 &7■ Repair: &f{value}%'
can-identify: '&3 &7■ Puede identificar objetos.'
can-deconstruct: '&3 &7■ Puede destruir objetos usados.'
can-deskin: '&3 &7■ Can de-skin skinned items.'
success-rate: '&3 &7■ Probabilidad de éxito: &a&l{value}%'
max-consume: '&3 &7■ Usos Restantes: &f{value}'
# Gem Stones
empty-gem-socket: '&a◆ Espacio para gema {name}'
filled-gem-socket: '&a◆ {name}'
when-applied: '&aAl aplicar:'
gem-stone-lore: '&8&l[&2&l♦&8&l] &aArrastra y suelta en un objeto &3 &7para aplicar!'
# Soulbound
soulbinding-chance: '&3 &7■ Probabilidad de &a{value}%&3 &7 de enlazarte astralmente.'
soulbound-break-chance: '&3 &7■ Probabilidad de &a{value}%&3 &7 de romper enlazamientos astrales.'
soulbound-level: '&3 &7■ Nivel &e{value} &3 &7de Enlazamiento Astral'
# Tools
autosmelt: '&3 &7■ &fAutofundidor'
bouncing-crack: '&3 &7■ &fGrieta Profunda'
pickaxe-power: '&3 &7■ &fPoder de Pico: &a{value}'
durability: '&7Durability: {current} / {max}'
# General
item-type: '&c{type}'
tier: '&3 &7Calidad: {value}'
required-class: '&3 &7Equipamento de {value}'
required-level: '&eRequiere Nivel {value}'
# MMOCore Attributes
required-dexterity: '&eRequire &c{value} &ede Destreza'
required-strength: '&eRequire &c{value} &ede Fuerza'
required-intelligence: '&eRequire &c{value} &ede Intelligencia'
additional-dexterity: '&3 &7■ Extra Dexterity: &f<plus>{value}'
additional-strength: '&3 &7■ Extra Strength: &f<plus>{value}'
additional-intelligence: '&3 &7■ Extra Intelligence: &f<plus>{value}'
# Professions
profession-alchemy: '&eRequiere nivel de Alquímia &c{value}'
profession-enchanting: '&eRequiere nivel de Encantador &c{value}'
profession-farming: '&eRequiere nivel de Agricultor &c{value}'
profession-fishing: '&eRequiere nivel de Pezcador &c{value}'
profession-mining: '&eRequiere nivel de Minero &c{value}'
profession-smelting: '&eRequiere nivel de Fundidor &c{value}'
profession-smithing: '&eRequiere nivel de Herrero &c{value}'
profession-woodcutting: '&eRequiere nivel de Leñador &c{value}'
# Elemental Stat Format
elemental-damage: '{color}{icon}&7 {value} {element} Damage'
elemental-damage-percent: '{color}{icon}&7 +{value}% {element} Damage'
elemental-defense: '{color}{icon}&7 {value} {element} Defense'
elemental-defense-percent: '{color}{icon}&7 +{value}% {element} Defense'
elemental-weakness: '{color}{icon}&7 {value}% {element} Weakness'
# Custom stats
custom-myluck: '&3 &7■ Oportunidad: &f<plus>{value}'