From 4702589c2579258ccc3caa66e2548c7179360197 Mon Sep 17 00:00:00 2001
From: Martin <Martin.Olischlaeger@icloud.com>
Date: Tue, 16 May 2023 20:14:24 +0200
Subject: [PATCH] version 1.0 release

---
 .../eu/mhsl/craftattack/worldmuseum/Main.java | 11 +++---
 .../worldmuseum/commands/TeleportCommand.java |  4 +-
 .../worldmuseum/temp/GcCommand.java           | 39 -------------------
 .../{temp => util}/TablistUpdateTask.java     | 18 +--------
 .../craftattack/worldmuseum/worlds/World.java | 28 ++++++-------
 5 files changed, 23 insertions(+), 77 deletions(-)
 delete mode 100644 src/main/java/eu/mhsl/craftattack/worldmuseum/temp/GcCommand.java
 rename src/main/java/eu/mhsl/craftattack/worldmuseum/{temp => util}/TablistUpdateTask.java (55%)

diff --git a/src/main/java/eu/mhsl/craftattack/worldmuseum/Main.java b/src/main/java/eu/mhsl/craftattack/worldmuseum/Main.java
index 41337f3..2fad2a7 100755
--- a/src/main/java/eu/mhsl/craftattack/worldmuseum/Main.java
+++ b/src/main/java/eu/mhsl/craftattack/worldmuseum/Main.java
@@ -2,12 +2,11 @@ package eu.mhsl.craftattack.worldmuseum;
 
 import eu.mhsl.craftattack.worldmuseum.commands.GamemodeCommand;
 import eu.mhsl.craftattack.worldmuseum.items.ItemManager;
-import eu.mhsl.craftattack.worldmuseum.temp.GcCommand;
 import eu.mhsl.craftattack.worldmuseum.commands.SpawnCommand;
 import eu.mhsl.craftattack.worldmuseum.commands.TeleportCommand;
 import eu.mhsl.craftattack.worldmuseum.listener.*;
 import eu.mhsl.craftattack.worldmuseum.skins.SkinCache;
-import eu.mhsl.craftattack.worldmuseum.temp.TablistUpdateTask;
+import eu.mhsl.craftattack.worldmuseum.util.TablistUpdateTask;
 import eu.mhsl.craftattack.worldmuseum.util.Config;
 import eu.mhsl.craftattack.worldmuseum.util.MuseumPlayer;
 import eu.mhsl.craftattack.worldmuseum.handler.SignHandler;
@@ -20,19 +19,20 @@ import net.minestom.server.event.inventory.InventoryPreClickEvent;
 import net.minestom.server.event.item.ItemDropEvent;
 import net.minestom.server.event.player.*;
 import net.minestom.server.timer.TaskSchedule;
