From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: YatopiaMC <yatopiamc@gmail.com>
Date: Wed, 26 Feb 2020 18:37:34 +0100
Subject: [PATCH] Brandings


diff --git a/src/main/java/com/destroystokyo/paper/Metrics.java b/src/main/java/com/destroystokyo/paper/Metrics.java
index 4d8740678049aa749b42618470e9cc838555528d..159f72efe20f8fee940bd00ae7af00f026f51b1a 100644
--- a/src/main/java/com/destroystokyo/paper/Metrics.java
+++ b/src/main/java/com/destroystokyo/paper/Metrics.java
@@ -593,7 +593,7 @@ public class Metrics {
             boolean logFailedRequests = config.getBoolean("logFailedRequests", false);
             // Only start Metrics, if it's enabled in the config
             if (config.getBoolean("enabled", true)) {
-                Metrics metrics = new Metrics("Purpur", serverUUID, logFailedRequests, Bukkit.getLogger()); // Purpur
+                Metrics metrics = new Metrics("Yatopia", serverUUID, logFailedRequests, Bukkit.getLogger()); // Purpur // Yatopia
 
                 metrics.addCustomChart(new Metrics.SimplePie("minecraft_version", () -> {
                     String minecraftVersion = Bukkit.getVersion();
@@ -603,7 +603,7 @@ public class Metrics {
 
                 metrics.addCustomChart(new Metrics.SingleLineChart("players", () -> Bukkit.getOnlinePlayers().size()));
                 metrics.addCustomChart(new Metrics.SimplePie("online_mode", () -> Bukkit.getOnlineMode() ? "online" : (PaperConfig.isProxyOnlineMode() ? "bungee" : "offline"))); // Purpur
-                metrics.addCustomChart(new Metrics.SimplePie("purpur_version", () -> (Metrics.class.getPackage().getImplementationVersion() != null) ? Metrics.class.getPackage().getImplementationVersion() : "unknown")); // Purpur
+                metrics.addCustomChart(new Metrics.SimplePie("yatopia_version", () -> (Metrics.class.getPackage().getImplementationVersion() != null) ? Metrics.class.getPackage().getImplementationVersion() : "unknown")); // Purpur // Yatopia
 
                 metrics.addCustomChart(new Metrics.DrilldownPie("java_version", () -> {
                     Map<String, Map<String, Integer>> map = new HashMap<>();
diff --git a/src/main/java/com/destroystokyo/paper/console/PaperConsole.java b/src/main/java/com/destroystokyo/paper/console/PaperConsole.java
index c1280478ee4565003883df9607d4a8a0e8fe4faa..c6cfdea783eaa40d4eb581a9208d6cdb72dace5b 100644
--- a/src/main/java/com/destroystokyo/paper/console/PaperConsole.java
+++ b/src/main/java/com/destroystokyo/paper/console/PaperConsole.java
@@ -17,7 +17,7 @@ public final class PaperConsole extends SimpleTerminalConsole {
     @Override
     protected LineReader buildReader(LineReaderBuilder builder) {
         return super.buildReader(builder
-                .appName("Purpur") // Purpur
+                .appName("Yatopia") // Yatopia
                 .variable(LineReader.HISTORY_FILE, java.nio.file.Paths.get(".console_history"))
                 .completer(new ConsoleCommandCompleter(this.server))
         );
diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java
index 03d5a9f923597c07d050465e261efe9a8bc935a6..439842cb08e600e007a4b447daac182e59d1a1b2 100644
--- a/src/main/java/net/pl3x/purpur/PurpurConfig.java
+++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java
@@ -182,7 +182,7 @@ public class PurpurConfig {
         if (!TimingsManager.hiddenConfigs.contains("settings.seed.end-spike")) TimingsManager.hiddenConfigs.add("settings.seed.end-spike");
     }
 
-    public static String serverModName = "Purpur";
+    public static String serverModName = "Yatopia";
     private static void serverModName() {
         serverModName = getString("settings.server-mod-name", serverModName);
     }
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 12b92ee0491c82a72d1646d14116e187dd965fe6..d5c2fa2363ec898e6fdf16699c3e3e3fef98410c 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -232,7 +232,7 @@ import javax.annotation.Nullable; // Paper
 import javax.annotation.Nonnull; // Paper
 
 public final class CraftServer implements Server {
-    private final String serverName = "Purpur"; // Paper // Tuinity // Purpur
+    private final String serverName = "Yatopia"; // Paper // Tuinity // Purpur // Yatopia
     private final String serverVersion;
     private final String bukkitVersion = Versioning.getBukkitVersion();
     private final Logger logger = Logger.getLogger("Minecraft");
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
index 448538cc8a3d16b028a0a6f0f05c9370a02f4259..e51dcb259d511c369806a83b96c2820f316e1401 100644
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -275,7 +275,7 @@ public class Main {
                     if (buildDate.before(deadline.getTime())) {
                         // Paper start - This is some stupid bullshit
                         System.err.println("*** Warning, you've not updated in a while! ***");
-                        System.err.println("*** Please download a new build ***"); // Paper // Tuinity
+                        System.err.println("*** Please download a new build as per instructions from https://yatopiamc.org/download ***"); // Paper // Tuinity // Yatopia
                         //System.err.println("*** Server will start in 20 seconds ***");
                         //Thread.sleep(TimeUnit.SECONDS.toMillis(20));
                         // Paper End
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
index b14e9a2cd6e849fe91a2512f379036a284323420..54aebe9da1f31b3250b349a91e78eadb7a031096 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
@@ -377,7 +377,7 @@ public final class CraftMagicNumbers implements UnsafeValues {
 
     @Override
     public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() {
-        return new net.pl3x.purpur.PurpurVersionFetcher();
+        return new org.yatopiamc.yatopia.server.YatopiaVersionFetcher(); // Yatopia
     }
 
     @Override
diff --git a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
index 13b98439320ac1401a920c01d7cf5a4b3a23deff..d2f272fd733f7eee9a89029baecccfac7e45baf4 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
@@ -11,7 +11,7 @@ public final class Versioning {
     public static String getBukkitVersion() {
         String result = "Unknown-Version";
 
-        InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/net.pl3x.purpur/purpur-api/pom.properties"); // Tuinity // Purpur
+        InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/org.yatopiamc/yatopia-api/pom.properties"); // Tuinity // Purpur // Yatopia
         Properties properties = new Properties();
 
         if (stream != null) {
diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java
index 089ddda8892c3660c5dcb62d0fd56544857a2eba..8ee165d1c752e53601254f734507370b91ad7b73 100644
--- a/src/main/java/org/spigotmc/WatchdogThread.java
+++ b/src/main/java/org/spigotmc/WatchdogThread.java
@@ -26,7 +26,7 @@ public class WatchdogThread extends Thread
 
     private WatchdogThread(long timeoutTime, boolean restart)
     {
-        super( "Paper Watchdog Thread" );
+        super( "Yatopia Watchdog Thread" ); // Yatopia
         this.timeoutTime = timeoutTime;
         this.restart = restart;
         earlyWarningEvery = Math.min(PaperConfig.watchdogPrintEarlyWarningEvery, timeoutTime); // Paper
@@ -156,14 +156,14 @@ public class WatchdogThread extends Thread
                 if (isLongTimeout) {
                 // Paper end
                 log.log( Level.SEVERE, "------------------------------" );
-                log.log( Level.SEVERE, "The server has stopped responding! This is (probably) not a Paper bug." ); // Paper
+                log.log( Level.SEVERE, "The server has stopped responding! This is (probably) not a Yatopia bug." ); // Paper // Yatopia
                 log.log( Level.SEVERE, "If you see a plugin in the Server thread dump below, then please report it to that author" );
                 log.log( Level.SEVERE, "\t *Especially* if it looks like HTTP or MySQL operations are occurring" );
                 log.log( Level.SEVERE, "If you see a world save or edit, then it means you did far more than your server can handle at once" );
                 log.log( Level.SEVERE, "\t If this is the case, consider increasing timeout-time in spigot.yml but note that this will replace the crash with LARGE lag spikes" );
-                log.log( Level.SEVERE, "If you are unsure or still think this is a Paper bug, please report this to https://github.com/PaperMC/Paper/issues" );
+                log.log( Level.SEVERE, "If you are unsure or still think this is a Yatopia bug, please report this to https://github.com/YatopiaMC/Yatopia/issues" ); // Yatopia
                 log.log( Level.SEVERE, "Be sure to include ALL relevant console errors and Minecraft crash reports" );
-                log.log( Level.SEVERE, "Paper version: " + Bukkit.getServer().getVersion() );
+                log.log( Level.SEVERE, "Yatopia version: " + Bukkit.getServer().getVersion() ); // Yatopia
                 //
                 if ( net.minecraft.server.World.lastPhysicsProblem != null )
                 {
@@ -186,12 +186,12 @@ public class WatchdogThread extends Thread
                 // Paper end
                 } else
                 {
-                    log.log(Level.SEVERE, "--- DO NOT REPORT THIS TO PAPER - THIS IS NOT A BUG OR A CRASH  - " + Bukkit.getServer().getVersion() + " ---");
+                    log.log(Level.SEVERE, "--- DO NOT REPORT THIS TO YATOPIA - THIS IS NOT A BUG OR A CRASH  - " + Bukkit.getServer().getVersion() + " ---"); // Yatopia
                     log.log(Level.SEVERE, "The server has not responded for " + (currentTime - lastTick) / 1000 + " seconds! Creating thread dump");
                 }
                 // Paper end - Different message for short timeout
                 log.log( Level.SEVERE, "------------------------------" );
-                log.log( Level.SEVERE, "Server thread dump (Look for plugins here before reporting to Paper!):" ); // Paper
+                log.log( Level.SEVERE, "Server thread dump (Look for plugins here before reporting to Yatopia!):" ); // Paper // Yatopia
                 ChunkTaskManager.dumpAllChunkLoadInfo(); // Paper
                 this.dumpTickingInfo(); // Tuinity - log detailed tick information
                 dumpThread( ManagementFactory.getThreadMXBean().getThreadInfo( server.serverThread.getId(), Integer.MAX_VALUE ), log );
@@ -207,7 +207,7 @@ public class WatchdogThread extends Thread
                     dumpThread( thread, log );
                 }
                 } else {
-                    log.log(Level.SEVERE, "--- DO NOT REPORT THIS TO PAPER - THIS IS NOT A BUG OR A CRASH ---");
+                    log.log(Level.SEVERE, "--- DO NOT REPORT THIS TO YATOPIA - THIS IS NOT A BUG OR A CRASH ---"); // Yatopia
                 }
 
 
diff --git a/src/main/java/net/pl3x/purpur/PurpurVersionFetcher.java b/src/main/java/org/yatopiamc/yatopia/server/YatopiaVersionFetcher.java
similarity index 57%
rename from src/main/java/net/pl3x/purpur/PurpurVersionFetcher.java
rename to src/main/java/org/yatopiamc/yatopia/server/YatopiaVersionFetcher.java
index d8b408f061d96e2fa8e2e587462e2221aaee80ce..5857bf9fc07ebb51b85bee7c65e65846ae28fca8 100644
--- a/src/main/java/net/pl3x/purpur/PurpurVersionFetcher.java
+++ b/src/main/java/org/yatopiamc/yatopia/server/YatopiaVersionFetcher.java
@@ -1,65 +1,74 @@
-package net.pl3x.purpur;
+package org.yatopiamc.yatopia.server;
 
 import com.destroystokyo.paper.VersionHistoryManager;
-import com.destroystokyo.paper.util.VersionFetcher;
 import com.google.common.base.Charsets;
 import com.google.common.io.Resources;
 import com.google.gson.Gson;
 import com.google.gson.JsonObject;
 import com.google.gson.JsonSyntaxException;
-
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
 import java.io.BufferedReader;
 import java.io.IOException;
+import java.io.InputStream;
 import java.io.InputStreamReader;
 import java.net.HttpURLConnection;
 import java.net.URL;
+import java.net.URLEncoder;
+import java.util.Arrays;
+import java.util.Objects;
+import java.util.jar.Manifest;
+import javax.annotation.Nonnull;
 
-public class PurpurVersionFetcher implements VersionFetcher {
-    private static final String JENKINS_URL = "https://ci.pl3x.net/job/Purpur/lastSuccessfulBuild/buildNumber";
-    private static final String GITHUB_BRANCH_NAME = "master";
+import com.destroystokyo.paper.util.VersionFetcher;
+import javax.annotation.Nullable;
+import net.kyori.adventure.text.Component;
+import net.kyori.adventure.text.format.NamedTextColor;
+import net.kyori.adventure.text.TextComponent;
+import net.kyori.adventure.text.format.TextDecoration;
+
+public class YatopiaVersionFetcher implements VersionFetcher {
 
     @Override
     public long getCacheTime() {
-        return 720000;
+        return 3600000;
     }
 
     @Nonnull
     @Override
-    public String getVersionMessage(@Nonnull String serverVersion) {
-        String[] parts = serverVersion.substring("git-Purpur-".length()).split("[-\\s]");
-        String updateMessage = getUpdateStatusMessage("pl3xgaming/Purpur", GITHUB_BRANCH_NAME, parts[0]);
-        String history = getHistory();
-
-        return history != null ? history + "\n" + updateMessage : updateMessage;
+    public Component getVersionMessage(@Nonnull String serverVersion) {
+        if (serverVersion.equals("null")) return Component.text("Custom build");
+        String[] parts = serverVersion.substring("git-Yatopia-".length()).split("[-\\s]");
+        String branch = String.join("-", Arrays.copyOfRange(parts, 0, parts.length - 3));
+        String version = parts[parts.length - 3];
+        final Component updateMessage = getUpdateStatusMessage("YatopiaMC/Yatopia", branch, version);
+        final Component history = getHistory();
+        return history != null ?  TextComponent.ofChildren(history, Component.newline(), updateMessage) : updateMessage;
     }
 
-    private static String getUpdateStatusMessage(@Nonnull String repo, @Nonnull String branch, @Nonnull String versionInfo) {
+    private Component getUpdateStatusMessage(String repo, String branch, String versionInfo) {
         int distance;
         try {
             int jenkinsBuild = Integer.parseInt(versionInfo);
-            distance = fetchDistanceFromJenkins(jenkinsBuild);
+            distance = fetchDistanceFromJenkins(branch, jenkinsBuild);
         } catch (NumberFormatException ignored) {
-            versionInfo = versionInfo.replace("\"", "");
-            distance = fetchDistanceFromGitHub(repo, branch, versionInfo);
+            distance = fetchDistanceFromGitHub(repo, branch, versionInfo.replace("\"", ""));
         }
 
         switch (distance) {
             case -1:
-                return "Error obtaining version information";
+                return Component.text("Error obtaining version information", NamedTextColor.YELLOW);
             case 0:
-                return "You are running the latest version";
+                return Component.text("You are running the latest version", NamedTextColor.GREEN);
             case -2:
-                return "Unknown version";
+                return Component.text("\u00AF\\_(\u30C4)_/\u00AF", NamedTextColor.YELLOW);
             default:
-                return "You are " + distance + " version(s) behind";
+                return Component.text("You are " + distance + " version(s) behind", NamedTextColor.YELLOW);
         }
     }
 
-    private static int fetchDistanceFromJenkins(int jenkinsBuild) {
+    // modified from PurpurVersionFetcher
+    private static int fetchDistanceFromJenkins(String branch, int jenkinsBuild) {
         try {
-            try (BufferedReader reader = Resources.asCharSource(new URL(JENKINS_URL), Charsets.UTF_8).openBufferedStream()) {
+            try (BufferedReader reader = Resources.asCharSource(new URL("https://ci.codemc.io/job/YatopiaMC/job/Yatopia/job/" + URLEncoder.encode(branch, Charsets.UTF_8.name()) + "/lastStableBuild/buildNumber"), Charsets.UTF_8).openBufferedStream()) {
                 return Integer.decode(reader.readLine()) - jenkinsBuild;
             } catch (NumberFormatException ex) {
                 ex.printStackTrace();
@@ -72,6 +81,7 @@ public class PurpurVersionFetcher implements VersionFetcher {
     }
 
     // Contributed by Techcable <Techcable@outlook.com> in GH-65
+    // from PaperVersionFetcher
     private static int fetchDistanceFromGitHub(@Nonnull String repo, @Nonnull String branch, @Nonnull String hash) {
         try {
             HttpURLConnection connection = (HttpURLConnection) new URL("https://api.github.com/repos/" + repo + "/compare/" + branch + "..." + hash).openConnection();
@@ -98,8 +108,9 @@ public class PurpurVersionFetcher implements VersionFetcher {
         }
     }
 
+    // from PaperVersionFetcher
     @Nullable
-    private String getHistory() {
+    private Component getHistory() {
         final VersionHistoryManager.VersionData data = VersionHistoryManager.INSTANCE.getVersionData();
         if (data == null) {
             return null;
@@ -110,6 +121,7 @@ public class PurpurVersionFetcher implements VersionFetcher {
             return null;
         }
 
-        return "Previous version: " + oldVersion;
+        return Component.text("Previous version: " + oldVersion, NamedTextColor.GRAY, TextDecoration.ITALIC);
     }
-}
+
+}
\ No newline at end of file
