Skip to content

Commit

Permalink
Fix run-paper Maven task and local dev tools
Browse files Browse the repository at this point in the history
Remove unwanted translations

Fix colour translations and update config colours

Update translation fallback

Add log for unreleased version

Bump pom.xml version

Update gitignore to incude server files from run task
  • Loading branch information
IanTapply22 committed Jan 29, 2025
1 parent 850116f commit d7ee971
Show file tree
Hide file tree
Showing 90 changed files with 156 additions and 2,191 deletions.
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -111,3 +111,5 @@ buildNumber.properties

# Common working directory
run/

server/
6 changes: 3 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>net.jeqo</groupId>
<artifactId>bloons</artifactId>
<version>2.1.0</version>
<version>2.1.1</version>
<packaging>jar</packaging>

<name>Bloons</name>
Expand Down Expand Up @@ -56,11 +56,11 @@
<plugin>
<groupId>blue.lhf</groupId>
<artifactId>run-paper-maven-plugin</artifactId>
<version>1.1.0</version>
<version>1.1.1</version>
<configuration>
<minecraftVersion>1.21.4</minecraftVersion>
<acceptEula>true</acceptEula>
<serverDirectory>run</serverDirectory>
<serverDirectory>../server</serverDirectory>
<jvmFlags>
<flag>-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:25566</flag>
</jvmFlags>
Expand Down
40 changes: 36 additions & 4 deletions src/main/java/net/jeqo/bloons/Bloons.java
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand All @@ -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;
}
}
11 changes: 6 additions & 5 deletions src/main/java/net/jeqo/bloons/commands/CommandEquip.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import net.jeqo.bloons.management.SingleBalloonManagement;
import net.jeqo.bloons.message.MessageTranslations;
import net.jeqo.bloons.management.MultipartBalloonManagement;
import org.bukkit.ChatColor;
import org.bukkit.Sound;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
Expand Down Expand Up @@ -49,7 +50,7 @@ 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)) {
String balloonNotFoundMessage = Languages.getMessage("prefix") + Languages.getMessage("balloon-not-found");
player.sendMessage(balloonNotFoundMessage);
player.sendMessage(ChatColor.translateAlternateColorCodes('&', balloonNotFoundMessage));
return false;
}