+
 import java.time.Duration;
 
 public class Main {
     static int PORT = 25565;
-    static String IP = "0.0.0.0";
+    static final String IP = "0.0.0.0";
 
     public static void main(String[] args) {
         // Initialization
-        System.setProperty("minestom.chunk-view-distance", "8");
+        System.setProperty("minestom.chunk-view-distance", "16");
         MinecraftServer minecraftServer = MinecraftServer.init();
         MinecraftServer.getConnectionManager().setPlayerProvider(MuseumPlayer::new);
 
-        //temp
+        //update Taskbar
         MinecraftServer.getSchedulerManager().scheduleTask(new TablistUpdateTask(), TaskSchedule.tick(20), TaskSchedule.tick(20));
 
         //load eu.mhsl.craftattack.worldmuseum.worlds / configExample file
@@ -66,7 +66,6 @@ public class Main {
 
         //commands
         MinecraftServer.getCommandManager().register(new TeleportCommand());
-        MinecraftServer.getCommandManager().register(new GcCommand());
         MinecraftServer.getCommandManager().register(new GamemodeCommand());
         MinecraftServer.getCommandManager().register(new SpawnCommand());
 
diff --git a/src/main/java/eu/mhsl/craftattack/worldmuseum/commands/TeleportCommand.java b/src/main/java/eu/mhsl/craftattack/worldmuseum/commands/TeleportCommand.java
index e5d1cb1..86cca77 100644
--- a/src/main/java/eu/mhsl/craftattack/worldmuseum/commands/TeleportCommand.java
+++ b/src/main/java/eu/mhsl/craftattack/worldmuseum/commands/TeleportCommand.java
@@ -9,7 +9,7 @@ import java.util.Objects;
 public class TeleportCommand extends Command {
 
     public TeleportCommand() {
-        super("tp","teleport");
+        super("tp");
 
         var cordinate = ArgumentType.RelativeBlockPosition("Koordinate");
         addSyntax(((sender, context) -> {
@@ -18,7 +18,7 @@ public class TeleportCommand extends Command {
             player.teleport(pos);
         }), cordinate);
 
-        var playerArgument = ArgumentType.Entity("Spieler").onlyPlayers(true);
+        var playerArgument = ArgumentType.Entity("Spieler").onlyPlayers(true).singleEntity(true);
         addSyntax(((sender, context) -> {
             if (context.get(playerArgument).find(sender).size() == 0) return; //check if player is online
             Player targetPlayer = (Player) context.get(playerArgument).find(sender).get(0);
diff --git a/src/main/java/eu/mhsl/craftattack/worldmuseum/temp/GcCommand.java b/src/main/java/eu/mhsl/craftattack/worldmuseum/temp/GcCommand.java
deleted file mode 100644
index 37bb9b5..0000000
--- a/src/main/java/eu/mhsl/craftattack/worldmuseum/temp/GcCommand.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package eu.mhsl.craftattack.worldmuseum.temp;
-
-import net.minestom.server.command.builder.Command;
-
-public class GcCommand extends Command {
-    private static long lastRun = System.currentTimeMillis();
-    private static final Runtime runtime = Runtime.getRuntime();
-
-    public GcCommand() {
-        super("gc");
-
-//        setCondition((sender, commandString) -> sender.hasPermission("admin"));
-
-        setDefaultExecutor((sender, context) -> {
-            long nextRun = (lastRun - (System.currentTimeMillis() - 30*1000)) / 1000;
-            if(nextRun > 0) {
-                sender.sendMessage("pls wait");
-                //                new ChatMessage(Icon.ERROR).appendStatic("Please wait ").appendStatic(String.valueOf(nextRun)).appendStatic(" seconds before running GC again!").send(sender);
-                return;
-            }
-
-            lastRun = System.currentTimeMillis();
-
-            long before = getRamUsage();
-            System.gc();
-            long after = getRamUsage();
-
-            sender.sendMessage("before: " + before + " now: " + after);
-//            new ChatMessage(Icon.SUCCESS).appendStatic("Garbage collector ran successfully!").indent(1).newLine()
-//                    .appendStatic("before: ").appendStatic(String.valueOf(before)).appendStatic("MB").newLine()
-//                    .appendStatic("now: ").appendStatic(String.valueOf(after)).appendStatic("MB").indent(1).newLine()
-//                    .appendStatic("difference: ").appendStatic(String.valueOf(before-after)).appendStatic("MB")
-//                    .send(sender);
-        });
-    }
-    public static long getRamUsage() {
-        return (runtime.totalMemory() - runtime.freeMemory()) / 1024 / 1024;
-    }
-}
diff --git a/src/main/java/eu/mhsl/craftattack/worldmuseum/temp/TablistUpdateTask.java b/src/main/java/eu/mhsl/craftattack/worldmuseum/util/TablistUpdateTask.java
similarity index 55%
rename from src/main/java/eu/mhsl/craftattack/worldmuseum/temp/TablistUpdateTask.java
rename to src/main/java/eu/mhsl/craftattack/worldmuseum/util/TablistUpdateTask.java
index 8aaf620..631a49d 100644
--- a/src/main/java/eu/mhsl/craftattack/worldmuseum/temp/TablistUpdateTask.java
+++ b/src/main/java/eu/mhsl/craftattack/worldmuseum/util/TablistUpdateTask.java
@@ -1,4 +1,4 @@
-package eu.mhsl.craftattack.worldmuseum.temp;
+package eu.mhsl.craftattack.worldmuseum.util;
 
 import net.kyori.adventure.text.Component;
 import net.kyori.adventure.text.format.NamedTextColor;
@@ -10,10 +10,6 @@ import java.util.Collection;
 import java.util.concurrent.atomic.AtomicReference;
 
 public class TablistUpdateTask implements Runnable {
-    private static final Runtime runtime = Runtime.getRuntime();
-    private static final AtomicReference<TickMonitor> lastTick = new AtomicReference<>();
-
-
     @Override
     public void run() {
         Collection<Player> players = MinecraftServer.getConnectionManager().getOnlinePlayers();
@@ -21,11 +17,8 @@ public class TablistUpdateTask implements Runnable {
 
         final Component header =
                 Component.newline()
-                        .append(Component.text("MineNet Network", NamedTextColor.GOLD))
+                        .append(Component.text("  Welten-Museum  ", NamedTextColor.GOLD))
                         .append(Component.newline()).append(Component.text("Players: " + players.size()))
-                        .append(Component.newline())
-                        .append(Component.newline()).append(Component.text("RAM: " + getRamUsage() + " MB", NamedTextColor.GRAY))
-                        .append(Component.newline()).append(Component.text("TICK: " + getTickMonitor().getTickTime() + "ms", NamedTextColor.GRAY))
                         .append(Component.newline());
 
         final Component footer =
@@ -35,11 +28,4 @@ public class TablistUpdateTask implements Runnable {
 
         Audiences.players().sendPlayerListHeaderAndFooter(header, footer);
     }
-    public static long getRamUsage() {
-        return (runtime.totalMemory() - runtime.freeMemory()) / 1024 / 1024;
-    }
-    public static TickMonitor getTickMonitor() {
-        return lastTick.get() != null ? lastTick.get() : new TickMonitor(0, 0);
-    }
-
 }
diff --git a/src/main/java/eu/mhsl/craftattack/worldmuseum/worlds/World.java b/src/main/java/eu/mhsl/craftattack/worldmuseum/worlds/World.java
index fd10118..7fdf3d2 100755
--- a/src/main/java/eu/mhsl/craftattack/worldmuseum/worlds/World.java
+++ b/src/main/java/eu/mhsl/craftattack/worldmuseum/worlds/World.java
@@ -20,19 +20,6 @@ public class World extends InstanceContainer {
     private String name = "default";
     private Pos spawn = new Pos(0,0,0);
     private boolean enabled = false;
-    private final String defaultConfig = "{\n" +
-            "  \"enabled\": false,\n" +
-            "  \"name\": \"DEFAULT_NAME\",\n" +
-            "  \"material\": \"GRASS_BLOCK\",\n" +
-            "  \"spawn\": {\n" +
-            "    \"x\": 0,\n" +
-            "    \"y\": 0,\n" +
-            "    \"z\": 0\n" +
-            "  },\n" +
-            "  \"tags\": [\n" +
-            "    \"RANDOM_TAG\"\n" +
-            "  ]\n" +
-            "}";
 
     static {
         MinecraftServer.getDimensionTypeManager().addDimension(dimension);
@@ -47,6 +34,20 @@ public class World extends InstanceContainer {
             File checkFile = new File(file.getPath() + "/config.json");
             if (checkFile.createNewFile()) {
                 FileWriter fileWriter = new FileWriter(file.getPath() + "/config.json");
+                String defaultConfig = """
+                        {
+                          "enabled": false,
+                          "name": "DEFAULT_NAME",
+                          "material": "GRASS_BLOCK",
+                          "spawn": {
+                            "x": 0,
+                            "y": 0,
+                            "z": 0
+                          },
+                          "tags": [
+                            "RANDOM_TAG"
+                          ]
+                        }""";
                 fileWriter.write(defaultConfig);
                 fileWriter.close();
             }
@@ -54,7 +55,6 @@ public class World extends InstanceContainer {
             e.printStackTrace();
         }
 
-
         Material material = Material.GRASS_BLOCK;
         try {
             JsonObject config = (JsonObject) JsonParser.parseReader(new FileReader(file.getPath() + "/config.json"));