diff --git a/pom.xml b/pom.xml
index 333783a0..ba045ed1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
net.jeqo
bloons
- 1.1.0-BETA
+ 1.1.1-BETA
jar
Bloons
diff --git a/src/main/java/net/jeqo/bloons/Bloons.java b/src/main/java/net/jeqo/bloons/Bloons.java
index eb840cb1..fef8336d 100644
--- a/src/main/java/net/jeqo/bloons/Bloons.java
+++ b/src/main/java/net/jeqo/bloons/Bloons.java
@@ -7,8 +7,8 @@
import net.jeqo.bloons.utils.UpdateChecker;
import net.jeqo.bloons.listeners.BalloonUnleashListener;
import net.jeqo.bloons.listeners.ListenerCore;
-import net.jeqo.bloons.listeners.MenuClickListener;
-import net.jeqo.bloons.listeners.PlayerListener;
+import net.jeqo.bloons.listeners.BalloonMenuListener;
+import net.jeqo.bloons.listeners.BalloonPlayerListener;
import net.jeqo.bloons.logger.Logger;
import net.jeqo.bloons.utils.Metrics;
import org.bukkit.plugin.java.JavaPlugin;
@@ -42,9 +42,9 @@ public void onEnable() {
setListenerCore(new ListenerCore(getInstance()));
// Stage listeners
- getListenerCore().stageListener(new PlayerListener());
+ getListenerCore().stageListener(new BalloonPlayerListener());
getListenerCore().stageListener(new BalloonUnleashListener());
- getListenerCore().stageListener(new MenuClickListener());
+ getListenerCore().stageListener(new BalloonMenuListener());
// Register all handlers
getListenerCore().registerListeners();
diff --git a/src/main/java/net/jeqo/bloons/commands/CommandEquip.java b/src/main/java/net/jeqo/bloons/commands/CommandEquip.java
index 0f645df7..0411d150 100644
--- a/src/main/java/net/jeqo/bloons/commands/CommandEquip.java
+++ b/src/main/java/net/jeqo/bloons/commands/CommandEquip.java
@@ -20,7 +20,7 @@ public class CommandEquip extends Command {
public CommandEquip(JavaPlugin plugin) {
super(plugin);
this.addCommandAlias("equip");
- this.setCommandDescription("Equips a balloon to you");
+ this.setCommandDescription("Equip a balloon");
this.setCommandSyntax("/bloons equip ");
this.setRequiredPermission(CommandPermission.EQUIP);
}
@@ -34,15 +34,15 @@ public boolean execute(CommandSender sender, String[] args) {
}
String balloonID = args[0];
- MessageTranslations messageTranslations = new MessageTranslations(this.plugin);
+ MessageTranslations messageTranslations = new MessageTranslations(this.getPlugin());
- if (!this.plugin.getConfig().contains("balloons." + balloonID)) {
+ if (!this.getPlugin().getConfig().contains("balloons." + balloonID)) {
Component balloonNotFoundMessage = messageTranslations.getSerializedString(messageTranslations.getMessage("prefix"), messageTranslations.getMessage("balloon-not-found"));
player.sendMessage(balloonNotFoundMessage);
return false;
}
- if (!player.hasPermission(this.plugin.getConfig().getString("balloons." + balloonID + ".permission", "balloons." + balloonID))) {
+ if (!player.hasPermission(this.getPlugin().getConfig().getString("balloons." + balloonID + ".permission", "balloons." + balloonID))) {
Component noPermissionMessage = messageTranslations.getSerializedString(messageTranslations.getMessage("prefix"), messageTranslations.getMessage("no-permission"));
player.sendMessage(noPermissionMessage);
return false;
@@ -54,7 +54,7 @@ public boolean execute(CommandSender sender, String[] args) {
if (singleBalloonEquipEvent.isCancelled()) return false;
- BalloonManagement.removeBalloon(player, Bloons.playerBalloons.get(player.getUniqueId()));
+ BalloonManagement.removeBalloon(player, Bloons.getPlayerBalloons().get(player.getUniqueId()));
SingleBalloon.checkBalloonRemovalOrAdd(player, balloonID);
player.playSound(player.getLocation(), Sound.ENTITY_CHICKEN_EGG, 1, 1);
diff --git a/src/main/java/net/jeqo/bloons/commands/CommandForceEquip.java b/src/main/java/net/jeqo/bloons/commands/CommandForceEquip.java
index 680a3c7f..ee799e59 100644
--- a/src/main/java/net/jeqo/bloons/commands/CommandForceEquip.java
+++ b/src/main/java/net/jeqo/bloons/commands/CommandForceEquip.java
@@ -18,7 +18,7 @@ public class CommandForceEquip extends Command {
public CommandForceEquip(JavaPlugin plugin) {
super(plugin);
this.addCommandAlias("fequip");
- this.setCommandDescription("Force equips a balloon to you");
+ this.setCommandDescription("Equip a balloon to a player");
this.setCommandSyntax("/bloons fequip ");
this.setRequiredPermission(CommandPermission.FORCE);
}
@@ -30,7 +30,7 @@ public boolean execute(CommandSender sender, String[] args) {
}
Player player = Bukkit.getPlayer(args[0]);
- MessageTranslations messageTranslations = new MessageTranslations(this.plugin);
+ MessageTranslations messageTranslations = new MessageTranslations(this.getPlugin());
if (player == null) {
Component playerNotFoundMessage = messageTranslations.getSerializedString(messageTranslations.getMessage("prefix"), messageTranslations.getMessage("player-not-found"));
@@ -39,7 +39,7 @@ public boolean execute(CommandSender sender, String[] args) {
}
String balloonID = args[1];
- if (!this.plugin.getConfig().contains("balloons." + balloonID)) {
+ if (!this.getPlugin().getConfig().contains("balloons." + balloonID)) {
Component balloonNotFoundMessage = messageTranslations.getSerializedString(messageTranslations.getMessage("prefix"), messageTranslations.getMessage("balloon-not-found"));
sender.sendMessage(balloonNotFoundMessage);
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 aef4069d..b9abb295 100644
--- a/src/main/java/net/jeqo/bloons/commands/CommandForceUnequip.java
+++ b/src/main/java/net/jeqo/bloons/commands/CommandForceUnequip.java
@@ -19,7 +19,7 @@ public class CommandForceUnequip extends Command {
public CommandForceUnequip(JavaPlugin plugin) {
super(plugin);
this.addCommandAlias("funequip");
- this.setCommandDescription("Force unequips a balloon that you have equipped");
+ this.setCommandDescription("Unequip a balloon to a player");
this.setCommandSyntax("/bloons funequip ");
this.setRequiredPermission(CommandPermission.FORCE);
}
@@ -27,27 +27,27 @@ public CommandForceUnequip(JavaPlugin plugin) {
@Override
public boolean execute(CommandSender sender, String[] args) {
Player player = Bukkit.getPlayer(args[0]);
- MessageTranslations messageTranslations = new MessageTranslations(this.plugin);
+ MessageTranslations messageTranslations = new MessageTranslations(this.getPlugin());
if (player == null) {
Component playerNotFoundMessage = messageTranslations.getSerializedString(messageTranslations.getMessage("prefix"), messageTranslations.getMessage("player-not-found"));
sender.sendMessage(playerNotFoundMessage);
return false;
}
- SingleBalloon balloon = Bloons.playerBalloons.get(player.getUniqueId());
- if (balloon == null) {
+ SingleBalloon singleBalloon = Bloons.getPlayerBalloons().get(player.getUniqueId());
+ if (singleBalloon == null) {
player.playSound(player.getLocation(), Sound.BLOCK_NOTE_BLOCK_DIDGERIDOO, 1, 1);
Component notEquippedMessage = messageTranslations.getSerializedString(messageTranslations.getMessage("prefix"), messageTranslations.getMessage("not-equipped"));
sender.sendMessage(notEquippedMessage);
return false;
}
- SingleBalloonForceUnequipEvent singleBalloonForceEquipEvent = new SingleBalloonForceUnequipEvent(player, balloon);
+ SingleBalloonForceUnequipEvent singleBalloonForceEquipEvent = new SingleBalloonForceUnequipEvent(player, singleBalloon);
singleBalloonForceEquipEvent.callEvent();
if (singleBalloonForceEquipEvent.isCancelled()) return false;
- BalloonManagement.removeBalloon(player, balloon);
+ BalloonManagement.removeBalloon(player, singleBalloon);
Component unequipSuccessfulMessage = messageTranslations.getSerializedString(messageTranslations.getMessage("prefix"), messageTranslations.getMessage("unequipped"));
sender.sendMessage(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 bbcc1597..b35400af 100644
--- a/src/main/java/net/jeqo/bloons/commands/CommandReload.java
+++ b/src/main/java/net/jeqo/bloons/commands/CommandReload.java
@@ -3,7 +3,7 @@
import net.jeqo.bloons.Bloons;
import net.jeqo.bloons.commands.manager.Command;
import net.jeqo.bloons.commands.manager.enums.CommandPermission;
-import net.jeqo.bloons.events.balloon.general.BloonsConfigReloadEvent;
+import net.jeqo.bloons.events.general.BloonsConfigReloadEvent;
import net.jeqo.bloons.utils.MessageTranslations;
import net.kyori.adventure.text.Component;
import org.bukkit.command.CommandSender;
@@ -15,14 +15,14 @@ public CommandReload(JavaPlugin plugin) {
super(plugin);
this.addCommandAlias("reload");
this.addCommandAlias("rl");
- this.setCommandDescription("Reloads the bloons config");
+ this.setCommandDescription("Reload the Bloons config");
this.setCommandSyntax("/bloons reload");
this.setRequiredPermission(CommandPermission.RELOAD);
}
@Override
public boolean execute(CommandSender sender, String[] args) {
- MessageTranslations messageTranslations = new MessageTranslations(this.plugin);
+ MessageTranslations messageTranslations = new MessageTranslations(this.getPlugin());
BloonsConfigReloadEvent bloonsConfigReloadEvent = new BloonsConfigReloadEvent();
bloonsConfigReloadEvent.callEvent();
diff --git a/src/main/java/net/jeqo/bloons/commands/CommandUnequip.java b/src/main/java/net/jeqo/bloons/commands/CommandUnequip.java
index 88647ecc..1286f662 100644
--- a/src/main/java/net/jeqo/bloons/commands/CommandUnequip.java
+++ b/src/main/java/net/jeqo/bloons/commands/CommandUnequip.java
@@ -18,7 +18,7 @@ public class CommandUnequip extends Command {
public CommandUnequip(JavaPlugin plugin) {
super(plugin);
this.addCommandAlias("unequip");
- this.setCommandDescription("Equips a balloon to you");
+ this.setCommandDescription("Unequip a balloon");
this.setCommandSyntax("/bloons unequip ");
this.setRequiredPermission(CommandPermission.UNEQUIP);
}
@@ -28,7 +28,7 @@ public boolean execute(CommandSender sender, String[] args) {
if (!(sender instanceof Player player)) return false;
SingleBalloon singleBalloon = Bloons.getPlayerBalloons().get(player.getUniqueId());
- MessageTranslations messageTranslations = new MessageTranslations(this.plugin);
+ MessageTranslations messageTranslations = new MessageTranslations(this.getPlugin());
if (singleBalloon == null) {
player.playSound(player.getLocation(), Sound.BLOCK_NOTE_BLOCK_DIDGERIDOO, 1, 1);
diff --git a/src/main/java/net/jeqo/bloons/commands/manager/Command.java b/src/main/java/net/jeqo/bloons/commands/manager/Command.java
index 46cdd64d..29bf55f7 100644
--- a/src/main/java/net/jeqo/bloons/commands/manager/Command.java
+++ b/src/main/java/net/jeqo/bloons/commands/manager/Command.java
@@ -15,14 +15,14 @@ public abstract class Command {
protected JavaPlugin plugin;
- @Setter
+ @Setter @Getter
private CommandPermission requiredPermission;
- @Setter
+ @Setter @Getter
private CommandAccess requiredAccess = CommandAccess.ENABLED;
- @Setter
+ @Setter @Getter
private String commandSyntax;
- @Setter
- private String commandDescription;
+ @Setter @Getter
+ public String commandDescription;
private final ArrayList commandAliases = new ArrayList<>();
public Command(JavaPlugin providedPlugin) {
@@ -38,6 +38,13 @@ public void addCommandAlias(String alias) {
this.getCommandAliases().add(alias);
}
+ /**
+ * What's executed on the command run
+ * @param sender The sender of the command
+ * @param args The arguments of the command
+ * @return Whether the command was executed successfully
+ * @throws Exception If an error occurs during command execution
+ */
public abstract boolean execute(CommandSender sender, String[] args) throws Exception;
/**
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 04f2730a..117d91f6 100644
--- a/src/main/java/net/jeqo/bloons/commands/manager/CommandCore.java
+++ b/src/main/java/net/jeqo/bloons/commands/manager/CommandCore.java
@@ -39,15 +39,17 @@ public CommandCore(JavaPlugin providedPlugin) {
this.commands = new ArrayList<>();
this.messageTranslations = new MessageTranslations(this.getPlugin());
+ // Add any commands you want registered here
addCommand(new CommandEquip(this.getPlugin()));
addCommand(new CommandForceEquip(this.getPlugin()));
addCommand(new CommandForceUnequip(this.getPlugin()));
addCommand(new CommandReload(this.getPlugin()));
addCommand(new CommandUnequip(this.getPlugin()));
+ // Register all commands staged
registerCommands();
- Objects.requireNonNull(this.plugin.getCommand("bloons")).setTabCompleter(new CommandTabCompleter());
+ Objects.requireNonNull(this.getPlugin().getCommand("bloons")).setTabCompleter(new CommandTabCompleter());
}
/**
@@ -57,6 +59,20 @@ public void registerCommands() {
Objects.requireNonNull(this.getPlugin().getCommand("bloons")).setExecutor(this);
}
+ /**
+ * Gets a commands description by its alias
+ * @param commandAlias The alias of the command
+ * @return The description of the command
+ */
+ public String getCommandDescription(String commandAlias) {
+ for (Command command : this.getCommands()) {
+ if (command.getCommandAliases().contains(commandAlias)) {
+ return command.getCommandDescription();
+ }
+ }
+ return null;
+ }
+
/**
* Adds a command to the commands list
* @param command The command to add
@@ -75,7 +91,7 @@ public boolean onCommand(@NotNull CommandSender sender, org.bukkit.command.@NotN
}
if (!player.hasPermission("bloons.menu")) {
- Component noPermission = messageTranslations.getSerializedString(messageTranslations.getMessage("prefix"), messageTranslations.getMessage("no-permission"));
+ Component noPermission = this.getMessageTranslations().getSerializedString(this.getMessageTranslations().getMessage("prefix"), this.getMessageTranslations().getMessage("no-permission"));
player.sendMessage(noPermission);
return true;
}
@@ -95,7 +111,7 @@ public boolean onCommand(@NotNull CommandSender sender, org.bukkit.command.@NotN
}
}
- new BalloonMenu(items, messageTranslations.getString("menu-title"), player);
+ new BalloonMenu(items, this.getMessageTranslations().getString("menu-title"), player);
return true;
}
@@ -107,7 +123,7 @@ public boolean onCommand(@NotNull CommandSender sender, org.bukkit.command.@NotN
for (Command currentCommand : getCommands()) {
if (currentCommand.getCommandAliases().contains(subcommand)) {
if (!meetsRequirements(currentCommand, sender)) {
- sender.sendMessage(messageTranslations.getSerializedString(messageTranslations.getMessage("prefix"), messageTranslations.getMessage("no-permission")));
+ sender.sendMessage(this.getMessageTranslations().getSerializedString(this.getMessageTranslations().getMessage("prefix"), this.getMessageTranslations().getMessage("no-permission")));
return false;
}
@@ -146,8 +162,8 @@ public boolean meetsRequirements(Command command, CommandSender sender) {
* @return Whether we should add the balloon to the menu
*/
private boolean shouldAddBalloon(Player player, String key) {
- if (messageTranslations.getString("hide-balloons-without-permission").equalsIgnoreCase("true")) {
- return player.hasPermission(messageTranslations.getString("balloons." + key + ".permission"));
+ if (this.getMessageTranslations().getString("hide-balloons-without-permission").equalsIgnoreCase("true")) {
+ return player.hasPermission(this.getMessageTranslations().getString("balloons." + key + ".permission"));
}
return true;
}
@@ -166,7 +182,7 @@ private ItemStack createBalloonItem(ConfigurationSection keySection, String key)
ItemMeta meta = item.getItemMeta();
if (meta == null) return null;
- meta.setLocalizedName(messageTranslations.getString("balloons." + key + ".id"));
+ meta.setLocalizedName(this.getMessageTranslations().getString("balloons." + key + ".id"));
setBalloonLore(meta, keySection);
setBalloonDisplayName(meta, keySection);
meta.setCustomModelData(keySection.getInt("custom-model-data"));
@@ -196,7 +212,7 @@ private void setBalloonLore(ItemMeta meta, ConfigurationSection keySection) {
*/
private void setBalloonDisplayName(ItemMeta meta, ConfigurationSection keySection) {
String name = keySection.getString("name");
- MessageTranslations messageTranslations = new MessageTranslations(this.plugin);
+ MessageTranslations messageTranslations = new MessageTranslations(this.getPlugin());
if (name != null) {
meta.displayName(messageTranslations.getSerializedString(name));
}
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 b02cc8af..17c2127c 100644
--- a/src/main/java/net/jeqo/bloons/commands/utils/ErrorHandling.java
+++ b/src/main/java/net/jeqo/bloons/commands/utils/ErrorHandling.java
@@ -1,37 +1,46 @@
package net.jeqo.bloons.commands.utils;
-import net.jeqo.bloons.utils.ColorManagement;
+import net.jeqo.bloons.Bloons;
+import net.jeqo.bloons.configuration.PluginConfiguration;
+import net.jeqo.bloons.utils.MessageTranslations;
import net.kyori.adventure.text.Component;
import org.bukkit.command.CommandSender;
public class ErrorHandling {
public static void usage(CommandSender sender) {
- sender.sendMessage("");
+ MessageTranslations messageTranslations = new MessageTranslations(Bloons.getInstance());
+
+ sender.sendMessage(Component.text(""));
if (sender.hasPermission("bloons.menu")) {
- Component menuMessage = Component.text(ColorManagement.fromHex("#ff00cc/#e30ed5b#c61cddl#aa2be6o#8e39eeo#7147f7n#5555ffs &7- Open the balloon menu"));
+ Component menuMessage = messageTranslations.getSerializedString(" /bloons - Open the balloon menu");
sender.sendMessage(menuMessage);
}
+
if (sender.hasPermission("bloons.equip")) {
- Component equipMessage = Component.text(ColorManagement.fromHex("#ff00cc/#e30ed5b#c61cddl#aa2be6o#8e39eeq#7147fui#5555ffp &7- Equip a balloon"));
+ Component equipMessage = messageTranslations.getSerializedString(" /bloons equip - " + Bloons.getCommandCore().getCommandDescription("equip"));
sender.sendMessage(equipMessage);
}
+
if (sender.hasPermission("bloons.unequip")) {
- Component unequipMessage = Component.text(ColorManagement.fromHex("#ff00cc/#e30ed5b#c61cddl#aa2be6o#8e39eeu#7147fni#5555ffp &7- Unequip a balloon"));
+ Component unequipMessage = messageTranslations.getSerializedString(" /bloons unequip - " + Bloons.getCommandCore().getCommandDescription("unequip"));
sender.sendMessage(unequipMessage);
}
+
if (sender.hasPermission("bloons.force")) {
- Component forceEquipMessage = Component.text(ColorManagement.fromHex(" #ff00cc/#f107d0b#e30ed5l#d515d9o#c61cddo#b823e1n#aa2be6s #9c32eaf#8e39eee#8040f2q#7147f7u#634efbi#5555ffp &7- Equip a balloon to a player"));
- Component forceUnequipMessage = Component.text(ColorManagement.fromHex(" #ff00cc/#f306d0b#e70cd3l#db12d7o#ce18dbo#c21eden#b624e2s #aa2be6f#9e31e9u#9237edn#863df0e#7943f4q#6d49f8u#614ffbi#5555ffp &7- Unequip a balloon from a player"));
+ Component forceEquipMessage = messageTranslations.getSerializedString(" /bloons fequip - " + Bloons.getCommandCore().getCommandDescription("fequip"));
+ Component forceUnequipMessage = messageTranslations.getSerializedString(" /bloons funequip - " + Bloons.getCommandCore().getCommandDescription("funequip"));
sender.sendMessage(forceEquipMessage);
sender.sendMessage(forceUnequipMessage);
}
+
if (sender.hasPermission("bloons.reload")) {
- Component reloadMessage = Component.text(ColorManagement.fromHex(" #ff00cc/#f107d0b#e30ed5l#d515d9o#c61cddo#b823e1n#aa2be6r #9c32eeo#8e39ee1#8040f2l#7147f7o#634efbi#5555ffd &7- Reload the Bloons config"));
+ Component reloadMessage = messageTranslations.getSerializedString(" /bloons reload - " + Bloons.getCommandCore().getCommandDescription("reload"));
sender.sendMessage(reloadMessage);
}
+
sender.sendMessage(Component.text(""));
- Component creditsMessage = Component.text(ColorManagement.fromHex(" #ff00ccB#f406cfl#e80bd3o#dd11d6o#d217dan#c61cdds #bb22e01#b028e4.#a42de70#9933eb.#8e39ee1#823ef5-#7744f5B#6c4af8E#604ffcT#5555ffA &7- &fMade by Jeqo"));
+ Component creditsMessage = messageTranslations.getSerializedString(" Bloons " + PluginConfiguration.getVersion() + " - Made by " + PluginConfiguration.DEVELOPER_CREDITS);
sender.sendMessage(creditsMessage);
sender.sendMessage(Component.text(""));
}
diff --git a/src/main/java/net/jeqo/bloons/configuration/PluginConfiguration.java b/src/main/java/net/jeqo/bloons/configuration/PluginConfiguration.java
index d204ff34..949834c7 100644
--- a/src/main/java/net/jeqo/bloons/configuration/PluginConfiguration.java
+++ b/src/main/java/net/jeqo/bloons/configuration/PluginConfiguration.java
@@ -6,7 +6,7 @@
* A class that contains configurations and information regarding the plugin
*/
public class PluginConfiguration {
- // The developer credits for the plugin, displayed on startup
+ // The developer credits for the plugin, displayed on startup and in the help command
public static final String DEVELOPER_CREDITS = "Jeqo and Gucci Fox";
/**
diff --git a/src/main/java/net/jeqo/bloons/events/BloonsEvent.java b/src/main/java/net/jeqo/bloons/events/BloonsEvent.java
index 4b2bd576..75ee2986 100644
--- a/src/main/java/net/jeqo/bloons/events/BloonsEvent.java
+++ b/src/main/java/net/jeqo/bloons/events/BloonsEvent.java
@@ -6,6 +6,10 @@
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();
diff --git a/src/main/java/net/jeqo/bloons/events/balloon/general/BloonsConfigReloadEvent.java b/src/main/java/net/jeqo/bloons/events/general/BloonsConfigReloadEvent.java
similarity index 68%
rename from src/main/java/net/jeqo/bloons/events/balloon/general/BloonsConfigReloadEvent.java
rename to src/main/java/net/jeqo/bloons/events/general/BloonsConfigReloadEvent.java
index d795d74e..34f0ccd0 100644
--- a/src/main/java/net/jeqo/bloons/events/balloon/general/BloonsConfigReloadEvent.java
+++ b/src/main/java/net/jeqo/bloons/events/general/BloonsConfigReloadEvent.java
@@ -1,4 +1,4 @@
-package net.jeqo.bloons.events.balloon.general;
+package net.jeqo.bloons.events.general;
import net.jeqo.bloons.events.BloonsEvent;
diff --git a/src/main/java/net/jeqo/bloons/listeners/MenuClickListener.java b/src/main/java/net/jeqo/bloons/listeners/BalloonMenuListener.java
similarity index 95%
rename from src/main/java/net/jeqo/bloons/listeners/MenuClickListener.java
rename to src/main/java/net/jeqo/bloons/listeners/BalloonMenuListener.java
index ba60cbcd..0c5020d1 100644
--- a/src/main/java/net/jeqo/bloons/listeners/MenuClickListener.java
+++ b/src/main/java/net/jeqo/bloons/listeners/BalloonMenuListener.java
@@ -2,7 +2,6 @@
import net.jeqo.bloons.Bloons;
import net.jeqo.bloons.balloon.SingleBalloon;
-import net.jeqo.bloons.events.balloon.SingleBalloonUnequipEvent;
import net.jeqo.bloons.gui.menus.BalloonMenu;
import net.jeqo.bloons.utils.BalloonManagement;
import net.jeqo.bloons.utils.ColorCodeConverter;
@@ -15,7 +14,7 @@
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
-public class MenuClickListener implements Listener {
+public class BalloonMenuListener implements Listener {
/**
* When a player interacts with the GUI menu, do the action required accordingly
@@ -52,7 +51,7 @@ public void onClick(InventoryClickEvent event){
if (displayName.equals(ColorCodeConverter.adventureToColorCode(messageTranslations.getString("buttons.unequip.name")))) event.setCancelled(true);
// Check if a balloon needs to be added or removed
- BalloonManagement.removeBalloon(player, Bloons.playerBalloons.get(player.getUniqueId()));
+ BalloonManagement.removeBalloon(player, Bloons.getPlayerBalloons().get(player.getUniqueId()));
SingleBalloon.checkBalloonRemovalOrAdd(player, localizedName);
// Send equipped message and play sound
@@ -102,7 +101,7 @@ else if(displayName.equals(ColorCodeConverter.adventureToColorCode(messageTransl
event.setCancelled(true);
if (!event.isShiftClick()) {
- SingleBalloon balloon = Bloons.playerBalloons.get(player.getUniqueId());
+ SingleBalloon balloon = Bloons.getPlayerBalloons().get(player.getUniqueId());
if (balloon == null) {
// If no balloon equipped, play sound and send message notifying them
diff --git a/src/main/java/net/jeqo/bloons/listeners/PlayerListener.java b/src/main/java/net/jeqo/bloons/listeners/BalloonPlayerListener.java
similarity index 77%
rename from src/main/java/net/jeqo/bloons/listeners/PlayerListener.java
rename to src/main/java/net/jeqo/bloons/listeners/BalloonPlayerListener.java
index 0633e2f1..670e58db 100644
--- a/src/main/java/net/jeqo/bloons/listeners/PlayerListener.java
+++ b/src/main/java/net/jeqo/bloons/listeners/BalloonPlayerListener.java
@@ -2,10 +2,8 @@
import net.jeqo.bloons.Bloons;
import net.jeqo.bloons.balloon.SingleBalloon;
-import net.jeqo.bloons.events.balloon.SingleBalloonEquipEvent;
import net.jeqo.bloons.events.balloon.SingleBalloonForceUnequipEvent;
import net.jeqo.bloons.events.balloon.SingleBalloonStoreEvent;
-import net.jeqo.bloons.events.balloon.SingleBalloonUnequipEvent;
import net.jeqo.bloons.utils.UpdateChecker;
import net.jeqo.bloons.logger.Logger;
import net.jeqo.bloons.utils.BalloonManagement;
@@ -20,14 +18,14 @@
import java.util.Objects;
-public class PlayerListener implements Listener {
+public class BalloonPlayerListener implements Listener {
/**
* When a player quits, make sure to despawn and store their balloon in storage
*/
@EventHandler
public void onQuit(PlayerQuitEvent e) {
- SingleBalloon owner = Bloons.playerBalloons.get(e.getPlayer().getUniqueId());
+ SingleBalloon owner = Bloons.getPlayerBalloons().get(e.getPlayer().getUniqueId());
SingleBalloonStoreEvent event = new SingleBalloonStoreEvent(e.getPlayer(), owner);
event.callEvent();
@@ -41,16 +39,16 @@ public void onQuit(PlayerQuitEvent e) {
@EventHandler
public void onJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
- String balloonID = Bloons.playerBalloonID.get(event.getPlayer().getUniqueId());
+ String balloonID = Bloons.getPlayerBalloonID().get(event.getPlayer().getUniqueId());
// If they have a balloon active, remove it and add it back to reduce issues
if (balloonID != null) {
- SingleBalloonForceUnequipEvent unequipEvent = new SingleBalloonForceUnequipEvent(player, Bloons.playerBalloons.get(player.getUniqueId()));
+ SingleBalloonForceUnequipEvent unequipEvent = new SingleBalloonForceUnequipEvent(player, Bloons.getPlayerBalloons().get(player.getUniqueId()));
unequipEvent.callEvent();
if (!unequipEvent.isCancelled()) return;
- BalloonManagement.removeBalloon(event.getPlayer(), Bloons.playerBalloons.get(event.getPlayer().getUniqueId()));
+ BalloonManagement.removeBalloon(event.getPlayer(), Bloons.getPlayerBalloons().get(event.getPlayer().getUniqueId()));
SingleBalloon.checkBalloonRemovalOrAdd(event.getPlayer(), balloonID);
}
@@ -70,7 +68,7 @@ public void onJoin(PlayerJoinEvent event) {
*/
@EventHandler
public void onDeath(PlayerDeathEvent event) {
- SingleBalloon balloonOwner = Bloons.playerBalloons.get(Objects.requireNonNull(event.getEntity().getPlayer()).getUniqueId());
+ SingleBalloon balloonOwner = Bloons.getPlayerBalloons().get(Objects.requireNonNull(event.getEntity().getPlayer()).getUniqueId());
SingleBalloonForceUnequipEvent unequipEvent = new SingleBalloonForceUnequipEvent(event.getEntity().getPlayer(), balloonOwner);
unequipEvent.callEvent();
@@ -83,7 +81,7 @@ public void onDeath(PlayerDeathEvent event) {
*/
@EventHandler
public void onRespawn(PlayerRespawnEvent event) {
- String balloonID = Bloons.playerBalloonID.get(event.getPlayer().getUniqueId());
+ String balloonID = Bloons.getPlayerBalloonID().get(event.getPlayer().getUniqueId());
if (balloonID != null) {
SingleBalloon.checkBalloonRemovalOrAdd(event.getPlayer(), balloonID);
@@ -95,8 +93,8 @@ public void onRespawn(PlayerRespawnEvent event) {
*/
@EventHandler
public void onWorldChange(PlayerChangedWorldEvent event) {
- SingleBalloon balloonOwner = Bloons.playerBalloons.get(event.getPlayer().getUniqueId());
- String balloonID = Bloons.playerBalloonID.get(event.getPlayer().getUniqueId());
+ SingleBalloon balloonOwner = Bloons.getPlayerBalloons().get(event.getPlayer().getUniqueId());
+ String balloonID = Bloons.getPlayerBalloonID().get(event.getPlayer().getUniqueId());
SingleBalloonStoreEvent storeEvent = new SingleBalloonStoreEvent(event.getPlayer(), balloonOwner);
storeEvent.callEvent();
@@ -106,12 +104,12 @@ public void onWorldChange(PlayerChangedWorldEvent event) {
BalloonManagement.storeBalloon(balloonOwner);
if (balloonID != null) {
- SingleBalloonForceUnequipEvent unequipEvent = new SingleBalloonForceUnequipEvent(event.getPlayer(), Bloons.playerBalloons.get(event.getPlayer().getUniqueId()));
+ SingleBalloonForceUnequipEvent unequipEvent = new SingleBalloonForceUnequipEvent(event.getPlayer(), Bloons.getPlayerBalloons().get(event.getPlayer().getUniqueId()));
unequipEvent.callEvent();
if (unequipEvent.isCancelled()) return;
- BalloonManagement.removeBalloon(event.getPlayer(), Bloons.playerBalloons.get(event.getPlayer().getUniqueId()));
+ BalloonManagement.removeBalloon(event.getPlayer(), Bloons.getPlayerBalloons().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 6c1a8400..f0e3806f 100644
--- a/src/main/java/net/jeqo/bloons/logger/Logger.java
+++ b/src/main/java/net/jeqo/bloons/logger/Logger.java
@@ -30,6 +30,11 @@ public static void logToPlayer(LoggingLevel level, Player player, String message
player.sendMessage(component);
}
+ /**
+ * Logs a message to the specified player with the plugin prefix
+ * @param player The player to log the message to
+ * @param message The message to log
+ */
public static void logToPlayer(Player player, String message) {
MessageTranslations messageTranslations = new MessageTranslations(Bloons.getInstance());
Component component = messageTranslations.getSerializedString(messageTranslations.getMessage("prefix") + " " + message);
diff --git a/src/main/java/net/jeqo/bloons/utils/BalloonManagement.java b/src/main/java/net/jeqo/bloons/utils/BalloonManagement.java
index 72fc0c49..dbd220b7 100644
--- a/src/main/java/net/jeqo/bloons/utils/BalloonManagement.java
+++ b/src/main/java/net/jeqo/bloons/utils/BalloonManagement.java
@@ -6,6 +6,9 @@
import net.jeqo.bloons.events.balloon.SingleBalloonUnequipEvent;
import org.bukkit.entity.Player;
+/**
+ * A class to manage balloons and their removal
+ */
public class BalloonManagement {
/**
@@ -22,8 +25,8 @@ public static void removeBalloon(Player player, SingleBalloon owner) {
owner.spawnRemoveParticle();
owner.cancel();
- Bloons.playerBalloons.remove(player.getUniqueId());
- Bloons.playerBalloonID.remove(player.getUniqueId());
+ Bloons.getPlayerBalloons().remove(player.getUniqueId());
+ Bloons.getPlayerBalloonID().remove(player.getUniqueId());
}
}
@@ -40,8 +43,8 @@ public static void quickRemoveBalloon(Player player, SingleBalloon owner) {
if (event.isCancelled()) return;
owner.cancel();
- Bloons.playerBalloons.remove(player.getUniqueId());
- Bloons.playerBalloonID.remove(player.getUniqueId());
+ Bloons.getPlayerBalloons().remove(player.getUniqueId());
+ Bloons.getPlayerBalloonID().remove(player.getUniqueId());
}
}
diff --git a/src/main/java/net/jeqo/bloons/utils/ColorCodeConverter.java b/src/main/java/net/jeqo/bloons/utils/ColorCodeConverter.java
index e3a22502..81d01b4c 100644
--- a/src/main/java/net/jeqo/bloons/utils/ColorCodeConverter.java
+++ b/src/main/java/net/jeqo/bloons/utils/ColorCodeConverter.java
@@ -10,6 +10,7 @@ public class ColorCodeConverter {
private static final Map colorCodes = new HashMap<>();
+ // Add any adventure and minecraft equivalent color codes here
static {
colorCodes.put("", "§0");
colorCodes.put("", "§1");
diff --git a/src/main/java/net/jeqo/bloons/utils/MessageTranslations.java b/src/main/java/net/jeqo/bloons/utils/MessageTranslations.java
index cd08e819..37796a33 100644
--- a/src/main/java/net/jeqo/bloons/utils/MessageTranslations.java
+++ b/src/main/java/net/jeqo/bloons/utils/MessageTranslations.java
@@ -4,30 +4,69 @@
import net.kyori.adventure.text.minimessage.MiniMessage;
import org.bukkit.plugin.java.JavaPlugin;
+/**
+ * A utility class intended to get messages from the config.yml file
+ *
+ * @param instance The instance of the plugin
+ */
public record MessageTranslations(JavaPlugin instance) {
+ /**
+ * Get a message from the config.yml file
+ * @param id The ID of the message
+ * @param arg The argument to format the message with
+ * @return The formatted message
+ */
public String getMessage(String id, String arg) {
return String.format(this.instance.getConfig().getString("messages." + id, ""), arg);
}
+ /**
+ * Get a message from the config.yml file
+ * @param id The ID of the message
+ * @return The message as a string
+ */
public String getMessage(String id) {
return this.instance.getConfig().getString("messages." + id, "");
}
+ /**
+ * 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
+ * @param messageSuffix The suffix of the message
+ * @return The formatted message as a 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
+ * @return The formatted message as a 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
+ * @return The string at the specified path
+ */
public String getString(String path) {
return this.instance.getConfig().getString(path);
}
+ /**
+ * Get an integer from the config.yml file
+ * @param path The path to the integer
+ * @return The integer at the specified path
+ */
public Integer getInt(String path) {
return this.instance.getConfig().getInt(path);
}
diff --git a/src/main/java/net/jeqo/bloons/utils/UpdateChecker.java b/src/main/java/net/jeqo/bloons/utils/UpdateChecker.java
index a5d93558..c047446c 100644
--- a/src/main/java/net/jeqo/bloons/utils/UpdateChecker.java
+++ b/src/main/java/net/jeqo/bloons/utils/UpdateChecker.java
@@ -1,5 +1,7 @@
package net.jeqo.bloons.utils;
+import lombok.Getter;
+import lombok.Setter;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;
import java.io.IOException;
@@ -12,7 +14,9 @@
* A utility class intended to check for updates on the SpigotMC website
*/
public class UpdateChecker {
+ @Getter
private final JavaPlugin plugin;
+ @Getter
private final int resourceId;
public UpdateChecker(JavaPlugin plugin, int resourceId) {
@@ -25,13 +29,13 @@ public UpdateChecker(JavaPlugin plugin, int resourceId) {
* @param consumer The consumer to accept the version
*/
public void getVersion(final Consumer consumer) {
- Bukkit.getScheduler().runTaskAsynchronously(this.plugin, () -> {
- try (InputStream inputStream = new URL("https://api.spigotmc.org/legacy/update.php?resource=" + this.resourceId).openStream(); Scanner scanner = new Scanner(inputStream)) {
+ Bukkit.getScheduler().runTaskAsynchronously(this.getPlugin(), () -> {
+ try (InputStream inputStream = new URL("https://api.spigotmc.org/legacy/update.php?resource=" + this.getResourceId()).openStream(); Scanner scanner = new Scanner(inputStream)) {
if (scanner.hasNext()) {
consumer.accept(scanner.next());
}
} catch (IOException exception) {
- plugin.getLogger().info("[Bloons] Unable to check for updates: " + exception.getMessage());
+ this.getPlugin().getLogger().info("[Bloons] Unable to check for updates: " + exception.getMessage());
}
});
}
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index fcc7874d..67da6a7c 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -1,6 +1,6 @@
# --------------------------------------------------#
#
-# Bloons 1.1.0-BETA
+# Bloons 1.1.1-BETA
# Made by Jeqo
#
# Wiki: https://jeqo.net/wiki/bloons
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index b08b2945..25a5b2f0 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -3,10 +3,10 @@ version: '${project.version}'
main: net.jeqo.bloons.Bloons
api-version: 1.18
prefix: Bloons
-authors: [ Jeqo ]
+authors: [ Jeqo, Gucci Fox ]
description: A unique balloons plugin.
-website: https://jeqo.net
+website: https://jeqo.net/bloons
commands:
bloons:
aliases: [balloons, b]
- description: The central command to access the bloons commands.
\ No newline at end of file
+ description: The central command to access the Bloons commands.
\ No newline at end of file