From 7000b71c908494f89da0b4dadf68195b05bafc6a Mon Sep 17 00:00:00 2001
From: PrinzPizza42 <125275369+PrinzPizza42@users.noreply.github.com>
Date: Mon, 6 Jan 2025 19:56:34 +0100
Subject: [PATCH] fix, remove TestCMD
fix
fix
fix
fix
fix
remove TestCMD
fix
fix
---
.../de/j/deathMinigames/dmUtil/TestCMD.java | 41 -----------
.../listeners/AnvilListener.java | 45 ++++++------
.../java/de/j/deathMinigames/main/Config.java | 29 ++++----
.../de/j/deathMinigames/settings/AnvilUI.java | 69 +++++++++++++------
.../j/deathMinigames/settings/MainMenu.java | 2 +
.../j/stationofdoom/listener/PlayerJoin.java | 5 +-
.../java/de/j/stationofdoom/main/Main.java | 3 -
.../java/de/j/stationofdoom/util/Tablist.java | 20 +++---
src/main/resources/translations.json | 6 +-
9 files changed, 108 insertions(+), 112 deletions(-)
delete mode 100644 src/main/java/de/j/deathMinigames/dmUtil/TestCMD.java
diff --git a/src/main/java/de/j/deathMinigames/dmUtil/TestCMD.java b/src/main/java/de/j/deathMinigames/dmUtil/TestCMD.java
deleted file mode 100644
index 9956d78..0000000
--- a/src/main/java/de/j/deathMinigames/dmUtil/TestCMD.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package de.j.deathMinigames.dmUtil;
-
-import de.j.stationofdoom.util.Tablist;
-import io.papermc.paper.command.brigadier.BasicCommand;
-import io.papermc.paper.command.brigadier.CommandSourceStack;
-import org.bukkit.command.CommandSender;
-import org.bukkit.entity.Player;
-import org.jetbrains.annotations.NotNull;
-
-public class TestCMD implements BasicCommand {
-
- /**
- * Determines if the given command sender can use this command.
- *
- *
This command can only be used by {@link Player}s.
- *
- * @param sender the command sender to check
- * @return true if the command sender can use this command, false otherwise
- */
- @Override
- public boolean canUse(@NotNull CommandSender sender) {
- return sender instanceof Player;
- }
-
- /**
- * Executes the command for the given command source stack.
- *
- *
- * This method retrieves the player from the command source stack and sends a test message followed by the
- * database connection information. Each key-value pair in the connection info is sent as a message to the player.
- *
- * @param stack the command source stack
- * @param args the arguments provided with the command
- */
- @Override
- public void execute(@NotNull CommandSourceStack stack, @NotNull String[] args) {
- Player player = (Player) stack.getSender();
- player.sendMessage("test");
- Tablist.setHostetBy(args[0]);
- }
-}
diff --git a/src/main/java/de/j/deathMinigames/listeners/AnvilListener.java b/src/main/java/de/j/deathMinigames/listeners/AnvilListener.java
index 9658f4e..7218257 100644
--- a/src/main/java/de/j/deathMinigames/listeners/AnvilListener.java
+++ b/src/main/java/de/j/deathMinigames/listeners/AnvilListener.java
@@ -7,7 +7,6 @@
import de.j.stationofdoom.util.translations.TranslationFactory;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
-import net.kyori.adventure.text.format.TextColor;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
@@ -30,19 +29,18 @@ public class AnvilListener implements Listener {
@EventHandler
public void onAnvilPrepare(PrepareAnvilEvent event) {
- Player player = (Player) event.getViewers().getFirst();
- if(player == null) {
- Main.getMainLogger().info("Anvil prepare event has no player");
+ if(!(event.getViewers().getFirst() instanceof Player player)) {
+ Main.getMainLogger().warning("Anvil prepare event has invalid viewer type");
return;
}
Location loc = event.getInventory().getLocation();
if(loc == null) {
- Main.getMainLogger().info("Anvil prepare event has no location");
+ Main.getMainLogger().warning("Anvil prepare event has no location");
return;
}
AnvilView anvilView = event.getView();
if(anvilView == null) {
- Main.getMainLogger().info("Anvil prepare event has no anvilView");
+ Main.getMainLogger().warning("Anvil prepare event has no anvilView");
return;
}
String renameText = anvilView.getRenameText();
@@ -65,25 +63,23 @@ public void onAnvilClick(InventoryClickEvent event) {
if (loc == null) return;
Player player = (Player) event.getWhoClicked();
if(player == null) return;
+ if(event.getSlot() != 2) return;
if (MainMenu.getSetHost().compareLocIDTo(loc)) {
event.setCancelled(true);
- if(event.getSlot() == 2) {
- if (hostName == null) return;
- Tablist.setHostetBy(hostName);
- event.getView().close();
- DmUtil.getInstance().playSoundAtLocation(player.getLocation(), 0.5f, Sound.BLOCK_ANVIL_USE);
- player.sendMessage(Component.text("Host name: " + hostName).color(NamedTextColor.GOLD));
- }
+ if (hostName == null) return;
+ Tablist.setHostedBy(hostName);
+ event.getView().close();
+ DmUtil.getInstance().playSoundAtLocation(player.getLocation(), 0.5f, Sound.BLOCK_ANVIL_USE);
+ player.sendMessage(Component.text("Host name: " + hostName).color(NamedTextColor.GOLD));
} else if (MainMenu.getSetServerName().compareLocIDTo(loc)) {
event.setCancelled(true);
- if(event.getSlot() == 2) {
- if (serverName == null) return;
- Tablist.setServerName(serverName);
- event.getView().close();
- DmUtil.getInstance().playSoundAtLocation(player.getLocation(), 0.5f, Sound.BLOCK_ANVIL_USE);
- player.sendMessage(Component.text("Server name: " + serverName).color(NamedTextColor.GOLD));
- }
+ if (serverName == null) return;
+ Tablist.setServerName(serverName);
+ event.getView().close();
+ DmUtil.getInstance().playSoundAtLocation(player.getLocation(), 0.5f, Sound.BLOCK_ANVIL_USE);
+ player.sendMessage(Component.text("Server name: " + serverName).color(NamedTextColor.GOLD));
}
+
}
}
@@ -103,11 +99,20 @@ else if(MainMenu.getSetServerName().compareLocIDTo(loc)) {
}
private void finishAnvilInvAfterOpening(PrepareAnvilEvent event, Player player) {
+ if(event == null || player == null) {
+ Main.getMainLogger().warning("parameters are null: " + event + " " + player + "!");
+ return;
+ }
ItemStack output = new ItemStack(Material.GREEN_CONCRETE);
ItemMeta outputItemMeta = output.getItemMeta();
+ if(outputItemMeta == null) {
+ Main.getMainLogger().warning("outputItemMeta is null!");
+ return;
+ }
outputItemMeta.displayName(Component.text(tf.getTranslation(player, "anvilOutput")));
output.setItemMeta(outputItemMeta);
event.setResult(output);
+
event.getView().setRepairCost(0);
}
}
diff --git a/src/main/java/de/j/deathMinigames/main/Config.java b/src/main/java/de/j/deathMinigames/main/Config.java
index c3a067a..e9467ae 100644
--- a/src/main/java/de/j/deathMinigames/main/Config.java
+++ b/src/main/java/de/j/deathMinigames/main/Config.java
@@ -1,14 +1,11 @@
package de.j.deathMinigames.main;
-import de.j.deathMinigames.database.PlayerDataDatabase;
-import de.j.stationofdoom.listener.PlayerJoin;
import de.j.stationofdoom.util.Tablist;
import org.bukkit.Location;
import de.j.stationofdoom.main.Main;
import org.bukkit.World;
import org.bukkit.configuration.file.FileConfiguration;
-import org.bukkit.configuration.file.YamlConfiguration;
import java.util.*;
@@ -119,11 +116,11 @@ public void cloneConfigToPlugin() {
}
//Tablist
if(config.contains("Tablist")) {
- if(config.contains("Tablist.ServerName")) {
+ if(config.contains("Tablist.ServerName") && config.get("Tablist.ServerName") != null) {
Tablist.setServerName(config.getString("Tablist.ServerName"));
}
- if(config.contains("Tablist.HostetBy")) {
- Tablist.setHostetBy(config.getString("Tablist.HostetBy"));
+ if(config.contains("Tablist.HostedBy") && config.get("Tablist.HostedBy") != null) {
+ Tablist.setHostedBy(config.getString("Tablist.HostedBy"));
}
}
}
@@ -324,7 +321,11 @@ public HashMap getDatabaseConfig() {
return databaseConnectionInfo;
}
- public void setServerName(String serverName) {
+ public synchronized void setServerName(String serverName) {
+ if(serverName == null) {
+ Main.getMainLogger().warning("ServerName is null!");
+ return;
+ }
if(!Main.getPlugin().getConfig().contains("Tablist.ServerName")) {
Main.getPlugin().getConfig().set("Tablist.ServerName", serverName);
Main.getPlugin().saveConfig();
@@ -345,19 +346,19 @@ public String getServerName() {
}
}
- public void setHostetBy(String serverName) {
- if(!Main.getPlugin().getConfig().contains("Tablist.HostetBy") || !Main.getPlugin().getConfig().getString("Tablist.HostetBy").equals(serverName)) {
- Main.getPlugin().getConfig().set("Tablist.HostetBy", serverName);
+ public synchronized void setHostedBy(String serverName) {
+ if(!Main.getPlugin().getConfig().contains("Tablist.HostedBy") || !Main.getPlugin().getConfig().getString("Tablist.HostedBy").equals(serverName)) {
+ Main.getPlugin().getConfig().set("Tablist.HostedBy", serverName);
Main.getPlugin().saveConfig();
}
}
- public String getHostetBy() {
- if(Main.getPlugin().getConfig().contains("Tablist.HostetBy")) {
- return Main.getPlugin().getConfig().getString("Tablist.HostetBy");
+ public String getHostedBy() {
+ if(Main.getPlugin().getConfig().contains("Tablist.HostedBy")) {
+ return Main.getPlugin().getConfig().getString("Tablist.HostedBy");
}
else {
- Main.getMainLogger().warning("HostetBy not found in config!");
+ Main.getMainLogger().warning("HostedBy not found in config!");
return null;
}
}
diff --git a/src/main/java/de/j/deathMinigames/settings/AnvilUI.java b/src/main/java/de/j/deathMinigames/settings/AnvilUI.java
index a2953c4..a3e5ef2 100644
--- a/src/main/java/de/j/deathMinigames/settings/AnvilUI.java
+++ b/src/main/java/de/j/deathMinigames/settings/AnvilUI.java
@@ -1,12 +1,12 @@
package de.j.deathMinigames.settings;
-import de.j.deathMinigames.main.Config;
-import de.j.stationofdoom.main.Main;
+import de.j.stationofdoom.util.Tablist;
import de.j.stationofdoom.util.translations.TranslationFactory;
import net.kyori.adventure.text.Component;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
+import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder;
@@ -17,30 +17,23 @@
import java.util.concurrent.ThreadLocalRandom;
public class AnvilUI implements InventoryHolder {
- private final Location loc = new Location(Bukkit.getWorld("world"), ThreadLocalRandom.current().nextInt(0, 1000), ThreadLocalRandom.current().nextInt(0, 1000), ThreadLocalRandom.current().nextInt(0, 1000));
- private final ItemStack firstSlot = new ItemStack(Material.RED_CONCRETE);
+ private Location loc = null;
+ private ItemStack input = new ItemStack(Material.RED_CONCRETE);
+ Player player = null;
+ private MainMenu.AnvilUIs title;
public AnvilUI(MainMenu.AnvilUIs title) {
- ItemMeta paperMeta = firstSlot.getItemMeta();
- switch (title) {
- case SET_HOST_NAME:
- if(Config.getInstance().getHostetBy() != null) paperMeta.displayName(Component.text(Config.getInstance().getHostetBy()));
- else paperMeta.displayName(Component.text("kein Name gesetzt / no name set"));
- break;
- case SET_SERVER_NAME:
- if(Config.getInstance().getServerName() != null) paperMeta.displayName(Component.text(Config.getInstance().getServerName()));
- else paperMeta.displayName(Component.text("kein Name gesetzt / no name set"));
- break;
- default:
- paperMeta.displayName(Component.text(""));
- }
- firstSlot.setItemMeta(paperMeta);
+ if(title == null) throw new IllegalArgumentException("Title cannot be null");
+ this.title = title;
+ createUniqueLocation();
}
public void showInventory(Player playerToShowTheInvTo) {
if(playerToShowTheInvTo == null) return;
+ this.player = playerToShowTheInvTo;
playerToShowTheInvTo.openAnvil(loc, true);
- playerToShowTheInvTo.getOpenInventory().getTopInventory().addItem(firstSlot);
+ setInputMeta(playerToShowTheInvTo);
+ playerToShowTheInvTo.getOpenInventory().getTopInventory().setItem(0, input);
}
@Override
@@ -48,8 +41,42 @@ public void showInventory(Player playerToShowTheInvTo) {
return null;
}
+ /**
+ * Random location used as a unique identifier for the anvil UI.
+ * This prevents conflicts between multiple anvil UIs.
+ */
+ private void createUniqueLocation() {
+ World world = Bukkit.getWorld("world");
+ if(world == null) throw new IllegalStateException("world `world´ could not be found");
+ loc = new Location(world,
+ ThreadLocalRandom.current().nextInt(0, 1000),
+ ThreadLocalRandom.current().nextInt(0, 1000),
+ ThreadLocalRandom.current().nextInt(0, 1000));
+ }
+
public boolean compareLocIDTo(Location loc) {
- if(loc.getBlockX() == this.loc.getBlockX() && loc.getBlockZ() == this.loc.getBlockZ()) return true;
- else return false;
+ return loc.getBlockX() == this.loc.getBlockX() && loc.getBlockZ() == this.loc.getBlockZ();
+ }
+
+ private void setInputMeta(Player player) {
+ ItemMeta inputMeta = input.getItemMeta();
+ String inputItemName = null;
+ if(player == null) {
+ inputMeta.displayName(Component.text("default"));
+ }
+ else {
+ switch (title) {
+ case SET_HOST_NAME -> inputItemName = Tablist.getHostedBy();
+ case SET_SERVER_NAME -> inputItemName = Tablist.getServerName();
+ default -> throw new IllegalArgumentException("Title: " + title + " is not supported");
+ }
+ if(inputItemName == null) {
+ inputMeta.displayName(Component.text(new TranslationFactory().getTranslation(player, "noNameSet")));
+ }
+ else {
+ inputMeta.displayName(Component.text(inputItemName));
+ }
+ }
+ input.setItemMeta(inputMeta);
}
}
diff --git a/src/main/java/de/j/deathMinigames/settings/MainMenu.java b/src/main/java/de/j/deathMinigames/settings/MainMenu.java
index 9963229..74bf6e7 100755
--- a/src/main/java/de/j/deathMinigames/settings/MainMenu.java
+++ b/src/main/java/de/j/deathMinigames/settings/MainMenu.java
@@ -1,5 +1,6 @@
package de.j.deathMinigames.settings;
+import de.j.stationofdoom.main.Main;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
@@ -33,6 +34,7 @@ public enum InventoryMenus {
public enum AnvilUIs {
SET_SERVER_NAME,
SET_HOST_NAME,
+ DEFAULT // usage when the input slot item should have no name
}
public MainMenu() {
diff --git a/src/main/java/de/j/stationofdoom/listener/PlayerJoin.java b/src/main/java/de/j/stationofdoom/listener/PlayerJoin.java
index 7a2c13a..09b18c8 100644
--- a/src/main/java/de/j/stationofdoom/listener/PlayerJoin.java
+++ b/src/main/java/de/j/stationofdoom/listener/PlayerJoin.java
@@ -17,7 +17,6 @@
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
-import org.checkerframework.common.aliasing.qual.Unique;
import java.io.IOException;
import java.util.UUID;
@@ -71,7 +70,7 @@ public void onPlayerJoin(PlayerJoinEvent event) {
AtomicInteger phase = new AtomicInteger();
asyncScheduler.runAtFixedRate(Main.getPlugin(), scheduledTask -> {
int ping = player.getPing();
- if(Tablist.getHostetBy() == null) {
+ if(Tablist.getHostedBy() == null) {
tablist.tabTPS(player, mm.deserialize(" <1> ", Placeholder.component("1", Component.text(Tablist.getServerName()))),
mm.deserialize(" Plugin by LuckyProgrammer")
.append(Component.text(String.format("\nTPS: %s; %s; %s", (int) Main.getPlugin().getServer().getTPS()[0], (int) Main.getPlugin().getServer().getTPS()[1], (int) Main.getPlugin().getServer().getTPS()[2]), NamedTextColor.LIGHT_PURPLE))
@@ -83,7 +82,7 @@ public void onPlayerJoin(PlayerJoinEvent event) {
}
else {
tablist.tabTPS(player, mm.deserialize(" <1> ", Placeholder.component("1", Component.text(Tablist.getServerName()))),
- mm.deserialize(" Hosted by <2> Plugin by LuckyProgrammer", Placeholder.component("2", Component.text(Tablist.getHostetBy())))
+ mm.deserialize(" Hosted by <2> Plugin by LuckyProgrammer", Placeholder.component("2", Component.text(Tablist.getHostedBy())))
.append(Component.text(String.format("\nTPS: %s; %s; %s", (int) Main.getPlugin().getServer().getTPS()[0], (int) Main.getPlugin().getServer().getTPS()[1], (int) Main.getPlugin().getServer().getTPS()[2]), NamedTextColor.LIGHT_PURPLE))
.append(Component.text("\n Ping: ")
.append(Component.text(String.valueOf(ping))
diff --git a/src/main/java/de/j/stationofdoom/main/Main.java b/src/main/java/de/j/stationofdoom/main/Main.java
index fb9e49e..2b79925 100755
--- a/src/main/java/de/j/stationofdoom/main/Main.java
+++ b/src/main/java/de/j/stationofdoom/main/Main.java
@@ -2,7 +2,6 @@
import de.j.deathMinigames.commands.GameCMD;
import de.j.deathMinigames.commands.LeaderboardCMD;
-import de.j.deathMinigames.dmUtil.TestCMD;
import de.j.deathMinigames.listeners.*;
import de.j.deathMinigames.main.Config;
import de.j.deathMinigames.database.Database;
@@ -24,7 +23,6 @@
import io.papermc.paper.threadedregions.scheduler.AsyncScheduler;
import io.papermc.paper.threadedregions.scheduler.GlobalRegionScheduler;
import org.bukkit.Bukkit;
-import org.bukkit.command.defaults.BukkitCommand;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
@@ -89,7 +87,6 @@ public void onEnable() {
COMMANDS.register("voterestart", new VoteRestartCMD());
COMMANDS.register("sit", new PlayerSitListener());
COMMANDS.register("game", "game related commands", new GameCMD());
- COMMANDS.register("test", "testing", new TestCMD());
COMMANDS.register("leaderboard", "showing the leaderboard of the minigame", new LeaderboardCMD());
});
diff --git a/src/main/java/de/j/stationofdoom/util/Tablist.java b/src/main/java/de/j/stationofdoom/util/Tablist.java
index 2c46efa..b6ff7e1 100644
--- a/src/main/java/de/j/stationofdoom/util/Tablist.java
+++ b/src/main/java/de/j/stationofdoom/util/Tablist.java
@@ -17,8 +17,8 @@
import java.util.stream.Stream;
public class Tablist {
- private static String serverName = Bukkit.getServer().getName();
- private static String hostetBy = null;
+ private volatile static String serverName = Bukkit.getServer().getName();
+ private volatile static String hostedBy = null;
private static Scoreboard scoreboard;
public static HashMap rank;
@@ -174,14 +174,18 @@ else if(!Config.getInstance().getServerName().equals(serverName)) {
}
}
- public static void setHostetBy(String hostetBy) {
- Tablist.hostetBy = hostetBy;
- if(Config.getInstance().getHostetBy() == null || !Config.getInstance().getHostetBy().equals(hostetBy)) {
- Config.getInstance().setHostetBy(hostetBy);
+ public static void setHostedBy(String hostedBy) {
+ if(hostedBy == null) {
+ Main.getMainLogger().warning("Hosted by is null");
+ return;
+ }
+ Tablist.hostedBy = hostedBy;
+ if(Config.getInstance().getHostedBy() == null || !Config.getInstance().getHostedBy().equals(hostedBy)) {
+ Config.getInstance().setHostedBy(hostedBy);
}
}
- public static String getHostetBy() {
- return hostetBy;
+ public static String getHostedBy() {
+ return hostedBy;
}
}
diff --git a/src/main/resources/translations.json b/src/main/resources/translations.json
index b9c698e..0fd897f 100755
--- a/src/main/resources/translations.json
+++ b/src/main/resources/translations.json
@@ -82,7 +82,8 @@
"cmdUsageLength1": "Dein Command hat nicht geklappt, versuche /game ",
"somethingWentWrong": "Etwas ist schief gelaufen",
"invalidDifficulty": "Die Schwierigkeit muss zwischen 0 und 10 sein",
- "anvilOutput": "klicke hier um zu bestätigen"
+ "anvilOutput": "Klicke hier um zu bestätigen",
+ "noNameSet": "Kein Name gesetzt"
}
],
"en-US": [
@@ -168,7 +169,8 @@
"cmdUsageLength1": "Your command did not work, try /game ",
"somethingWentWrong": "Something went wrong",
"invalidDifficulty": "The difficulty has to be between 0 and 10",
- "anvilOutput": "Click here to accept"
+ "anvilOutput": "Click here to accept",
+ "noNameSet": "No name set"
}
]
}
\ No newline at end of file