From 459ba0d89cb554887044c3919dd7438480461b57 Mon Sep 17 00:00:00 2001 From: Patrick <147879351+WinniePatGG@users.noreply.github.com> Date: Sun, 16 Aug 2026 21:12:09 +0200 Subject: [PATCH] 1.5 | Multiversion (1.16.3-26.2) --- build.gradle | 9 +++--- .../gamblingPlugin/GamblingPlugin.java | 3 +- .../gamblingPlugin/commands/CaseCommand.java | 3 +- .../commands/DoubleCommand.java | 4 +-- .../commands/RouletteCommand.java | 3 +- .../winniepat/gamblingPlugin/gui/SlotGUI.java | 11 +++++-- .../listeners/CaseListener.java | 11 +++++-- .../listeners/RouletteListener.java | 3 +- .../gamblingPlugin/util/Particles.java | 31 +++++++++++++++++++ .../gamblingPlugin/util/ServerVersion.java | 10 ++++-- src/main/resources/plugin.yml | 2 +- 11 files changed, 70 insertions(+), 20 deletions(-) create mode 100644 src/main/java/de/winniepat/gamblingPlugin/util/Particles.java diff --git a/build.gradle b/build.gradle index 59e6872..907443e 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ plugins { } group = 'de.winniepat' -version = '1.4' +version = '1.5' repositories { mavenCentral() @@ -12,12 +12,13 @@ repositories { maven { url = 'https://jitpack.io' } } -def mcVersion = project.findProperty('mcVersion') ?: '1.21.4-R0.1-SNAPSHOT' +def mcApiGroup = project.findProperty('mcApiGroup') ?: 'com.destroystokyo.paper' +def mcVersion = project.findProperty('mcVersion') ?: '1.16.5-R0.1-SNAPSHOT' def deployDir = project.findProperty('deployDir') ?: 'C:/Users/winnie/Documents/lunaris/server/plugins' -def minJavaVersion = 21 +def minJavaVersion = 11 dependencies { - compileOnly("io.papermc.paper:paper-api:${mcVersion}") + compileOnly("${mcApiGroup}:paper-api:${mcVersion}") compileOnly('com.github.MilkBowl:VaultAPI:1.7') { exclude group: 'org.bukkit', module: 'bukkit' diff --git a/src/main/java/de/winniepat/gamblingPlugin/GamblingPlugin.java b/src/main/java/de/winniepat/gamblingPlugin/GamblingPlugin.java index 099f1dd..e7004a1 100644 --- a/src/main/java/de/winniepat/gamblingPlugin/GamblingPlugin.java +++ b/src/main/java/de/winniepat/gamblingPlugin/GamblingPlugin.java @@ -23,8 +23,7 @@ public final class GamblingPlugin extends JavaPlugin { String serverVersion = ServerVersion.current(); if (ServerVersion.isSupported(serverVersion)) { - getLogger().info("GamblingPlugin enabled on Minecraft " + serverVersion - + " (supported: " + ServerVersion.MIN_SUPPORTED + " - " + ServerVersion.MAX_SUPPORTED + ")."); + getLogger().info("GamblingPlugin enabled on Minecraft " + serverVersion + "."); } else { getLogger().warning("Running on unsupported Minecraft version " + serverVersion + "! Supported range: " + ServerVersion.MIN_SUPPORTED + " - " + ServerVersion.MAX_SUPPORTED diff --git a/src/main/java/de/winniepat/gamblingPlugin/commands/CaseCommand.java b/src/main/java/de/winniepat/gamblingPlugin/commands/CaseCommand.java index 32afea2..95552e7 100644 --- a/src/main/java/de/winniepat/gamblingPlugin/commands/CaseCommand.java +++ b/src/main/java/de/winniepat/gamblingPlugin/commands/CaseCommand.java @@ -13,10 +13,11 @@ public class CaseCommand implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (!(sender instanceof Player player)) { + if (!(sender instanceof Player)) { sender.sendMessage("Only players can use this command."); return true; } + Player player = (Player) sender; if (GamblingPlugin.getInstance().getEconomy().getBalance(player) < COST) { player.sendMessage("§cYou don't have enough money to open a case! §7(Required: $" + (int) COST + ")"); diff --git a/src/main/java/de/winniepat/gamblingPlugin/commands/DoubleCommand.java b/src/main/java/de/winniepat/gamblingPlugin/commands/DoubleCommand.java index 097a766..fa94568 100644 --- a/src/main/java/de/winniepat/gamblingPlugin/commands/DoubleCommand.java +++ b/src/main/java/de/winniepat/gamblingPlugin/commands/DoubleCommand.java @@ -10,12 +10,12 @@ public class DoubleCommand implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { - if (!(sender instanceof Player player)) { + if (!(sender instanceof Player)) { sender.sendMessage("Only players can use this."); return true; } - DoubleGUI.open(player); + DoubleGUI.open((Player) sender); return true; } diff --git a/src/main/java/de/winniepat/gamblingPlugin/commands/RouletteCommand.java b/src/main/java/de/winniepat/gamblingPlugin/commands/RouletteCommand.java index 0453891..0a58816 100644 --- a/src/main/java/de/winniepat/gamblingPlugin/commands/RouletteCommand.java +++ b/src/main/java/de/winniepat/gamblingPlugin/commands/RouletteCommand.java @@ -10,11 +10,12 @@ public class RouletteCommand implements CommandExecutor { @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - if (!(sender instanceof Player player)) { + if (!(sender instanceof Player)) { sender.sendMessage("Only players can use this command."); return true; } + Player player = (Player) sender; player.openInventory(RouletteGUI.createBettingGUI()); return true; } diff --git a/src/main/java/de/winniepat/gamblingPlugin/gui/SlotGUI.java b/src/main/java/de/winniepat/gamblingPlugin/gui/SlotGUI.java index cd34e80..5cd52d5 100644 --- a/src/main/java/de/winniepat/gamblingPlugin/gui/SlotGUI.java +++ b/src/main/java/de/winniepat/gamblingPlugin/gui/SlotGUI.java @@ -1,6 +1,7 @@ package de.winniepat.gamblingPlugin.gui; import de.winniepat.gamblingPlugin.GamblingPlugin; +import de.winniepat.gamblingPlugin.util.Particles; import org.bukkit.*; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -143,11 +144,17 @@ public class SlotGUI implements Listener { GamblingPlugin.getInstance().getEconomy().depositPlayer(player, reward); player.sendMessage("§aYou won $" + reward + "! (x" + multiplier + ")"); player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 1f, 1f); - player.getWorld().spawnParticle(Particle.ELECTRIC_SPARK, player.getLocation().add(0, 1.5, 0), 30, 0.3, 0.5, 0.3); + Particle spark = Particles.byName("ELECTRIC_SPARK", "CRIT"); + if (spark != null) { + player.getWorld().spawnParticle(spark, player.getLocation().add(0, 1.5, 0), 30, 0.3, 0.5, 0.3); + } } else { player.sendMessage("§cYou lost! Better luck next time."); player.playSound(player.getLocation(), Sound.BLOCK_NOTE_BLOCK_BASS, 1f, 0.5f); - player.getWorld().spawnParticle(Particle.SMOKE, player.getLocation().add(0, 1.0, 0), 10, 0.2, 0.2, 0.2); + Particle smoke = Particles.byName("SMOKE", "SMOKE_NORMAL"); + if (smoke != null) { + player.getWorld().spawnParticle(smoke, player.getLocation().add(0, 1.0, 0), 10, 0.2, 0.2, 0.2); + } } } diff --git a/src/main/java/de/winniepat/gamblingPlugin/listeners/CaseListener.java b/src/main/java/de/winniepat/gamblingPlugin/listeners/CaseListener.java index 2198379..06ee5d1 100644 --- a/src/main/java/de/winniepat/gamblingPlugin/listeners/CaseListener.java +++ b/src/main/java/de/winniepat/gamblingPlugin/listeners/CaseListener.java @@ -1,6 +1,7 @@ package de.winniepat.gamblingPlugin.listeners; import de.winniepat.gamblingPlugin.animations.CaseAnimation; +import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; @@ -13,21 +14,25 @@ public class CaseListener implements Listener { @EventHandler public void onInventoryClick(InventoryClickEvent e) { - if (isCaseView(e.getView(), e.getWhoClicked() instanceof Player player ? player : null)) { + if (isCaseView(e.getView(), playerOf(e.getWhoClicked()))) { e.setCancelled(true); } } @EventHandler public void onInventoryDrag(InventoryDragEvent e) { - if (isCaseView(e.getView(), e.getWhoClicked() instanceof Player player ? player : null)) { + if (isCaseView(e.getView(), playerOf(e.getWhoClicked()))) { e.setCancelled(true); } } @EventHandler public void onInventoryClose(InventoryCloseEvent e) { - CaseAnimation.onCaseClosed(e.getPlayer() instanceof Player player ? player : null, e.getView().getTopInventory()); + CaseAnimation.onCaseClosed(playerOf(e.getPlayer()), e.getView().getTopInventory()); + } + + private Player playerOf(HumanEntity entity) { + return entity instanceof Player ? (Player) entity : null; } private boolean isCaseView(InventoryView view, Player player) { diff --git a/src/main/java/de/winniepat/gamblingPlugin/listeners/RouletteListener.java b/src/main/java/de/winniepat/gamblingPlugin/listeners/RouletteListener.java index 3e56d6d..75bc8bb 100644 --- a/src/main/java/de/winniepat/gamblingPlugin/listeners/RouletteListener.java +++ b/src/main/java/de/winniepat/gamblingPlugin/listeners/RouletteListener.java @@ -29,7 +29,8 @@ public class RouletteListener implements Listener { @EventHandler public void onInventoryClick(InventoryClickEvent event) { - if (!(event.getWhoClicked() instanceof Player player)) return; + if (!(event.getWhoClicked() instanceof Player)) return; + Player player = (Player) event.getWhoClicked(); if (event.getClickedInventory() == null || event.getCurrentItem() == null) return; String title = event.getView().getTitle(); diff --git a/src/main/java/de/winniepat/gamblingPlugin/util/Particles.java b/src/main/java/de/winniepat/gamblingPlugin/util/Particles.java new file mode 100644 index 0000000..39b59e1 --- /dev/null +++ b/src/main/java/de/winniepat/gamblingPlugin/util/Particles.java @@ -0,0 +1,31 @@ +package de.winniepat.gamblingPlugin.util; + +import org.bukkit.Particle; + +public final class Particles { + + private Particles() { + } + + public static Particle byName(String name, String... fallbacks) { + Particle particle = valueOf(name); + if (particle != null) { + return particle; + } + for (String fallback : fallbacks) { + particle = valueOf(fallback); + if (particle != null) { + return particle; + } + } + return null; + } + + private static Particle valueOf(String name) { + try { + return Particle.valueOf(name); + } catch (IllegalArgumentException e) { + return null; + } + } +} diff --git a/src/main/java/de/winniepat/gamblingPlugin/util/ServerVersion.java b/src/main/java/de/winniepat/gamblingPlugin/util/ServerVersion.java index f1b8f13..818901f 100644 --- a/src/main/java/de/winniepat/gamblingPlugin/util/ServerVersion.java +++ b/src/main/java/de/winniepat/gamblingPlugin/util/ServerVersion.java @@ -4,14 +4,18 @@ import org.bukkit.Bukkit; public final class ServerVersion { - public static final String MIN_SUPPORTED = "1.21.4"; - public static final String MAX_SUPPORTED = "26.1.2"; + public static final String MIN_SUPPORTED = "1.16.3"; + public static final String MAX_SUPPORTED = "26.2"; private ServerVersion() { } public static String current() { - return Bukkit.getMinecraftVersion(); + try { + return Bukkit.getMinecraftVersion(); + } catch (Throwable ignored) { + return Bukkit.getBukkitVersion().split("-")[0]; + } } public static boolean isSupported() { diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index f35ae27..902cdc1 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,7 +1,7 @@ name: GamblingPlugin version: '${version}' main: de.winniepat.gamblingPlugin.GamblingPlugin -api-version: '1.21' +api-version: '1.16' load: STARTUP authors: [ WinniePat ] description: KekClient