Expand All @@ -59,15 +60,15 @@ public boolean execute(CommandSender sender, String[] args) {
if (singleBalloonType != null) {
if (!player.hasPermission(singleBalloonType.getPermission())) {
String noPermissionMessage = Languages.getMessage("prefix") + Languages.getMessage("no-permission");
player.sendMessage(noPermissionMessage);
player.sendMessage(ChatColor.translateAlternateColorCodes('&', noPermissionMessage));
return false;
}
}

if (multipartBalloonType != null) {
if (!player.hasPermission(multipartBalloonType.getPermission())) {
String noPermissionMessage = Languages.getMessage("prefix") + Languages.getMessage("no-permission");
player.sendMessage(noPermissionMessage);
player.sendMessage(ChatColor.translateAlternateColorCodes('&', noPermissionMessage));
return false;
}
}
Expand All @@ -92,7 +93,7 @@ public boolean execute(CommandSender sender, String[] args) {
MultipartBalloonManagement.setPlayerBalloon(player.getUniqueId(), balloon);

String equippedMessage = Languages.getMessage("prefix") + String.format(Languages.getMessage("equipped"), type.getName());
player.sendMessage(equippedMessage);
player.sendMessage(ChatColor.translateAlternateColorCodes('&', equippedMessage));

// If the balloon ID is a single balloon type, equip the balloon with the single associated methods
} else {
Expand All @@ -101,7 +102,7 @@ public boolean execute(CommandSender sender, String[] args) {
SingleBalloon.checkBalloonRemovalOrAdd(player, balloonID);

String equippedMessage = Languages.getMessage("prefix") + String.format(Languages.getMessage("equipped"), singleBalloonType.getName());
player.sendMessage(equippedMessage);
player.sendMessage(ChatColor.translateAlternateColorCodes('&', equippedMessage));
}

// Play a sound regardless of the balloon type and when it executes successfully
Expand Down
9 changes: 5 additions & 4 deletions src/main/java/net/jeqo/bloons/commands/CommandForceEquip.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import net.jeqo.bloons.message.MessageTranslations;
import net.jeqo.bloons.management.MultipartBalloonManagement;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
Expand Down Expand Up @@ -47,7 +48,7 @@ public boolean execute(CommandSender sender, String[] args) {
// If the player isn't found, send a message to the sender
if (player == null) {
String playerNotFoundMessage = Languages.getMessage("prefix") + Languages.getMessage("player-not-found");
sender.sendMessage(playerNotFoundMessage);
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', playerNotFoundMessage));
return false;
}

Expand All @@ -56,7 +57,7 @@ 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)) {
String balloonNotFoundMessage = Languages.getMessage("prefix") + Languages.getMessage("balloon-not-found");
sender.sendMessage(balloonNotFoundMessage);
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', balloonNotFoundMessage));
return false;
}

Expand All @@ -80,7 +81,7 @@ public boolean execute(CommandSender sender, String[] args) {
MultipartBalloonManagement.setPlayerBalloon(player.getUniqueId(), balloon);

String equippedMessage = Languages.getMessage("prefix") + String.format(Languages.getMessage("equipped"), type.getName());
player.sendMessage(equippedMessage);
player.sendMessage(ChatColor.translateAlternateColorCodes('&', equippedMessage));

// If the balloon ID is a single balloon type, equip the balloon with the single associated methods
} else {
Expand All @@ -91,7 +92,7 @@ public boolean execute(CommandSender sender, String[] args) {
SingleBalloon.checkBalloonRemovalOrAdd(player, balloonID);

String equippedMessage = Languages.getMessage("prefix") + String.format(Languages.getMessage("equipped"), singleBalloonType.getName());
player.sendMessage(equippedMessage);
player.sendMessage(ChatColor.translateAlternateColorCodes('&', equippedMessage));
}

return false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import net.jeqo.bloons.message.MessageTranslations;
import net.jeqo.bloons.management.MultipartBalloonManagement;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
Expand All @@ -32,7 +33,7 @@ public boolean execute(CommandSender sender, String[] args) {
// If the specified player doesn't exist, send a message to the sender
if (player == null) {
String playerNotFoundMessage = Languages.getMessage("prefix") + Languages.getMessage("player-not-found");
sender.sendMessage(playerNotFoundMessage);
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', playerNotFoundMessage));
return false;
}

Expand All @@ -42,7 +43,7 @@ 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) {
String notEquippedMessage = Languages.getMessage("prefix") + Languages.getMessage("not-equipped");
player.sendMessage(notEquippedMessage);
player.sendMessage(ChatColor.translateAlternateColorCodes('&', notEquippedMessage));
return false;
}

Expand All @@ -56,7 +57,7 @@ public boolean execute(CommandSender sender, String[] args) {
}

String unequipSuccessfulMessage = Languages.getMessage("prefix") + Languages.getMessage("unequipped");
sender.sendMessage(unequipSuccessfulMessage);
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', unequipSuccessfulMessage));
return false;
}
}
3 changes: 2 additions & 1 deletion src/main/java/net/jeqo/bloons/commands/CommandReload.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import net.jeqo.bloons.commands.manager.types.CommandPermission;
import net.jeqo.bloons.message.Languages;
import net.jeqo.bloons.message.MessageTranslations;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.java.JavaPlugin;

