mirror of
https://github.com/YatopiaMC/Yatopia.git
synced 2025-02-15 11:51:57 +01:00
Fixes #226 All these were doing some kind of weirdness to the chunk generation, thats why they were dropped. Unfortunately this will decrease performance, but bugs is our priority before speed.
146 lines
6.5 KiB
Diff
146 lines
6.5 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Ivan Pekov <ivan@mrivanplays.com>
|
|
Date: Wed, 30 Sep 2020 18:05:45 +0300
|
|
Subject: [PATCH] Add nspt command
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java
|
|
index 6c280d64bb069fba0d52a7d8b4eb6a0816354cc1..15ccdad0f46297c30ed603879db467608c410df4 100644
|
|
--- a/src/main/java/net/minecraft/server/DedicatedServer.java
|
|
+++ b/src/main/java/net/minecraft/server/DedicatedServer.java
|
|
@@ -184,6 +184,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
|
|
DedicatedServer.LOGGER.error("Unable to load server configuration", e);
|
|
return false;
|
|
}
|
|
+ net.yatopia.server.YatopiaConfig.registerCommands();
|
|
de.minebench.origami.OrigamiConfig.init((java.io.File) options.valueOf("origami-settings"));
|
|
// Yatopia end
|
|
this.setPVP(dedicatedserverproperties.pvp);
|
|
diff --git a/src/main/java/net/yatopia/server/NSPTCommand.java b/src/main/java/net/yatopia/server/NSPTCommand.java
|
|
new file mode 100644
|
|
index 0000000000000000000000000000000000000000..7a8c3e451788b017110a0dd5d83e40ebfeab9e70
|
|
--- /dev/null
|
|
+++ b/src/main/java/net/yatopia/server/NSPTCommand.java
|
|
@@ -0,0 +1,59 @@
|
|
+package net.yatopia.server;
|
|
+
|
|
+import java.util.ArrayList;
|
|
+import java.util.Arrays;
|
|
+import java.util.Collections;
|
|
+import java.util.List;
|
|
+import net.minecraft.server.MinecraftServer;
|
|
+import org.bukkit.ChatColor;
|
|
+import org.bukkit.Location;
|
|
+import org.bukkit.command.Command;
|
|
+import org.bukkit.command.CommandSender;
|
|
+
|
|
+public class NSPTCommand extends Command {
|
|
+
|
|
+ public NSPTCommand(String name) {
|
|
+ super(name);
|
|
+ this.description = "View server tick times in nanoseconds";
|
|
+ this.usageMessage = "/nspt";
|
|
+ this.setPermission("bukkit.command.nspt");
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public List<String> tabComplete(CommandSender sender, String alias, String[] args, Location location) throws IllegalArgumentException {
|
|
+ return Collections.emptyList();
|
|
+ }
|
|
+
|
|
+ @Override
|
|
+ public boolean execute(CommandSender sender, String commandLabel, String[] args) {
|
|
+ if (!testPermission(sender)) return true;
|
|
+
|
|
+ MinecraftServer server = MinecraftServer.getServer();
|
|
+
|
|
+ List<String> times = new ArrayList<>();
|
|
+ times.addAll(eval(server.tickTimes5s.getTimes()));
|
|
+ times.addAll(eval(server.tickTimes10s.getTimes()));
|
|
+ times.addAll(eval(server.tickTimes60s.getTimes()));
|
|
+
|
|
+ sender.sendMessage("§6Server tick NS times §e(§7avg§e/§7min§e/§7max§e)§6 from last 5s§7,§6 10s§7,§6 1m§e:");
|
|
+ sender.sendMessage(String.format("§6◴ %s§7/%s§7/%s§e, %s§7/%s§7/%s§e, %s§7/%s§7/%s", times.toArray()));
|
|
+ return true;
|
|
+ }
|
|
+
|
|
+ private static List<String> eval(long[] times) {
|
|
+ long min = Integer.MAX_VALUE;
|
|
+ long max = 0L;
|
|
+ long total = 0L;
|
|
+ for (long value : times) {
|
|
+ if (value > 0L && value < min) min = value;
|
|
+ if (value > max) max = value;
|
|
+ total += value;
|
|
+ }
|
|
+ double avgD = ((double) total / (double) times.length);
|
|
+ return Arrays.asList(getColor(avgD), getColor(min), getColor(max));
|
|
+ }
|
|
+
|
|
+ private static String getColor(double avg) {
|
|
+ return ChatColor.COLOR_CHAR + (avg >= 5E+7 ? "c" : avg >= (4E+7) ? "e" : "a") + avg;
|
|
+ }
|
|
+}
|
|
diff --git a/src/main/java/net/yatopia/server/YatopiaConfig.java b/src/main/java/net/yatopia/server/YatopiaConfig.java
|
|
index 0237e91512dd15dae1597f1cbb37b0fb178ae35e..e4c5a485caa9e97388aefd9dc5a3ce40efeca738 100644
|
|
--- a/src/main/java/net/yatopia/server/YatopiaConfig.java
|
|
+++ b/src/main/java/net/yatopia/server/YatopiaConfig.java
|
|
@@ -6,12 +6,15 @@ import java.io.IOException;
|
|
import java.lang.reflect.InvocationTargetException;
|
|
import java.lang.reflect.Method;
|
|
import java.lang.reflect.Modifier;
|
|
+import java.util.HashMap;
|
|
import java.util.List;
|
|
+import java.util.Map;
|
|
import java.util.concurrent.TimeUnit;
|
|
import java.util.logging.Level;
|
|
import java.util.regex.Pattern;
|
|
import net.minecraft.server.MinecraftServer;
|
|
import org.bukkit.Bukkit;
|
|
+import org.bukkit.command.Command;
|
|
import org.bukkit.configuration.InvalidConfigurationException;
|
|
import org.bukkit.configuration.file.YamlConfiguration;
|
|
|
|
@@ -25,6 +28,7 @@ public class YatopiaConfig {
|
|
public static YamlConfiguration config;
|
|
public static int version; // since we're remapping sidestreams' configs we need this public
|
|
public static boolean verbose; // since we're remapping sidestreams' configs we need this public
|
|
+ private static Map<String, Command> commands;
|
|
/*========================================================================*/
|
|
|
|
public static void init(File configFile) {
|
|
@@ -40,6 +44,8 @@ public class YatopiaConfig {
|
|
config.options().header(HEADER);
|
|
config.options().copyDefaults(true);
|
|
verbose = getBoolean("verbose", false);
|
|
+ commands = new HashMap<>();
|
|
+ commands.put("nspt", new NSPTCommand("nspt"));
|
|
|
|
version = getInt("config-version", 1);
|
|
set("config-version", 1);
|
|
@@ -47,6 +53,12 @@ public class YatopiaConfig {
|
|
readConfig(YatopiaConfig.class, null);
|
|
}
|
|
|
|
+ public static void registerCommands() {
|
|
+ for (Map.Entry<String, Command> entry : commands.entrySet()) {
|
|
+ MinecraftServer.getServer().server.getCommandMap().register(entry.getKey(), "Yatopia", entry.getValue());
|
|
+ }
|
|
+ }
|
|
+
|
|
private static void removeLeftovers() {
|
|
// this method is only to remove non-used values in the config
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
index 78d7fc805a1aeb0d31e51a5aa68e92d9ffd7ba73..e64614c7c98ecc1dfc5aa6de07db07eeb399d351 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
@@ -902,6 +902,7 @@ public final class CraftServer implements Server {
|
|
org.spigotmc.SpigotConfig.registerCommands(); // Spigot
|
|
com.destroystokyo.paper.PaperConfig.registerCommands(); // Paper
|
|
net.pl3x.purpur.PurpurConfig.registerCommands(); // Purpur
|
|
+ net.yatopia.server.YatopiaConfig.registerCommands(); // Yatopia
|
|
overrideAllCommandBlockCommands = commandsConfiguration.getStringList("command-block-overrides").contains("*");
|
|
ignoreVanillaPermissions = commandsConfiguration.getBoolean("ignore-vanilla-permissions");
|
|
|