From 3c5276342d1dcda9f1d9eb7fe16d45381b0d141e Mon Sep 17 00:00:00 2001 From: RonaldZav <100430955+RonaldZav@users.noreply.github.com> Date: Sat, 31 Jan 2026 19:34:35 -0500 Subject: [PATCH 1/3] Updated to SpigotMC 1.21 --- pom.xml | 26 +++------------ .../xanium/gemseconomy/nbt/NBTReflection.java | 8 ++++- .../me/xanium/gemseconomy/nbt/NMSVersion.java | 33 +++++++++++++++++++ src/main/resources/plugin.yml | 2 +- 4 files changed, 46 insertions(+), 23 deletions(-) diff --git a/pom.xml b/pom.xml index 1558d83..a72ce88 100644 --- a/pom.xml +++ b/pom.xml @@ -19,8 +19,8 @@ UTF-8 UTF-8 - 1.8 - 1.8 + 21 + 21 ${project.basedir}${file.separator}libs ${project.build.directory} ${project.build.finalName} @@ -33,8 +33,8 @@ maven-compiler-plugin 3.8.0 - 1.8 - 1.8 + 21 + 21 @@ -76,23 +76,13 @@ jitpack.io https://jitpack.io - - reserve-repo - https://dl.bintray.com/theneweconomy/java/ - - - org.spigotmc - spigot - 1.16.4-R0.1-SNAPSHOT - provided - org.spigotmc spigot-api - 1.16.4-R0.1-SNAPSHOT + 1.21.1-R0.1-SNAPSHOT provided @@ -107,12 +97,6 @@ 3.4.5 compile - - net.tnemc - Reserve - 0.1.1.0 - provided - \ No newline at end of file diff --git a/src/main/java/me/xanium/gemseconomy/nbt/NBTReflection.java b/src/main/java/me/xanium/gemseconomy/nbt/NBTReflection.java index e3a60a4..ea61b06 100644 --- a/src/main/java/me/xanium/gemseconomy/nbt/NBTReflection.java +++ b/src/main/java/me/xanium/gemseconomy/nbt/NBTReflection.java @@ -29,7 +29,13 @@ private static Class getCraftItemstack() { @SuppressWarnings("rawtypes") private static Object getNewNBTTag() { try { - Class c = Class.forName("net.minecraft.server." + GemsEconomy.getInstance().getNmsVersion().getVersionString() + ".NBTTagCompound"); + String version = GemsEconomy.getInstance().getNmsVersion().getVersionString(); + Class c; + if (version.startsWith("v1_17") || version.startsWith("v1_18") || version.startsWith("v1_19") || version.startsWith("v1_20") || version.startsWith("v1_21")) { + c = Class.forName("net.minecraft.nbt.NBTTagCompound"); + } else { + c = Class.forName("net.minecraft.server." + version + ".NBTTagCompound"); + } return c.newInstance(); } catch (Exception ex) { ex.printStackTrace(); diff --git a/src/main/java/me/xanium/gemseconomy/nbt/NMSVersion.java b/src/main/java/me/xanium/gemseconomy/nbt/NMSVersion.java index 882d3f5..711973e 100644 --- a/src/main/java/me/xanium/gemseconomy/nbt/NMSVersion.java +++ b/src/main/java/me/xanium/gemseconomy/nbt/NMSVersion.java @@ -42,6 +42,28 @@ public class NMSVersion { public static final String V1_16_R3 = "v1_16_R3"; + public static final String V1_17_R1 = "v1_17_R1"; + + public static final String V1_18_R1 = "v1_18_R1"; + + public static final String V1_18_R2 = "v1_18_R2"; + + public static final String V1_19_R1 = "v1_19_R1"; + + public static final String V1_19_R2 = "v1_19_R2"; + + public static final String V1_19_R3 = "v1_19_R3"; + + public static final String V1_20_R1 = "v1_20_R1"; + + public static final String V1_20_R2 = "v1_20_R2"; + + public static final String V1_20_R3 = "v1_20_R3"; + + public static final String V1_20_R4 = "v1_20_R4"; + + public static final String V1_21_R1 = "v1_21_R1"; + private Map versionMap; private int versionID; @@ -90,6 +112,17 @@ private void loadVersions() { registerVersion(V1_16_R1); registerVersion(V1_16_R2); registerVersion(V1_16_R3); + registerVersion(V1_17_R1); + registerVersion(V1_18_R1); + registerVersion(V1_18_R2); + registerVersion(V1_19_R1); + registerVersion(V1_19_R2); + registerVersion(V1_19_R3); + registerVersion(V1_20_R1); + registerVersion(V1_20_R2); + registerVersion(V1_20_R3); + registerVersion(V1_20_R4); + registerVersion(V1_21_R1); } private void registerVersion(String string) { diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index dcf3a97..07967d1 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -5,7 +5,7 @@ author: Xanium description: A multi-currency economy plugin for spigot servers! website: https://www.spigotmc.org/resources/gemseconomy.19655/ load: STARTUP -api-version: 1.16 +api-version: 1.21 loadbefore: - ItemFrameShops softdepend: [Vault] From 64d77215dc021d4c024b1643435a50a3050e6703 Mon Sep 17 00:00:00 2001 From: RonaldZav <100430955+RonaldZav@users.noreply.github.com> Date: Sat, 31 Jan 2026 20:11:31 -0500 Subject: [PATCH 2/3] Upgrade MySQL connection --- .../me/xanium/gemseconomy/GemsEconomy.java | 31 +++++++++++++++++-- .../commands/GemsEconomyCommand.java | 27 ++++++++++++++++ .../xanium/gemseconomy/data/MySQLStorage.java | 18 ++++++++++- src/main/resources/plugin.yml | 4 +++ 4 files changed, 77 insertions(+), 3 deletions(-) create mode 100644 src/main/java/me/xanium/gemseconomy/commands/GemsEconomyCommand.java diff --git a/src/main/java/me/xanium/gemseconomy/GemsEconomy.java b/src/main/java/me/xanium/gemseconomy/GemsEconomy.java index e974bc1..d724032 100644 --- a/src/main/java/me/xanium/gemseconomy/GemsEconomy.java +++ b/src/main/java/me/xanium/gemseconomy/GemsEconomy.java @@ -103,6 +103,7 @@ public void onEnable() { initializeDataStore(getConfig().getString("storage"), true); getServer().getPluginManager().registerEvents(new EconomyListener(), this); + getCommand("gemseconomy").setExecutor(new GemsEconomyCommand()); getCommand("balance").setExecutor(new BalanceCommand()); getCommand("baltop").setExecutor(new BalanceTopCommand()); getCommand("economy").setExecutor(new EconomyCommand()); @@ -143,6 +144,32 @@ public void onDisable() { } } + public void reloadLanguages() { + // TODO: Implement language reloading logic here + } + + public void reloadConfiguration() { + // Reload config.yml + reloadConfig(); + + // Update settings + setDebug(getConfig().getBoolean("debug")); + setVault(getConfig().getBoolean("vault")); + setLogging(getConfig().getBoolean("transaction_log")); + setCheques(getConfig().getBoolean("cheque.enabled")); + + // Re-initialize DataStore + if (getDataStore() != null) { + getDataStore().close(); + } + + // Clear old data + DataStorage.getMethods().clear(); + + // Re-initialize with new config + initializeDataStore(getConfig().getString("storage"), true); + } + public void initializeDataStore(String strategy, boolean load) { DataStorage.getMethods().add(new YamlStorage(new File(getDataFolder(), "data.yml"))); @@ -156,7 +183,7 @@ public void initializeDataStore(String strategy, boolean load) { } else { UtilServer.consoleLog("§cNo valid storage method provided."); UtilServer.consoleLog("§cCheck your files, then try again."); - getServer().getPluginManager().disablePlugin(this); + // getServer().getPluginManager().disablePlugin(this); // Don't disable plugin on fail return; } @@ -173,7 +200,7 @@ public void initializeDataStore(String strategy, boolean load) { UtilServer.consoleLog("§cCannot load initial data from DataStore."); UtilServer.consoleLog("§cCheck your files, then try again."); e.printStackTrace(); - getServer().getPluginManager().disablePlugin(this); + // getServer().getPluginManager().disablePlugin(this); // Don't disable plugin on fail } } diff --git a/src/main/java/me/xanium/gemseconomy/commands/GemsEconomyCommand.java b/src/main/java/me/xanium/gemseconomy/commands/GemsEconomyCommand.java new file mode 100644 index 0000000..1a93c4b --- /dev/null +++ b/src/main/java/me/xanium/gemseconomy/commands/GemsEconomyCommand.java @@ -0,0 +1,27 @@ +package me.xanium.gemseconomy.commands; + +import me.xanium.gemseconomy.GemsEconomy; +import me.xanium.gemseconomy.utils.UtilString; +import org.bukkit.command.Command; +import org.bukkit.command.CommandExecutor; +import org.bukkit.command.CommandSender; + +public class GemsEconomyCommand implements CommandExecutor { + + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + if (!sender.hasPermission("gemseconomy.command.reload")) { + sender.sendMessage(UtilString.colorize(GemsEconomy.getInstance().getConfig().getString("messages.no_permission"))); + return true; + } + + if (args.length > 0 && args[0].equalsIgnoreCase("reload")) { + GemsEconomy.getInstance().reloadConfiguration(); + sender.sendMessage(UtilString.colorize("&aConfiguration and database connection reloaded!")); + return true; + } + + sender.sendMessage(UtilString.colorize("&cUsage: /gemseconomy reload")); + return true; + } +} diff --git a/src/main/java/me/xanium/gemseconomy/data/MySQLStorage.java b/src/main/java/me/xanium/gemseconomy/data/MySQLStorage.java index d819d8f..9196a39 100644 --- a/src/main/java/me/xanium/gemseconomy/data/MySQLStorage.java +++ b/src/main/java/me/xanium/gemseconomy/data/MySQLStorage.java @@ -46,15 +46,31 @@ public class MySQLStorage extends DataStorage { public MySQLStorage(String host, int port, String database, String username, String password) { super("MySQL", true); + + // Sanitize host if it contains port + if (host.contains(":")) { + String[] split = host.split(":"); + host = split[0]; + try { + int parsedPort = Integer.parseInt(split[1]); + if (parsedPort > 0 && parsedPort < 65536) { + port = parsedPort; + } + } catch (NumberFormatException ignored) {} + } + hikariConfig = new HikariConfig(); - hikariConfig.setJdbcUrl("jdbc:mysql://" + host + ":" + port + "/" + database + "?allowPublicKeyRetrieval=true&useSSL=false"); + hikariConfig.setJdbcUrl("jdbc:mysql://" + host + ":" + port + "/" + database + "?allowPublicKeyRetrieval=true&useSSL=false&autoReconnect=true&verifyServerCertificate=false"); hikariConfig.setPassword(password); hikariConfig.setUsername(username); hikariConfig.setMaxLifetime(1500000); + hikariConfig.setConnectionTimeout(30000); hikariConfig.addDataSourceProperty("cachePrepStmts", "true"); hikariConfig.addDataSourceProperty("prepStmtCacheSize", "250"); hikariConfig.addDataSourceProperty("prepStmtCacheSqlLimit", "2048"); hikariConfig.addDataSourceProperty("userServerPrepStmts", "true"); + // Disable initialization fail fast to prevent plugin disable on startup connection failure + hikariConfig.setInitializationFailTimeout(-1); } private String getTablePrefix() { diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 07967d1..c5a9cda 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -10,6 +10,10 @@ loadbefore: - ItemFrameShops softdepend: [Vault] commands: + gemseconomy: + description: Main command for GemsEconomy + usage: /gemseconomy reload + aliases: [ge, gems] balance: description: Shows your balances usage: /balance (account) From 19512ecef801dc246280ac17d0aa3970fb916883 Mon Sep 17 00:00:00 2001 From: RonaldZav <100430955+RonaldZav@users.noreply.github.com> Date: Mon, 2 Feb 2026 04:24:13 -0500 Subject: [PATCH 3/3] Rename project to GemsEconomyR and update details Updated project name and description in README. --- README.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index f21d7b6..d5a2ac3 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,5 @@ -# GemsEconomy -This is my public spigot plugin GemsEconomy. -If you are looking for the source for the expansion. -Go here: https://github.com/Xanium1/GemsEconomy-Expansion +# GemsEconomyR +Es una modificacion de GemsEconomy, actualizada a SpigotMC 1.21, asi como contar con algunos cambios en el manejo de la basae de datos. + +Repositorio Original: https://github.com/Xanium1/GemsEconomy-Expansion -Spigot link: https://www.spigotmc.org/resources/gemseconomy.19655/