Expand Down Expand Up @@ -39,7 +40,7 @@ public boolean execute(CommandSender sender, String[] args) {
Bloons.getBalloonCore().initialize();

String configReloadedMessage = Languages.getMessage("prefix") + Languages.getMessage("config-reloaded");
sender.sendMessage(configReloadedMessage);
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', configReloadedMessage));

return false;
}
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/net/jeqo/bloons/commands/CommandUnequip.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import net.jeqo.bloons.management.SingleBalloonManagement;
import net.jeqo.bloons.message.MessageTranslations;
import net.jeqo.bloons.management.MultipartBalloonManagement;
import org.bukkit.ChatColor;
import org.bukkit.Sound;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
Expand Down Expand Up @@ -38,12 +39,11 @@ 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) {
String notEquippedMessage = Languages.getMessage("prefix") + Languages.getMessage("not-equipped");
player.sendMessage(notEquippedMessage);
player.sendMessage(ChatColor.translateAlternateColorCodes('&', notEquippedMessage));
return false;
}

Expand All @@ -59,7 +59,7 @@ public boolean execute(CommandSender sender, String[] args) {
}

String unequipSuccessfulMessage = Languages.getMessage("prefix") + Languages.getMessage("unequipped");
player.sendMessage(unequipSuccessfulMessage);
player.sendMessage(ChatColor.translateAlternateColorCodes('&', unequipSuccessfulMessage));
player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_HURT_SWEET_BERRY_BUSH, 1, 1);
return false;
}
Expand Down
37 changes: 21 additions & 16 deletions src/main/java/net/jeqo/bloons/commands/manager/CommandCore.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
import net.jeqo.bloons.colors.Color;
import net.jeqo.bloons.message.Languages;
import net.jeqo.bloons.message.MessageTranslations;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
Expand Down Expand Up @@ -104,7 +105,7 @@ public boolean onCommand(@NotNull CommandSender sender, org.bukkit.command.@NotN

if (!player.hasPermission("bloons.menu")) {
String noPermission = Languages.getMessage("prefix") + Languages.getMessage("no-permission");
player.sendMessage(noPermission);
player.sendMessage(ChatColor.translateAlternateColorCodes('&', noPermission));
return true;
}

Expand All @@ -114,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);
}
}
}

Expand Down Expand Up @@ -312,7 +317,7 @@ private void setBalloonLore(ItemMeta meta, MultipartBalloonType multipartBalloon
private void setBalloonDisplayName(ItemMeta meta, SingleBalloonType singleBalloonType) {
String name = singleBalloonType.getName();
if (name != null) {
meta.setDisplayName(name);
meta.setDisplayName(ChatColor.translateAlternateColorCodes('&', name));
}
}

Expand All @@ -324,7 +329,7 @@ private void setBalloonDisplayName(ItemMeta meta, SingleBalloonType singleBalloo
private void setBalloonDisplayName(ItemMeta meta, MultipartBalloonType multipartBalloonType) {
String name = multipartBalloonType.getName();
if (name != null) {
meta.setDisplayName(name);
meta.setDisplayName(ChatColor.translateAlternateColorCodes('&', name));
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -89,6 +90,6 @@ public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Comman
public List<String> getBalloonTabComplete() {
List<String> singleBalloons = ConfigConfiguration.getSingleBalloons().stream().map(singleBalloonType -> singleBalloonType.getId().toLowerCase()).toList();
List<String> 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();
}
}
7 changes: 4 additions & 3 deletions src/main/java/net/jeqo/bloons/gui/menus/BalloonMenu.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -57,23 +58,23 @@ 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.setDisplayName(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);

// Create previous page button
ItemStack prevPage = new ItemStack(Material.valueOf(this.getMessageTranslations().getString("buttons.previous-page.material")));
ItemMeta prevMeta = prevPage.getItemMeta();
assert prevMeta != null;
prevMeta.setDisplayName(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);

// Create remove/unequip balloon button
ItemStack removeBalloon = new ItemStack(Material.valueOf(this.getMessageTranslations().getString("buttons.unequip.material")));
ItemMeta removeMeta = removeBalloon.getItemMeta();
assert removeMeta != null;
removeMeta.setDisplayName(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);

Expand Down
Loading

0 comments on commit d7ee971

Please sign in to comment.