diff --git a/.gitignore b/.gitignore
index 4788b4b4..68a3ef0b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -111,3 +111,5 @@ buildNumber.properties
# Common working directory
run/
+
+server/
diff --git a/pom.xml b/pom.xml
index fb26de32..3f6b262a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
net.jeqo
bloons
- 2.0.0
+ 2.1.0
jar
Bloons
@@ -56,11 +56,11 @@
blue.lhf
run-paper-maven-plugin
- 1.1.0
+ 1.1.1
- 1.20.4
+ 1.21.4
true
- run
+ ../server
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:25566
@@ -76,10 +76,6 @@
-
- papermc-repo
- https://repo.papermc.io/repository/maven-public/
-
sonatype
https://oss.sonatype.org/content/groups/public/
@@ -89,6 +85,10 @@
Lumine Public
https://mvn.lumine.io/repository/maven-public/
+
+ spigot-repo
+ https://hub.spigotmc.org/nexus/content/repositories/snapshots/
+
@@ -101,18 +101,13 @@
-
+
- io.papermc.paper
- paper-api
- 1.20.4-R0.1-SNAPSHOT
+ org.spigotmc
+ spigot-api
+ 1.21.4-R0.1-SNAPSHOT
provided
-
- net.kyori
- adventure-text-minimessage
- 4.17.0
-
diff --git a/src/main/java/net/jeqo/bloons/Bloons.java b/src/main/java/net/jeqo/bloons/Bloons.java
index 8571ecf9..60766065 100644
--- a/src/main/java/net/jeqo/bloons/Bloons.java
+++ b/src/main/java/net/jeqo/bloons/Bloons.java
@@ -123,9 +123,7 @@ public void onDisable() {
}
// Clear all balloon data if it exists
- if (getPlayerSingleBalloons() != null) {
- getPlayerSingleBalloons().clear();
- }
+ if (getPlayerSingleBalloons() != null) getPlayerSingleBalloons().clear();
// Unregister all listeners in the manager
getListenerCore().unregisterListeners();
@@ -143,9 +141,43 @@ public void updateChecker() {
// Resource ID for the plugin on SpigotMC
int resourceId = 106243;
new UpdateChecker(this, resourceId).getVersion(version -> {
- if (!this.getDescription().getVersion().equals(version)) {
+ String currentVersion = this.getDescription().getVersion();
+
+ if (isVersionLower(currentVersion, version)) {
Logger.logUpdateNotificationConsole();
+ } else if (isVersionHigher(currentVersion, version)) {
+ Logger.logUnreleasedVersionNotification();
}
});
}
+
+ public boolean isVersionLower(String current, String latest) {
+ return compareVersions(current, latest) < 0;
+ }
+
+ public boolean isVersionHigher(String current, String latest) {
+ return compareVersions(current, latest) > 0;
+ }
+
+ /**
+ * Compares two version strings (e.g., "1.2.3" vs. "1.2.4").
+ * Returns:
+ * - A negative value if v1 < v2
+ * - Zero if v1 == v2
+ * - A positive value if v1 > v2
+ */
+ public int compareVersions(String v1, String v2) {
+ String[] v1Parts = v1.split("\\.");
+ String[] v2Parts = v2.split("\\.");
+
+ int length = Math.max(v1Parts.length, v2Parts.length);
+ for (int i = 0; i < length; i++) {
+ int part1 = i < v1Parts.length ? Integer.parseInt(v1Parts[i]) : 0;
+ int part2 = i < v2Parts.length ? Integer.parseInt(v2Parts[i]) : 0;
+ if (part1 != part2) {
+ return Integer.compare(part1, part2);
+ }
+ }
+ return 0;
+ }
}
\ No newline at end of file
diff --git a/src/main/java/net/jeqo/bloons/balloon/BalloonCore.java b/src/main/java/net/jeqo/bloons/balloon/BalloonCore.java
index fa640f25..ae6da84b 100644
--- a/src/main/java/net/jeqo/bloons/balloon/BalloonCore.java
+++ b/src/main/java/net/jeqo/bloons/balloon/BalloonCore.java
@@ -66,19 +66,12 @@ public void initialize() {
* Copies the example balloons folder to the plugin's data folder if it doesn't exist
*/
public void copyExampleBalloons() {
- // List of example balloon files
- String[] exampleBalloons = new String[] {
- "/color_pack_example.yml",
- "/dyeable_example.yml",
- "/multipart_example.yml"
- };
-
// Save all example files in the balloons folder in /resources
for (String example : this.getExampleBalloons()) {
File file = new File(Bloons.getInstance().getDataFolder() + File.separator + ConfigConfiguration.BALLOON_CONFIGURATION_FOLDER + File.separator + example);
if (file.exists()) continue;
- Bloons.getInstance().saveResource(ConfigConfiguration.BALLOON_CONFIGURATION_FOLDER + example, false);
+ Bloons.getInstance().saveResource(ConfigConfiguration.BALLOON_CONFIGURATION_FOLDER + File.separator + example, false);
}
}
@@ -120,6 +113,19 @@ public SingleBalloonType getSingleBalloonByID(String ID) {
return null;
}
+ public SingleBalloonType getSingleBalloonByName(String name) {
+ // Loop over every single balloon in the registered balloons list
+ for (SingleBalloonType balloon : this.getSingleBalloonTypes()) {
+ // Check if the single balloon's name matches the specified name
+ if (balloon.getName().equalsIgnoreCase(name)) {
+ return balloon;
+ }
+ }
+
+ // Return null if the single balloon is not found
+ return null;
+ }
+
/**
* Checks if the registered balloons list contains a balloon with the specified ID
* @param ID The ID of the balloon, type java.lang.String
diff --git a/src/main/java/net/jeqo/bloons/balloon/model/BalloonModel.java b/src/main/java/net/jeqo/bloons/balloon/model/BalloonModel.java
index 1a572073..da5c960c 100644
--- a/src/main/java/net/jeqo/bloons/balloon/model/BalloonModel.java
+++ b/src/main/java/net/jeqo/bloons/balloon/model/BalloonModel.java
@@ -12,7 +12,7 @@
* A class to handle the creation of balloon models with custom model data and color metadata
*/
public class BalloonModel {
- private static final String LEATHER_MATERIAL_PREFIX = "LEATHER_"; // A constant to define a dyeable material
+ private static final String DYEABLE_MATERIAL_PREFIX = "LEATHER_";
/**
* Generates a coloured model with the specified colour and custom model data
@@ -23,18 +23,20 @@ public class BalloonModel {
*/
public static ItemStack createColouredModel(Material material, Color colour, int customModelData) {
// Check if the material is dyeable and contains leather attributes
- if (!material.name().contains(LEATHER_MATERIAL_PREFIX)) {
+ if (!material.name().contains(DYEABLE_MATERIAL_PREFIX)) {
Logger.logError("Material " + material.name() + " is not a dyeable material.");
return new ItemStack(material);
}
ItemStack generatedItem = new ItemStack(material);
- LeatherArmorMeta generatedItemMeta = (LeatherArmorMeta) generatedItem.getItemMeta();
+ LeatherArmorMeta generatedItemLeatherMeta = (LeatherArmorMeta) generatedItem.getItemMeta();
+
+ if (generatedItemLeatherMeta == null) return generatedItem;
// Set the color and custom model data of the item in the metadata
- generatedItemMeta.setColor(colour);
- generatedItemMeta.setCustomModelData(customModelData);
- generatedItem.setItemMeta(generatedItemMeta);
+ generatedItemLeatherMeta.setColor(colour);
+ generatedItemLeatherMeta.setCustomModelData(customModelData);
+ generatedItem.setItemMeta(generatedItemLeatherMeta);
return generatedItem;
}
@@ -52,7 +54,7 @@ public static ItemStack createColouredModel(Material material, Color colour, int
*/
public static ItemStack createColouredModel(Material material, int colourRed, int colourGreen, int colourBlue, int customModelData) {
// Check if the material is dyeable and contains leather attributes
- if (!material.name().contains(LEATHER_MATERIAL_PREFIX)) {
+ if (!material.name().contains(DYEABLE_MATERIAL_PREFIX)) {
Logger.logWarning(String.format(Languages.getMessage("material-not-dyeable"), material));
return new ItemStack(material);
}
@@ -68,11 +70,11 @@ public static ItemStack createColouredModel(Material material, int colourRed, in
Color color = Color.fromRGB(colourRed, colourGreen, colourBlue);
// Set the color and custom model data of the item in the metadata
+ assert generatedItemMeta != null; // Equivalent of setting to regular leather colour, assume we aren't
generatedItemMeta.setColor(color);
generatedItemMeta.setCustomModelData(customModelData);
generatedItem.setItemMeta(generatedItemMeta);
-
return generatedItem;
}
@@ -86,6 +88,12 @@ public static ItemStack createBlankModel(Material material, int customModelData)
ItemStack generatedItem = new ItemStack(material);
ItemMeta generatedItemMeta = generatedItem.getItemMeta();
+ // Check if the item supports ItemMeta
+ if (generatedItemMeta == null) {
+ Logger.logError(String.format("The specified material does not support ItemMeta: %s", material));
+ return generatedItem;
+ }
+
// Set the custom model data of the item
generatedItemMeta.setCustomModelData(customModelData);
generatedItem.setItemMeta(generatedItemMeta);
diff --git a/src/main/java/net/jeqo/bloons/balloon/multipart/MultipartBalloonType.java b/src/main/java/net/jeqo/bloons/balloon/multipart/MultipartBalloonType.java
index 57713fd8..4b0be698 100644
--- a/src/main/java/net/jeqo/bloons/balloon/multipart/MultipartBalloonType.java
+++ b/src/main/java/net/jeqo/bloons/balloon/multipart/MultipartBalloonType.java
@@ -2,6 +2,7 @@
import lombok.Getter;
import lombok.Setter;
+import net.jeqo.bloons.colors.ColorCodeConverter;
/**
* An object to store the data of a balloon created in the config.yml file
@@ -133,4 +134,8 @@ public MultipartBalloonType(String id, String permission, String name, String[]
this.setBodyModel(bodyModel); // required
this.setTailModel(tailModel); // required
}
+
+ public String getName() {
+ return ColorCodeConverter.adventureToColorCode(this.name);
+ }
}
diff --git a/src/main/java/net/jeqo/bloons/balloon/multipart/balloon/MultipartBalloon.java b/src/main/java/net/jeqo/bloons/balloon/multipart/balloon/MultipartBalloon.java
index af4077dc..f7e4d373 100644
--- a/src/main/java/net/jeqo/bloons/balloon/multipart/balloon/MultipartBalloon.java
+++ b/src/main/java/net/jeqo/bloons/balloon/multipart/balloon/MultipartBalloon.java
@@ -6,7 +6,6 @@
import net.jeqo.bloons.balloon.multipart.MultipartBalloonType;
import net.jeqo.bloons.balloon.multipart.nodes.MultipartBalloonNode;
import net.jeqo.bloons.configuration.BalloonConfiguration;
-import net.kyori.adventure.text.Component;
import org.bukkit.Location;
import org.bukkit.entity.Chicken;
import org.bukkit.entity.Player;
@@ -58,8 +57,8 @@ public class MultipartBalloon {
public void initialize() {
// Things that only need to be set up once and not looped over
MultipartBalloonNode current = new MultipartBalloonNode((float) this.getOwner().getLocation().getX(), (float) this.getOwner().getLocation().getY(), (float) this.getOwner().getLocation().getZ(),
- (float) ((float) this.getType().getDistanceBetweenNodes() + this.getType().getTailNodeOffset()), 0, getType(), this.getOwner(),
- this.getType().getMaxNodeJointAngle(), this.getType().getYAxisInterpolation(), this.getType().getTurningSplineInterpolation());
+ (float) ((float) this.getType().getDistanceBetweenNodes() + this.getType().getTailNodeOffset()), 0, getType(), this.getOwner(),
+ this.getType().getMaxNodeJointAngle(), this.getType().getYAxisInterpolation(), this.getType().getTurningSplineInterpolation());
// Add the current node to the list of model nodes
this.getMultipartBalloonNodes().add(current);
@@ -95,7 +94,7 @@ public void initializeBalloonLead() {
this.getChicken().setAgeLock(true);
this.getChicken().setAware(false);
this.getChicken().setCollidable(false);
- this.getChicken().customName(Component.text(BalloonConfiguration.BALLOON_CHICKEN_ID));
+ this.getChicken().setCustomName(BalloonConfiguration.BALLOON_CHICKEN_ID);
}
/**
diff --git a/src/main/java/net/jeqo/bloons/balloon/multipart/nodes/MultipartBalloonNode.java b/src/main/java/net/jeqo/bloons/balloon/multipart/nodes/MultipartBalloonNode.java
index 3c331f7a..5a3154a6 100644
--- a/src/main/java/net/jeqo/bloons/balloon/multipart/nodes/MultipartBalloonNode.java
+++ b/src/main/java/net/jeqo/bloons/balloon/multipart/nodes/MultipartBalloonNode.java
@@ -6,7 +6,6 @@
import org.bukkit.Location;
import org.bukkit.entity.ArmorStand;
import org.bukkit.entity.Player;
-import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.util.EulerAngle;
import org.bukkit.util.Vector;
@@ -271,17 +270,18 @@ public EulerAngle calculateHeadPose(Vector pointA, Vector pointB) {
* Sets the correct position and item in the armor stand.
*/
public void display() {
- EquipmentSlot slot = EquipmentSlot.HEAD;
// Sets the segments finalized models based on their position in the balloon
- if (this.getIndex() == this.getBalloonType().getNodeCount() - 1) {
- // Set the head model
- this.getBalloonArmorStand().setItem(slot, this.getBalloonType().getHeadModel().getFinalizedModel());
- } else if (this.getIndex() == 0) {
- // Set the tail model
- this.getBalloonArmorStand().setItem(slot, this.getBalloonType().getTailModel().getFinalizedModel());
- } else {
- // Set the body model
- this.getBalloonArmorStand().setItem(slot, this.getBalloonType().getBodyModel().getFinalizedModel());
+ if (this.getBalloonArmorStand().getEquipment() != null) {
+ if (this.getIndex() == this.getBalloonType().getNodeCount() - 1) {
+ // Set the head model
+ this.getBalloonArmorStand().getEquipment().setHelmet(this.getBalloonType().getHeadModel().getFinalizedModel());
+ } else if (this.getIndex() == 0) {
+ // Set the tail model
+ this.getBalloonArmorStand().getEquipment().setHelmet(this.getBalloonType().getTailModel().getFinalizedModel());
+ } else {
+ // Set the body model
+ this.getBalloonArmorStand().getEquipment().setHelmet(this.getBalloonType().getBodyModel().getFinalizedModel());
+ }
}
// Creates a new Bukkit vector based on the position of the two points
diff --git a/src/main/java/net/jeqo/bloons/balloon/single/SingleBalloon.java b/src/main/java/net/jeqo/bloons/balloon/single/SingleBalloon.java
index 373ba8ce..465414c6 100644
--- a/src/main/java/net/jeqo/bloons/balloon/single/SingleBalloon.java
+++ b/src/main/java/net/jeqo/bloons/balloon/single/SingleBalloon.java
@@ -8,13 +8,10 @@
import lombok.Setter;
import net.jeqo.bloons.Bloons;
import net.jeqo.bloons.configuration.BalloonConfiguration;
-import net.jeqo.bloons.events.balloon.single.SingleBalloonEquipEvent;
-import net.jeqo.bloons.events.balloon.single.SingleBalloonForceUnequipEvent;
import net.jeqo.bloons.logger.Logger;
import net.jeqo.bloons.message.Languages;
import net.jeqo.bloons.management.SingleBalloonManagement;
import net.jeqo.bloons.colors.Color;
-import net.kyori.adventure.text.Component;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Particle;
@@ -127,7 +124,7 @@ public void initializeBalloonArmorStand() {
e.printStackTrace();
}
}
- this.getArmorStand().customName(Component.text(BalloonConfiguration.BALLOON_ARMOR_STAND_ID));
+ this.getArmorStand().setCustomName(BalloonConfiguration.BALLOON_ARMOR_STAND_ID);
}
/**
@@ -143,7 +140,7 @@ public void initializeBalloonLead() {
this.getChicken().setAware(false);
this.getChicken().setCollidable(false);
this.getChicken().setLeashHolder(this.getPlayer());
- this.getChicken().customName(Component.text(BalloonConfiguration.BALLOON_CHICKEN_ID));
+ this.getChicken().setCustomName(BalloonConfiguration.BALLOON_CHICKEN_ID);
}
/**
@@ -315,21 +312,9 @@ public void run() {
SingleBalloon initialBalloon = Bloons.getPlayerSingleBalloons().get(player.getUniqueId());
if (initialBalloon != null) return;
- // Call the unequip event and check if it's cancelled
- SingleBalloonForceUnequipEvent unequipEvent = new SingleBalloonForceUnequipEvent(player, null);
- unequipEvent.callEvent();
-
- if (unequipEvent.isCancelled()) return;
-
// Remove the balloon from the player
SingleBalloonManagement.removeBalloon(player, null);
- // Call the equip event and check if it's cancelled
- SingleBalloonEquipEvent equipEvent = new SingleBalloonEquipEvent(player, balloonID);
- equipEvent.callEvent();
-
- if (equipEvent.isCancelled()) return;
-
// Create a new balloon and add it to the player/start the runnables and add the player to the maps
SingleBalloon balloon = new SingleBalloon(player, balloonID);
balloon.runTaskTimer(Bloons.getInstance(), 0L, 1L);
diff --git a/src/main/java/net/jeqo/bloons/balloon/single/SingleBalloonType.java b/src/main/java/net/jeqo/bloons/balloon/single/SingleBalloonType.java
index 4dd0acbd..c60729bc 100644
--- a/src/main/java/net/jeqo/bloons/balloon/single/SingleBalloonType.java
+++ b/src/main/java/net/jeqo/bloons/balloon/single/SingleBalloonType.java
@@ -2,6 +2,7 @@
import lombok.Getter;
import lombok.Setter;
+import net.jeqo.bloons.colors.ColorCodeConverter;
/**
* Represents the contents of a configuration for a single balloon
@@ -106,4 +107,8 @@ public SingleBalloonType(String key, String id, String permission, String materi
this.setName(name);
this.setLore(lore);
}
+
+ public String getName() {
+ return ColorCodeConverter.adventureToColorCode(this.name);
+ }
}
diff --git a/src/main/java/net/jeqo/bloons/commands/CommandEquip.java b/src/main/java/net/jeqo/bloons/commands/CommandEquip.java
index c1bd0893..e28c67bb 100644
--- a/src/main/java/net/jeqo/bloons/commands/CommandEquip.java
+++ b/src/main/java/net/jeqo/bloons/commands/CommandEquip.java
@@ -8,14 +8,11 @@
import net.jeqo.bloons.balloon.single.SingleBalloonType;
import net.jeqo.bloons.commands.manager.Command;
import net.jeqo.bloons.commands.manager.types.CommandPermission;
-import net.jeqo.bloons.events.balloon.multipart.MultipartBalloonEquipEvent;
-import net.jeqo.bloons.events.balloon.multipart.MultipartBalloonUnequipEvent;
-import net.jeqo.bloons.events.balloon.single.SingleBalloonEquipEvent;
import net.jeqo.bloons.message.Languages;
import net.jeqo.bloons.management.SingleBalloonManagement;
import net.jeqo.bloons.message.MessageTranslations;
import net.jeqo.bloons.management.MultipartBalloonManagement;
-import net.kyori.adventure.text.Component;
+import org.bukkit.ChatColor;
import org.bukkit.Sound;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@@ -52,8 +49,8 @@ public boolean execute(CommandSender sender, String[] args) {
// If the balloon ID isn't found in both balloon types, send a message to the player
if (Bloons.getBalloonCore().containsSingleBalloon(balloonID) && Bloons.getBalloonCore().containsMultipartBalloon(balloonID)) {
- Component balloonNotFoundMessage = messageTranslations.getSerializedString(Languages.getMessage("prefix"), Languages.getMessage("balloon-not-found"));
- player.sendMessage(balloonNotFoundMessage);
+ String balloonNotFoundMessage = Languages.getMessage("prefix") + Languages.getMessage("balloon-not-found");
+ player.sendMessage(ChatColor.translateAlternateColorCodes('&', balloonNotFoundMessage));
return false;
}
@@ -62,16 +59,16 @@ public boolean execute(CommandSender sender, String[] args) {
if (singleBalloonType != null) {
if (!player.hasPermission(singleBalloonType.getPermission())) {
- Component noPermissionMessage = messageTranslations.getSerializedString(Languages.getMessage("prefix"), Languages.getMessage("no-permission"));
- player.sendMessage(noPermissionMessage);
+ String noPermissionMessage = Languages.getMessage("prefix") + Languages.getMessage("no-permission");
+ player.sendMessage(ChatColor.translateAlternateColorCodes('&', noPermissionMessage));
return false;
}
}
if (multipartBalloonType != null) {
if (!player.hasPermission(multipartBalloonType.getPermission())) {
- Component noPermissionMessage = messageTranslations.getSerializedString(Languages.getMessage("prefix"), Languages.getMessage("no-permission"));
- player.sendMessage(noPermissionMessage);
+ String noPermissionMessage = Languages.getMessage("prefix") + Languages.getMessage("no-permission");
+ player.sendMessage(ChatColor.translateAlternateColorCodes('&', noPermissionMessage));
return false;
}
}
@@ -81,22 +78,12 @@ public boolean execute(CommandSender sender, String[] args) {
// If the player has a previous multipart balloon, unequip it
if (previousBalloon != null) {
- MultipartBalloonUnequipEvent multipartBalloonUnequipEvent = new MultipartBalloonUnequipEvent(player, previousBalloon);
- multipartBalloonUnequipEvent.callEvent();
-
- if (multipartBalloonUnequipEvent.isCancelled()) return false;
-
previousBalloon.destroy();
MultipartBalloonManagement.removePlayerBalloon(player.getUniqueId());
}
// If the balloon ID is a multipart balloon type, equip the balloon with the multipart associated methods
if (type != null) {
- MultipartBalloonEquipEvent multipartBalloonEquipEvent = new MultipartBalloonEquipEvent(player, balloonID);
- multipartBalloonEquipEvent.callEvent();
-
- if (multipartBalloonEquipEvent.isCancelled()) return false;
-
MultipartBalloonBuilder builder = new MultipartBalloonBuilder(type, player);
SingleBalloonManagement.removeBalloon(player, Bloons.getPlayerSingleBalloons().get(player.getUniqueId()));
MultipartBalloon balloon = builder.build();
@@ -105,23 +92,17 @@ public boolean execute(CommandSender sender, String[] args) {
MultipartBalloonManagement.setPlayerBalloon(player.getUniqueId(), balloon);
- Component equippedMessage = messageTranslations.getSerializedString(Languages.getMessage("prefix"), String.format(Languages.getMessage("equipped"), type.getName()));
- player.sendMessage(equippedMessage);
+ String equippedMessage = Languages.getMessage("prefix") + String.format(Languages.getMessage("equipped"), type.getName());
+ player.sendMessage(ChatColor.translateAlternateColorCodes('&', equippedMessage));
// If the balloon ID is a single balloon type, equip the balloon with the single associated methods
} else {
- // Call the equip event and check if it's cancelled, if it is, don't spawn the balloon or do anything
- SingleBalloonEquipEvent singleBalloonEquipEvent = new SingleBalloonEquipEvent(player, balloonID);
- singleBalloonEquipEvent.callEvent();
-
- if (singleBalloonEquipEvent.isCancelled()) return false;
-
// Check if a balloon needs to be added or removed
SingleBalloonManagement.removeBalloon(player, Bloons.getPlayerSingleBalloons().get(player.getUniqueId()));
SingleBalloon.checkBalloonRemovalOrAdd(player, balloonID);
- Component equippedMessage = messageTranslations.getSerializedString(Languages.getMessage("prefix"), String.format(Languages.getMessage("equipped"), singleBalloonType.getName()));
- player.sendMessage(equippedMessage);
+ String equippedMessage = Languages.getMessage("prefix") + String.format(Languages.getMessage("equipped"), singleBalloonType.getName());
+ player.sendMessage(ChatColor.translateAlternateColorCodes('&', equippedMessage));
}
// Play a sound regardless of the balloon type and when it executes successfully
diff --git a/src/main/java/net/jeqo/bloons/commands/CommandForceEquip.java b/src/main/java/net/jeqo/bloons/commands/CommandForceEquip.java
index c521f630..16bfff3e 100644
--- a/src/main/java/net/jeqo/bloons/commands/CommandForceEquip.java
+++ b/src/main/java/net/jeqo/bloons/commands/CommandForceEquip.java
@@ -8,15 +8,12 @@
import net.jeqo.bloons.balloon.single.SingleBalloonType;
import net.jeqo.bloons.commands.manager.Command;
import net.jeqo.bloons.commands.manager.types.CommandPermission;
-import net.jeqo.bloons.events.balloon.multipart.MultipartBalloonEquipEvent;
-import net.jeqo.bloons.events.balloon.multipart.MultipartBalloonUnequipEvent;
-import net.jeqo.bloons.events.balloon.single.SingleBalloonEquipEvent;
import net.jeqo.bloons.message.Languages;
import net.jeqo.bloons.management.SingleBalloonManagement;
import net.jeqo.bloons.message.MessageTranslations;
import net.jeqo.bloons.management.MultipartBalloonManagement;
-import net.kyori.adventure.text.Component;
import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
@@ -50,8 +47,8 @@ public boolean execute(CommandSender sender, String[] args) {
// If the player isn't found, send a message to the sender
if (player == null) {
- Component playerNotFoundMessage = messageTranslations.getSerializedString(Languages.getMessage("prefix"), Languages.getMessage("player-not-found"));
- sender.sendMessage(playerNotFoundMessage);
+ String playerNotFoundMessage = Languages.getMessage("prefix") + Languages.getMessage("player-not-found");
+ sender.sendMessage(ChatColor.translateAlternateColorCodes('&', playerNotFoundMessage));
return false;
}
@@ -59,8 +56,8 @@ public boolean execute(CommandSender sender, String[] args) {
// If the balloon ID isn't found in both balloon types, send a message to the sender
if (Bloons.getBalloonCore().containsSingleBalloon(balloonID) && Bloons.getBalloonCore().containsMultipartBalloon(balloonID)) {
- Component balloonNotFoundMessage = messageTranslations.getSerializedString(Languages.getMessage("prefix"), Languages.getMessage("balloon-not-found"));
- sender.sendMessage(balloonNotFoundMessage);
+ String balloonNotFoundMessage = Languages.getMessage("prefix") + Languages.getMessage("balloon-not-found");
+ sender.sendMessage(ChatColor.translateAlternateColorCodes('&', balloonNotFoundMessage));
return false;
}
@@ -69,22 +66,12 @@ public boolean execute(CommandSender sender, String[] args) {
// If the player has a previous multipart balloon, unequip it
if (previousBalloon != null) {
- MultipartBalloonUnequipEvent multipartBalloonUnequipEvent = new MultipartBalloonUnequipEvent(player, previousBalloon);
- multipartBalloonUnequipEvent.callEvent();
-
- if (multipartBalloonUnequipEvent.isCancelled()) return false;
-
previousBalloon.destroy();
MultipartBalloonManagement.removePlayerBalloon(player.getUniqueId());
}
// If the balloon ID is a multipart balloon type, equip the balloon with the multipart associated methods
if (type != null) {
- MultipartBalloonEquipEvent multipartBalloonEquipEvent = new MultipartBalloonEquipEvent(player, balloonID);
- multipartBalloonEquipEvent.callEvent();
-
- if (multipartBalloonEquipEvent.isCancelled()) return false;
-
MultipartBalloonBuilder builder = new MultipartBalloonBuilder(type, player);
SingleBalloonManagement.removeBalloon(player, Bloons.getPlayerSingleBalloons().get(player.getUniqueId()));
MultipartBalloon balloon = builder.build();
@@ -93,25 +80,19 @@ public boolean execute(CommandSender sender, String[] args) {
MultipartBalloonManagement.setPlayerBalloon(player.getUniqueId(), balloon);
- Component equippedMessage = messageTranslations.getSerializedString(Languages.getMessage("prefix"), String.format(Languages.getMessage("equipped"), type.getName()));
- player.sendMessage(equippedMessage);
+ String equippedMessage = Languages.getMessage("prefix") + String.format(Languages.getMessage("equipped"), type.getName());
+ player.sendMessage(ChatColor.translateAlternateColorCodes('&', equippedMessage));
// If the balloon ID is a single balloon type, equip the balloon with the single associated methods
} else {
SingleBalloonType singleBalloonType = Bloons.getBalloonCore().getSingleBalloonByID(balloonID);
- // Call the equip event and check if it's cancelled, if it is, don't spawn the balloon or do anything
- SingleBalloonEquipEvent singleBalloonEquipEvent = new SingleBalloonEquipEvent(player, balloonID);
- singleBalloonEquipEvent.callEvent();
-
- if (singleBalloonEquipEvent.isCancelled()) return false;
-
// Check if a balloon needs to be added or removed
SingleBalloonManagement.removeBalloon(player, Bloons.getPlayerSingleBalloons().get(player.getUniqueId()));
SingleBalloon.checkBalloonRemovalOrAdd(player, balloonID);
- Component equippedMessage = messageTranslations.getSerializedString(Languages.getMessage("prefix"), String.format(Languages.getMessage("equipped"), singleBalloonType.getName()));
- player.sendMessage(equippedMessage);
+ String equippedMessage = Languages.getMessage("prefix") + String.format(Languages.getMessage("equipped"), singleBalloonType.getName());
+ player.sendMessage(ChatColor.translateAlternateColorCodes('&', equippedMessage));
}
return false;
diff --git a/src/main/java/net/jeqo/bloons/commands/CommandForceUnequip.java b/src/main/java/net/jeqo/bloons/commands/CommandForceUnequip.java
index ff69e303..520331c5 100644
--- a/src/main/java/net/jeqo/bloons/commands/CommandForceUnequip.java
+++ b/src/main/java/net/jeqo/bloons/commands/CommandForceUnequip.java
@@ -5,14 +5,12 @@
import net.jeqo.bloons.balloon.single.SingleBalloon;
import net.jeqo.bloons.commands.manager.Command;
import net.jeqo.bloons.commands.manager.types.CommandPermission;
-import net.jeqo.bloons.events.balloon.multipart.MultipartBalloonUnequipEvent;
-import net.jeqo.bloons.events.balloon.single.SingleBalloonUnequipEvent;
import net.jeqo.bloons.message.Languages;
import net.jeqo.bloons.management.SingleBalloonManagement;
import net.jeqo.bloons.message.MessageTranslations;
import net.jeqo.bloons.management.MultipartBalloonManagement;
-import net.kyori.adventure.text.Component;
import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
@@ -34,8 +32,8 @@ public boolean execute(CommandSender sender, String[] args) {
// If the specified player doesn't exist, send a message to the sender
if (player == null) {
- Component playerNotFoundMessage = messageTranslations.getSerializedString(Languages.getMessage("prefix"), Languages.getMessage("player-not-found"));
- sender.sendMessage(playerNotFoundMessage);
+ String playerNotFoundMessage = Languages.getMessage("prefix") + Languages.getMessage("player-not-found");
+ sender.sendMessage(ChatColor.translateAlternateColorCodes('&', playerNotFoundMessage));
return false;
}
@@ -44,34 +42,22 @@ public boolean execute(CommandSender sender, String[] args) {
// If the player doesn't have any balloons equipped, send a message to the sender
if (singleBalloon == null && multipartBalloon == null) {
- Component notEquippedMessage = messageTranslations.getSerializedString(Languages.getMessage("prefix"), Languages.getMessage("not-equipped"));
- player.sendMessage(notEquippedMessage);
+ String notEquippedMessage = Languages.getMessage("prefix") + Languages.getMessage("not-equipped");
+ player.sendMessage(ChatColor.translateAlternateColorCodes('&', notEquippedMessage));
return false;
}
// If the player has a single balloon equipped, unequip it
- if (singleBalloon != null) {
- SingleBalloonUnequipEvent singleBalloonUnequipEvent = new SingleBalloonUnequipEvent(player, singleBalloon);
- singleBalloonUnequipEvent.callEvent();
-
- if (singleBalloonUnequipEvent.isCancelled()) return false;
-
- SingleBalloonManagement.removeBalloon(player, singleBalloon);
- }
+ SingleBalloonManagement.removeBalloon(player, singleBalloon);
// If the player has a multipart balloon equipped, unequip it
if (multipartBalloon != null) {
- MultipartBalloonUnequipEvent multipartBalloonUnequipEvent = new MultipartBalloonUnequipEvent(player, multipartBalloon);
- multipartBalloonUnequipEvent.callEvent();
-
- if (multipartBalloonUnequipEvent.isCancelled()) return false;
-
multipartBalloon.destroy();
MultipartBalloonManagement.removePlayerBalloon(player.getUniqueId());
}
- Component unequipSuccessfulMessage = messageTranslations.getSerializedString(Languages.getMessage("prefix"), Languages.getMessage("unequipped"));
- sender.sendMessage(unequipSuccessfulMessage);
+ String unequipSuccessfulMessage = Languages.getMessage("prefix") + Languages.getMessage("unequipped");
+ sender.sendMessage(ChatColor.translateAlternateColorCodes('&', unequipSuccessfulMessage));
return false;
}
}
diff --git a/src/main/java/net/jeqo/bloons/commands/CommandReload.java b/src/main/java/net/jeqo/bloons/commands/CommandReload.java
index 1b4b9c19..3204f4f1 100644
--- a/src/main/java/net/jeqo/bloons/commands/CommandReload.java
+++ b/src/main/java/net/jeqo/bloons/commands/CommandReload.java
@@ -3,10 +3,9 @@
import net.jeqo.bloons.Bloons;
import net.jeqo.bloons.commands.manager.Command;
import net.jeqo.bloons.commands.manager.types.CommandPermission;
-import net.jeqo.bloons.events.general.BloonsConfigReloadEvent;
import net.jeqo.bloons.message.Languages;
import net.jeqo.bloons.message.MessageTranslations;
-import net.kyori.adventure.text.Component;
+import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.java.JavaPlugin;
@@ -32,12 +31,6 @@ public CommandReload(JavaPlugin plugin) {
public boolean execute(CommandSender sender, String[] args) {
MessageTranslations messageTranslations = new MessageTranslations(this.getPlugin());
- // Trigger a custom event upon the reload of the config
- BloonsConfigReloadEvent bloonsConfigReloadEvent = new BloonsConfigReloadEvent();
- bloonsConfigReloadEvent.callEvent();
-
- if (bloonsConfigReloadEvent.isCancelled()) return false;
-
// Reload the main config.yml and its defaults
Bloons.getInstance().reloadConfig();
Bloons.getInstance().getConfig().options().copyDefaults();
@@ -46,8 +39,8 @@ public boolean execute(CommandSender sender, String[] args) {
// Refresh balloons and their configurations from their respective files
Bloons.getBalloonCore().initialize();
- Component configReloadedMessage = messageTranslations.getSerializedString(Languages.getMessage("prefix"), Languages.getMessage("config-reloaded"));
- sender.sendMessage(configReloadedMessage);
+ String configReloadedMessage = Languages.getMessage("prefix") + Languages.getMessage("config-reloaded");
+ sender.sendMessage(ChatColor.translateAlternateColorCodes('&', configReloadedMessage));
return false;
}
diff --git a/src/main/java/net/jeqo/bloons/commands/CommandUnequip.java b/src/main/java/net/jeqo/bloons/commands/CommandUnequip.java
index 794ce9fa..7fd8e4d1 100644
--- a/src/main/java/net/jeqo/bloons/commands/CommandUnequip.java
+++ b/src/main/java/net/jeqo/bloons/commands/CommandUnequip.java
@@ -5,13 +5,11 @@
import net.jeqo.bloons.balloon.single.SingleBalloon;
import net.jeqo.bloons.commands.manager.Command;
import net.jeqo.bloons.commands.manager.types.CommandPermission;
-import net.jeqo.bloons.events.balloon.multipart.MultipartBalloonUnequipEvent;
-import net.jeqo.bloons.events.balloon.single.SingleBalloonUnequipEvent;
import net.jeqo.bloons.message.Languages;
import net.jeqo.bloons.management.SingleBalloonManagement;
import net.jeqo.bloons.message.MessageTranslations;
import net.jeqo.bloons.management.MultipartBalloonManagement;
-import net.kyori.adventure.text.Component;
+import org.bukkit.ChatColor;
import org.bukkit.Sound;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@@ -41,38 +39,27 @@ public boolean execute(CommandSender sender, String[] args) {
SingleBalloon singleBalloon = Bloons.getPlayerSingleBalloons().get(player.getUniqueId());
MultipartBalloon multipartBalloon = MultipartBalloonManagement.getPlayerBalloon(player.getUniqueId());
- MessageTranslations messageTranslations = new MessageTranslations(this.getPlugin());
// If the player doesn't have any balloons equipped, send a message to the player
if (singleBalloon == null && multipartBalloon == null) {
- Component notEquippedMessage = messageTranslations.getSerializedString(Languages.getMessage("prefix"), Languages.getMessage("not-equipped"));
- player.sendMessage(notEquippedMessage);
+ String notEquippedMessage = Languages.getMessage("prefix") + Languages.getMessage("not-equipped");
+ player.sendMessage(ChatColor.translateAlternateColorCodes('&', notEquippedMessage));
return false;
}
// If the player has a single balloon equipped, unequip it
if (singleBalloon != null) {
- SingleBalloonUnequipEvent singleBalloonUnequipEvent = new SingleBalloonUnequipEvent(player, singleBalloon);
- singleBalloonUnequipEvent.callEvent();
-
- if (singleBalloonUnequipEvent.isCancelled()) return false;
-
SingleBalloonManagement.removeBalloon(player, singleBalloon);
}
// If the player has a multipart balloon equipped, unequip it
if (multipartBalloon != null) {
- MultipartBalloonUnequipEvent multipartBalloonEquipEvent = new MultipartBalloonUnequipEvent(player, multipartBalloon);
- multipartBalloonEquipEvent.callEvent();
-
- if (multipartBalloonEquipEvent.isCancelled()) return false;
-
multipartBalloon.destroy();
MultipartBalloonManagement.removePlayerBalloon(player.getUniqueId());
}
- Component unequipSuccessfulMessage = messageTranslations.getSerializedString(Languages.getMessage("prefix"), Languages.getMessage("unequipped"));
- player.sendMessage(unequipSuccessfulMessage);
+ String unequipSuccessfulMessage = Languages.getMessage("prefix") + Languages.getMessage("unequipped");
+ player.sendMessage(ChatColor.translateAlternateColorCodes('&', unequipSuccessfulMessage));
player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_HURT_SWEET_BERRY_BUSH, 1, 1);
return false;
}
diff --git a/src/main/java/net/jeqo/bloons/commands/manager/CommandCore.java b/src/main/java/net/jeqo/bloons/commands/manager/CommandCore.java
index 61473382..bc06e19d 100644
--- a/src/main/java/net/jeqo/bloons/commands/manager/CommandCore.java
+++ b/src/main/java/net/jeqo/bloons/commands/manager/CommandCore.java
@@ -12,7 +12,7 @@
import net.jeqo.bloons.colors.Color;
import net.jeqo.bloons.message.Languages;
import net.jeqo.bloons.message.MessageTranslations;
-import net.kyori.adventure.text.Component;
+import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
@@ -104,8 +104,8 @@ public boolean onCommand(@NotNull CommandSender sender, org.bukkit.command.@NotN
Player player = (Player) sender;
if (!player.hasPermission("bloons.menu")) {
- Component noPermission = this.getMessageTranslations().getSerializedString(Languages.getMessage("prefix"), Languages.getMessage("no-permission"));
- player.sendMessage(noPermission);
+ String noPermission = Languages.getMessage("prefix") + Languages.getMessage("no-permission");
+ player.sendMessage(ChatColor.translateAlternateColorCodes('&', noPermission));
return true;
}
@@ -115,27 +115,31 @@ public boolean onCommand(@NotNull CommandSender sender, org.bukkit.command.@NotN
//
if (singleBalloonTypes == null && multipartBalloonTypes == null) {
- Logger.logError(Languages.getMessage("no-balloons-registered"));
+ Logger.logError(ChatColor.translateAlternateColorCodes('&', Languages.getMessage("no-balloons-registered")));
return false;
}
- // For every single balloon registered, add it to the GUI
- for (SingleBalloonType singleBalloon : singleBalloonTypes) {
- if (singleBalloon == null) continue;
+ if (singleBalloonTypes != null) {
+ // For every single balloon registered, add it to the GUI
+ for (SingleBalloonType singleBalloon : singleBalloonTypes) {
+ if (singleBalloon == null) continue;
- if (shouldAddSingleBalloon(player, singleBalloon)) {
- ItemStack item = createBalloonItem(singleBalloon);
- items.add(item);
+ if (shouldAddSingleBalloon(player, singleBalloon)) {
+ ItemStack item = createBalloonItem(singleBalloon);
+ items.add(item);
+ }
}
}
- // For every multipart balloon registered, add it to the GUI
- for (MultipartBalloonType multipartBalloon : multipartBalloonTypes) {
- if (multipartBalloon == null) continue;
+ if (multipartBalloonTypes != null) {
+ // For every multipart balloon registered, add it to the GUI
+ for (MultipartBalloonType multipartBalloon : multipartBalloonTypes) {
+ if (multipartBalloon == null) continue;
- if (shouldAddMultipartBalloon(player, multipartBalloon)) {
- ItemStack item = createBalloonItem(multipartBalloon);
- items.add(item);
+ if (shouldAddMultipartBalloon(player, multipartBalloon)) {
+ ItemStack item = createBalloonItem(multipartBalloon);
+ items.add(item);
+ }
}
}
@@ -154,13 +158,13 @@ public boolean onCommand(@NotNull CommandSender sender, org.bukkit.command.@NotN
if (currentCommand.getCommandAliases().contains(subcommand)) {
// Check if the sender has the permission to execute the command
if (!meetsRequirements(currentCommand, sender)) {
- sender.sendMessage(this.getMessageTranslations().getSerializedString(Languages.getMessage("prefix"), Languages.getMessage("no-permission")));
+ sender.sendMessage(Languages.getMessage("prefix") + Languages.getMessage("no-permission"));
return false;
}
// Check if the command is disabled
if (currentCommand.getRequiredAccess() == CommandAccess.DISABLED) {
- sender.sendMessage(this.getMessageTranslations().getSerializedString(Languages.getMessage("prefix"), Languages.getMessage("command-disabled")));
+ sender.sendMessage(Languages.getMessage("prefix") + Languages.getMessage("command-disabled"));
return false;
}
@@ -196,6 +200,8 @@ public boolean meetsRequirements(Command command, CommandSender sender) {
*/
private boolean shouldAddSingleBalloon(Player player, SingleBalloonType singleBalloonType) {
if (this.getMessageTranslations().getString("hide-balloons-without-permission").equalsIgnoreCase("true")) {
+ if (singleBalloonType.getPermission() == null) return true;
+
return player.hasPermission(singleBalloonType.getPermission());
}
return true;
@@ -209,6 +215,8 @@ private boolean shouldAddSingleBalloon(Player player, SingleBalloonType singleBa
*/
private boolean shouldAddMultipartBalloon(Player player, MultipartBalloonType multipartBalloonType) {
if (this.getMessageTranslations().getString("hide-balloons-without-permission").equalsIgnoreCase("true")) {
+ if (multipartBalloonType.getPermission() == null) return true;
+
return player.hasPermission(multipartBalloonType.getPermission());
}
return true;
@@ -233,7 +241,7 @@ private ItemStack createBalloonItem(SingleBalloonType singleBalloonType) {
return null;
}
- meta.setLocalizedName(singleBalloonType.getKey());
+ meta.setItemName(singleBalloonType.getKey());
setBalloonLore(meta, singleBalloonType);
setBalloonDisplayName(meta, singleBalloonType);
meta.setCustomModelData(singleBalloonType.getCustomModelData());
@@ -262,7 +270,7 @@ private ItemStack createBalloonItem(MultipartBalloonType multipartBalloonType) {
return null;
}
- meta.setLocalizedName(multipartBalloonType.getId());
+ meta.setItemName(multipartBalloonType.getId());
setBalloonLore(meta, multipartBalloonType);
setBalloonDisplayName(meta, multipartBalloonType);
meta.setCustomModelData(multipartBalloonType.getHeadModel().getCustomModelData());
@@ -308,9 +316,8 @@ private void setBalloonLore(ItemMeta meta, MultipartBalloonType multipartBalloon
*/
private void setBalloonDisplayName(ItemMeta meta, SingleBalloonType singleBalloonType) {
String name = singleBalloonType.getName();
- MessageTranslations messageTranslations = new MessageTranslations(this.getPlugin());
if (name != null) {
- meta.displayName(messageTranslations.getSerializedString(name));
+ meta.setDisplayName(ChatColor.translateAlternateColorCodes('&', name));
}
}
@@ -321,9 +328,8 @@ private void setBalloonDisplayName(ItemMeta meta, SingleBalloonType singleBalloo
*/
private void setBalloonDisplayName(ItemMeta meta, MultipartBalloonType multipartBalloonType) {
String name = multipartBalloonType.getName();
- MessageTranslations messageTranslations = new MessageTranslations(this.getPlugin());
if (name != null) {
- meta.displayName(messageTranslations.getSerializedString(name));
+ meta.setDisplayName(ChatColor.translateAlternateColorCodes('&', name));
}
}
diff --git a/src/main/java/net/jeqo/bloons/commands/manager/CommandTabCompleter.java b/src/main/java/net/jeqo/bloons/commands/manager/CommandTabCompleter.java
index b9cebf6a..cd01893a 100644
--- a/src/main/java/net/jeqo/bloons/commands/manager/CommandTabCompleter.java
+++ b/src/main/java/net/jeqo/bloons/commands/manager/CommandTabCompleter.java
@@ -9,6 +9,7 @@
import java.util.Collections;
import java.util.List;
+import java.util.stream.Stream;
/**
* A class used to handle the tab completion of the commands
@@ -89,6 +90,6 @@ public List onTabComplete(@NotNull CommandSender sender, @NotNull Comman
public List getBalloonTabComplete() {
List singleBalloons = ConfigConfiguration.getSingleBalloons().stream().map(singleBalloonType -> singleBalloonType.getId().toLowerCase()).toList();
List multipartBalloons = ConfigConfiguration.getMultipartBalloons().stream().map(multipartBalloonType -> multipartBalloonType.getId().toLowerCase()).toList();
- return List.of(singleBalloons, multipartBalloons).stream().flatMap(List::stream).toList();
+ return Stream.of(singleBalloons, multipartBalloons).flatMap(List::stream).toList();
}
}
diff --git a/src/main/java/net/jeqo/bloons/commands/utils/ErrorHandling.java b/src/main/java/net/jeqo/bloons/commands/utils/ErrorHandling.java
index 4295aae0..568b327e 100644
--- a/src/main/java/net/jeqo/bloons/commands/utils/ErrorHandling.java
+++ b/src/main/java/net/jeqo/bloons/commands/utils/ErrorHandling.java
@@ -3,7 +3,6 @@
import net.jeqo.bloons.Bloons;
import net.jeqo.bloons.configuration.PluginConfiguration;
import net.jeqo.bloons.message.MessageTranslations;
-import net.kyori.adventure.text.Component;
import org.bukkit.command.CommandSender;
/**
@@ -17,40 +16,41 @@ public class ErrorHandling {
* @param sender The sender of the command, type org.bukkit.command.CommandSender
*/
public static void usage(CommandSender sender) {
+ // MessageTranslations will need to adapt for plain text
MessageTranslations messageTranslations = new MessageTranslations(Bloons.getInstance());
- sender.sendMessage(Component.text(""));
+ sender.sendMessage(""); // Blank line for spacing
if (sender.hasPermission("bloons.menu")) {
- Component menuMessage = messageTranslations.getSerializedString(" /bloons - Open the balloon menu");
+ String menuMessage = " §d/bloons §7- Open the balloon menu";
sender.sendMessage(menuMessage);
}
if (sender.hasPermission("bloons.equip")) {
- Component equipMessage = messageTranslations.getSerializedString(" /bloons equip - " + Bloons.getCommandCore().getCommandDescription("equip"));
+ String equipMessage = " §d/bloons equip §7- " + Bloons.getCommandCore().getCommandDescription("equip");
sender.sendMessage(equipMessage);
}
if (sender.hasPermission("bloons.unequip")) {
- Component unequipMessage = messageTranslations.getSerializedString(" /bloons unequip - " + Bloons.getCommandCore().getCommandDescription("unequip"));
+ String unequipMessage = " §d/bloons unequip §7- " + Bloons.getCommandCore().getCommandDescription("unequip");
sender.sendMessage(unequipMessage);
}
if (sender.hasPermission("bloons.force")) {
- Component forceEquipMessage = messageTranslations.getSerializedString(" /bloons fequip - " + Bloons.getCommandCore().getCommandDescription("fequip"));
- Component forceUnequipMessage = messageTranslations.getSerializedString(" /bloons funequip - " + Bloons.getCommandCore().getCommandDescription("funequip"));
+ String forceEquipMessage = " §d/bloons fequip §7- " + Bloons.getCommandCore().getCommandDescription("fequip");
+ String forceUnequipMessage = " §d/bloons funequip §7- " + Bloons.getCommandCore().getCommandDescription("funequip");
sender.sendMessage(forceEquipMessage);
sender.sendMessage(forceUnequipMessage);
}
if (sender.hasPermission("bloons.reload")) {
- Component reloadMessage = messageTranslations.getSerializedString(" /bloons reload - " + Bloons.getCommandCore().getCommandDescription("reload"));
+ String reloadMessage = " §d/bloons reload §7- " + Bloons.getCommandCore().getCommandDescription("reload");
sender.sendMessage(reloadMessage);
}
// Send the credits no matter what at the end of the help section
- sender.sendMessage(Component.text(""));
- Component creditsMessage = messageTranslations.getSerializedString(" Bloons " + PluginConfiguration.getVersion() + " - Made by " + PluginConfiguration.DEVELOPER_CREDITS);
+ sender.sendMessage(""); // Blank line for spacing
+ String creditsMessage = " §dBloons " + PluginConfiguration.getVersion() + " §7- Made by " + PluginConfiguration.DEVELOPER_CREDITS;
sender.sendMessage(creditsMessage);
- sender.sendMessage(Component.text(""));
+ sender.sendMessage(""); // Blank line for spacing
}
}
diff --git a/src/main/java/net/jeqo/bloons/configuration/ConfigConfiguration.java b/src/main/java/net/jeqo/bloons/configuration/ConfigConfiguration.java
index 77e2edc9..defdcbec 100644
--- a/src/main/java/net/jeqo/bloons/configuration/ConfigConfiguration.java
+++ b/src/main/java/net/jeqo/bloons/configuration/ConfigConfiguration.java
@@ -1,5 +1,6 @@
package net.jeqo.bloons.configuration;
+import lombok.Getter;
import net.jeqo.bloons.Bloons;
import net.jeqo.bloons.balloon.model.BalloonSegmentType;
import net.jeqo.bloons.balloon.multipart.MultipartBalloonModel;
@@ -16,6 +17,8 @@
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
+import java.util.Objects;
+import java.util.stream.Stream;
/**
* A class that contains configurations for the plugin configuration file
@@ -30,19 +33,23 @@ public class ConfigConfiguration {
*/
public static final String LANGUAGES_CONFIGURATION_FOLDER = "languages";
+ @Getter
+ private static final String balloonConfigurationFolder = Bloons.getInstance().getDataFolder() + File.separator + BALLOON_CONFIGURATION_FOLDER;
+
/**
* Gets the number of configuration files currently in the balloon configuration folder
* @return The number of configuration files in the balloon configuration folder. Returns 0 upon none found. type long
*/
public static long getBalloonConfigurationCount() {
try {
- Path path = Path.of(Bloons.getInstance().getDataFolder() + File.separator + BALLOON_CONFIGURATION_FOLDER);
- return Files.walk(path).filter(Files::isRegularFile).count();
- } catch (IOException e) {
- e.printStackTrace();
+ Path path = Path.of(getBalloonConfigurationFolder());
+ try (Stream paths = Files.walk(path)) {
+ return paths.filter(Files::isRegularFile).count();
+ }
+ } catch (Exception e) {
+ Logger.logError(String.format("An error occurred while counting balloon configuration files: %s", e.getMessage()));
+ return 0;
}
-
- return 0;
}
/**
@@ -53,7 +60,7 @@ public static long getBalloonConfigurationCount() {
public static ArrayList getSingleBalloons() {
// Start an array of single balloon types that's empty
ArrayList singleBalloons = new ArrayList<>();
- File folder = new File(Bloons.getInstance().getDataFolder() + File.separator + BALLOON_CONFIGURATION_FOLDER);
+ File folder = new File(getBalloonConfigurationFolder());
// Check if the folder exists
if (!folder.exists() || !folder.isDirectory()) {
@@ -211,19 +218,19 @@ public static ArrayList getMultipartBalloons() {
new MultipartBalloonModel(
BalloonSegmentType.HEAD,
config.getString(key + ".head.material"),
- config.getString(key + ".head.color"),
+ Objects.requireNonNull(config.getString(key + ".head.color")),
config.getInt(key + ".head.custom-model-data")
),
new MultipartBalloonModel(
BalloonSegmentType.BODY,
config.getString(key + ".body.material"),
- config.getString(key + ".body.color"),
+ Objects.requireNonNull(config.getString(key + ".body.color")),
config.getInt(key + ".body.custom-model-data")
),
new MultipartBalloonModel(
BalloonSegmentType.TAIL,
config.getString(key + ".tail.material"),
- config.getString(key + ".tail.color"),
+ Objects.requireNonNull(config.getString(key + ".tail.color")),
config.getInt(key + ".tail.custom-model-data")
)
));
diff --git a/src/main/java/net/jeqo/bloons/events/BloonsEvent.java b/src/main/java/net/jeqo/bloons/events/BloonsEvent.java
deleted file mode 100644
index d465ea84..00000000
--- a/src/main/java/net/jeqo/bloons/events/BloonsEvent.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package net.jeqo.bloons.events;
-
-import org.bukkit.event.Cancellable;
-import org.bukkit.event.Event;
-import org.bukkit.event.HandlerList;
-import org.bukkit.plugin.Plugin;
-import org.jetbrains.annotations.NotNull;
-
-/**
- * A custom even class that can be used to create our own bloons events
- * These are nearly the same as Bukkit events and can be used interchangeably
- */
-public class BloonsEvent extends Event implements Cancellable {
-
- private static final HandlerList HANDLER_LIST = new HandlerList();
- private boolean cancelled;
-
- /**
- * Gets all listeners that are listening to this event
- * @return A list of handlers, type org.bukkit.event.HandlerList
- */
- @Override
- public @NotNull HandlerList getHandlers() {
- return HANDLER_LIST;
- }
-
- /**
- * Returns whether the event is cancelled.
- * @return true if the event is cancelled, false otherwise, type boolean
- */
- @Override
- public boolean isCancelled() {
- return this.cancelled;
- }
-
- /**
- * Sets whether the event is cancelled.
- * @param cancel true if you wish to cancel this event, false otherwise, type boolean
- */
- @Override
- public void setCancelled(boolean cancel) {
- this.cancelled = cancel;
- }
-
- /**
- * Cancels the current event
- */
- public void cancel() {
- this.setCancelled(true);
- }
-
- /**
- * Unregisters the listener
- * @param plugin the plugin to unregister the event from, type org.bukkit.plugin.Plugin
- */
- public void unregister(Plugin plugin) {
- this.getHandlers().unregister(plugin);
- }
-
- /**
- * Unregisters all listeners from the event
- */
- public void unregisterAll() {
- HandlerList.unregisterAll();
- }
-}
diff --git a/src/main/java/net/jeqo/bloons/events/balloon/multipart/MultipartBalloonEquipEvent.java b/src/main/java/net/jeqo/bloons/events/balloon/multipart/MultipartBalloonEquipEvent.java
deleted file mode 100644
index 2bc2c50e..00000000
--- a/src/main/java/net/jeqo/bloons/events/balloon/multipart/MultipartBalloonEquipEvent.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package net.jeqo.bloons.events.balloon.multipart;
-
-import lombok.Getter;
-import lombok.Setter;
-import net.jeqo.bloons.balloon.multipart.balloon.MultipartBalloon;
-import net.jeqo.bloons.events.BloonsEvent;
-import org.bukkit.entity.Player;
-
-/**
- * An event that is called when a player equips a multipart balloon
- */
-@Getter @Setter
-public class MultipartBalloonEquipEvent extends BloonsEvent {
- private Player player;
- private MultipartBalloon balloon;
- private String balloonID;
-
- /**
- * Constructor to trigger the MultipartBalloonEquipEvent
- * @param player The player that is equipping the balloon, type org.bukkit.entity.Player
- * @param balloon The balloon that is being equipped, type net.jeqo.bloons.balloon.multipart.balloon.MultipartBalloon
- * @param balloonID The ID of the balloon that is being equipped, type java.lang.String
- */
- public MultipartBalloonEquipEvent(Player player, MultipartBalloon balloon, String balloonID) {
- this.setPlayer(player);
- this.setBalloon(balloon);
- this.setBalloonID(balloonID);
- }
-
- /**
- * Constructor to trigger the MultipartBalloonEquipEvent
- * @param player The player that is equipping the balloon, type org.bukkit.entity.Player
- * @param balloon The balloon that is being equipped, type net.jeqo.bloons.balloon.multipart.balloon.MultipartBalloon
- */
- public MultipartBalloonEquipEvent(Player player, MultipartBalloon balloon) {
- this.setPlayer(player);
- this.setBalloon(balloon);
- }
-
- /**
- * Constructor to trigger the MultipartBalloonEquipEvent
- * @param player The player that is equipping the balloon, type org.bukkit.entity.Player
- * @param balloonID The ID of the balloon that is being equipped, type java.lang.String
- */
- public MultipartBalloonEquipEvent(Player player, String balloonID) {
- this.setPlayer(player);
- this.setBalloonID(balloonID);
- }
-
- /**
- * Constructor to trigger the MultipartBalloonEquipEvent
- * @param player The player that is equipping the balloon, type org.bukkit.entity.Player
- */
- public MultipartBalloonEquipEvent(Player player) {
- this.setPlayer(player);
- }
-}
diff --git a/src/main/java/net/jeqo/bloons/events/balloon/multipart/MultipartBalloonForceEquipEvent.java b/src/main/java/net/jeqo/bloons/events/balloon/multipart/MultipartBalloonForceEquipEvent.java
deleted file mode 100644
index bc4e153e..00000000
--- a/src/main/java/net/jeqo/bloons/events/balloon/multipart/MultipartBalloonForceEquipEvent.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package net.jeqo.bloons.events.balloon.multipart;
-
-import lombok.Getter;
-import lombok.Setter;
-import net.jeqo.bloons.balloon.multipart.balloon.MultipartBalloon;
-import net.jeqo.bloons.events.BloonsEvent;
-import org.bukkit.entity.Player;
-
-/**
- * An event that is called when a player force equips a multipart balloon
- */
-@Getter @Setter
-public class MultipartBalloonForceEquipEvent extends BloonsEvent {
- private Player player;
- private MultipartBalloon balloon;
- private String balloonID;
-
- /**
- * Constructor to trigger the MultipartBalloonForceEquipEvent
- * @param player The player that is equipping the balloon, type org.bukkit.entity.Player
- * @param balloon The balloon that is being equipped, type net.jeqo.bloons.balloon.multipart.balloon.MultipartBalloon
- * @param balloonID The ID of the balloon that is being force equipped, type java.lang.String
- */
- public MultipartBalloonForceEquipEvent(Player player, MultipartBalloon balloon, String balloonID) {
- this.setPlayer(player);
- this.setBalloon(balloon);
- this.setBalloonID(balloonID);
- }
-
- /**
- * Constructor to trigger the MultipartBalloonForceEquipEvent
- * @param player The player that is equipping the balloon, type org.bukkit.entity.Player
- * @param balloon The balloon that is being force equipped, type net.jeqo.bloons.balloon.multipart.balloon.MultipartBalloon
- */
- public MultipartBalloonForceEquipEvent(Player player, MultipartBalloon balloon) {
- this.setPlayer(player);
- this.setBalloon(balloon);
- }
-
- /**
- * Constructor to trigger the MultipartBalloonForceEquipEvent
- * @param player The player that is equipping the balloon, type org.bukkit.entity.Player
- * @param balloonID The ID of the balloon that is being force equipped, type java.lang.String
- */
- public MultipartBalloonForceEquipEvent(Player player, String balloonID) {
- this.setPlayer(player);
- this.setBalloonID(balloonID);
- }
-
- /**
- * Constructor to trigger the MultipartBalloonForceEquipEvent
- * @param player The player that is equipping the balloon, type org.bukkit.entity.Player
- */
- public MultipartBalloonForceEquipEvent(Player player) {
- this.setPlayer(player);
- }
-}
diff --git a/src/main/java/net/jeqo/bloons/events/balloon/multipart/MultipartBalloonForceUnequipEvent.java b/src/main/java/net/jeqo/bloons/events/balloon/multipart/MultipartBalloonForceUnequipEvent.java
deleted file mode 100644
index e27ee8d8..00000000
--- a/src/main/java/net/jeqo/bloons/events/balloon/multipart/MultipartBalloonForceUnequipEvent.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package net.jeqo.bloons.events.balloon.multipart;
-
-import lombok.Getter;
-import lombok.Setter;
-import net.jeqo.bloons.balloon.multipart.balloon.MultipartBalloon;
-import net.jeqo.bloons.events.BloonsEvent;
-import org.bukkit.entity.Player;
-
-/**
- * An event that is called when a player force unequips a multipart balloon
- */
-@Getter @Setter
-public class MultipartBalloonForceUnequipEvent extends BloonsEvent {
- private Player player;
- private MultipartBalloon balloon;
-
- /**
- * Constructor to trigger the MultipartBalloonForceUnequipEvent
- * @param player The player that is unequipping the balloon, type org.bukkit.entity.Player
- * @param balloon The balloon that is being force unequipped, type net.jeqo.bloons.balloon.multipart.balloon.MultipartBalloon
- */
- public MultipartBalloonForceUnequipEvent(Player player, MultipartBalloon balloon) {
- this.setPlayer(player);
- this.setBalloon(balloon);
- }
-}
diff --git a/src/main/java/net/jeqo/bloons/events/balloon/multipart/MultipartBalloonStoreEvent.java b/src/main/java/net/jeqo/bloons/events/balloon/multipart/MultipartBalloonStoreEvent.java
deleted file mode 100644
index 0ad9738b..00000000
--- a/src/main/java/net/jeqo/bloons/events/balloon/multipart/MultipartBalloonStoreEvent.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package net.jeqo.bloons.events.balloon.multipart;
-
-import lombok.Getter;
-import lombok.Setter;
-import net.jeqo.bloons.balloon.multipart.balloon.MultipartBalloon;
-import net.jeqo.bloons.events.BloonsEvent;
-import org.bukkit.entity.Player;
-
-/**
- * An event that is called when a player stores a multipart balloon
- */
-@Getter @Setter
-public class MultipartBalloonStoreEvent extends BloonsEvent {
- private Player player;
- private MultipartBalloon balloon;
-
- /**
- * Constructor to trigger the MultipartBalloonStoreEvent
- * @param player The player that is storing the balloon, type org.bukkit.entity.Player
- * @param balloon The balloon that is being stored, type net.jeqo.bloons.balloon.multipart.balloon.MultipartBalloon
- */
- public MultipartBalloonStoreEvent(Player player, MultipartBalloon balloon) {
- this.setPlayer(player);
- this.setBalloon(balloon);
- }
-}
diff --git a/src/main/java/net/jeqo/bloons/events/balloon/multipart/MultipartBalloonUnequipEvent.java b/src/main/java/net/jeqo/bloons/events/balloon/multipart/MultipartBalloonUnequipEvent.java
deleted file mode 100644
index 7b019c02..00000000
--- a/src/main/java/net/jeqo/bloons/events/balloon/multipart/MultipartBalloonUnequipEvent.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package net.jeqo.bloons.events.balloon.multipart;
-
-import lombok.Getter;
-import lombok.Setter;
-import net.jeqo.bloons.balloon.multipart.balloon.MultipartBalloon;
-import net.jeqo.bloons.events.BloonsEvent;
-import org.bukkit.entity.Player;
-
-/**
- * An event that is called when a player unequips a multipart balloon
- */
-@Getter @Setter
-public class MultipartBalloonUnequipEvent extends BloonsEvent {
- private Player player;
- private MultipartBalloon balloon;
-
- /**
- * Constructor to trigger the MultipartBalloonUnequipEvent
- * @param player The player that is unequipping the balloon, type org.bukkit.entity.Player
- * @param balloon The balloon that is being unequipped, type net.jeqo.bloons.balloon.multipart.balloon.MultipartBalloon
- */
- public MultipartBalloonUnequipEvent(Player player, MultipartBalloon balloon) {
- this.setPlayer(player);
- this.setBalloon(balloon);
- }
-}
diff --git a/src/main/java/net/jeqo/bloons/events/balloon/single/SingleBalloonEquipEvent.java b/src/main/java/net/jeqo/bloons/events/balloon/single/SingleBalloonEquipEvent.java
deleted file mode 100644
index f1947f4e..00000000
--- a/src/main/java/net/jeqo/bloons/events/balloon/single/SingleBalloonEquipEvent.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package net.jeqo.bloons.events.balloon.single;
-
-import lombok.Getter;
-import lombok.Setter;
-import net.jeqo.bloons.events.BloonsEvent;
-import org.bukkit.entity.Player;
-
-/**
- * An event that is called when a player equips a single balloon
- */
-@Getter @Setter
-public class SingleBalloonEquipEvent extends BloonsEvent {
- private Player player;
- private String balloonID;
-
- /**
- * Constructor to trigger the SingleBalloonEquipEvent
- * @param player The player that is equipping the balloon, type org.bukkit.entity.Player
- * @param balloonID The ID of the balloon that is being equipped, type java.lang.String
- */
- public SingleBalloonEquipEvent(Player player, String balloonID) {
- this.setPlayer(player);
- this.setBalloonID(balloonID);
- }
-
- /**
- * Constructor to trigger the SingleBalloonEquipEvent
- * @param player The player that is equipping the balloon, type org.bukkit.entity.Player
- */
- public SingleBalloonEquipEvent(Player player) {
- this.setPlayer(player);
- }
-}
diff --git a/src/main/java/net/jeqo/bloons/events/balloon/single/SingleBalloonForceEquipEvent.java b/src/main/java/net/jeqo/bloons/events/balloon/single/SingleBalloonForceEquipEvent.java
deleted file mode 100644
index bd4f86ee..00000000
--- a/src/main/java/net/jeqo/bloons/events/balloon/single/SingleBalloonForceEquipEvent.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package net.jeqo.bloons.events.balloon.single;
-
-import lombok.Getter;
-import lombok.Setter;
-import net.jeqo.bloons.events.BloonsEvent;
-import org.bukkit.entity.Player;
-
-/**
- * An event that is called when a player force equips a single balloon
- */
-@Getter @Setter
-public class SingleBalloonForceEquipEvent extends BloonsEvent {
- private Player player;
- private String balloonID;
-
- /**
- * Constructor to trigger the SingleBalloonForceEquipEvent
- * @param player The player that is equipping the balloon, type org.bukkit.entity.Player
- * @param balloonID The ID of the balloon that is being force equipped, type java.lang.String
- */
- public SingleBalloonForceEquipEvent(Player player, String balloonID) {
- this.setPlayer(player);
- this.setBalloonID(balloonID);
- }
-}
diff --git a/src/main/java/net/jeqo/bloons/events/balloon/single/SingleBalloonForceUnequipEvent.java b/src/main/java/net/jeqo/bloons/events/balloon/single/SingleBalloonForceUnequipEvent.java
deleted file mode 100644
index 79dfce3a..00000000
--- a/src/main/java/net/jeqo/bloons/events/balloon/single/SingleBalloonForceUnequipEvent.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package net.jeqo.bloons.events.balloon.single;
-
-import lombok.Getter;
-import lombok.Setter;
-import net.jeqo.bloons.balloon.single.SingleBalloon;
-import net.jeqo.bloons.events.BloonsEvent;
-import org.bukkit.entity.Player;
-
-/**
- * An event that is called when a player force unequips a single balloon
- */
-@Getter @Setter
-public class SingleBalloonForceUnequipEvent extends BloonsEvent {
- private Player player;
- private SingleBalloon balloon;
-
- /**
- * Constructor to trigger the SingleBalloonForceUnequipEvent
- * @param player The player that is unequipping the balloon, type org.bukkit.entity.Player
- * @param balloon The balloon that is being force unequipped, type net.jeqo.bloons.balloon.single.SingleBalloon
- */
- public SingleBalloonForceUnequipEvent(Player player, SingleBalloon balloon) {
- this.setPlayer(player);
- this.setBalloon(balloon);
- }
-}
diff --git a/src/main/java/net/jeqo/bloons/events/balloon/single/SingleBalloonStoreEvent.java b/src/main/java/net/jeqo/bloons/events/balloon/single/SingleBalloonStoreEvent.java
deleted file mode 100644
index 7a8e1290..00000000
--- a/src/main/java/net/jeqo/bloons/events/balloon/single/SingleBalloonStoreEvent.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package net.jeqo.bloons.events.balloon.single;
-
-import lombok.Getter;
-import lombok.Setter;
-import net.jeqo.bloons.balloon.single.SingleBalloon;
-import net.jeqo.bloons.events.BloonsEvent;
-import org.bukkit.entity.Player;
-
-/**
- * An event that is called when a player stores a single balloon
- */
-@Getter @Setter
-public class SingleBalloonStoreEvent extends BloonsEvent {
- private Player player;
- private SingleBalloon balloon;
-
- /**
- * Constructor to trigger the SingleBalloonStoreEvent
- * @param player The player that is storing the balloon, type org.bukkit.entity.Player
- * @param balloon The balloon that is being stored, type net.jeqo.bloons.balloon.single.SingleBalloon
- */
- public SingleBalloonStoreEvent(Player player, SingleBalloon balloon) {
- this.setPlayer(player);
- this.setBalloon(balloon);
- }
-}
diff --git a/src/main/java/net/jeqo/bloons/events/balloon/single/SingleBalloonUnequipEvent.java b/src/main/java/net/jeqo/bloons/events/balloon/single/SingleBalloonUnequipEvent.java
deleted file mode 100644
index c3ea93d1..00000000
--- a/src/main/java/net/jeqo/bloons/events/balloon/single/SingleBalloonUnequipEvent.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package net.jeqo.bloons.events.balloon.single;
-
-import lombok.Getter;
-import lombok.Setter;
-import net.jeqo.bloons.balloon.single.SingleBalloon;
-import net.jeqo.bloons.events.BloonsEvent;
-import org.bukkit.entity.Player;
-
-/**
- * An event that is called when a player unequips a single balloon
- */
-@Getter @Setter
-public class SingleBalloonUnequipEvent extends BloonsEvent {
- private Player player;
- private SingleBalloon balloon;
-
- /**
- * Constructor to trigger the SingleBalloonUnequipEvent
- * @param player The player that is unequipping the balloon, type org.bukkit.entity.Player
- * @param balloon The balloon that is being unequipped, type net.jeqo.bloons.balloon.single.SingleBalloon
- */
- public SingleBalloonUnequipEvent(Player player, SingleBalloon balloon) {
- this.setPlayer(player);
- this.setBalloon(balloon);
- }
-}
diff --git a/src/main/java/net/jeqo/bloons/events/general/BloonsConfigReloadEvent.java b/src/main/java/net/jeqo/bloons/events/general/BloonsConfigReloadEvent.java
deleted file mode 100644
index 9f24f75c..00000000
--- a/src/main/java/net/jeqo/bloons/events/general/BloonsConfigReloadEvent.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package net.jeqo.bloons.events.general;
-
-import net.jeqo.bloons.events.BloonsEvent;
-
-/**
- * An event that is called when the Bloons config is reloaded
- * No player or balloon is involved in this event so the constructor is empty
- */
-public class BloonsConfigReloadEvent extends BloonsEvent { }
\ No newline at end of file
diff --git a/src/main/java/net/jeqo/bloons/gui/GUI.java b/src/main/java/net/jeqo/bloons/gui/GUI.java
index a73e5120..597ada15 100644
--- a/src/main/java/net/jeqo/bloons/gui/GUI.java
+++ b/src/main/java/net/jeqo/bloons/gui/GUI.java
@@ -1,8 +1,6 @@
package net.jeqo.bloons.gui;
-import net.jeqo.bloons.events.BloonsEvent;
import net.jeqo.bloons.item.NBTItem;
-import net.kyori.adventure.text.Component;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
@@ -25,7 +23,7 @@ public abstract class GUI {
* The name that is displayed as the GUI title
* @return The name, type net.kyori.adventure.text.Component
*/
- public abstract Component name();
+ public abstract String name();
/**
* The number of slots that are present within the GUI
@@ -56,14 +54,6 @@ public abstract class GUI {
*/
public abstract GUIClickableItem cantPickup(NBTItem item, int slot);
- /**
- * The event that is fired when the GUI is opened or triggered
- * @return The event, type net.jeqo.bloons.events.BloonsEvent
- */
- public BloonsEvent triggerEvent() {
- return null;
- }
-
/**
* Determines what happens when the GUI is closed
* @param player The player that closed the GUI, type org.bukkit.entity.Player
diff --git a/src/main/java/net/jeqo/bloons/gui/GUICore.java b/src/main/java/net/jeqo/bloons/gui/GUICore.java
index 966cc74e..79e1dea3 100644
--- a/src/main/java/net/jeqo/bloons/gui/GUICore.java
+++ b/src/main/java/net/jeqo/bloons/gui/GUICore.java
@@ -90,11 +90,6 @@ public void openGUI(GUI gui, Player player) {
gui.open(player);
player.openInventory(gui.inventory());
gui.startUpdater(this.getPlugin());
-
- // Trigger the event specified in the GUI if it exists
- if (gui.triggerEvent() != null) {
- gui.triggerEvent().callEvent();
- }
}
/**
diff --git a/src/main/java/net/jeqo/bloons/gui/item/border/BlackGlassPaneBorder.java b/src/main/java/net/jeqo/bloons/gui/item/border/BlackGlassPaneBorder.java
index 7e3911d6..edff31da 100644
--- a/src/main/java/net/jeqo/bloons/gui/item/border/BlackGlassPaneBorder.java
+++ b/src/main/java/net/jeqo/bloons/gui/item/border/BlackGlassPaneBorder.java
@@ -2,7 +2,6 @@
import net.jeqo.bloons.gui.GUIClickableItem;
import net.jeqo.bloons.item.NBTItem;
-import net.kyori.adventure.text.Component;
import org.bukkit.Material;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.ItemStack;
@@ -35,7 +34,10 @@ public NBTItem getItem() {
// Create and set the item meta for the black glass pane border
NBTItem item = new NBTItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE));
ItemMeta meta = item.getItemMeta();
- meta.displayName(Component.text(" "));
+
+ if (meta == null) return null;
+
+ meta.setDisplayName("");
item.setItemMeta(meta);
return item;
diff --git a/src/main/java/net/jeqo/bloons/gui/item/filler/BlackGlassPaneFillerItem.java b/src/main/java/net/jeqo/bloons/gui/item/filler/BlackGlassPaneFillerItem.java
index 2482e178..35c5be6b 100644
--- a/src/main/java/net/jeqo/bloons/gui/item/filler/BlackGlassPaneFillerItem.java
+++ b/src/main/java/net/jeqo/bloons/gui/item/filler/BlackGlassPaneFillerItem.java
@@ -2,7 +2,6 @@
import net.jeqo.bloons.gui.GUIClickableItem;
import net.jeqo.bloons.item.NBTItem;
-import net.kyori.adventure.text.Component;
import org.bukkit.Material;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.ItemStack;
@@ -35,8 +34,12 @@ public NBTItem getItem() {
// Create and set the item meta for the black glass pane filler
NBTItem item = new NBTItem(new ItemStack(Material.COOKIE));
ItemMeta meta = item.getItemMeta();
- meta.displayName(Component.text(" "));
+
+ if (meta == null) return null;
+
+ meta.setDisplayName("");
item.setItemMeta(meta);
+
return item;
}
};
diff --git a/src/main/java/net/jeqo/bloons/gui/menus/BalloonMenu.java b/src/main/java/net/jeqo/bloons/gui/menus/BalloonMenu.java
index f8170f5e..0ec42233 100644
--- a/src/main/java/net/jeqo/bloons/gui/menus/BalloonMenu.java
+++ b/src/main/java/net/jeqo/bloons/gui/menus/BalloonMenu.java
@@ -8,6 +8,7 @@
import net.jeqo.bloons.message.Languages;
import net.jeqo.bloons.message.MessageTranslations;
import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
@@ -57,7 +58,7 @@ private Inventory getBlankPage(String name){
ItemStack nextPage = new ItemStack(Material.valueOf(this.getMessageTranslations().getString("buttons.next-page.material")));
ItemMeta nextMeta = nextPage.getItemMeta();
assert nextMeta != null;
- nextMeta.displayName(this.getMessageTranslations().getSerializedString(this.getMessageTranslations().getString("buttons.next-page.name")));
+ nextMeta.setDisplayName(ChatColor.translateAlternateColorCodes('&', this.getMessageTranslations().getString("buttons.next-page.name")));
nextMeta.setCustomModelData(this.getMessageTranslations().getInt("buttons.next-page.custom-model-data"));
nextPage.setItemMeta(nextMeta);
@@ -65,7 +66,7 @@ private Inventory getBlankPage(String name){
ItemStack prevPage = new ItemStack(Material.valueOf(this.getMessageTranslations().getString("buttons.previous-page.material")));
ItemMeta prevMeta = prevPage.getItemMeta();
assert prevMeta != null;
- prevMeta.displayName(this.getMessageTranslations().getSerializedString(this.getMessageTranslations().getString("buttons.previous-page.name")));;
+ prevMeta.setDisplayName(ChatColor.translateAlternateColorCodes('&', this.getMessageTranslations().getString("buttons.previous-page.name")));
prevMeta.setCustomModelData(this.getMessageTranslations().getInt("buttons.previous-page.custom-model-data"));
prevPage.setItemMeta(prevMeta);
@@ -73,7 +74,7 @@ private Inventory getBlankPage(String name){
ItemStack removeBalloon = new ItemStack(Material.valueOf(this.getMessageTranslations().getString("buttons.unequip.material")));
ItemMeta removeMeta = removeBalloon.getItemMeta();
assert removeMeta != null;
- removeMeta.displayName(this.getMessageTranslations().getSerializedString(this.getMessageTranslations().getString("buttons.unequip.name")));;
+ removeMeta.setDisplayName(ChatColor.translateAlternateColorCodes('&', this.getMessageTranslations().getString("buttons.unequip.name")));
removeMeta.setCustomModelData(this.getMessageTranslations().getInt("buttons.unequip.custom-model-data"));
removeBalloon.setItemMeta(removeMeta);
diff --git a/src/main/java/net/jeqo/bloons/gui/menus/ExampleMenu.java b/src/main/java/net/jeqo/bloons/gui/menus/ExampleMenu.java
deleted file mode 100644
index 440b4198..00000000
--- a/src/main/java/net/jeqo/bloons/gui/menus/ExampleMenu.java
+++ /dev/null
@@ -1,117 +0,0 @@
-package net.jeqo.bloons.gui.menus;
-
-import net.jeqo.bloons.gui.GUI;
-import net.jeqo.bloons.gui.GUIClickableItem;
-import net.jeqo.bloons.gui.item.border.BlackGlassPaneBorder;
-import net.jeqo.bloons.gui.item.filler.BlackGlassPaneFillerItem;
-import net.jeqo.bloons.item.NBTItem;
-import net.kyori.adventure.text.Component;
-import org.bukkit.Bukkit;
-import org.bukkit.entity.Player;
-import org.bukkit.event.inventory.InventoryClickEvent;
-import org.bukkit.inventory.Inventory;
-
-/**
- * An example of a menu made with the custom GUI system
- */
-public class ExampleMenu extends GUI {
- Inventory inventory;
-
- /**
- * The inventory that is displayed to the player
- * @return The inventory, type org.bukkit.inventory.Inventory
- */
- @Override
- public Inventory inventory() {
- this.inventory = Bukkit.createInventory(null, slots(), name());
- return this.inventory;
- }
-
- /**
- * The name that is displayed as the GUI title
- * @return The name, type net.kyori.adventure.text.Component
- */
- @Override
- public Component name() {
- return Component.text("Example GUI");
- }
-
- /**
- * The number of slots that are present within the GUI
- * It should be a multiple of 9. 27 and 54 are common values.
- * @return The number of slots contained within the GUI, type int
- */
- @Override
- public int slots() {
- return 27;
- }
-
- /**
- * The filler item that is used to fill empty slots in the GUI
- * @return The filler item, type net.jeqo.bloons.gui.GUIClickableItem
- */
- @Override
- public GUIClickableItem fillerItem(int slot) {
- return BlackGlassPaneFillerItem.getItem(slot);
- }
-
- /**
- * The border item that is used to create a border around the GUI
- * @param slot The slot of the item in the inventory, type int
- * @return The border item, type net.jeqo.bloons.gui.GUIClickableItem
- */
- @Override
- public GUIClickableItem borderItem(int slot) {
- return BlackGlassPaneBorder.getItem(slot);
- }
-
- /**
- * Creates a clickable item that can't be picked up with the click event cancelled
- * @param currentItem The item that is being clicked on
- * @param slot The slot that the item is in
- * @return A GUIClickableItem object that represents the item that can't be picked up, type net.jeqo.bloons.gui.GUIClickableItem
- */
- @Override
- public GUIClickableItem cantPickup(NBTItem currentItem, int slot) {
- return new GUIClickableItem() {
- @Override
- public void run(InventoryClickEvent event) {
- event.setCancelled(true);
- }
-
- @Override
- public int getSlot() {
- return slot;
- }
-
- @Override
- public NBTItem getItem() {
- return currentItem;
- }
- };
- }
-
- /**
- * Determines what happens when the GUI is closed
- * @param player The player that closed the GUI, type org.bukkit.entity.Player
- */
- @Override
- public void onClose(Player player) {
- player.sendMessage("You closed the GUI!");
- }
-
- /**
- * Determines what happens when the GUI is opened
- * @param player The player that opened the GUI, type org.bukkit.entity.Player
- */
- @Override
- public void open(Player player) {
- fillAllSlots();
- }
-
- /**
- * Determines what happens when the GUI is updated (this happens every 20 ticks)
- */
- @Override
- public void update() {}
-}
diff --git a/src/main/java/net/jeqo/bloons/listeners/BalloonMenuListener.java b/src/main/java/net/jeqo/bloons/listeners/BalloonMenuListener.java
index 1f3bba81..b3d9d4cb 100644
--- a/src/main/java/net/jeqo/bloons/listeners/BalloonMenuListener.java
+++ b/src/main/java/net/jeqo/bloons/listeners/BalloonMenuListener.java
@@ -5,18 +5,14 @@
import net.jeqo.bloons.balloon.multipart.balloon.MultipartBalloonBuilder;
import net.jeqo.bloons.balloon.multipart.MultipartBalloonType;
import net.jeqo.bloons.balloon.single.SingleBalloon;
+import net.jeqo.bloons.balloon.single.SingleBalloonType;
import net.jeqo.bloons.colors.Color;
import net.jeqo.bloons.colors.ColorCodeConverter;
-import net.jeqo.bloons.events.balloon.multipart.MultipartBalloonEquipEvent;
-import net.jeqo.bloons.events.balloon.multipart.MultipartBalloonUnequipEvent;
-import net.jeqo.bloons.events.balloon.single.SingleBalloonEquipEvent;
-import net.jeqo.bloons.events.balloon.single.SingleBalloonUnequipEvent;
import net.jeqo.bloons.gui.menus.BalloonMenu;
import net.jeqo.bloons.message.Languages;
import net.jeqo.bloons.message.MessageTranslations;
import net.jeqo.bloons.management.MultipartBalloonManagement;
import net.jeqo.bloons.management.SingleBalloonManagement;
-import net.kyori.adventure.text.Component;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
@@ -51,7 +47,7 @@ public void onClick(InventoryClickEvent event){
// Get the display name of the item clicked and the converted balloon name
String displayName = event.getCurrentItem().getItemMeta().getDisplayName();
- String localizedName = event.getCurrentItem().getItemMeta().getLocalizedName();
+ String localizedName = event.getCurrentItem().getItemMeta().getItemName();
String convertedColourBalloonName = ColorCodeConverter.colorCodeToAdventure(displayName); // Weird parsing is needed for this because of the usage of minimessage
// Always check for shift clicks
@@ -67,44 +63,29 @@ public void onClick(InventoryClickEvent event){
MultipartBalloonType type = Bloons.getBalloonCore().getMultipartBalloonByID(localizedName);
MultipartBalloon previousBalloon = MultipartBalloonManagement.getPlayerBalloon(player.getUniqueId());
if (previousBalloon != null) {
- MultipartBalloonUnequipEvent multipartBalloonEquipEvent = new MultipartBalloonUnequipEvent(player, previousBalloon);
- multipartBalloonEquipEvent.callEvent();
-
- if (multipartBalloonEquipEvent.isCancelled()) return;
-
previousBalloon.destroy();
MultipartBalloonManagement.removePlayerBalloon(player.getUniqueId());
}
+
+ MultipartBalloonBuilder builder = new MultipartBalloonBuilder(type, player);
+ SingleBalloonManagement.removeBalloon(player, Bloons.getPlayerSingleBalloons().get(player.getUniqueId()));
if (type != null) {
- MultipartBalloonBuilder builder = new MultipartBalloonBuilder(type, player);
- SingleBalloonManagement.removeBalloon(player, Bloons.getPlayerSingleBalloons().get(player.getUniqueId()));
MultipartBalloon balloon = builder.build();
- // Call the equip event and check if it's cancelled, if it is, don't spawn the balloon or do anything
- MultipartBalloonEquipEvent multipartBalloonEquipEvent = new MultipartBalloonEquipEvent(player);
- multipartBalloonEquipEvent.callEvent();
-
- if (multipartBalloonEquipEvent.isCancelled()) return;
-
balloon.initialize();
balloon.run();
MultipartBalloonManagement.setPlayerBalloon(player.getUniqueId(), balloon);
} else {
- // Call the equip event and check if it's cancelled, if it is, don't spawn the balloon or do anything
- SingleBalloonEquipEvent singleBalloonEquipEvent = new SingleBalloonEquipEvent(player);
- singleBalloonEquipEvent.callEvent();
-
- if (singleBalloonEquipEvent.isCancelled()) return;
-
// Check if a balloon needs to be added or removed
- SingleBalloonManagement.removeBalloon(player, Bloons.getPlayerSingleBalloons().get(player.getUniqueId()));
- SingleBalloon.checkBalloonRemovalOrAdd(player, localizedName);
+ SingleBalloonType fromName = Bloons.getBalloonCore().getSingleBalloonByName(convertedColourBalloonName);
+
+ SingleBalloon.checkBalloonRemovalOrAdd(player, fromName.getId());
}
// Send equipped message and play sound
player.playSound(player.getLocation(), Sound.ENTITY_CHICKEN_EGG, 1, 1);
- Component equippedMessage = messageTranslations.getSerializedString(Languages.getMessage("prefix"), String.format(Languages.getMessage("equipped"), convertedColourBalloonName));
+ String equippedMessage = Languages.getMessage("prefix") + String.format(Languages.getMessage("equipped"), convertedColourBalloonName);
player.sendMessage(equippedMessage);
// Close inventory if the config is set to true
@@ -155,37 +136,27 @@ else if(displayName.equals(ColorCodeConverter.adventureToColorCode(messageTransl
if (singleBalloon == null && multipartBalloon == null) {
// If no balloon equipped, play sound and send message notifying them
player.playSound(player.getLocation(), Sound.BLOCK_NOTE_BLOCK_DIDGERIDOO, 1, 1);
- player.sendMessage(messageTranslations.getSerializedString(Languages.getMessage("prefix"), Languages.getMessage("not-equipped")));
+ player.sendMessage(Languages.getMessage("prefix"), Languages.getMessage("not-equipped"));
} else {
if (singleBalloon != null) {
if (messageTranslations.getString("close-on-unequip").equals("true")) player.closeInventory();
- SingleBalloonUnequipEvent singleBalloonUnequipEvent = new SingleBalloonUnequipEvent(player, singleBalloon);
- singleBalloonUnequipEvent.callEvent();
-
- if (singleBalloonUnequipEvent.isCancelled()) return;
-
SingleBalloonManagement.removeBalloon(player, singleBalloon);
// Play sound and send message saying the balloon is unequipped
player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_HURT_SWEET_BERRY_BUSH, 1, 1);
- player.sendMessage(messageTranslations.getSerializedString(Languages.getMessage("prefix"), Languages.getMessage("unequipped")));
+ player.sendMessage(Languages.getMessage("prefix"), Languages.getMessage("unequipped"));
}
if (multipartBalloon != null) {
if (messageTranslations.getString("close-on-unequip").equals("true")) player.closeInventory();
- MultipartBalloonUnequipEvent multipartBalloonEquipEvent = new MultipartBalloonUnequipEvent(player, multipartBalloon);
- multipartBalloonEquipEvent.callEvent();
-
- if (multipartBalloonEquipEvent.isCancelled()) return;
-
multipartBalloon.destroy();
MultipartBalloonManagement.removePlayerBalloon(player.getUniqueId());
// Play sound and send message saying the balloon is unequipped
player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_HURT_SWEET_BERRY_BUSH, 1, 1);
- player.sendMessage(messageTranslations.getSerializedString(Languages.getMessage("prefix"), Languages.getMessage("unequipped")));
+ player.sendMessage(Languages.getMessage("prefix"), Languages.getMessage("unequipped"));
}
}
}
diff --git a/src/main/java/net/jeqo/bloons/listeners/BalloonUnleashListener.java b/src/main/java/net/jeqo/bloons/listeners/BalloonUnleashListener.java
index 809eef75..cd903acd 100644
--- a/src/main/java/net/jeqo/bloons/listeners/BalloonUnleashListener.java
+++ b/src/main/java/net/jeqo/bloons/listeners/BalloonUnleashListener.java
@@ -33,15 +33,4 @@ public void onUnleash(PlayerUnleashEntityEvent event) {
event.setCancelled(true);
}
}
-
- /**
- * Prevents breaking of the lead from chicken with the internal ID
- * @param event The event that is called when an entity is unleashed, type org.bukkit.event.entity.EntityUnleashEvent
- */
- @EventHandler
- public void onLeadBreak(EntityUnleashEvent event) {
- if (event.getEntity().getCustomName() != null && event.getEntity().getCustomName().contains(BalloonConfiguration.BALLOON_CHICKEN_ID)) {
- event.setCancelled(true);
- }
- }
}
diff --git a/src/main/java/net/jeqo/bloons/listeners/multipart/MultipartBalloonPlayerJoinListener.java b/src/main/java/net/jeqo/bloons/listeners/multipart/MultipartBalloonPlayerJoinListener.java
index 311e8f02..549d8847 100644
--- a/src/main/java/net/jeqo/bloons/listeners/multipart/MultipartBalloonPlayerJoinListener.java
+++ b/src/main/java/net/jeqo/bloons/listeners/multipart/MultipartBalloonPlayerJoinListener.java
@@ -3,7 +3,6 @@
import net.jeqo.bloons.balloon.multipart.balloon.MultipartBalloon;
import net.jeqo.bloons.balloon.multipart.balloon.MultipartBalloonBuilder;
import net.jeqo.bloons.balloon.multipart.MultipartBalloonType;
-import net.jeqo.bloons.events.balloon.multipart.MultipartBalloonEquipEvent;
import net.jeqo.bloons.management.MultipartBalloonManagement;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@@ -19,11 +18,6 @@ public class MultipartBalloonPlayerJoinListener implements Listener {
public void onPlayerJoin(PlayerJoinEvent event) {
MultipartBalloon equippedBalloon = MultipartBalloonManagement.getPlayerBalloon(event.getPlayer().getUniqueId());
if (equippedBalloon != null) {
- MultipartBalloonEquipEvent equipEvent = new MultipartBalloonEquipEvent(event.getPlayer(), equippedBalloon);
- equipEvent.callEvent();
-
- if (equipEvent.isCancelled()) return;
-
MultipartBalloonType balloonType = MultipartBalloonManagement.getPlayerBalloon(event.getPlayer().getUniqueId()).getType();
MultipartBalloonManagement.removePlayerBalloon(event.getPlayer().getUniqueId());
diff --git a/src/main/java/net/jeqo/bloons/listeners/multipart/MultipartBalloonPlayerLeaveListener.java b/src/main/java/net/jeqo/bloons/listeners/multipart/MultipartBalloonPlayerLeaveListener.java
index be9c50c3..d477e57d 100644
--- a/src/main/java/net/jeqo/bloons/listeners/multipart/MultipartBalloonPlayerLeaveListener.java
+++ b/src/main/java/net/jeqo/bloons/listeners/multipart/MultipartBalloonPlayerLeaveListener.java
@@ -1,7 +1,6 @@
package net.jeqo.bloons.listeners.multipart;
import net.jeqo.bloons.balloon.multipart.balloon.MultipartBalloon;
-import net.jeqo.bloons.events.balloon.multipart.MultipartBalloonUnequipEvent;
import net.jeqo.bloons.management.MultipartBalloonManagement;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@@ -16,13 +15,9 @@ public class MultipartBalloonPlayerLeaveListener implements Listener {
@EventHandler
public void onPlayerLeave(PlayerQuitEvent event) {
MultipartBalloon playerBalloon = MultipartBalloonManagement.getPlayerBalloon(event.getPlayer().getUniqueId());
- if (playerBalloon != null) {
- MultipartBalloonUnequipEvent unequipEvent = new MultipartBalloonUnequipEvent(event.getPlayer(), playerBalloon);
- unequipEvent.callEvent();
- if (unequipEvent.isCancelled()) return;
+ if (playerBalloon == null) return;
- playerBalloon.destroy();
- }
+ playerBalloon.destroy();
}
}
diff --git a/src/main/java/net/jeqo/bloons/listeners/multipart/MultipartBalloonPlayerListener.java b/src/main/java/net/jeqo/bloons/listeners/multipart/MultipartBalloonPlayerListener.java
index 5a69deff..28ef46fd 100644
--- a/src/main/java/net/jeqo/bloons/listeners/multipart/MultipartBalloonPlayerListener.java
+++ b/src/main/java/net/jeqo/bloons/listeners/multipart/MultipartBalloonPlayerListener.java
@@ -4,8 +4,6 @@
import net.jeqo.bloons.balloon.multipart.MultipartBalloonType;
import net.jeqo.bloons.balloon.multipart.balloon.MultipartBalloon;
import net.jeqo.bloons.balloon.multipart.balloon.MultipartBalloonBuilder;
-import net.jeqo.bloons.events.balloon.multipart.*;
-import net.jeqo.bloons.events.balloon.single.SingleBalloonForceUnequipEvent;
import net.jeqo.bloons.management.MultipartBalloonManagement;
import net.jeqo.bloons.management.SingleBalloonManagement;
import org.bukkit.event.EventHandler;
@@ -26,13 +24,8 @@ public class MultipartBalloonPlayerListener implements Listener {
public void onDeath(PlayerDeathEvent event) {
MultipartBalloon balloon = Bloons.getPlayerMultipartBalloons().get(Objects.requireNonNull(event.getEntity().getPlayer()).getUniqueId());
- MultipartBalloonForceUnequipEvent multipartBalloonEquipEvent = new MultipartBalloonForceUnequipEvent(event.getPlayer(), balloon);
- multipartBalloonEquipEvent.callEvent();
-
- if (multipartBalloonEquipEvent.isCancelled()) return;
-
balloon.destroy();
- MultipartBalloonManagement.removePlayerBalloon(event.getPlayer().getUniqueId());
+ MultipartBalloonManagement.removePlayerBalloon(event.getEntity().getUniqueId());
}
/**
@@ -41,23 +34,15 @@ public void onDeath(PlayerDeathEvent event) {
*/
@EventHandler
public void onRespawn(PlayerRespawnEvent event) {
- MultipartBalloon previousBalloon = Bloons.getPlayerMultipartBalloons().get(event.getPlayer().getPlayer().getUniqueId());
- MultipartBalloonType type = previousBalloon.getType();
+ MultipartBalloon previousBalloon = Bloons.getPlayerMultipartBalloons().get(event.getPlayer().getUniqueId());
if (previousBalloon == null) return;
- MultipartBalloonForceEquipEvent multipartBalloonEquipEvent = new MultipartBalloonForceEquipEvent(event.getPlayer(), previousBalloon);
- multipartBalloonEquipEvent.callEvent();
-
- if (multipartBalloonEquipEvent.isCancelled()) return;
-
- MultipartBalloonBuilder builder = new MultipartBalloonBuilder(type, event.getPlayer());
SingleBalloonManagement.removeBalloon(event.getPlayer(), Bloons.getPlayerSingleBalloons().get(event.getPlayer().getUniqueId()));
- MultipartBalloon balloon = builder.build();
- balloon.initialize();
- balloon.run();
+ previousBalloon.initialize();
+ previousBalloon.run();
- MultipartBalloonManagement.setPlayerBalloon(event.getPlayer().getUniqueId(), balloon);
+ MultipartBalloonManagement.setPlayerBalloon(event.getPlayer().getUniqueId(), previousBalloon);
}
/**
@@ -67,32 +52,13 @@ public void onRespawn(PlayerRespawnEvent event) {
@EventHandler
public void onWorldChange(PlayerChangedWorldEvent event) {
MultipartBalloon balloon = Bloons.getPlayerMultipartBalloons().get(event.getPlayer().getUniqueId());
- MultipartBalloon previousBalloon = Bloons.getPlayerMultipartBalloons().get(event.getPlayer().getPlayer().getUniqueId());
+ MultipartBalloon previousBalloon = Bloons.getPlayerMultipartBalloons().get(event.getPlayer().getUniqueId());
MultipartBalloonType type = previousBalloon.getType();
- MultipartBalloonForceUnequipEvent multipartBalloonForceUnequipEvent = new MultipartBalloonForceUnequipEvent(event.getPlayer(), balloon);
-
- MultipartBalloonStoreEvent storeEvent = new MultipartBalloonStoreEvent(event.getPlayer(), balloon);
- storeEvent.callEvent();
-
- if (storeEvent.isCancelled()) return;
-
if (balloon != null) {
- SingleBalloonForceUnequipEvent unequipEvent = new SingleBalloonForceUnequipEvent(event.getPlayer(), Bloons.getPlayerSingleBalloons().get(event.getPlayer().getUniqueId()));
- unequipEvent.callEvent();
-
- if (unequipEvent.isCancelled()) return;
- multipartBalloonForceUnequipEvent.callEvent();
-
- if (multipartBalloonForceUnequipEvent.isCancelled()) return;
-
balloon.destroy();
MultipartBalloonManagement.removePlayerBalloon(event.getPlayer().getUniqueId());
- multipartBalloonForceUnequipEvent.callEvent();
-
- if (multipartBalloonForceUnequipEvent.isCancelled()) return;
-
MultipartBalloonBuilder builder = new MultipartBalloonBuilder(type, event.getPlayer());
SingleBalloonManagement.removeBalloon(event.getPlayer(), Bloons.getPlayerSingleBalloons().get(event.getPlayer().getUniqueId()));
MultipartBalloon newBalloon = builder.build();
diff --git a/src/main/java/net/jeqo/bloons/listeners/single/SingleBalloonPlayerListener.java b/src/main/java/net/jeqo/bloons/listeners/single/SingleBalloonPlayerListener.java
index ee706d39..76ab2e64 100644
--- a/src/main/java/net/jeqo/bloons/listeners/single/SingleBalloonPlayerListener.java
+++ b/src/main/java/net/jeqo/bloons/listeners/single/SingleBalloonPlayerListener.java
@@ -2,8 +2,6 @@
import net.jeqo.bloons.Bloons;
import net.jeqo.bloons.balloon.single.SingleBalloon;
-import net.jeqo.bloons.events.balloon.single.SingleBalloonForceUnequipEvent;
-import net.jeqo.bloons.events.balloon.single.SingleBalloonStoreEvent;
import net.jeqo.bloons.health.UpdateChecker;
import net.jeqo.bloons.logger.Logger;
import net.jeqo.bloons.management.SingleBalloonManagement;
@@ -28,9 +26,6 @@ public class SingleBalloonPlayerListener implements Listener {
public void onQuit(PlayerQuitEvent event) {
SingleBalloon owner = Bloons.getPlayerSingleBalloons().get(event.getPlayer().getUniqueId());
- SingleBalloonStoreEvent storeEvent = new SingleBalloonStoreEvent(event.getPlayer(), owner);
- storeEvent.callEvent();
-
SingleBalloonManagement.storeBalloon(owner);
}
@@ -45,11 +40,6 @@ public void onJoin(PlayerJoinEvent event) {
// If they have a balloon active, remove it and add it back to reduce issues
if (balloonID != null) {
- SingleBalloonForceUnequipEvent unequipEvent = new SingleBalloonForceUnequipEvent(player, Bloons.getPlayerSingleBalloons().get(player.getUniqueId()));
- unequipEvent.callEvent();
-
- if (unequipEvent.isCancelled()) return;
-
SingleBalloonManagement.removeBalloon(event.getPlayer(), Bloons.getPlayerSingleBalloons().get(event.getPlayer().getUniqueId()));
SingleBalloon.checkBalloonRemovalOrAdd(event.getPlayer(), balloonID);
@@ -59,8 +49,12 @@ public void onJoin(PlayerJoinEvent event) {
if (Bloons.getInstance().getConfig().getBoolean("check-for-updates")) {
// Check for an update if the player is an operator on the server
new UpdateChecker(Bloons.getInstance(), 106243).getVersion(version -> {
- if (!Bloons.getInstance().getDescription().getVersion().equals(version)) {
- Logger.logUpdateNotificationPlayer(player);
+ String currentVersion = Bloons.getInstance().getDescription().getVersion();
+
+ if (Bloons.getInstance().isVersionLower(currentVersion, version)) {
+ Logger.logUpdateNotificationPlayer(event.getPlayer());
+ } else if (Bloons.getInstance().isVersionHigher(currentVersion, version)) {
+ Logger.logUnreleasedVersionNotificationPlayer(event.getPlayer());
}
});
}
@@ -75,9 +69,6 @@ public void onJoin(PlayerJoinEvent event) {
public void onDeath(PlayerDeathEvent event) {
SingleBalloon balloonOwner = Bloons.getPlayerSingleBalloons().get(Objects.requireNonNull(event.getEntity().getPlayer()).getUniqueId());
- SingleBalloonForceUnequipEvent unequipEvent = new SingleBalloonForceUnequipEvent(event.getEntity().getPlayer(), balloonOwner);
- unequipEvent.callEvent();
-
SingleBalloonManagement.removeBalloon(event.getEntity().getPlayer(), balloonOwner);
}
@@ -103,19 +94,9 @@ public void onWorldChange(PlayerChangedWorldEvent event) {
SingleBalloon balloonOwner = Bloons.getPlayerSingleBalloons().get(event.getPlayer().getUniqueId());
String balloonID = Bloons.getPlayerSingleBalloonID().get(event.getPlayer().getUniqueId());
- SingleBalloonStoreEvent storeEvent = new SingleBalloonStoreEvent(event.getPlayer(), balloonOwner);
- storeEvent.callEvent();
-
- if (storeEvent.isCancelled()) return;
-
SingleBalloonManagement.storeBalloon(balloonOwner);
if (balloonID != null) {
- SingleBalloonForceUnequipEvent unequipEvent = new SingleBalloonForceUnequipEvent(event.getPlayer(), Bloons.getPlayerSingleBalloons().get(event.getPlayer().getUniqueId()));
- unequipEvent.callEvent();
-
- if (unequipEvent.isCancelled()) return;
-
SingleBalloonManagement.removeBalloon(event.getPlayer(), Bloons.getPlayerSingleBalloons().get(event.getPlayer().getUniqueId()));
SingleBalloon.checkBalloonRemovalOrAdd(event.getPlayer(), balloonID);
diff --git a/src/main/java/net/jeqo/bloons/logger/Logger.java b/src/main/java/net/jeqo/bloons/logger/Logger.java
index 3138fcd2..a12d3812 100644
--- a/src/main/java/net/jeqo/bloons/logger/Logger.java
+++ b/src/main/java/net/jeqo/bloons/logger/Logger.java
@@ -5,7 +5,6 @@
import net.jeqo.bloons.configuration.PluginConfiguration;
import net.jeqo.bloons.message.Languages;
import net.jeqo.bloons.message.MessageTranslations;
-import net.kyori.adventure.text.Component;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
@@ -28,8 +27,8 @@ public static void logWithSTDOUT(String message) {
* @param message The message to log, type java.lang.String
*/
public static void logToPlayer(LoggingLevel level, Player player, String message) {
- Component component = Component.text("[" + level.getName() + "] " + message).color(level.getColor());
- player.sendMessage(component);
+ String formattedMessage = String.format("%s[%s] %s", level.getColor(), level.getName(), message);
+ player.sendMessage(formattedMessage);
}
/**
@@ -38,9 +37,7 @@ public static void logToPlayer(LoggingLevel level, Player player, String message
* @param message The message to log, type java.lang.String
*/
public static void logToPlayer(Player player, String message) {
- MessageTranslations messageTranslations = new MessageTranslations(Bloons.getInstance());
- Component component = messageTranslations.getSerializedString(Languages.getMessage("prefix") + message);
- player.sendMessage(component);
+ player.sendMessage(message);
}
/**
@@ -49,8 +46,8 @@ public static void logToPlayer(Player player, String message) {
* @param message The message to log, type java.lang.String
*/
public static void log(LoggingLevel level, String message) {
- Component component = Component.text("[" + level.getName() + "] " + message).color(level.getColor());
- Bukkit.getServer().getConsoleSender().sendMessage(component);
+ String loggedMessage = String.format("%s[%s] %s", level.getColor(), level.getName(), message);
+ Bukkit.getServer().getConsoleSender().sendMessage(loggedMessage);
}
/**
@@ -119,13 +116,30 @@ public static void logUpdateNotificationConsole() {
logInfo("You can find the update at: https://jeqo.net/bloons");
}
+ /**
+ * Logs an unreleased plugin version notification to the Bukkit console
+ */
+ public static void logUnreleasedVersionNotification() {
+ logInfo("The version for the " + PluginConfiguration.getName() + " plugin is higher than latest version");
+ logInfo("You are currently running an unreleased version of the plugin that is NOT stable");
+ }
+
/**
* Logs an update notification to a player
* @param player The player to log the update notification to, type org.bukkit.entity.Player
*/
public static void logUpdateNotificationPlayer(Player player) {
- logToPlayer(player, "A new update is available for " + PluginConfiguration.getName() + " plugin");
- logToPlayer(player, "You can find the update at: https://jeqo.net/bloons");
+ logToPlayer(LoggingLevel.INFO, player, "A new update is available for " + PluginConfiguration.getName() + " plugin");
+ logToPlayer(LoggingLevel.INFO, player, "You can find the update at: https://jeqo.net/bloons");
+ }
+
+ /**
+ * Logs an unreleased version notification to a player
+ * @param player The player to log the unreleased version notification to, type org.bukkit.entity.Player
+ */
+ public static void logUnreleasedVersionNotificationPlayer(Player player) {
+ logToPlayer(LoggingLevel.INFO, player, "The version for the " + PluginConfiguration.getName() + " plugin is higher than latest version");
+ logToPlayer(LoggingLevel.INFO, player, "You are currently running an unreleased version of the plugin that is NOT stable");
}
/**
diff --git a/src/main/java/net/jeqo/bloons/logger/LoggingLevel.java b/src/main/java/net/jeqo/bloons/logger/LoggingLevel.java
index fc8eff5e..3bc9c8e2 100644
--- a/src/main/java/net/jeqo/bloons/logger/LoggingLevel.java
+++ b/src/main/java/net/jeqo/bloons/logger/LoggingLevel.java
@@ -1,7 +1,7 @@
package net.jeqo.bloons.logger;
import lombok.Getter;
-import net.kyori.adventure.text.format.NamedTextColor;
+import org.bukkit.ChatColor;
/**
* The different levels of logging that can be used in the plugin
@@ -12,29 +12,29 @@ public enum LoggingLevel {
/**
* Used in the case there is a soft error
*/
- WARNING("WARNING", NamedTextColor.RED),
+ WARNING("WARNING", ChatColor.RED),
/**
* Used in the case there is an informational message
*/
- INFO("INFO", NamedTextColor.YELLOW),
+ INFO("INFO", ChatColor.YELLOW),
/**
* Used in the case there is a hard error
*/
- ERROR("ERROR", NamedTextColor.DARK_RED),
+ ERROR("ERROR", ChatColor.DARK_RED),
/**
* Used for debugging purposes only
*/
- DEBUG("DEBUG", NamedTextColor.WHITE);
+ DEBUG("DEBUG", ChatColor.WHITE);
private final String name;
- private final NamedTextColor color;
+ private final ChatColor color;
/**
* Create a new logging level
* @param name The name of the logging level to use in the console, type java.lang.String
* @param color The Minecraft chat color of the logging level, type net.kyori.adventure.text.format.NamedTextColor
*/
- LoggingLevel(String name, NamedTextColor color) {
+ LoggingLevel(String name, ChatColor color) {
this.name = name;
this.color = color;
}
diff --git a/src/main/java/net/jeqo/bloons/management/SingleBalloonManagement.java b/src/main/java/net/jeqo/bloons/management/SingleBalloonManagement.java
index 48442426..1d617067 100644
--- a/src/main/java/net/jeqo/bloons/management/SingleBalloonManagement.java
+++ b/src/main/java/net/jeqo/bloons/management/SingleBalloonManagement.java
@@ -2,8 +2,6 @@
import net.jeqo.bloons.Bloons;
import net.jeqo.bloons.balloon.single.SingleBalloon;
-import net.jeqo.bloons.events.balloon.single.SingleBalloonStoreEvent;
-import net.jeqo.bloons.events.balloon.single.SingleBalloonUnequipEvent;
import org.bukkit.entity.Player;
/**
@@ -19,11 +17,6 @@ public class SingleBalloonManagement {
public static void removeBalloon(Player player, SingleBalloon owner) {
if (owner == null) return;
- SingleBalloonUnequipEvent event = new SingleBalloonUnequipEvent(player, owner);
- event.callEvent();
-
- if (event.isCancelled()) return;
-
owner.spawnRemoveParticle();
owner.cancel();
Bloons.getPlayerSingleBalloons().remove(player.getUniqueId());
@@ -38,11 +31,6 @@ public static void removeBalloon(Player player, SingleBalloon owner) {
public static void quickRemoveBalloon(Player player, SingleBalloon owner) {
if (owner == null) return;
- SingleBalloonUnequipEvent event = new SingleBalloonUnequipEvent(player, owner);
- event.callEvent();
-
- if (event.isCancelled()) return;
-
owner.cancel();
Bloons.getPlayerSingleBalloons().remove(player.getUniqueId());
Bloons.getPlayerSingleBalloonID().remove(player.getUniqueId());
@@ -55,11 +43,6 @@ public static void quickRemoveBalloon(Player player, SingleBalloon owner) {
public static void storeBalloon(SingleBalloon balloon) {
if (balloon == null) return;
- SingleBalloonStoreEvent event = new SingleBalloonStoreEvent(balloon.getPlayer(), balloon);
- event.callEvent();
-
- if (event.isCancelled()) return;
-
balloon.cancel();
}
}
diff --git a/src/main/java/net/jeqo/bloons/message/Languages.java b/src/main/java/net/jeqo/bloons/message/Languages.java
index 7bb4ab41..ee9066bb 100644
--- a/src/main/java/net/jeqo/bloons/message/Languages.java
+++ b/src/main/java/net/jeqo/bloons/message/Languages.java
@@ -4,6 +4,7 @@
import net.jeqo.bloons.Bloons;
import net.jeqo.bloons.configuration.ConfigConfiguration;
import net.jeqo.bloons.logger.Logger;
+import org.bukkit.ChatColor;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
@@ -33,14 +34,7 @@ public class Languages {
static {
// Initialize available languages
- String[] languages = {
- "af_ZA", "ar_SA", "az_AZ", "be_BY", "bg_BG", "bn_IN", "bs_BA", "cs_CZ", "cy_GB", "da_DK", "de_DE", "el_GR",
- "en_US", "es_ES", "et_EE", "eu_ES", "fa_IR", "fo_FO", "fi_FI", "fr_FR", "gl_ES", "gu_IN", "he_IL", "hi_IN",
- "hr_HR", "hu_HU", "hy_AM", "id_ID", "is_IS", "it_IT", "ja_JP", "ka_GE", "kk_KZ", "kn_IN", "ko_KR", "kok_IN",
- "lt_LT", "lv_LV", "mk_MK", "ml_IN", "mn_MN", "mr_IN", "ms_MY", "mt_MT", "nb_NO", "nl_NL", "nn_NO", "pa_IN",
- "pl_PL", "pt_BR", "ro_RO", "ru_RU", "se_NO", "sk_SK", "sq_AL", "sr_BA", "sv_SE", "sw_KE", "syr_SY", "ta_IN",
- "te_IN", "th_TH", "tn_ZA", "tr_TR", "uk_UA", "uz_UZ", "vi_VN", "xh_ZA", "zh_CN", "zh_TW"
- };
+ String[] languages = { "en_US", "es_ES" };
// Add all languages to the set
Collections.addAll(getAvailableLanguages(), languages);
}
@@ -96,10 +90,12 @@ public static String getMessage(String message) {
// Load the configuration file
FileConfiguration config = YamlConfiguration.loadConfiguration(file);
- return config.getString("messages." + message);
+ return ChatColor.translateAlternateColorCodes('&', Objects.requireNonNull(config.getString("messages." + message)));
}
}
- return "";
+ // Fallback onto en_US.yml if translation is missing
+ FileConfiguration englishConfig = YamlConfiguration.loadConfiguration(new File(folder + File.separator + "en_US.yml"));
+ return ChatColor.translateAlternateColorCodes('&', Objects.requireNonNull(englishConfig.getString("messages." + message)));
}
}
\ No newline at end of file
diff --git a/src/main/java/net/jeqo/bloons/message/MessageTranslations.java b/src/main/java/net/jeqo/bloons/message/MessageTranslations.java
index f798776f..34ea56a8 100644
--- a/src/main/java/net/jeqo/bloons/message/MessageTranslations.java
+++ b/src/main/java/net/jeqo/bloons/message/MessageTranslations.java
@@ -1,45 +1,26 @@
package net.jeqo.bloons.message;
-import net.kyori.adventure.text.Component;
-import net.kyori.adventure.text.minimessage.MiniMessage;
+import org.bukkit.ChatColor;
import org.bukkit.plugin.java.JavaPlugin;
+import java.util.Objects;
+
/**
* A utility class intended to get messages from the config.yml file
* @param instance The instance of the plugin, type org.bukkit.plugin.java.JavaPlugin
*/
public record MessageTranslations(JavaPlugin instance) {
- /**
- * Converts a message containing MiniMessage serialized strings to a Component that can be used to
- * send formatted messages with gradients, rainbows, etc.
- * @param messagePrefix The prefix of the message, type java.lang.String
- * @param messageSuffix The suffix of the message, type java.lang.String
- * @return The formatted message as a Component, type net.kyori.adventure.text.Component
- */
- public Component getSerializedString(String messagePrefix, String messageSuffix) {
- MiniMessage mm = MiniMessage.miniMessage();
- return mm.deserialize(messagePrefix + messageSuffix);
- }
-
- /**
- * Converts a message containing MiniMessage serialized strings to a Component that can be used to
- * send formatted messages with gradients, rainbows, etc.
- * @param message The message to convert to a deserialized component, type java.lang.String
- * @return The formatted message as a Component, type net.kyori.adventure.text.Component
- */
- public Component getSerializedString(String message) {
- MiniMessage mm = MiniMessage.miniMessage();
- return mm.deserialize(message);
- }
-
/**
* Get a string from the config.yml file
* @param path The path to the string, type java.lang.String
* @return The value at the specified path, type java.lang.String
*/
public String getString(String path) {
- return this.instance.getConfig().getString(path);
+ if (this.instance.getConfig().getString(path) != null) {
+ return ChatColor.translateAlternateColorCodes('&', Objects.requireNonNull(this.instance.getConfig().getString(path)));
+ }
+ return "";
}
/**
diff --git a/src/main/resources/balloons/color_pack_example.yml b/src/main/resources/balloons/color_pack_example.yml
index 8b4e968e..78f31733 100644
--- a/src/main/resources/balloons/color_pack_example.yml
+++ b/src/main/resources/balloons/color_pack_example.yml
@@ -7,7 +7,7 @@ blue:
permission: balloon.blue
material: FLINT
custom-model-data: 4
- name: 'Blue Balloon'
+ name: '&9Blue &fBalloon'
lore:
- '&8Bloons Default Balloon'
- ''
@@ -18,7 +18,7 @@ green:
permission: balloon.green
material: FLINT
custom-model-data: 5
- name: 'Green Balloon'
+ name: '&aGreen &fBalloon'
lore:
- '&8Bloons Default Balloon'
- ''
@@ -29,7 +29,7 @@ pink:
permission: balloon.pink
material: FLINT
custom-model-data: 6
- name: 'Pink Balloon'
+ name: '&dPink &fBalloon'
lore:
- '&8Bloons Default Balloon'
- ''
@@ -39,8 +39,8 @@ yellow:
permission: balloon.yellow
material: FLINT
custom-model-data: 7
- name: 'Yellow Balloon'
+ name: '&eYellow &fBalloon'
lore:
- '&8Bloons Default Balloon'
- ''
- - '&eᴄʟɪᴄᴋ ᴛᴏ ᴇǫᴜɪᴘ'
\ No newline at end of file
+ - '&eᴄʟɪᴄᴋ ᴛᴏ ᴇǫᴜɪᴘ'
diff --git a/src/main/resources/balloons/dyeable_example.yml b/src/main/resources/balloons/dyeable_example.yml
index 8e84004b..434aced3 100644
--- a/src/main/resources/balloons/dyeable_example.yml
+++ b/src/main/resources/balloons/dyeable_example.yml
@@ -10,7 +10,7 @@ dyeable_example:
material: LEATHER_HORSE_ARMOR
color: '#ffffff'
custom-model-data: 1
- name: 'Dyeable Balloon'
+ name: '&fDyeable Balloon'
lore:
- '&8Bloons Example Balloon'
- ''
@@ -22,7 +22,7 @@ single_meg_example:
icon:
material: FLINT
custom-model-data: 7
- name: 'Single MEG Balloon'
+ name: '&fSingle MEG Balloon'
lore:
- '&8Bloons Default Balloon'
- ''
diff --git a/src/main/resources/balloons/meg_example.yml b/src/main/resources/balloons/meg_example.yml
index 4bef83d5..dc896488 100644
--- a/src/main/resources/balloons/meg_example.yml
+++ b/src/main/resources/balloons/meg_example.yml
@@ -7,7 +7,7 @@ meg_example:
icon:
material: FLINT
custom-model-data: 7
- name: 'MEG Balloon'
+ name: '&fMEG Balloon'
lore:
- '&8Bloons Default Balloon'
- ''
diff --git a/src/main/resources/balloons/multipart_example.yml b/src/main/resources/balloons/multipart_example.yml
index 955f5bb1..46b50455 100644
--- a/src/main/resources/balloons/multipart_example.yml
+++ b/src/main/resources/balloons/multipart_example.yml
@@ -4,7 +4,7 @@ multipart_example:
type: multipart # The type of balloon, this must be multipart for multipart balloons
id: multipart_example # The id of the balloon, this must be unique
permission: balloon.multipart_example
- name: 'Multipart Balloon'
+ name: '&fMultipart Balloon'
lore:
- '&8Bloons Default Balloon'
- ''
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index f2b04852..3cd1531f 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -1,6 +1,6 @@
# --------------------------------------------------#
#
-# Bloons 2.0.0
+# Bloons 2.1.1
# Made by Jeqo
#
# Wiki: https://jeqo.net/wiki
@@ -36,18 +36,18 @@ buttons:
previous-page:
material: FLINT
custom-model-data: 1
- name: '← ᴘʀᴇᴠɪᴏᴜs ᴘᴀɢᴇ'
+ name: '&7← ᴘʀᴇᴠɪᴏᴜs ᴘᴀɢᴇ'
slots:
- 48
unequip:
material: FLINT
custom-model-data: 2
- name: 'ᴜɴᴇǫᴜɪᴘ ʙᴀʟʟᴏᴏɴ'
+ name: '&7ᴜɴᴇǫᴜɪᴘ ʙᴀʟʟᴏᴏɴ'
slots:
- 49
next-page:
material: FLINT
custom-model-data: 3
- name: 'ɴᴇxᴛ ᴘᴀɢᴇ →'
+ name: '&7ɴᴇxᴛ ᴘᴀɢᴇ →'
slots:
- 50
\ No newline at end of file
diff --git a/src/main/resources/languages/af_ZA.yml b/src/main/resources/languages/af_ZA.yml
deleted file mode 100644
index 2c89a871..00000000
--- a/src/main/resources/languages/af_ZA.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>Toegang geweier.'
- player-not-found: '<#fc1c1c>Speler nie gevind nie.'
- config-reloaded: 'Konfigurasie herlaai.'
- command-disabled: '<#fc1c1c>Hierdie opdrag is tans gedeaktiveer!'
-
- equipped: '%s toegerus!'
- unequipped: 'Jou ballon is veilig gestoor.'
- balloon-not-found: '<#fc1c1c>Ballon nie gevind nie.'
- not-equipped: '<#fc1c1c>Jy het tans nie 'n ballon toegerus nie.'
-
- material-not-dyeable: 'Materiaal %s is nie 'n kleurbare materiaal nie.'
- invalid-rgb-values: 'RGB-waardes moet tussen 0 en 255 wees om geldig te wees.'
- balloon-not-set: 'Die ballon %s is nie in die konfigurasie gestel nie!'
- material-not-set: 'Die materiaal van die ballon %s is nie in die konfigurasie gestel nie!'
- material-not-valid: "Die materiaal van die ballon %s is nie 'n geldige materiaal nie! Materiaal: %s"
- material-is-not-valid: 'Materiaal %s is nie 'n geldige materiaal nie!'
- invalid-item-meta: 'ItemMeta is nie geldig vir materiaal: %s nie'
-
- no-balloons-registered: 'Geen ballonne gevind nie! Kan nie 'n spyskaart met geen ballonne skep nie.'
-
- configuration-folder-not-found: 'Konfigurasie-lêergids nie gevind nie: %s'
- no-configuration-files-found: 'Geen konfigurasie-lêers gevind in die gids nie: %s'
- configuration-section-not-found: 'Konfigurasie-afdeling nie gevind vir lêer nie: %s'
- balloon-type-not-found: 'Fout met verwerking van ballontipe vir afdeling: %s in lêer: %s. Ballontipe bestaan nie of is nul.'
- balloon-process-error: 'Fout met verwerking van ballon vir afdeling: %s in lêer: %s. Fout: %s'
-
- menu-slot-out-of-bounds: '%s spyskaartbladsy knoppie gleuf(e) buite perke!'
-
- invalid-hex-code: 'Ongeldige heksadesimale kode: %s'
diff --git a/src/main/resources/languages/ar_SA.yml b/src/main/resources/languages/ar_SA.yml
deleted file mode 100644
index c1f6033c..00000000
--- a/src/main/resources/languages/ar_SA.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>الوصول ممنوع.'
- player-not-found: '<#fc1c1c>اللاعب غير موجود.'
- config-reloaded: 'تم إعادة تحميل الإعدادات.'
- command-disabled: '<#fc1c1c>هذا الأمر معطل حالياً!'
-
- equipped: '%s تم التجهيز!'
- unequipped: 'تم تخزين بالونك بأمان.'
- balloon-not-found: '<#fc1c1c>البالون غير موجود.'
- not-equipped: '<#fc1c1c>ليس لديك بالون مجهز حالياً.'
-
- material-not-dyeable: 'المادة %s غير قابلة للصبغ.'
- invalid-rgb-values: 'قيم RGB يجب أن تكون بين 0 و 255 لتكون صالحة.'
- balloon-not-set: 'البالون %s غير محدد في الإعدادات!'
- material-not-set: 'مادة البالون %s غير محددة في الإعدادات!'
- material-not-valid: 'مادة البالون %s غير صالحة! المادة: %s'
- material-is-not-valid: 'المادة %s غير صالحة!'
- invalid-item-meta: 'ItemMeta غير صالح للمادة: %s'
-
- no-balloons-registered: 'لا توجد بالونات مسجلة! لا يمكن إنشاء قائمة بدون بالونات.'
-
- configuration-folder-not-found: 'مجلد الإعدادات غير موجود: %s'
- no-configuration-files-found: 'لا توجد ملفات إعدادات في المجلد: %s'
- configuration-section-not-found: 'قسم الإعدادات غير موجود للملف: %s'
- balloon-type-not-found: 'خطأ في معالجة نوع البالون للقسم: %s في الملف: %s. نوع البالون غير موجود أو فارغ.'
- balloon-process-error: 'خطأ في معالجة البالون للقسم: %s في الملف: %s. الخطأ: %s'
-
- menu-slot-out-of-bounds: 'فتحات زر صفحة القائمة %s خارج الحدود!'
-
- invalid-hex-code: 'كود سداسي غير صالح: %s'
diff --git a/src/main/resources/languages/az_AZ.yml b/src/main/resources/languages/az_AZ.yml
deleted file mode 100644
index e0234eb9..00000000
--- a/src/main/resources/languages/az_AZ.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>Giriş icazəsi yoxdur.'
- player-not-found: '<#fc1c1c>Oyuncu tapılmadı.'
- config-reloaded: 'Konfiq yenidən yükləndi.'
- command-disabled: '<#fc1c1c>Bu komanda hazırda deaktiv edilmişdir!'
-
- equipped: '%s təchiz edildi!'
- unequipped: 'Balonunuz təhlükəsiz şəkildə saxlanıldı.'
- balloon-not-found: '<#fc1c1c>Balon tapılmadı.'
- not-equipped: '<#fc1c1c>Hazırda təchiz edilmiş bir balonunuz yoxdur.'
-
- material-not-dyeable: 'Material %s boyanabilir material deyil.'
- invalid-rgb-values: 'RGB dəyərləri etibarlı olmaq üçün 0 ilə 255 arasında olmalıdır.'
- balloon-not-set: 'Konfiqurasiyada %s balon təyin edilməyib!'
- material-not-set: '%s balonun materialı konfiqurasiyada təyin edilməyib!'
- material-not-valid: '%s balonun materialı etibarlı material deyil! Material: %s'
- material-is-not-valid: 'Material %s etibarlı bir material deyil!'
- invalid-item-meta: 'Material üçün əşya meta etiketi etibarlı deyil: %s'
-
- no-balloons-registered: 'Heç bir balon qeydə alınmayıb! Balonsuz bir menyü yaradıla bilməz.'
-
- configuration-folder-not-found: 'Konfiqurasiya qovluğu tapılmadı: %s'
- no-configuration-files-found: 'Qovluqda konfiqurasiya faylları tapılmadı: %s'
- configuration-section-not-found: 'Faylı üçün konfiqurasiya bölməsi tapılmadı: %s'
- balloon-type-not-found: 'Faylda %s bölməsi üçün balon növü işlənməsində xəta baş verdi: %s. Balon növü mövcud deyil və ya boşdur.'
- balloon-process-error: 'Faylda %s bölməsi üçün balon prosesi xətası baş verdi: %s. Xəta: %s'
-
- menu-slot-out-of-bounds: '%s menyü səhifə düymə yeri çapdan kənar çıxır!'
-
- invalid-hex-code: 'Etibarsız hex kodu: %s'
diff --git a/src/main/resources/languages/be_BY.yml b/src/main/resources/languages/be_BY.yml
deleted file mode 100644
index dc164070..00000000
--- a/src/main/resources/languages/be_BY.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>Доступ забаронены.'
- player-not-found: '<#fc1c1c>Гульца не знойдзены.'
- config-reloaded: 'Канфігурацыя перазагружана.'
- command-disabled: '<#fc1c1c>Гэтая каманда зараз адключана!'
-
- equipped: '%s запасены!'
- unequipped: 'Ваш шарік захаваны бяспечна.'
- balloon-not-found: '<#fc1c1c>Шар не знойдзены.'
- not-equipped: '<#fc1c1c>У вас зараз няма запасенага шара.'
-
- material-not-dyeable: 'Матэрыял %s не можа быць пазначаны колерамі.'
- invalid-rgb-values: 'Значэння RGB павінны быць у дыяпазоне ад 0 да 255, каб быць сапраўднымі.'
- balloon-not-set: 'Шар %s не ўстаноўлены ў канфігурацыі!'
- material-not-set: 'Матэрыял шара %s не ўстаноўлены ў канфігурацыі!'
- material-not-valid: "Матэрыял шара %s не з'яўляецца сапраўдным матэрыялам! Матэрыял: %s"
- material-is-not-valid: 'Матэрыял %s не з'яўляецца сапраўдным матэрыялам!'
- invalid-item-meta: 'Няправільныя метаданыя элемента для матэрыялу: %s'
-
- no-balloons-registered: 'Няма зарэгістраваных шароў! Немагчыма стварыць меню без шараў.'
-
- configuration-folder-not-found: 'Катэгорыя канфігурацыі не знойдзена: %s'
- no-configuration-files-found: 'Няма файлаў канфігурацыі ў тэчцы: %s'
- configuration-section-not-found: 'Секцыя канфігурацыі не знойдзена для файла: %s'
- balloon-type-not-found: 'Памылка пры апрацоўцы тыпу шара для раздзелу: %s у файле: %s. Тып шара не існуе або ёсць пустота.'
- balloon-process-error: 'Памылка пры апрацоўцы шара для раздзелу: %s у файле: %s. Памылка: %s'
-
- menu-slot-out-of-bounds: '%s кнопка(-і) старонкі меню выходзяць за межы!'
-
- invalid-hex-code: 'Няправільны шэсцнаццатковы код: %s'
diff --git a/src/main/resources/languages/bg_BG.yml b/src/main/resources/languages/bg_BG.yml
deleted file mode 100644
index e77ecc2e..00000000
--- a/src/main/resources/languages/bg_BG.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>Нямате разрешение.'
- player-not-found: '<#fc1c1c>Играчът не е намерен.'
- config-reloaded: 'Конфигурацията е презаредена.'
- command-disabled: '<#fc1c1c>Тази команда е в момента деактивирана!'
-
- equipped: '%s екипиран!'
- unequipped: 'Вашият балон е сигурно съхранен.'
- balloon-not-found: '<#fc1c1c>Балонът не е намерен.'
- not-equipped: '<#fc1c1c>В момента нямате екипиран балон.'
-
- material-not-dyeable: 'Материалът %s не може да бъде оцветен.'
- invalid-rgb-values: 'RGB стойностите трябва да са между 0 и 255, за да бъдат валидни.'
- balloon-not-set: 'Балонът %s не е настроен в конфигурацията!'
- material-not-set: 'Материалът на балона %s не е настроен в конфигурацията!'
- material-not-valid: 'Материалът на балона %s не е валиден! Материал: %s'
- material-is-not-valid: 'Материалът %s не е валиден!'
- invalid-item-meta: 'ItemMeta не е валиден за материала: %s'
-
- no-balloons-registered: 'Няма регистрирани балони! Не може да се създаде меню без балони.'
-
- configuration-folder-not-found: 'Папката с конфигурация не е намерена: %s'
- no-configuration-files-found: 'Няма намерени конфигурационни файлове в папката: %s'
- configuration-section-not-found: 'Разделът на конфигурацията не е намерен за файла: %s'
- balloon-type-not-found: 'Грешка при обработката на типа балон за секцията: %s във файла: %s. Типът на балона не съществува или е празен.'
- balloon-process-error: 'Грешка при обработката на балона за секцията: %s във файла: %s. Грешка: %s'
-
- menu-slot-out-of-bounds: '%s бутон на страницата на менюто извън границите!'
-
- invalid-hex-code: 'Невалиден хекс код: %s'
diff --git a/src/main/resources/languages/bn_IN.yml b/src/main/resources/languages/bn_IN.yml
deleted file mode 100644
index dc17dd96..00000000
--- a/src/main/resources/languages/bn_IN.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>অনুমতি অস্বীকৃত।'
- player-not-found: '<#fc1c1c>খেলোয়াড় পাওয়া যায়নি।'
- config-reloaded: 'কনফিগারেশন পুনরায় লোড হয়েছে।'
- command-disabled: '<#fc1c1c>এই কমান্ড বর্তমানে নিষ্ক্রিয় করা হয়েছে!'
-
- equipped: '%s পরিপ্রেক্ষিত!'
- unequipped: 'আপনার বেলুন নিরাপদে সংরক্ষিত হয়েছে।'
- balloon-not-found: '<#fc1c1c>বেলুন পাওয়া যায়নি।'
- not-equipped: '<#fc1c1c>আপনি বর্তমানে কোনও বেলুন পরিপ্রেক্ষিত করা নেই।'
-
- material-not-dyeable: '%s উপাদানটি রঙ করা যাবে না।'
- invalid-rgb-values: 'আরজিবি মান 0 থেকে 255 এর মধ্যে হতে হবে একটি বৈধ মানের জন্য।'
- balloon-not-set: '%s কনফিগারেশনে বেলুন সেট করা হয়নি!'
- material-not-set: '%s বেলুনের উপাদানটি কনফিগারেশনে সেট করা হয়নি!'
- material-not-valid: '%s বেলুনের উপাদানটি বৈধ নয়! উপাদান: %s'
- material-is-not-valid: '%s উপাদান বৈধ নয়!'
- invalid-item-meta: 'উপাদান মেটা মূল্য বৈধ নয় মেটেরিয়ালের জন্য: %s'
-
- no-balloons-registered: 'কোনও বেলুন নিবন্ধিত নেই! কোনও বেলুন নেই মেনু তৈরি করা যায় না।'
-
- configuration-folder-not-found: 'কনফিগারেশন ফোল্ডার খুঁজে পাওয়া যায়নি: %s'
- no-configuration-files-found: 'ফোল্ডারে কোনও কনফিগারেশন ফাইল পাওয়া যায়নি: %s'
- configuration-section-not-found: 'ফাইলের জন্য কনফিগারেশন বিভাগ পাওয়া যায়নি: %s'
- balloon-type-not-found: 'বিভাগের জন্য বেলুনের প্রকার প্রসেসিং ত্রুটি: %s ফাইলে: %s। বেলুনের ধরন অস্তিত্ব নেই বা খালি।'
- balloon-process-error: 'বিভাগের জন্য বেলুন প্রসেসিং ত্রুটি: %s ফাইলে: %s। ত্রুটি: %s'
-
- menu-slot-out-of-bounds: '%s মেনু পৃষ্ঠা বোতাম স্লটগুলি সীমার বাইরে!'
-
- invalid-hex-code: 'অবৈধ হেক্স কোড: %s'
diff --git a/src/main/resources/languages/bs_BA.yml b/src/main/resources/languages/bs_BA.yml
deleted file mode 100644
index 53591ee4..00000000
--- a/src/main/resources/languages/bs_BA.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>Nema dozvole.'
- player-not-found: '<#fc1c1c>Igrač nije pronađen.'
- config-reloaded: 'Konfiguracija je ponovo učitana.'
- command-disabled: '<#fc1c1c>Ova komanda je trenutno onemogućena!'
-
- equipped: '%s opremljen!'
- unequipped: 'Vaš balon je sigurno spremljen.'
- balloon-not-found: '<#fc1c1c>Balon nije pronađen.'
- not-equipped: '<#fc1c1c>Trenutno nemate opremljen balon.'
-
- material-not-dyeable: 'Materijal %s nije moguće obojiti.'
- invalid-rgb-values: 'RGB vrijednosti moraju biti između 0 i 255 da bi bile validne.'
- balloon-not-set: 'Balon %s nije postavljen u konfiguraciji!'
- material-not-set: 'Materijal balona %s nije postavljen u konfiguraciji!'
- material-not-valid: 'Materijal balona %s nije validan materijal! Materijal: %s'
- material-is-not-valid: 'Materijal %s nije validan materijal!'
- invalid-item-meta: 'ItemMeta nije validan za materijal: %s'
-
- no-balloons-registered: 'Nema registrovanih balona! Ne može se kreirati meni bez balona.'
-
- configuration-folder-not-found: 'Mapa konfiguracije nije pronađena: %s'
- no-configuration-files-found: 'Nema pronađenih konfiguracionih fajlova u mapi: %s'
- configuration-section-not-found: 'Sekcija konfiguracije nije pronađena za fajl: %s'
- balloon-type-not-found: 'Greška prilikom procesiranja tipa balona za sekciju: %s u fajlu: %s. Tip balona ne postoji ili je prazan.'
- balloon-process-error: 'Greška prilikom procesiranja balona za sekciju: %s u fajlu: %s. Greška: %s'
-
- menu-slot-out-of-bounds: '%s dugme stranice menija izvan granica!'
-
- invalid-hex-code: 'Nevažeći heks kod: %s'
diff --git a/src/main/resources/languages/cs_CZ.yml b/src/main/resources/languages/cs_CZ.yml
deleted file mode 100644
index 111d6bc5..00000000
--- a/src/main/resources/languages/cs_CZ.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>Nemáte oprávnění.'
- player-not-found: '<#fc1c1c>Hráč nebyl nalezen.'
- config-reloaded: 'Konfigurace byla znovu načtena.'
- command-disabled: '<#fc1c1c>Tento příkaz je momentálně zakázán!'
-
- equipped: '%s vybaven!'
- unequipped: 'Váš balón byl uložen bezpečně.'
- balloon-not-found: '<#fc1c1c>Balon nebyl nalezen.'
- not-equipped: '<#fc1c1c>Nemáte momentálně vybaven žádný balón.'
-
- material-not-dyeable: 'Materiál %s nelze obarvit.'
- invalid-rgb-values: 'RGB hodnoty musí být mezi 0 a 255, aby byly platné.'
- balloon-not-set: 'Balon %s není nastaven v konfiguraci!'
- material-not-set: 'Materiál balonu %s není nastaven v konfiguraci!'
- material-not-valid: 'Materiál balonu %s není platný materiál! Materiál: %s'
- material-is-not-valid: 'Materiál %s není platný materiál!'
- invalid-item-meta: 'ItemMeta není platný pro materiál: %s'
-
- no-balloons-registered: 'Nejsou registrovány žádné balóny! Nelze vytvořit menu bez balónů.'
-
- configuration-folder-not-found: 'Složka s konfigurací nebyla nalezena: %s'
- no-configuration-files-found: 'V této složce nebyly nalezeny žádné konfigurační soubory: %s'
- configuration-section-not-found: 'Sekce konfigurace nebyla nalezena pro soubor: %s'
- balloon-type-not-found: 'Chyba při zpracování typu balónu pro sekci: %s v souboru: %s. Typ balónu neexistuje nebo je prázdný.'
- balloon-process-error: 'Chyba při zpracování balónu pro sekci: %s v souboru: %s. Chyba: %s'
-
- menu-slot-out-of-bounds: '%s tlačítek na stránce menu přesahuje rozsah!'
-
- invalid-hex-code: 'Neplatný hexadecimální kód: %s'
diff --git a/src/main/resources/languages/cy_GB.yml b/src/main/resources/languages/cy_GB.yml
deleted file mode 100644
index 5fd49f80..00000000
--- a/src/main/resources/languages/cy_GB.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>Mynediad wedi'i wrthod.'
- player-not-found: '<#fc1c1c>Nid yw'r chwaraewr wedi'i ddod o hyd.'
- config-reloaded: 'Wedi ail-lwytho'r cyfluniad.'
- command-disabled: '<#fc1c1c>Mae'r gorchymyn hwn wedi'i analluogi ar hyn o bryd!'
-
- equipped: '%s wedi'i osod!'
- unequipped: 'Wedi cadw eich balŵn yn ddiogel.'
- balloon-not-found: '<#fc1c1c>Nid oes balŵn wedi'i ddod o hyd.'
- not-equipped: '<#fc1c1c>Nid oes balŵn wedi'i osod gennych ar hyn o bryd.'
-
- material-not-dyeable: 'Ni ellir lliwio'r deunydd %s.'
- invalid-rgb-values: 'Gwerthoedd RGB annilys: Rhaid i'r gwerthoedd fod rhwng 0 a 255.'
- balloon-not-set: 'Nid yw'r balŵn %s wedi'i osod yn y cyfluniad!'
- material-not-set: 'Nid yw deunydd y balŵn %s wedi'i osod yn y cyfluniad!'
- material-not-valid: 'Nid yw deunydd y balŵn %s yn ddilys! Deunydd: %s'
- material-is-not-valid: 'Nid yw deunydd %s yn ddilys!'
- invalid-item-meta: 'ItemMeta annilys ar gyfer deunydd: %s'
-
- no-balloons-registered: 'Heb gofrestru unrhyw balŵn! Ni ellir creu menyw heb unrhyw balŵn.'
-
- configuration-folder-not-found: 'Heb ddod o hyd i ffolder cyfluniad: %s'
- no-configuration-files-found: 'Heb ddod o hyd i ffeiliau cyfluniad yn y ffolder: %s'
- configuration-section-not-found: 'Heb ddod o hyd i adran cyfluniad ar gyfer y ffeil: %s'
- balloon-type-not-found: 'Gwall wrth brosesu math balŵn ar gyfer adran: %s yn y ffeil: %s. Nid yw'r math balŵn yn bodoli neu'n wag.'
- balloon-process-error: 'Gwall wrth brosesu balŵn ar gyfer adran: %s yn y ffeil: %s. Gwall: %s'
-
- menu-slot-out-of-bounds: '%s nodyn tudalen y fwylen yn mynd dros y ffiniau!'
-
- invalid-hex-code: 'Cod hex annilys: %s'
diff --git a/src/main/resources/languages/da_DK.yml b/src/main/resources/languages/da_DK.yml
deleted file mode 100644
index 86b3632d..00000000
--- a/src/main/resources/languages/da_DK.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>Ingen tilladelse.'
- player-not-found: '<#fc1c1c>Spilleren blev ikke fundet.'
- config-reloaded: 'Konfiguration genindlæst.'
- command-disabled: '<#fc1c1c>Denne kommando er i øjeblikket deaktiveret!'
-
- equipped: '%s udrustet!'
- unequipped: 'Din ballon er blevet gemt sikkert.'
- balloon-not-found: '<#fc1c1c>Ballonen blev ikke fundet.'
- not-equipped: '<#fc1c1c>Du har i øjeblikket ikke en udstyret ballon.'
-
- material-not-dyeable: 'Materialet %s kan ikke farves.'
- invalid-rgb-values: 'RGB-værdier skal være mellem 0 og 255 for at være gyldige.'
- balloon-not-set: 'Ballonen %s er ikke indstillet i konfigurationen!'
- material-not-set: 'Materialet til ballonen %s er ikke indstillet i konfigurationen!'
- material-not-valid: 'Materialet til ballonen %s er ikke gyldigt! Materiale: %s'
- material-is-not-valid: 'Materialet %s er ikke gyldigt!'
- invalid-item-meta: 'ItemMeta er ikke gyldig for materialet: %s'
-
- no-balloons-registered: 'Ingen balloner er registreret! Kan ikke oprette en menu uden balloner.'
-
- configuration-folder-not-found: 'Konfigurationsmappen blev ikke fundet: %s'
- no-configuration-files-found: 'Ingen konfigurationsfiler blev fundet i mappen: %s'
- configuration-section-not-found: 'Konfigurationssektionen blev ikke fundet for filen: %s'
- balloon-type-not-found: 'Fejl ved behandling af ballontypen for afsnittet: %s i filen: %s. Ballontypen findes ikke eller er tom.'
- balloon-process-error: 'Fejl ved behandling af ballonen for afsnittet: %s i filen: %s. Fejl: %s'
-
- menu-slot-out-of-bounds: '%s menuknap(er) er uden for grænserne!'
-
- invalid-hex-code: 'Ugyldig hexadecimal kode: %s'
diff --git a/src/main/resources/languages/de_DE.yml b/src/main/resources/languages/de_DE.yml
deleted file mode 100644
index f59b8f32..00000000
--- a/src/main/resources/languages/de_DE.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>Zugriff verweigert.'
- player-not-found: '<#fc1c1c>Spieler nicht gefunden.'
- config-reloaded: 'Konfiguration neu geladen.'
- command-disabled: '<#fc1c1c>Dieser Befehl ist derzeit deaktiviert!'
-
- equipped: '%s ausgerüstet!'
- unequipped: 'Dein Ballon wurde sicher verstaut.'
- balloon-not-found: '<#fc1c1c>Ballon nicht gefunden.'
- not-equipped: '<#fc1c1c>Du hast derzeit keinen Ballon ausgerüstet.'
-
- material-not-dyeable: 'Material %s ist kein färbbares Material.'
- invalid-rgb-values: 'RGB-Werte müssen zwischen 0 und 255 liegen, um gültig zu sein.'
- balloon-not-set: 'Der Ballon %s ist nicht in der Konfiguration gesetzt!'
- material-not-set: 'Das Material des Ballons %s ist nicht in der Konfiguration gesetzt!'
- material-not-valid: 'Das Material des Ballons %s ist kein gültiges Material! Material: %s'
- invalid-item-meta: 'ItemMeta ist für das Material %s nicht gültig.'
-
- no-balloons-registered: 'Keine Ballons gefunden! Kann kein Menü ohne Ballons erstellen.'
-
- configuration-folder-not-found: 'Konfigurationsordner nicht gefunden: %s'
- no-configuration-files-found: 'Keine Konfigurationsdateien im Ordner gefunden: %s'
- configuration-section-not-found: 'Konfigurationsabschnitt für Datei %s nicht gefunden.'
- balloon-type-not-found: 'Fehler bei der Verarbeitung des Ballontyps für Abschnitt %s in Datei %s. Ballontyp existiert nicht oder ist null.'
- balloon-process-error: 'Fehler bei der Verarbeitung des Ballons für Abschnitt %s in Datei %s. Fehler: %s'
-
- menu-slot-out-of-bounds: 'Menüseitenschaltflächenslot(s) %s außerhalb der Grenzen!'
-
- invalid-hex-code: 'Ungültiger Hex-Code: %s'
\ No newline at end of file
diff --git a/src/main/resources/languages/el_GR.yml b/src/main/resources/languages/el_GR.yml
deleted file mode 100644
index ab4770d2..00000000
--- a/src/main/resources/languages/el_GR.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>Δεν έχετε άδεια.'
- player-not-found: '<#fc1c1c>Ο παίκτης δεν βρέθηκε.'
- config-reloaded: 'Η διαμόρφωση επαναφορτώθηκε.'
- command-disabled: '<#fc1c1c>Αυτή η εντολή είναι απενεργοποιημένη αυτή τη στιγμή!'
-
- equipped: '%s εξοπλίστηκε!'
- unequipped: 'Η αερόσφαιρά σας αποθηκεύτηκε με ασφάλεια.'
- balloon-not-found: '<#fc1c1c>Η αερόσφαιρα δεν βρέθηκε.'
- not-equipped: '<#fc1c1c>Δεν έχετε αυτή τη στιγμή εξοπλισμένη αερόσφαιρα.'
-
- material-not-dyeable: 'Το υλικό %s δεν μπορεί να βαφτεί.'
- invalid-rgb-values: 'Οι τιμές RGB πρέπει να είναι από 0 έως 255 για να είναι έγκυρες.'
- balloon-not-set: 'Η αερόσφαιρα %s δεν έχει οριστεί στη διαμόρφωση!'
- material-not-set: 'Το υλικό της αερόσφαιρας %s δεν έχει οριστεί στη διαμόρφωση!'
- material-not-valid: 'Το υλικό της αερόσφαιρας %s δεν είναι έγκυρο υλικό! Υλικό: %s'
- material-is-not-valid: 'Το υλικό %s δεν είναι έγκυρο!'
- invalid-item-meta: 'Η ItemMeta δεν είναι έγκυρη για το υλικό: %s'
-
- no-balloons-registered: 'Δεν βρέθηκαν αερόσφαιρες! Δεν μπορεί να δημιουργηθεί ένα μενού χωρίς αερόσφαιρες.'
-
- configuration-folder-not-found: 'Ο φάκελος διαμόρφωσης δεν βρέθηκε: %s'
- no-configuration-files-found: 'Δεν βρέθηκαν αρχεία διαμόρφωσης στον φάκελο: %s'
- configuration-section-not-found: 'Η ενότητα διαμόρφωσης δεν βρέθηκε για το αρχείο: %s'
- balloon-type-not-found: 'Σφάλμα επεξεργασίας τύπου αερόσφαιρας για την ενότητα: %s στο αρχείο: %s. Ο τύπος αερόσφαιρας δεν υπάρχει ή είναι κενός.'
- balloon-process-error: 'Σφάλμα επεξεργασίας αερόσφαιρας για την ενότητα: %s στο αρχείο: %s. Σφάλμα: %s'
-
- menu-slot-out-of-bounds: '%s κουμπιά σελίδας μενού εκτός ορίων!'
-
- invalid-hex-code: 'Μη έγκυρος κωδικός hex: %s'
diff --git a/src/main/resources/languages/en_US.yml b/src/main/resources/languages/en_US.yml
index e8ef73bf..c852d823 100644
--- a/src/main/resources/languages/en_US.yml
+++ b/src/main/resources/languages/en_US.yml
@@ -1,14 +1,14 @@
messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>Access denied.'
- player-not-found: '<#fc1c1c>Player not found.'
- config-reloaded: 'Config reloaded.'
- command-disabled: '<#fc1c1c>This command is currently disabled!'
+ prefix: '&d[Bloons] &f'
+ no-permission: '&cAccess denied.'
+ player-not-found: '&cPlayer not found.'
+ config-reloaded: '&aConfig reloaded.'
+ command-disabled: '&cThis command is currently disabled!'
- equipped: '%s equipped!'
- unequipped: 'Your balloon has been stored safely.'
- balloon-not-found: '<#fc1c1c>Balloon not found.'
- not-equipped: '<#fc1c1c>You do not currently have a balloon equipped.'
+ equipped: '%s &aequipped!'
+ unequipped: '&aYour balloon has been stored safely.'
+ balloon-not-found: '&cBalloon not found.'
+ not-equipped: '&cYou do not currently have a balloon equipped.'
material-not-dyeable: 'Material %s is not a dyeable material.'
invalid-rgb-values: 'RGB values must be between 0 and 255 to be valid.'
@@ -29,4 +29,3 @@ messages:
menu-slot-out-of-bounds: '%s menu page button slot(s) out of bounds!'
invalid-hex-code: 'Invalid hex code: %s'
-
diff --git a/src/main/resources/languages/es_ES.yml b/src/main/resources/languages/es_ES.yml
index 6a883bcb..8f5e9173 100644
--- a/src/main/resources/languages/es_ES.yml
+++ b/src/main/resources/languages/es_ES.yml
@@ -1,14 +1,14 @@
messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>Acceso denegado.'
- player-not-found: '<#fc1c1c>Jugador no encontrado.'
- config-reloaded: 'Configuración recargada.'
- command-disabled: '<#fc1c1c>¡Este comando está actualmente desactivado!'
+ prefix: '&d[Bloons] &f'
+ no-permission: '&cAcceso denegado.'
+ player-not-found: '&cJugador no encontrado.'
+ config-reloaded: '&aConfiguración recargada.'
+ command-disabled: '&c¡Este comando está actualmente desactivado!'
equipped: '%s equipado!'
- unequipped: 'Tu globo ha sido almacenado de forma segura.'
- balloon-not-found: '<#fc1c1c>Globo no encontrado.'
- not-equipped: '<#fc1c1c>No tienes actualmente un globo equipado.'
+ unequipped: '&aTu globo ha sido almacenado de forma segura.'
+ balloon-not-found: '&cGlobo no encontrado.'
+ not-equipped: '&cNo tienes actualmente un globo equipado.'
material-not-dyeable: 'El material %s no se puede teñir.'
invalid-rgb-values: 'Los valores RGB deben estar entre 0 y 255 para ser válidos.'
diff --git a/src/main/resources/languages/et_EE.yml b/src/main/resources/languages/et_EE.yml
deleted file mode 100644
index b11b8f7e..00000000
--- a/src/main/resources/languages/et_EE.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>Puudub luba.'
- player-not-found: '<#fc1c1c>Mängijat ei leitud.'
- config-reloaded: 'Konfiguratsioon on uuesti laaditud.'
- command-disabled: '<#fc1c1c>See käsk on hetkel keelatud!'
-
- equipped: '%s on varustatud!'
- unequipped: 'Teie õhupall on ohutult salvestatud.'
- balloon-not-found: '<#fc1c1c>Õhupalli ei leitud.'
- not-equipped: '<#fc1c1c>Teil ei ole hetkel ühtegi õhupalli varustatud.'
-
- material-not-dyeable: 'Materjali %s ei saa värvida.'
- invalid-rgb-values: 'RGB väärtused peavad olema vahemikus 0 kuni 255, et olla kehtivad.'
- balloon-not-set: 'Õhupalli %s pole konfiguratsioonis määratud!'
- material-not-set: 'Õhupalli materjal %s pole konfiguratsioonis määratud!'
- material-not-valid: 'Õhupalli materjal %s pole kehtiv materjal! Materjal: %s'
- material-is-not-valid: 'Materjal %s pole kehtiv materjal!'
- invalid-item-meta: 'ItemMeta pole materjali %s jaoks kehtiv.'
-
- no-balloons-registered: 'Õhupalle ei leitud! Menüüd ei saa luua ilma õhupallideta.'
-
- configuration-folder-not-found: 'Konfiguratsioonikausta ei leitud: %s'
- no-configuration-files-found: 'Konfiguratsioonifaile ei leitud kaustast: %s'
- configuration-section-not-found: 'Konfiguratsiooni sektsiooni ei leitud failist: %s'
- balloon-type-not-found: 'Viga õhupalli tüübi töötlemisel sektsioonile: %s failis: %s. Õhupalli tüüp ei eksisteeri või on tühi.'
- balloon-process-error: 'Viga õhupalli töötlemisel sektsioonile: %s failis: %s. Viga: %s'
-
- menu-slot-out-of-bounds: '%s menüülehe nupu kohta on väljaspool piire!'
-
- invalid-hex-code: 'Vigane heksakood: %s'
diff --git a/src/main/resources/languages/eu_ES.yml b/src/main/resources/languages/eu_ES.yml
deleted file mode 100644
index bc0ab2fa..00000000
--- a/src/main/resources/languages/eu_ES.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>Ezinezkoa sarrera.'
- player-not-found: '<#fc1c1c>Jokalaria ez da aurkitu.'
- config-reloaded: 'Konfigurazioa berrargitaratu da.'
- command-disabled: '<#fc1c1c>Komandu hau ez dago aktibatuta!'
-
- equipped: '%s ekipatu da!'
- unequipped: 'Zure baloia seguru batera gorde da.'
- balloon-not-found: '<#fc1c1c>Baloia ez da aurkitu.'
- not-equipped: '<#fc1c1c>Ez daukazu momentuz ekipatutako baloirik.'
-
- material-not-dyeable: '%s materiala ez da koloreztagarria.'
- invalid-rgb-values: 'RGB balioak 0 eta 255 artean egon behar dute baliozkoak izateko.'
- balloon-not-set: 'Ez da %s baloia konfigurazioan ezarri!'
- material-not-set: '%s baloiko materiala ez da konfigurazioan ezarri!'
- material-not-valid: '%s baloiko materiala ez da baliozko materiala! Materiala: %s'
- material-is-not-valid: '%s materiala ez da baliozko materiala!'
- invalid-item-meta: 'ItemMeta ez da baliozko materialarentzako: %s'
-
- no-balloons-registered: 'Ez daude baloiak erregistratuta! Baloirik gabeko menua sortu ezin da.'
-
- configuration-folder-not-found: 'Ezarpenak gordetzeko karpeta ez da aurkitu: %s'
- no-configuration-files-found: 'Ez da konfigurazio fitxategirik aurkitu karpeta honetan: %s'
- configuration-section-not-found: 'Ezarpen atala ez da aurkitu fitxategian: %s'
- balloon-type-not-found: 'Errorea baloia mota prozesatzerakoan atalean: %s fitxategian: %s. Baloia mota ez da existitzen edo hutsik dago.'
- balloon-process-error: 'Errorea baloia prozesatzerakoan atalean: %s fitxategian: %s. Errorea: %s'
-
- menu-slot-out-of-bounds: '%s menu orri botoi tokia mugatik kanpo dago!'
-
- invalid-hex-code: 'Hex kode baliogabea: %s'
diff --git a/src/main/resources/languages/fa_IR.yml b/src/main/resources/languages/fa_IR.yml
deleted file mode 100644
index 5d89e571..00000000
--- a/src/main/resources/languages/fa_IR.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>دسترسی رد شد.'
- player-not-found: '<#fc1c1c>بازیکن یافت نشد.'
- config-reloaded: 'پیکربندی مجدداً بارگذاری شد.'
- command-disabled: '<#fc1c1c>این دستور در حال حاضر غیرفعال است!'
-
- equipped: '%s نصب شده است!'
- unequipped: 'بادبادک شما اکنون به طور ایمن ذخیره شده است.'
- balloon-not-found: '<#fc1c1c>بادبادک یافت نشد.'
- not-equipped: '<#fc1c1c>شما در حال حاضر هیچ بادبادکی نصب نکردهاید.'
-
- material-not-dyeable: 'مواد %s قابل رنگآمیزی نیست.'
- invalid-rgb-values: 'مقادیر RGB باید بین 0 و 255 باشند تا معتبر باشند.'
- balloon-not-set: 'بادبادک %s در پیکربندی تنظیم نشده است!'
- material-not-set: 'مواد بادبادک %s در پیکربندی تنظیم نشده است!'
- material-not-valid: 'مواد بادبادک %s معتبر نیست! مواد: %s'
- material-is-not-valid: 'ماده %s معتبر نیست!'
- invalid-item-meta: 'ItemMeta برای ماده %s معتبر نیست.'
-
- no-balloons-registered: 'بادبادکی ثبت نشده است! نمیتوانید یک فهرست بدون بادبادک ایجاد کنید.'
-
- configuration-folder-not-found: 'پوشه پیکربندی یافت نشد: %s'
- no-configuration-files-found: 'فایلهای پیکربندی در پوشه یافت نشد: %s'
- configuration-section-not-found: 'بخش پیکربندی برای فایل یافت نشد: %s'
- balloon-type-not-found: 'خطا در پردازش نوع بادبادک برای بخش: %s در فایل: %s. نوع بادبادک موجود نیست یا صفر است.'
- balloon-process-error: 'خطا در پردازش بادبادک برای بخش: %s در فایل: %s. خطا: %s'
-
- menu-slot-out-of-bounds: '%s دکمه صفحه منو خارج از حدود است!'
-
- invalid-hex-code: 'کد هگزاگرادی اشتباه است: %s'
diff --git a/src/main/resources/languages/fi_FI.yml b/src/main/resources/languages/fi_FI.yml
deleted file mode 100644
index d4838aef..00000000
--- a/src/main/resources/languages/fi_FI.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>Ei lupaa.'
- player-not-found: '<#fc1c1c>Pelaajaa ei löydetty.'
- config-reloaded: 'Asetukset on ladattu uudelleen.'
- command-disabled: '<#fc1c1c>Tämä komento on tällä hetkellä poistettu käytöstä!'
-
- equipped: '%s varustettu!'
- unequipped: 'Ilmapallonne on turvallisesti tallennettu.'
- balloon-not-found: '<#fc1c1c>Ilmapalloa ei löytynyt.'
- not-equipped: '<#fc1c1c>Sinulla ei ole tällä hetkellä varustettua ilmapalloa.'
-
- material-not-dyeable: 'Materiaalia %s ei voi värjätä.'
- invalid-rgb-values: 'RGB-arvojen on oltava välillä 0 ja 255, jotta ne olisivat kelvollisia.'
- balloon-not-set: 'Ilmapalloa %s ei ole asetettu asetuksissa!'
- material-not-set: 'Ilmapallon materiaalia %s ei ole asetettu asetuksissa!'
- material-not-valid: 'Ilmapallon materiaali %s ei ole kelvollinen materiaali! Materiaali: %s'
- material-is-not-valid: 'Materiaali %s ei ole kelvollinen materiaali!'
- invalid-item-meta: 'ItemMeta ei ole kelvollinen materiaalille: %s'
-
- no-balloons-registered: 'Ei löydy rekisteröityjä ilmapalloja! Ei voida luoda valikkoa ilman ilmapalloja.'
-
- configuration-folder-not-found: 'Asetuskansiota ei löydy: %s'
- no-configuration-files-found: 'Asetustiedostoja ei löytynyt kansiosta: %s'
- configuration-section-not-found: 'Asetusosaa ei löytynyt tiedostosta: %s'
- balloon-type-not-found: 'Virhe käsiteltäessä ilmapallotyyppiä osiolle: %s tiedostossa: %s. Ilmapallotyyppiä ei ole tai se on tyhjä.'
- balloon-process-error: 'Virhe käsiteltäessä ilmapalloa osiolle: %s tiedostossa: %s. Virhe: %s'
-
- menu-slot-out-of-bounds: '%s valikkosivun painike(tta) on ulkona rajoista!'
-
- invalid-hex-code: 'Virheellinen heksakoodi: %s'
diff --git a/src/main/resources/languages/fo_FO.yml b/src/main/resources/languages/fo_FO.yml
deleted file mode 100644
index 017b8e22..00000000
--- a/src/main/resources/languages/fo_FO.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>Eingin loyvi.'
- player-not-found: '<#fc1c1c>Spælari fannst ikki.'
- config-reloaded: 'Stillingar endurrættir.'
- command-disabled: '<#fc1c1c>Hetta skipan er tøkt nú!'
-
- equipped: '%s útbúgvað!'
- unequipped: 'Tínur ballónur er trygt geymdur.'
- balloon-not-found: '<#fc1c1c>Ballónur fannst ikki.'
- not-equipped: '<#fc1c1c>Tit hava ikki nakrar ballónur útbúgvaðar í nú. '
-
- material-not-dyeable: 'Materiál %s kann ikki litast.'
- invalid-rgb-values: 'RGB virðið má vera millum 0 og 255 fyri at vera gildandi.'
- balloon-not-set: 'Ballónur %s er ikki sett í stillingar!'
- material-not-set: 'Materiálið hjá ballónunum %s er ikki sett í stillingar!'
- material-not-valid: 'Materiálið hjá ballónunum %s er ikki gildigt! Materiál: %s'
- material-is-not-valid: 'Materiál %s er ikki gildigt!'
- invalid-item-meta: 'ItemMeta er ikki gild fyri materiál: %s'
-
- no-balloons-registered: 'Eingin ballónur funnist! Ikki gjørt henda menu uttan ballónum.'
-
- configuration-folder-not-found: 'Stillingamappan fannst ikki: %s'
- no-configuration-files-found: 'Eingin stillingaskráir funnist í mappuni: %s'
- configuration-section-not-found: 'Stillingarsnið fannst ikki fyri skrá: %s'
- balloon-type-not-found: 'Feilur við at handtera ballóntegund fyri seksjón: %s í skrá: %s. Ballóntegundin er ikki til ella er tóm.'
- balloon-process-error: 'Feilur við at handtera ballón fyri seksjón: %s í skrá: %s. Feilur: %s'
-
- menu-slot-out-of-bounds: '%s mený síðu knøtt(ur) er úteftir teirra mørk!'
-
- invalid-hex-code: 'Ógild heksadekimal koda: %s'
diff --git a/src/main/resources/languages/fr_FR.yml b/src/main/resources/languages/fr_FR.yml
deleted file mode 100644
index 8311bd43..00000000
--- a/src/main/resources/languages/fr_FR.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>Accès refusé.'
- player-not-found: '<#fc1c1c>Joueur non trouvé.'
- config-reloaded: 'Configuration rechargée.'
- command-disabled: '<#fc1c1c>Cette commande est actuellement désactivée!'
-
- equipped: '%s équipé!'
- unequipped: 'Votre ballon a été rangé en toute sécurité.'
- balloon-not-found: '<#fc1c1c>Ballon non trouvé.'
- not-equipped: '<#fc1c1c>Vous n\''avez actuellement aucun ballon équipé.'
-
- material-not-dyeable: 'Le matériau %s n\''est pas un matériau teignable.'
- invalid-rgb-values: 'Les valeurs RGB doivent être comprises entre 0 et 255 pour être valides.'
- balloon-not-set: 'Le ballon %s n\''est pas défini dans la configuration!'
- material-not-set: 'Le matériau du ballon %s n\''est pas défini dans la configuration!'
- material-not-valid: 'Le matériau du ballon %s n\''est pas un matériau valide! Matériau: %s'
- invalid-item-meta: 'ItemMeta n\''est pas valide pour le matériau: %s'
-
- no-balloons-registered: 'Aucun ballon trouvé! Impossible de créer un menu sans ballons.'
-
- configuration-folder-not-found: 'Dossier de configuration non trouvé: %s'
- no-configuration-files-found: 'Aucun fichier de configuration trouvé dans le dossier: %s'
- configuration-section-not-found: 'Section de configuration non trouvée pour le fichier: %s'
- balloon-type-not-found: 'Erreur de traitement du type de ballon pour la section: %s dans le fichier: %s. Le type de ballon n\''existe pas ou est nul.'
- balloon-process-error: 'Erreur de traitement du ballon pour la section: %s dans le fichier: %s. Erreur: %s'
-
- menu-slot-out-of-bounds: 'Le(s) bouton(s) de la page de menu %s sont hors limites!'
-
- invalid-hex-code: 'Code hexadécimal invalide: %s'
\ No newline at end of file
diff --git a/src/main/resources/languages/gl_ES.yml b/src/main/resources/languages/gl_ES.yml
deleted file mode 100644
index ff0c215d..00000000
--- a/src/main/resources/languages/gl_ES.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>Sen permiso.'
- player-not-found: '<#fc1c1c>Xogador non atopado.'
- config-reloaded: 'Configuración recargada.'
- command-disabled: '<#fc1c1c>Este comando está actualmente desactivado!'
-
- equipped: '%s equipado!'
- unequipped: 'O seu globo foi almacenado con seguridade.'
- balloon-not-found: '<#fc1c1c>Globo non atopado.'
- not-equipped: '<#fc1c1c>Actualmente non ten ningún globo equipado.'
-
- material-not-dyeable: 'O material %s non pode ser tingido.'
- invalid-rgb-values: 'Os valores RGB deben estar entre 0 e 255 para seren válidos.'
- balloon-not-set: 'O globo %s non está definido na configuración!'
- material-not-set: 'O material do globo %s non está definido na configuración!'
- material-not-valid: 'O material do globo %s non é válido! Material: %s'
- material-is-not-valid: 'O material %s non é válido!'
- invalid-item-meta: 'ItemMeta non é válido para o material: %s'
-
- no-balloons-registered: 'Non se atopan globos! Non se pode crear un menú sen globos.'
-
- configuration-folder-not-found: 'Cartafol de configuración non atopado: %s'
- no-configuration-files-found: 'Non se atoparon arquivos de configuración no cartafol: %s'
- configuration-section-not-found: 'Sección de configuración non atopada para o arquivo: %s'
- balloon-type-not-found: 'Erro ao procesar o tipo de globo para a sección: %s no arquivo: %s. O tipo de globo non existe ou é nulo.'
- balloon-process-error: 'Erro ao procesar o globo para a sección: %s no arquivo: %s. Erro: %s'
-
- menu-slot-out-of-bounds: '%s botóns da páxina do menú fóra dos límites!'
-
- invalid-hex-code: 'Código hexadecimal non válido: %s'
diff --git a/src/main/resources/languages/gu_IN.yml b/src/main/resources/languages/gu_IN.yml
deleted file mode 100644
index 2fbb602b..00000000
--- a/src/main/resources/languages/gu_IN.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>કોઈ પરવાનગી નથી.'
- player-not-found: '<#fc1c1c>ખેલાડી મળી નથી.'
- config-reloaded: 'રૂપરેખાંકન પુનઃલોડ થયો.'
- command-disabled: '<#fc1c1c>આ આદેશ હાલમાં અક્રિય છે!'
-
- equipped: '%s સજ્જ કરેલું છે!'
- unequipped: 'તમારી બલૂન સુરક્ષિત રીતે સંગ્રહિત થઇ ગઈ છે.'
- balloon-not-found: '<#fc1c1c>બલૂન મળ્યું નથી.'
- not-equipped: '<#fc1c1c>તમારી સાથે હાલમાં કોઈ બલૂન સજ્જ નથી.'
-
- material-not-dyeable: 'સામગ્રી %s રંગીન નથી.'
- invalid-rgb-values: 'RGB મૂલ્યો માન્ય હોવા માટે 0 થી 255 વચ્ચે હોવો જ જોઈએ.'
- balloon-not-set: 'બલૂન %s રૂપરેખાંકનમાં સેટ કરવામાં નથી!'
- material-not-set: 'બલૂનની સામગ્રી %s રૂપરેખાંકનમાં સેટ કરવામાં નથી!'
- material-not-valid: 'બલૂનની સામગ્રી %s માન્ય સામગ્રી નથી! સામગ્રી: %s'
- material-is-not-valid: 'સામગ્રી %s માન્ય સામગ્રી નથી!'
- invalid-item-meta: 'વસ્તુની મેટા માન્ય નથી: %s'
-
- no-balloons-registered: 'કોઈ બલૂન્સ મળ્યા નથી! કોઈ બલૂન્સ સાથે મેનૂ બનાવી શકાતું નથી.'
-
- configuration-folder-not-found: 'રૂપરેખાંકન ફોલ્ડર મળ્યો નથી: %s'
- no-configuration-files-found: 'ફોલ્ડરમાં કોઈ રૂપરેખાંકન ફાઇલો મળ્યા નથી: %s'
- configuration-section-not-found: 'ફાઇલ માટે રૂપરેખાંકન વિભાગ મળ્યો નથી: %s'
- balloon-type-not-found: 'વિભાગ %s માટે બલૂન પ્રકારનું પ્રક્રિયાકરણ ક્રમ નથી: %s ફાઇલમાં. બલૂન પ્રકાર અસ્તિત્વમાં નથી અથવા ખાલી છે.'
- balloon-process-error: 'વિભાગ %s માટે બલૂન પ્રક્રિયાકરણ ક્રમ નથી: %s ફાઇલમાં. ભૂલ: %s'
-
- menu-slot-out-of-bounds: '%s મેનુ પેજ બટન સ્લોટ(સ) બાહ્ય મર્યાદાઓ બહાર!'
-
- invalid-hex-code: 'અમાન્ય હેક્સ કોડ: %s'
diff --git a/src/main/resources/languages/he_IL.yml b/src/main/resources/languages/he_IL.yml
deleted file mode 100644
index 4ba66388..00000000
--- a/src/main/resources/languages/he_IL.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>אין הרשאה.'
- player-not-found: '<#fc1c1c>שחקן לא נמצא.'
- config-reloaded: 'התצורה נטענה מחדש.'
- command-disabled: '<#fc1c1c>פקודה זו מנוטרלת כרגע!'
-
- equipped: '%s נצמד בהצלחה!'
- unequipped: 'הבלון שלך נשמר בבטיחות.'
- balloon-not-found: '<#fc1c1c>הבלון לא נמצא.'
- not-equipped: '<#fc1c1c>אין לך בלון מצופה כרגע.'
-
- material-not-dyeable: 'החומר %s אינו ניתן לצביעה.'
- invalid-rgb-values: 'ערכי RGB חייבים להיות בין 0 ל-255 כדי להיות חוקיים.'
- balloon-not-set: 'הבלון %s לא מוגדר בתצורה!'
- material-not-set: 'החומר של הבלון %s אינו מוגדר בתצורה!'
- material-not-valid: 'החומר של הבלון %s אינו חומר חוקי! חומר: %s'
- material-is-not-valid: 'החומר %s אינו חומר חוקי!'
- invalid-item-meta: 'ItemMeta אינו חוקי עבור החומר: %s'
-
- no-balloons-registered: 'לא נמצאו בלונים! לא ניתן ליצור תפריט ללא בלונים.'
-
- configuration-folder-not-found: 'תיקיית התצורה לא נמצאה: %s'
- no-configuration-files-found: 'לא נמצאו קבצי תצורה בתיקייה: %s'
- configuration-section-not-found: 'לא נמצאה סעיף תצורה עבור הקובץ: %s'
- balloon-type-not-found: 'שגיאה בעיבוד סוג בלון עבור הסעיף: %s בקובץ: %s. סוג הבלון אינו קיים או הוא ריק.'
- balloon-process-error: 'שגיאה בעיבוד הבלון עבור הסעיף: %s בקובץ: %s. שגיאה: %s'
-
- menu-slot-out-of-bounds: '%s כפתורי עמוד תפריט מחוץ לגבולות!'
-
- invalid-hex-code: 'קוד hex לא חוקי: %s'
diff --git a/src/main/resources/languages/hi_IN.yml b/src/main/resources/languages/hi_IN.yml
deleted file mode 100644
index 0c630b3d..00000000
--- a/src/main/resources/languages/hi_IN.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>पहुंच निषेध।'
- player-not-found: '<#fc1c1c>खिलाड़ी नहीं मिला।'
- config-reloaded: 'कॉन्फ़िगरेशन पुनः लोड किया गया।'
- command-disabled: '<#fc1c1c>यह कमांड वर्तमान में निष्क्रिय है!'
-
- equipped: '%s सफलतापूर्वक सुसज्जित किया गया!'
- unequipped: 'आपका गुब्बारा सुरक्षित रूप से संग्रहीत हो गया है।'
- balloon-not-found: '<#fc1c1c>गुब्बारा नहीं मिला।'
- not-equipped: '<#fc1c1c>आपके पास वर्तमान में कोई गुब्बारा सुसज्जित नहीं है।'
-
- material-not-dyeable: 'सामग्री %s को रंगने में सक्षम नहीं है।'
- invalid-rgb-values: 'RGB मूल्यों को मान्य होने के लिए 0 से 255 के बीच होना चाहिए।'
- balloon-not-set: 'गुब्बारा %s कॉन्फ़िगरेशन में सेट नहीं है!'
- material-not-set: 'गुब्बारे की सामग्री %s कॉन्फ़िगरेशन में सेट नहीं है!'
- material-not-valid: 'गुब्बारे की सामग्री %s मान्य सामग्री नहीं है! सामग्री: %s'
- material-is-not-valid: 'सामग्री %s मान्य सामग्री नहीं है!'
- invalid-item-meta: 'आइटम मेटा सामग्री के लिए मान्य नहीं है: %s'
-
- no-balloons-registered: 'कोई गुब्बारे नहीं मिले! कोई गुब्बारे के साथ मेनू नहीं बनाया जा सकता।'
-
- configuration-folder-not-found: 'कॉन्फ़िगरेशन फ़ोल्डर नहीं मिला: %s'
- no-configuration-files-found: 'फ़ोल्डर में कोई कॉन्फ़िगरेशन फ़ाइलें नहीं मिलीं: %s'
- configuration-section-not-found: 'फ़ाइल के लिए कॉन्फ़िगरेशन सेक्शन नहीं मिला: %s'
- balloon-type-not-found: 'धागे के सेक्शन के लिए गुब्बारे का प्रकार प्रसंस्करण त्रुटि: %s फ़ाइल में: %s। गुब्बारे का प्रकार मौजूद नहीं है या खाली है।'
- balloon-process-error: 'धागे के सेक्शन के लिए गुब्बारे की प्रसंस्करण त्रुटि: %s फ़ाइल में: %s। त्रुटि: %s'
-
- menu-slot-out-of-bounds: '%s मेनू पृष्ठ बटन स्लॉट(स) सीमाओं के बाहर हैं!'
-
- invalid-hex-code: 'अमान्य hex कोड: %s'
diff --git a/src/main/resources/languages/hr_HR.yml b/src/main/resources/languages/hr_HR.yml
deleted file mode 100644
index c221a872..00000000
--- a/src/main/resources/languages/hr_HR.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>Nema dopuštenja.'
- player-not-found: '<#fc1c1c>Igrač nije pronađen.'
- config-reloaded: 'Konfiguracija je ponovno učitana.'
- command-disabled: '<#fc1c1c>Ova naredba je trenutno onemogućena!'
-
- equipped: '%s opremljen!'
- unequipped: 'Vaš balon je sigurno pohranjen.'
- balloon-not-found: '<#fc1c1c>Balon nije pronađen.'
- not-equipped: '<#fc1c1c>Trenutno nemate opremljen balon.'
-
- material-not-dyeable: 'Materijal %s nije moguće obojiti.'
- invalid-rgb-values: 'RGB vrijednosti moraju biti između 0 i 255 da bi bile valjane.'
- balloon-not-set: 'Balon %s nije postavljen u konfiguraciji!'
- material-not-set: 'Materijal balona %s nije postavljen u konfiguraciji!'
- material-not-valid: 'Materijal balona %s nije valjan materijal! Materijal: %s'
- material-is-not-valid: 'Materijal %s nije valjan materijal!'
- invalid-item-meta: 'ItemMeta nije valjan za materijal: %s'
-
- no-balloons-registered: 'Nema registriranih balona! Ne može se stvoriti izbornik bez balona.'
-
- configuration-folder-not-found: 'Mapa konfiguracije nije pronađena: %s'
- no-configuration-files-found: 'Nema pronađenih konfiguracijskih datoteka u mapi: %s'
- configuration-section-not-found: 'Sekcija konfiguracije nije pronađena za datoteku: %s'
- balloon-type-not-found: 'Pogreška pri obradi vrste balona za odjeljak: %s u datoteci: %s. Vrsta balona ne postoji ili je prazna.'
- balloon-process-error: 'Pogreška pri obradi balona za odjeljak: %s u datoteci: %s. Greška: %s'
-
- menu-slot-out-of-bounds: '%s gumbi stranice izbornika izvan granica!'
-
- invalid-hex-code: 'Nevažeći heksadecimalni kod: %s'
diff --git a/src/main/resources/languages/hu_HU.yml b/src/main/resources/languages/hu_HU.yml
deleted file mode 100644
index 158d6d68..00000000
--- a/src/main/resources/languages/hu_HU.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>Hozzáférés megtagadva.'
- player-not-found: '<#fc1c1c>A játékos nem található.'
- config-reloaded: 'A konfiguráció újratöltve.'
- command-disabled: '<#fc1c1c>Ez a parancs jelenleg letiltva van!'
-
- equipped: '%s felszerelve!'
- unequipped: 'A lufid biztonságosan eltárolva.'
- balloon-not-found: '<#fc1c1c>A lufi nem található.'
- not-equipped: '<#fc1c1c>Jelenleg nincs felszerelve lufi.'
-
- material-not-dyeable: 'Az anyag %s nem festhető.'
- invalid-rgb-values: 'Az RGB értékeknek 0 és 255 között kell lenniük.'
- balloon-not-set: 'A %s lufi nincs beállítva a konfigurációban!'
- material-not-set: 'A %s lufi anyaga nincs beállítva a konfigurációban!'
- material-not-valid: 'A %s lufi anyaga nem érvényes anyag! Anyag: %s'
- material-is-not-valid: 'Az anyag %s nem érvényes anyag!'
- invalid-item-meta: 'Az ItemMeta nem érvényes az anyaghoz: %s'
-
- no-balloons-registered: 'Nincsenek regisztrált lufik! Nem lehet menüt létrehozni regisztrált lufik nélkül.'
-
- configuration-folder-not-found: 'A konfigurációs mappa nem található: %s'
- no-configuration-files-found: 'Nincsenek konfigurációs fájlok a mappában: %s'
- configuration-section-not-found: 'A konfigurációs szakasz nem található a fájlhoz: %s'
- balloon-type-not-found: 'Hiba a lufi típusának feldolgozásakor a szakaszhoz: %s a fájlban: %s. A lufi típusa nem létezik vagy null.'
- balloon-process-error: 'Hiba a lufi feldolgozásakor a szakaszhoz: %s a fájlban: %s. Hiba: %s'
-
- menu-slot-out-of-bounds: '%s menü oldal gomb hely nincs határokon belül!'
-
- invalid-hex-code: 'Érvénytelen hex kód: %s'
diff --git a/src/main/resources/languages/hy_AM.yml b/src/main/resources/languages/hy_AM.yml
deleted file mode 100644
index 621d27e3..00000000
--- a/src/main/resources/languages/hy_AM.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>Թույլատրելիություն չկա.'
- player-not-found: '<#fc1c1c>Հաստատիչը չի գտնվել.'
- config-reloaded: 'Կոնֆիգուրացիան վերաբեռնվել է:'
- command-disabled: '<#fc1c1c>Այս հրամանը ներկայացնված չէ։'
-
- equipped: '%s հավաքվեց։'
- unequipped: 'Ձեր բլունը անվանակում է ապակում։'
- balloon-not-found: '<#fc1c1c>Բլունը չի գտնվել։'
- not-equipped: '<#fc1c1c>Դուք ներկայացրել չունեք բլուն։'
-
- material-not-dyeable: 'Մատիան %s չի կարող նվագել։'
- invalid-rgb-values: 'RGB արժեքները պետք է լինեն 0-ից 255 միջակայքում։'
- balloon-not-set: 'Բլունը %s չի սահմանված կոնֆիգուրացիայում։'
- material-not-set: 'Բլունի %s մարմինը չի սահմանված կոնֆիգուրացիայում։'
- material-not-valid: 'Բլունի %s մարմինը վավեր չէ։ Մարմինը: %s'
- material-is-not-valid: 'Մատիան %s վավեր չէ։'
- invalid-item-meta: 'Ապրանքի մետատվյալները չեն վավերացիայի %s համար։'
-
- no-balloons-registered: 'Ոչ մի բլուն չի գրանցվել։ Չհաջողվեց ստեղծել ընտրացանկ առանց բլուն։'
-
- configuration-folder-not-found: 'Կոնֆիգուրացիայի թղթապանակը չի գտնվել՝ %s'
- no-configuration-files-found: 'Չի գտնվել կոնֆիգուրացիայի ֆայլեր %s թղթապանակում։'
- configuration-section-not-found: 'Կոնֆիգուրացիայի բաժնի գտնվելը չհաջողվեց ֆայլում՝ %s'
- balloon-type-not-found: 'Բլունի տեսակի սխալ մշակման համար բաժինը՝ %s, ֆայլում՝ %s։ Բլունի տեսակը չկա կամ դա դատարկ է։'
- balloon-process-error: 'Բլունի մշակման սխալ համար բաժինը՝ %s, ֆայլում՝ %s։ Սխալ՝ %s'
-
- menu-slot-out-of-bounds: '%s ընտրացանկի էջի կոճակի տեղերը շարունակվում են առանց պահի։'
-
- invalid-hex-code: 'Անվավեր հեքս կոդ՝ %s'
diff --git a/src/main/resources/languages/id_ID.yml b/src/main/resources/languages/id_ID.yml
deleted file mode 100644
index efdb3b15..00000000
--- a/src/main/resources/languages/id_ID.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>Akses ditolak.'
- player-not-found: '<#fc1c1c>Pemain tidak ditemukan.'
- config-reloaded: 'Konfigurasi dimuat ulang.'
- command-disabled: '<#fc1c1c>Perintah ini saat ini dinonaktifkan!'
-
- equipped: '%s terpasang!'
- unequipped: 'Balon Anda telah disimpan dengan aman.'
- balloon-not-found: '<#fc1c1c>Balon tidak ditemukan.'
- not-equipped: '<#fc1c1c>Anda saat ini tidak memiliki balon terpasang.'
-
- material-not-dyeable: 'Material %s tidak dapat diwarnai.'
- invalid-rgb-values: 'Nilai RGB harus antara 0 dan 255 untuk valid.'
- balloon-not-set: 'Balon %s tidak diatur dalam konfigurasi!'
- material-not-set: 'Material balon %s tidak diatur dalam konfigurasi!'
- material-not-valid: 'Material balon %s bukan material yang valid! Material: %s'
- material-is-not-valid: 'Material %s bukan material yang valid!'
- invalid-item-meta: 'ItemMeta tidak valid untuk material: %s'
-
- no-balloons-registered: 'Tidak ada balon yang terdaftar! Tidak dapat membuat menu tanpa balon.'
-
- configuration-folder-not-found: 'Folder konfigurasi tidak ditemukan: %s'
- no-configuration-files-found: 'Tidak ada file konfigurasi yang ditemukan di folder: %s'
- configuration-section-not-found: 'Bagian konfigurasi tidak ditemukan untuk file: %s'
- balloon-type-not-found: 'Kesalahan saat memproses jenis balon untuk bagian: %s di file: %s. Jenis balon tidak ada atau null.'
- balloon-process-error: 'Kesalahan saat memproses balon untuk bagian: %s di file: %s. Kesalahan: %s'
-
- menu-slot-out-of-bounds: '%s slot tombol halaman menu di luar batas!'
-
- invalid-hex-code: 'Kode hex tidak valid: %s'
diff --git a/src/main/resources/languages/is_IS.yml b/src/main/resources/languages/is_IS.yml
deleted file mode 100644
index b83645ff..00000000
--- a/src/main/resources/languages/is_IS.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>Áður hefur verið óheimilt.'
- player-not-found: '<#fc1c1c>Leikmaður fannst ekki.'
- config-reloaded: 'Stillingar hlaðnar aftur inn.'
- command-disabled: '<#fc1c1c>Þessi skipun er í augnablikinu óvirk!'
-
- equipped: '%s búið til!'
- unequipped: 'Loftbelgurinn þinn hefur verið geymdur örugglega.'
- balloon-not-found: '<#fc1c1c>Loftbelgur fannst ekki.'
- not-equipped: '<#fc1c1c>Þú ert ekki með loftbelg búinn að gera ráð fyrir þig.'
-
- material-not-dyeable: 'Efnið %s er ekki litarefni.'
- invalid-rgb-values: 'RGB gildin verða að vera á milli 0 og 255 til að vera gild gildi.'
- balloon-not-set: '%s loftbelgurinn er ekki settur í stillingunni!'
- material-not-set: '%s loftbelgurinn er ekki settur í efni í stillingunni!'
- material-not-valid: '%s loftbelgurinn er ekki gilt efni! Efni: %s'
- material-is-not-valid: 'Efnið %s er ekki gilt efni!'
- invalid-item-meta: 'ItemMeta er ekki gilt fyrir efnið: %s'
-
- no-balloons-registered: 'Engir loftbelgar eru skráðir! Ekki hægt að búa til valmynd án loftbelga.'
-
- configuration-folder-not-found: 'Stillingarmappa fannst ekki: %s'
- no-configuration-files-found: 'Engar stillingarskrár fundust í möppunni: %s'
- configuration-section-not-found: 'Stillingarsekt fannst ekki fyrir skrá: %s'
- balloon-type-not-found: 'Villa við að vinna með loftbelg tegund fyrir hluta: %s í skrá: %s. Loftbelgur tegund er ekki til eða er tómur.'
- balloon-process-error: 'Villa við að vinna loftbelg fyrir hluta: %s í skrá: %s. Villa: %s'
-
- menu-slot-out-of-bounds: '%s valmynd síðuhnappur staðsetning er utan marka!'
-
- invalid-hex-code: 'Ógild hex kóði: %s'
diff --git a/src/main/resources/languages/it_IT.yml b/src/main/resources/languages/it_IT.yml
deleted file mode 100644
index 9f9f7e2f..00000000
--- a/src/main/resources/languages/it_IT.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>Accesso negato.'
- player-not-found: '<#fc1c1c>Giocatore non trovato.'
- config-reloaded: 'Configurazione ricaricata.'
- command-disabled: '<#fc1c1c>Questo comando è attualmente disabilitato!'
-
- equipped: '%s equipaggiato!'
- unequipped: 'Il tuo palloncino è stato riposto in sicurezza.'
- balloon-not-found: '<#fc1c1c>Palloncino non trovato.'
- not-equipped: '<#fc1c1c>Al momento non hai un palloncino equipaggiato.'
-
- material-not-dyeable: 'Il materiale %s non è tinto.'
- invalid-rgb-values: 'I valori RGB devono essere compresi tra 0 e 255 per essere validi.'
- balloon-not-set: 'Il palloncino %s non è impostato nella configurazione!'
- material-not-set: 'Il materiale del palloncino %s non è impostato nella configurazione!'
- material-not-valid: 'Il materiale del palloncino %s non è un materiale valido! Materiale: %s'
- material-is-not-valid: 'Il materiale %s non è un materiale valido!'
- invalid-item-meta: 'ItemMeta non è valido per il materiale: %s'
-
- no-balloons-registered: 'Nessun palloncino registrato! Impossibile creare un menu senza palloncini.'
-
- configuration-folder-not-found: 'Cartella di configurazione non trovata: %s'
- no-configuration-files-found: 'Nessun file di configurazione trovato nella cartella: %s'
- configuration-section-not-found: 'Sezione di configurazione non trovata per il file: %s'
- balloon-type-not-found: "Errore durante l'elaborazione del tipo di palloncino per la sezione: %s nel file: %s. Il tipo di palloncino non esiste o è nullo."
- balloon-process-error: "Errore durante l'elaborazione del palloncino per la sezione: %s nel file: %s. Errore: %s"
-
- menu-slot-out-of-bounds: '%s slot pulsante della pagina del menu fuori limite!'
-
- invalid-hex-code: 'Codice esadecimale non valido: %s'
diff --git a/src/main/resources/languages/ja_JP.yml b/src/main/resources/languages/ja_JP.yml
deleted file mode 100644
index f22ea9ba..00000000
--- a/src/main/resources/languages/ja_JP.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>アクセスが拒否されました。'
- player-not-found: '<#fc1c1c>プレイヤーが見つかりません。'
- config-reloaded: '設定がリロードされました。'
- command-disabled: '<#fc1c1c>このコマンドは現在無効です!'
-
- equipped: '%s 装備されました!'
- unequipped: 'バルーンが安全に保管されました。'
- balloon-not-found: '<#fc1c1c>バルーンが見つかりません。'
- not-equipped: '<#fc1c1c>現在、装備しているバルーンはありません。'
-
- material-not-dyeable: '材料 %s は染色可能な材料ではありません。'
- invalid-rgb-values: 'RGB値は0から255の間でなければなりません。'
- balloon-not-set: '設定にバルーン %s が設定されていません!'
- material-not-set: 'バルーン %s の材料が設定にありません!'
- material-not-valid: 'バルーン %s の材料は有効な材料ではありません! 材料: %s'
- invalid-item-meta: '材料 %s に対してItemMetaが無効です。'
-
- no-balloons-registered: 'バルーンが見つかりません! バルーンなしでメニューを作成することはできません。'
-
- configuration-folder-not-found: '設定フォルダが見つかりません: %s'
- no-configuration-files-found: 'フォルダに設定ファイルが見つかりません: %s'
- configuration-section-not-found: 'ファイル %s の設定セクションが見つかりません。'
- balloon-type-not-found: 'ファイル %s のセクション %s のバルーンタイプを処理中にエラーが発生しました。バルーンタイプが存在しないか、nullです。'
- balloon-process-error: 'ファイル %s のセクション %s のバルーンを処理中にエラーが発生しました。エラー: %s'
-
- menu-slot-out-of-bounds: '%s メニューページのボタンスロットが範囲外です!'
-
- invalid-hex-code: '無効な 16 進コード: %s'
\ No newline at end of file
diff --git a/src/main/resources/languages/ka_GE.yml b/src/main/resources/languages/ka_GE.yml
deleted file mode 100644
index 882c20c2..00000000
--- a/src/main/resources/languages/ka_GE.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>არაა ნებართვა.'
- player-not-found: '<#fc1c1c>მოთამაშე არ მოიძებნა.'
- config-reloaded: 'კონფიგურაცია გადატვირთულია.'
- command-disabled: '<#fc1c1c>ეს ბრძანება ამჟამად გამორთულია!'
-
- equipped: '%s შედეგიდან ჩამორთულია!'
- unequipped: 'თქვენი ბურთი დაშენახულია უსაფრთხოდ.'
- balloon-not-found: '<#fc1c1c>ბურთი ვერ მოიძებნა.'
- not-equipped: '<#fc1c1c>თქვენ ამჟამად არ გაქვთ დამორჩილებული ბურთი.'
-
- material-not-dyeable: 'მასალა %s არ შეიძლება გათვლდეს.'
- invalid-rgb-values: 'RGB მნიშვნელობები უნდა იყოს 0-დან 255-მდე, რათა იყოს სწორი.'
- balloon-not-set: 'ბურთი %s არ არის დაყენებული კონფიგურაციაში!'
- material-not-set: 'ბურთის მასალა %s არ არის დაყენებული კონფიგურაციაში!'
- material-not-valid: 'ბურთის მასალა %s არ არის მართებული! მასალა: %s'
- material-is-not-valid: 'მასალა %s არ არის მართებული!'
- invalid-item-meta: 'ItemMeta არ არის მასალათვის: %s'
-
- no-balloons-registered: 'ბურთები არ მოიძებნა! მენიუ ვერ შეიქმნა ბურთების გარეშე.'
-
- configuration-folder-not-found: 'კონფიგურაციის საქაღალდე არ მოიძებნა: %s'
- no-configuration-files-found: 'კონფიგურაციის ფაილები არ მოიძებნა საქაღალდეში: %s'
- configuration-section-not-found: 'კონფიგურაციის სექცია არ მოიძებნა ფაილისთვის: %s'
- balloon-type-not-found: 'ბურთის ტიპის დამუშავების შეცდომა სექციისთვის: %s ფაილში: %s. ბურთის ტიპი არ არსებობს ან იქნა ცარიელი.'
- balloon-process-error: 'ბურთის დამუშავების შეცდომა სექციისთვის: %s ფაილში: %s. შეცდომა: %s'
-
- menu-slot-out-of-bounds: '%s მენიუს გვერდის ღილაკი(ები) გარეთ ზღვაში!'
-
- invalid-hex-code: 'არასწორი hex კოდი: %s'
diff --git a/src/main/resources/languages/kk_KZ.yml b/src/main/resources/languages/kk_KZ.yml
deleted file mode 100644
index dc32f7ad..00000000
--- a/src/main/resources/languages/kk_KZ.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>Кіру расталған жоқ.'
- player-not-found: '<#fc1c1c>Ойыншы табылмады.'
- config-reloaded: 'Конфигурация қайта жүктелді.'
- command-disabled: '<#fc1c1c>Бұл команда қазір өшірілген!'
-
- equipped: '%s орнатылды!'
- unequipped: 'Сіздің шарыңыз қауіпсіз сақталды.'
- balloon-not-found: '<#fc1c1c>Шар табылмады.'
- not-equipped: '<#fc1c1c>Қазір сізде орнатылған шар жоқ.'
-
- material-not-dyeable: '%s материалды боялау мүмкін емес.'
- invalid-rgb-values: 'RGB мәндері 0 және 255 арасында болуы керек.'
- balloon-not-set: '%s шар конфигурацияда орнатылмаған!'
- material-not-set: '%s шар материалы конфигурацияда орнатылмаған!'
- material-not-valid: '%s шар материалы жарамсыз материал емес! Материал: %s'
- material-is-not-valid: '%s материалы жарамсыз материал емес!'
- invalid-item-meta: 'ItemMeta материалға жарамсыз: %s'
-
- no-balloons-registered: 'Шығарушылар тіркеулі емес! Шарларсыз мәзір жасау мүмкін емес.'
-
- configuration-folder-not-found: 'Конфигурация қалтасы табылмады: %s'
- no-configuration-files-found: 'Конфигурация файлдары табылмады: %s папкада жоқ'
- configuration-section-not-found: 'Файл үшін конфигурация бөлімі табылмады: %s'
- balloon-type-not-found: 'Бөлім: %s файл: %s үшін шар түрін өңдеу кезінде қате пайда болды. Шар түрі жоқ немесе бос.'
- balloon-process-error: 'Бөлім: %s файл: %s үшін шарды өңдеу кезінде қате пайда болды. Қате: %s'
-
- menu-slot-out-of-bounds: '%s меню бет батырма орындары шектеуден тыс!'
-
- invalid-hex-code: 'Жарамсыз қиылмашы код: %s'
diff --git a/src/main/resources/languages/kn_IN.yml b/src/main/resources/languages/kn_IN.yml
deleted file mode 100644
index 4d8c18af..00000000
--- a/src/main/resources/languages/kn_IN.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>ಪ್ರವೇಶ ನಿರಾಕರಿಸಲಾಗಿದೆ.'
- player-not-found: '<#fc1c1c>ಆಟಗಾರ ಕಂಡುಬರಲಿಲ್ಲ.'
- config-reloaded: 'ಕಾನ್ಫಿಗರೇಷನ್ ಮರುಹೊಂದಿಸಲಾಗಿದೆ.'
- command-disabled: '<#fc1c1c>ಈ ಕಮಾಂಡ್ ಪ್ರಸ್ತುತವಾಗಿ ನಿಷೇಧಿಸಲಾಗಿದೆ!'
-
- equipped: '%s ಅಣಿಮಾಡಲಾಗಿದೆ!'
- unequipped: 'ನಿಮ್ಮ ಬಲೂನ್ ಸುರಕ್ಷಿತವಾಗಿ ಸಂಗ್ರಹಿತವಾಗಿದೆ.'
- balloon-not-found: '<#fc1c1c>ಬಲೂನ್ ಸಿಗಲಿಲ್ಲ.'
- not-equipped: '<#fc1c1c>ನೀವು ಪ್ರಸ್ತುತವಾಗಿ ಯಾವುದೇ ಬಲೂನ್ ಅಣಿಯಲಾಗಿಲ್ಲ.'
-
- material-not-dyeable: 'ತರಹದ %s ಬಣ್ಣಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.'
- invalid-rgb-values: 'RGB ಮೌಲ್ಯಗಳು 0 ಮತ್ತು 255 ನಡುವೆ ಇರಬೇಕು ಅಥವಾ ಮಾನ್ಯವಿರಬೇಕು.'
- balloon-not-set: 'ಬಲೂನ್ %s ಆಕೃತಿಯಲ್ಲಿ ಹೊಂದಲ್ಪಡಿಲ್ಲ!'
- material-not-set: 'ಬಲೂನ್ %s ಆಕೃತಿಯ ಬಲೂನ್ ಅನಾಯಕ್ತವಾಗಿದೆ!'
- material-not-valid: 'ಬಲೂನ್ %s ಆಕೃತಿಯ ಬಲೂನ್ ಅಮಾನ್ಯ ವಸ್ತು! ವಸ್ತು: %s'
- material-is-not-valid: '%s ವಸ್ತು ಅಮಾನ್ಯ ವಸ್ತು ಅಥವಾ ಖಾಲಿ ಇದೆ!'
- invalid-item-meta: 'ಐಟಂಮೇಟಾ ಬಲೂನ್ ಅನಾಯಕ್ತವಾಗಿದೆ: %s'
-
- no-balloons-registered: 'ಯಾವುದೇ ಬಲೂನ್ಗಳು ನೋಂದಿಗೆಯಾಗಿಲ್ಲ! ಬಲೂನ್ಗಳಿಲ್ಲದೆ ಮೆನು ರಚಿಸಲಾಗಿಲ್ಲ.'
-
- configuration-folder-not-found: 'ಆಕೃತಿ ಫೋಲ್ಡರ್ ಸಿಗಲಿಲ್ಲ: %s'
- no-configuration-files-found: 'ಫೋಲ್ಡರ್ನಲ್ಲಿ ಯಾವುದೇ ಆಕೃತಿ ಫೈಲ್ಗಳು ಸಿಗಲಿಲ್ಲ: %s'
- configuration-section-not-found: 'ಫೈಲ್ಗಾಗಿ ಆಕೃತಿ ವಿಭಾಗ ಸಿಗಲಿಲ್ಲ: %s'
- balloon-type-not-found: 'ಪ್ರಕಾರ ಸಿಗಲಿಲ್ಲ ಅಥವಾ ಖಾಲಿ ಆಗಿದೆ: %s ಫೈಲ್ನಲ್ಲಿ %s ವಿಭಾಗಕ್ಕಾಗಿ ಬಲೂನ್ ಪ್ರಕ್ರಿಯೆ ತಪ್ಪಾಗಿದೆ.'
- balloon-process-error: 'ಬಲೂನ್ ವಿಭಾಗಕ್ಕಾಗಿ %s ಫೈಲ್ನಲ್ಲಿ %s ಬಲೂನ್ ಪ್ರಕ್ರಿಯೆ ತಪ್ಪಾಗಿದೆ. ತಪ್ಪು: %s'
-
- menu-slot-out-of-bounds: '%s ಮೆನು ಪುಟ ಬಟನ್ ಸ್ಲಾಟ್ಗಳು ಗರಿಷ್ಠ ಮಿತಿಯ ಹೊರಗಿವೆ!'
-
- invalid-hex-code: 'ಅಮಾನ್ಯ ಹೆಕ್ಸ್ ಕೋಡ್: %s'
diff --git a/src/main/resources/languages/ko_KR.yml b/src/main/resources/languages/ko_KR.yml
deleted file mode 100644
index 771d3366..00000000
--- a/src/main/resources/languages/ko_KR.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>접근이 거부되었습니다.'
- player-not-found: '<#fc1c1c>플레이어를 찾을 수 없습니다.'
- config-reloaded: '구성이 다시 로드되었습니다.'
- command-disabled: '<#fc1c1c>이 명령은 현재 비활성화되어 있습니다!'
-
- equipped: '%s 장착되었습니다!'
- unequipped: '풍선이 안전하게 보관되었습니다.'
- balloon-not-found: '<#fc1c1c>풍선을 찾을 수 없습니다.'
- not-equipped: '<#fc1c1c>현재 장착된 풍선이 없습니다.'
-
- material-not-dyeable: '재료 %s 은(는) 염색할 수 있는 재료가 아닙니다.'
- invalid-rgb-values: 'RGB 값은 0에서 255 사이여야 합니다.'
- balloon-not-set: '구성에 풍선 %s 이(가) 설정되어 있지 않습니다!'
- material-not-set: '구성에 풍선 %s 의 재료가 설정되어 있지 않습니다!'
- material-not-valid: '풍선 %s 의 재료가 유효한 재료가 아닙니다! 재료: %s'
- invalid-item-meta: '재료 %s 의 ItemMeta가 유효하지 않습니다.'
-
- no-balloons-registered: '풍선을 찾을 수 없습니다! 풍선이 없는 메뉴를 만들 수 없습니다.'
-
- configuration-folder-not-found: '구성 폴더를 찾을 수 없습니다: %s'
- no-configuration-files-found: '폴더에서 구성 파일을 찾을 수 없습니다: %s'
- configuration-section-not-found: '파일 %s 에 대한 구성 섹션을 찾을 수 없습니다.'
- balloon-type-not-found: '파일 %s 의 섹션 %s 에 대한 풍선 유형을 처리하는 동안 오류가 발생했습니다. 풍선 유형이 존재하지 않거나 null입니다.'
- balloon-process-error: '파일 %s 의 섹션 %s 에 대한 풍선을 처리하는 동안 오류가 발생했습니다. 오류: %s'
-
- menu-slot-out-of-bounds: '%s 메뉴 페이지 버튼 슬롯이 범위를 벗어났습니다!'
-
- invalid-hex-code: '잘못된 16진수 코드: %s'
\ No newline at end of file
diff --git a/src/main/resources/languages/kok_IN.yml b/src/main/resources/languages/kok_IN.yml
deleted file mode 100644
index 0dbb9300..00000000
--- a/src/main/resources/languages/kok_IN.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>परवानगी नको.'
- player-not-found: '<#fc1c1c>खेळाडू सापडला नाही.'
- config-reloaded: 'कॉनफिगरेशन पुन्हा लोड केली.'
- command-disabled: '<#fc1c1c>हे कमांड आत्ता अक्षम आहे!'
-
- equipped: '%s थांबलेला आहे!'
- unequipped: 'तुमचा गुबांस सुरक्षितरित्या जतन केला गेला आहे.'
- balloon-not-found: '<#fc1c1c>गुबांस सापडला नाही.'
- not-equipped: '<#fc1c1c>आत्ता तुमच्याकडे कोणतेही थांबलेले गुबांस नाही.'
-
- material-not-dyeable: 'मटेरियल %s रंगण योग्य नाही.'
- invalid-rgb-values: 'RGB मूल्ये 0 आणि 255 यांच्यात असाव्याचे आवश्यक आहेत.'
- balloon-not-set: '%s गुबांस सेट केलेला नाही!'
- material-not-set: '%s गुबांसचा सामग्री कॉनफिगरेशनमध्ये सेट केलेला नाही!'
- material-not-valid: '%s गुबांसचा सामग्री अवैध सामग्री आहे! सामग्री: %s'
- material-is-not-valid: '%s सामग्री अवैध सामग्री नाही!'
- invalid-item-meta: 'आयटममेटा सामग्र्यासाठी अवैध आहे: %s'
-
- no-balloons-registered: 'कोणत्याही गुबांस नोंदविल्या नाहीत! गुबांस बिना मेनू तयार करणे असंभव आहे.'
-
- configuration-folder-not-found: 'कॉनफिगरेशन फोल्डर सापडला नाही: %s'
- no-configuration-files-found: 'कॉनफिगरेशन फाइल सापडली नाही: %s'
- configuration-section-not-found: 'फाइलसाठी कॉनफिगरेशन खंड सापडला नाही: %s'
- balloon-type-not-found: 'विभाग: %s फाईल: %s साठी गुबांस प्रकार प्रोसेसिंग करण्यात त्रुटी आली. गुबांस प्रकार अस्तित्वात नाही किंवा रिक्त आहे.'
- balloon-process-error: 'विभाग: %s फाईल: %s साठी गुबांस प्रोसेसिंग करण्यात त्रुटी आली. त्रुटी: %s'
-
- menu-slot-out-of-bounds: '%s मेनू पृष्ठ बटण स्लॉट सीमेत आहेत!'
-
- invalid-hex-code: 'अवैध हेक्स कोड: %s'
diff --git a/src/main/resources/languages/lt_LT.yml b/src/main/resources/languages/lt_LT.yml
deleted file mode 100644
index f518ba47..00000000
--- a/src/main/resources/languages/lt_LT.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>Prieiga uždrausta.'
- player-not-found: '<#fc1c1c>Žaidėjas nerastas.'
- config-reloaded: 'Konfigūracija įkelta iš naujo.'
- command-disabled: '<#fc1c1c>Ši komanda šiuo metu išjungta!'
-
- equipped: '%s įrengtas!'
- unequipped: 'Jūsų balionas buvo saugiai padėtas.'
- balloon-not-found: '<#fc1c1c>Balionas nerastas.'
- not-equipped: '<#fc1c1c>Jūs šiuo metu neturite įrengto baliono.'
-
- material-not-dyeable: 'Medžiaga %s negali būti nudažyta.'
- invalid-rgb-values: 'RGB reikšmės turi būti tarp 0 ir 255, kad būtų galiojančios.'
- balloon-not-set: 'Balionas %s neįrengtas konfigūracijoje!'
- material-not-set: 'Baliono %s medžiaga nėra nustatyta konfigūracijoje!'
- material-not-valid: 'Baliono %s medžiaga nėra galiojanti! Medžiaga: %s'
- material-is-not-valid: 'Medžiaga %s nėra galiojanti medžiaga!'
- invalid-item-meta: 'Elemento meta nėra galiojanti medžiagai: %s'
-
- no-balloons-registered: 'Nėra užregistruota jokių balionų! Negalima sukurti meniu be balionų.'
-
- configuration-folder-not-found: 'Konfigūracijos aplankas nerastas: %s'
- no-configuration-files-found: 'Konfigūracijos failų nerasta aplanke: %s'
- configuration-section-not-found: 'Konfigūracijos skyriaus nerasta failui: %s'
- balloon-type-not-found: 'Klaida apdorojant baliono tipą skyriui: %s faile: %s. Baliono tipas neegzistuoja arba yra nulinis.'
- balloon-process-error: 'Klaida apdorojant balioną skyriui: %s faile: %s. Klaida: %s'
-
- menu-slot-out-of-bounds: '%s meniu puslapio mygtukų slotų yra už ribų!'
-
- invalid-hex-code: 'Netinkamas heksadinis kodas: %s'
diff --git a/src/main/resources/languages/lv_LV.yml b/src/main/resources/languages/lv_LV.yml
deleted file mode 100644
index 5d9869c7..00000000
--- a/src/main/resources/languages/lv_LV.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>Piekļuve liegta.'
- player-not-found: '<#fc1c1c>Spēlētājs nav atrasts.'
- config-reloaded: 'Konfigurācija pārlādēta.'
- command-disabled: '<#fc1c1c>Šī komanda pašlaik ir atspējota!'
-
- equipped: '%s izvēlēts!'
- unequipped: 'Jūsu gaisa balons ir droši saglabāts.'
- balloon-not-found: '<#fc1c1c>Gaisa balons nav atrasts.'
- not-equipped: '<#fc1c1c>Jums pašlaik nav neviena gaisa balona izvēlēta.'
-
- material-not-dyeable: 'Materiālu %s nevar nokrāsot.'
- invalid-rgb-values: 'RGB vērtībām jābūt starp 0 un 255, lai tās būtu derīgas.'
- balloon-not-set: '%s gaisa balons nav iestatīts konfigurācijā!'
- material-not-set: '%s gaisa balona materiāls nav iestatīts konfigurācijā!'
- material-not-valid: '%s gaisa balona materiāls nav derīgs! Materiāls: %s'
- material-is-not-valid: 'Materiāls %s nav derīgs materiāls!'
- invalid-item-meta: 'Priekšmets Meta nav derīgs materiālam: %s'
-
- no-balloons-registered: 'Nav reģistrēts neviens gaisa balons! Nevar izveidot izvēlni bez gaisa baloniem.'
-
- configuration-folder-not-found: 'Konfigurācijas mape nav atrasta: %s'
- no-configuration-files-found: 'Konfigurācijas faili nav atrasti mapē: %s'
- configuration-section-not-found: 'Konfigurācijas sadaļa nav atrasta failam: %s'
- balloon-type-not-found: 'Kļūda apstrādājot gaisa balona veidu sadaļai: %s failā: %s. Gaisa balona tips neeksistē vai ir nulle.'
- balloon-process-error: 'Kļūda apstrādājot gaisa balonu sadaļai: %s failā: %s. Kļūda: %s'
-
- menu-slot-out-of-bounds: '%s izvēlnes lapas pogu slots ir ārpus robežām!'
-
- invalid-hex-code: 'Nederīgs hex kods: %s'
diff --git a/src/main/resources/languages/mk_MK.yml b/src/main/resources/languages/mk_MK.yml
deleted file mode 100644
index ed48a7c4..00000000
--- a/src/main/resources/languages/mk_MK.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>Пристапот е забранет.'
- player-not-found: '<#fc1c1c>Играчот не е пронајден.'
- config-reloaded: 'Конфигурацијата е превчитана.'
- command-disabled: '<#fc1c1c>Оваа команда е исклучена во моментов!'
-
- equipped: '%s опремен!'
- unequipped: 'Вашиот балон е безбедно зачуван.'
- balloon-not-found: '<#fc1c1c>Балонот не е пронајден.'
- not-equipped: '<#fc1c1c>Моментално немате опремен балон.'
-
- material-not-dyeable: 'Материјалот %s не може да се обои.'
- invalid-rgb-values: 'RGB вредностите мора да бидат помеѓу 0 и 255 за да бидат валидни.'
- balloon-not-set: 'Балонот %s не е поставен во конфигурацијата!'
- material-not-set: 'Материјалот на балонот %s не е поставен во конфигурацијата!'
- material-not-valid: 'Материјалот на балонот %s не е валиден! Материјал: %s'
- material-is-not-valid: 'Материјалот %s не е валиден материјал!'
- invalid-item-meta: 'ItemMeta не е валиден за материјалот: %s'
-
- no-balloons-registered: 'Не се регистрирани балони! Не може да се создаде мени без балони.'
-
- configuration-folder-not-found: 'Папката за конфигурација не е пронајдена: %s'
- no-configuration-files-found: 'Не се пронајдени конфигурациски датотеки во папката: %s'
- configuration-section-not-found: 'Секцијата за конфигурација не е пронајдена за датотеката: %s'
- balloon-type-not-found: 'Грешка при процесирањето на типот на балон за секцијата: %s во датотеката: %s. Типот на балон не постои или е нула.'
- balloon-process-error: 'Грешка при процесирањето на балон за секцијата: %s во датотеката: %s. Грешка: %s'
-
- menu-slot-out-of-bounds: '%s копчиња на страната на мениот се надвор од опсегот!'
-
- invalid-hex-code: 'Невалиден хекс код: %s'
diff --git a/src/main/resources/languages/ml_IN.yml b/src/main/resources/languages/ml_IN.yml
deleted file mode 100644
index 2e941aa7..00000000
--- a/src/main/resources/languages/ml_IN.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>അനുമതി നിരസ്കരിച്ചു.'
- player-not-found: '<#fc1c1c>കളിക്കാർ കണ്ടെത്തിയില്ല.'
- config-reloaded: 'കോൺഫിഗറേഷൻ പുനഃലോഡ് ചെയ്യപ്പെട്ടു.'
- command-disabled: '<#fc1c1c>ഈ കമാൻഡ് ഇപ്പോൾ നിരോധിച്ചിരിക്കുന്നു!'
-
- equipped: '%s സജ്ജമാക്കി!'
- unequipped: 'നിങ്ങളുടെ ബൽലൂൺ സുരക്ഷിതമായി സംരക്ഷിക്കപ്പെട്ടു.'
- balloon-not-found: '<#fc1c1c>ബൽലൂൺ കണ്ടെത്തിയില്ല.'
- not-equipped: '<#fc1c1c>നിങ്ങൾക്ക് നിലവിലുള്ള ബൽലൂൺ ഇപ്പോൾ ലഭ്യമല്ല.'
-
- material-not-dyeable: 'ഉള്ളടക്കം %s എന്ന ഉള്ളടക്കം മണിച്ചുകൊടുക്കാം അല്ല.'
- invalid-rgb-values: 'RGB മൂല്യങ്ങൾ സാധുവായിരിക്കണം എന്നതിനാൽ 0 കുറവും 255 കൂടിയിരിക്കണം.'
- balloon-not-set: '%s ബൽലൂൺ കോൺഫിഗറേഷനിൽ സജ്ജമാക്കിയില്ല!'
- material-not-set: '%s ബൽലൂൺ ഉള്ളടക്കം കോൺഫിഗറേഷനിൽ സജ്ജമാക്കിയില്ല!'
- material-not-valid: '%s ബൽലൂൺ ഉള്ളടക്കം സാധുവായ ഉള്ളടക്കം അല്ല! ഉള്ളടക്കം: %s'
- material-is-not-valid: 'ഉള്ളടക്കം %s സാധുവായ ഉള്ളടക്കം അല്ല!'
- invalid-item-meta: 'ഉള്ളടക്കം മെറ്റ സാധുവായ ഉള്ളടക്കംകൊണ്ടില്ല: %s'
-
- no-balloons-registered: 'രജിസ്ട്രുചെയ്ത ബൽലൂൺ ഇല്ല! ബൽലൂൺസ് ഇല്ലാതെ ഒരു മെനു സൃഷ്ടിക്കാനായില്ല.'
-
- configuration-folder-not-found: 'കോൺഫിഗറേഷൻ ഫോൾഡർ കണ്ടെത്തിയില്ല: %s'
- no-configuration-files-found: 'ഫോൾഡർനിൽ കോൺഫിഗറേഷൻ ഫയലുകൾ കണ്ടെത്തിയില്ല: %s'
- configuration-section-not-found: 'ഫയൽക്ക് കോൺഫിഗറേഷൻ വിഭാഗം കണ്ടെത്തിയില്ല: %s'
- balloon-type-not-found: 'വിഭാഗത്തിനുള്ള ബൽലൂൺ തരത്തിന്റെ പ്രോസസ്സിംഗ് പിഴവ്: %s ഫയലിൽ: %s. ബൽലൂൺ തരം നിലവിലില്ല അല്ലെങ്കിൽ നൽകുന്നത് ശൂന്യമാണ്.'
- balloon-process-error: 'വിഭാഗത്തിനുള്ള ബൽലൂൺ പ്രോസസ്സിംഗിന് പിഴവ്: %s ഫയലിൽ: %s. പിഴവ്: %s'
-
- menu-slot-out-of-bounds: '%s മെനു പേജ് ബട്ടൺ സ്ലോട്ടുകൾ പരിധിയിൽ വിരുദ്ധമാണ്!'
-
- invalid-hex-code: 'അസാധുവായ ഹെക്സ് കോഡ്: %s'
diff --git a/src/main/resources/languages/mn_MN.yml b/src/main/resources/languages/mn_MN.yml
deleted file mode 100644
index 2d1c1929..00000000
--- a/src/main/resources/languages/mn_MN.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>Хандах эрх алгагүй.'
- player-not-found: '<#fc1c1c>Тоглогч олдсонгүй.'
- config-reloaded: 'Тохиргоо дахин татаж авлагдлаа.'
- command-disabled: '<#fc1c1c>Энэ комманд одоогоор идэвхгүй байна!'
-
- equipped: '%s тохируулсан!'
- unequipped: 'Таны бөмбөг амжилттай хадгалагдсан байна.'
- balloon-not-found: '<#fc1c1c>Бөмбөг олдсонгүй.'
- not-equipped: '<#fc1c1c>Танд одоогоор суурилсан бөмбөг байхгүй байна.'
-
- material-not-dyeable: 'Материал %s харах боломжгүй.'
- invalid-rgb-values: 'RGB утгууд 0 ба 255 хооронд байх ёстой.'
- balloon-not-set: '%s бөмбөг тохиргоо дотор тохирохгүй байна!'
- material-not-set: '%s бөмбөгийн материал тохиргоо дотор тохирохгүй байна!'
- material-not-valid: '%s бөмбөгийн материал буруу бөгөөд! Материал: %s'
- material-is-not-valid: 'Материал %s буруу материал байна!'
- invalid-item-meta: 'ItemMeta %s материалд хүчин төгөлдөр биш байна.'
-
- no-balloons-registered: 'Тодорхойлолтоо хийгээгүй бөмбөг олдсонгүй! Бөмбөгтэй цэс үүсгэх боломжгүй.'
-
- configuration-folder-not-found: 'Тохиргоо хавтас олдсонгүй: %s'
- no-configuration-files-found: 'Тохиргоо файл олдсонгүй хавтас дотор: %s'
- configuration-section-not-found: 'Тохиргоо хэсэг олдсонгүй файлд: %s'
- balloon-type-not-found: 'Секц шинж чанарыг бөмбөг төрөлд байршуулахад алдаа гарлаа: %s файлаас: %s. Бөмбөгийн төрөл байхгүй буюу хоосон байна.'
- balloon-process-error: 'Секц бөмбөгийг боловсруулах үед алдаа гарлаа: %s файлаас: %s. Алдаа: %s'
-
- menu-slot-out-of-bounds: '%s цэсийн товчны слот баасан хязгаартай байна!'
-
- invalid-hex-code: 'Хүчин төгөлдөрт олдсонгүй хэкс код: %s'
diff --git a/src/main/resources/languages/mr_IN.yml b/src/main/resources/languages/mr_IN.yml
deleted file mode 100644
index 82c6e9d7..00000000
--- a/src/main/resources/languages/mr_IN.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>परवानगी नाकारली.'
- player-not-found: '<#fc1c1c>खेळाडू सापडला नाही.'
- config-reloaded: 'कॉन्फिगरेशन पुन्हा लोड केली गेली आहे.'
- command-disabled: '<#fc1c1c>ही कमाण्ड सध्या अक्षम केली आहे!'
-
- equipped: '%s सज्ज झाला आहे!'
- unequipped: 'तुमचं गुब्बा सुरक्षितपणे संग्रहित केलं गेलं आहे.'
- balloon-not-found: '<#fc1c1c>गुब्बा सापडला नाही.'
- not-equipped: '<#fc1c1c>तुम्हाला सध्या कोणत्याही गुब्बा सज्ज नाही.'
-
- material-not-dyeable: 'सामग्री %s फेरफटकारण्यायोग्य नाही.'
- invalid-rgb-values: 'RGB मूल्ये 0 आणि 255 दरम्यान असणे आवश्यक आहेत.'
- balloon-not-set: '%s गुब्बा कॉन्फिगरेशनमध्ये सेट केलं नाही!'
- material-not-set: 'गुब्बा %s सामग्री कॉन्फिगरेशनमध्ये सेट केली नाही!'
- material-not-valid: 'गुब्बा %s सामग्री वैध नाही! सामग्री: %s'
- material-is-not-valid: 'सामग्री %s वैध सामग्री नाही!'
- invalid-item-meta: 'मदत मेटा %s सामग्रीसाठी वैध नाही.'
-
- no-balloons-registered: 'कोणतेही गुब्बे नोंदणीकृत नाहीत! गुब्बे विहित केल्याशिवाय मेनू तयार केले जाऊ शकत नाहीत.'
-
- configuration-folder-not-found: 'कॉन्फिगरेशन फोल्डर सापडला नाही: %s'
- no-configuration-files-found: 'कोणतेही कॉन्फिगरेशन फाइल सापडली नाही: %s'
- configuration-section-not-found: 'फाइलसाठी कॉन्फिगरेशन खंड सापडला नाही: %s'
- balloon-type-not-found: 'सेक्शनसाठी गुब्बा प्रकार प्रोसेसिंग त्रुटी: %s फाइलमध्ये: %s. गुब्बा प्रकार अस्तित्वात नाही किंवा शून्य आहे.'
- balloon-process-error: 'सेक्शनसाठी गुब्बा प्रोसेसिंग त्रुटी: %s फाइलमध्ये: %s. त्रुटी: %s'
-
- menu-slot-out-of-bounds: '%s मेनू पृष्ठ बटण स्लॉट सीमा उत्तीर्ण!'
-
- invalid-hex-code: "अवैध हेक्स कोड: %s"
diff --git a/src/main/resources/languages/ms_MY.yml b/src/main/resources/languages/ms_MY.yml
deleted file mode 100644
index b3f0536f..00000000
--- a/src/main/resources/languages/ms_MY.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-messages:
- prefix: '[Bloons] '
- no-permission: '<#fc1c1c>Akses ditolak.'
- player-not-found: '<#fc1c1c>Pemain tidak dijumpai.'
- config-reloaded: '