Yatopia command gets nuked

This commit is contained in:
Ivan Pekov 2020-09-15 08:43:13 +03:00
parent b512028dea
commit a62a7ad2a8
No known key found for this signature in database
GPG Key ID: BC975C392D9CA3A3
8 changed files with 21 additions and 188 deletions

View File

@ -14,7 +14,6 @@ # Patches
| server | Add GameProfileLookupEvent | tr7zw | |
| api | Add NBT API as a first-class lib | tr7zw | |
| server | Add NBT API as a first-class lib | tr7zw | |
| server | Add config Yatopia command and basic settings | tr7zw | |
| api | Add getLastTickMs api | tr7zw | |
| server | Add getLastTickMs api | tr7zw | |
| server | Add no-tick block list | William Blake Galbreath | |
@ -116,6 +115,7 @@ # Patches
| server | Use offline uuids if we need to | Ivan Pekov | |
| server | Villagers follow emerald blocks | William Blake Galbreath | |
| api | Yatopia API Bundle | Bud Gidiere | |
| server | Yatopia configuration | tr7zw | |
| server | Yatopia-Server-Fixes | Bud Gidiere | |
| server | Zombie horse naturally spawn | William Blake Galbreath | |
| server | dont load chunks for physics | Aikar | |

View File

@ -1,8 +1,9 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
rom 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: tr7zw <tr7zw@live.de>
Date: Wed, 5 Aug 2020 08:05:10 -0500
Subject: [PATCH] Add config Yatopia command and basic settings
Subject: [PATCH] Yatopia configuration
also some basic settings that dont deserve a patch
diff --git a/src/main/java/co/aikar/timings/TimingsExport.java b/src/main/java/co/aikar/timings/TimingsExport.java
index dae2e5d70756c5b61163d57099b65f7e415b288c..21712a6691e00ffaf523f084da6ce5659fc98be9 100644
@ -26,10 +27,10 @@ index dae2e5d70756c5b61163d57099b65f7e415b288c..21712a6691e00ffaf523f084da6ce565
String hostName = "BrokenHost";
try {
diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java
index 050e0d7ec29755590dde2f35090b96f6f2457952..dde91498e773cc6744612f780ce82bd35ad79637 100644
index 050e0d7ec29755590dde2f35090b96f6f2457952..72d7a017f2aa7f2fde3b5de437e7fd2e051edd24 100644
--- a/src/main/java/net/minecraft/server/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/DedicatedServer.java
@@ -177,6 +177,15 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
@@ -177,6 +177,14 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
// Paper end
com.tuinity.tuinity.config.TuinityConfig.init((java.io.File) options.valueOf("tuinity-settings")); // Tuinity - Server Config
@ -40,7 +41,6 @@ index 050e0d7ec29755590dde2f35090b96f6f2457952..dde91498e773cc6744612f780ce82bd3
+ DedicatedServer.LOGGER.error("Unable to load server configuration", e);
+ return false;
+ }
+ net.yatopia.server.YatopiaConfig.registerCommands();
+ // Yatopia end
this.setPVP(dedicatedserverproperties.pvp);
this.setAllowFlight(dedicatedserverproperties.allowFlight);
@ -78,159 +78,12 @@ index c944b407df03fca1153978d0763313d44d6461c8..66d0cf7d4b0bbffbd5eff64bfc46806c
playerconnection.sendPacket(new PacketPlayOutServerDifficulty(worlddata.getDifficulty(), worlddata.isDifficultyLocked()));
playerconnection.sendPacket(new PacketPlayOutAbilities(entityplayer.abilities));
playerconnection.sendPacket(new PacketPlayOutHeldItemSlot(entityplayer.inventory.itemInHandIndex));
diff --git a/src/main/java/net/yatopia/server/YatopiaCommand.java b/src/main/java/net/yatopia/server/YatopiaCommand.java
new file mode 100644
index 0000000000000000000000000000000000000000..3a3cda53b253e42556268506e2c32b65be84bedb
--- /dev/null
+++ b/src/main/java/net/yatopia/server/YatopiaCommand.java
@@ -0,0 +1,141 @@
+package net.yatopia.server;
+
+import com.google.common.base.Preconditions;
+import com.google.common.collect.Lists;
+import java.io.File;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.Locale;
+import java.util.function.Function;
+import net.minecraft.server.MinecraftKey;
+import net.minecraft.server.MinecraftServer;
+import net.minecraft.server.World;
+import net.minecraft.server.WorldDataServer;
+import org.bukkit.Bukkit;
+import org.bukkit.ChatColor;
+import org.bukkit.Location;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandSender;
+import org.spigotmc.TicksPerSecondCommand;
+
+public class YatopiaCommand extends Command {
+
+ public YatopiaCommand(String name) {
+ super(name);
+ this.description = "Yatopia related commands";
+ this.usageMessage = "/yatopia [help | reload | info | version]";
+ this.setPermission("bukkit.command.yatopia");
+ }
+
+ @Override
+ public List<String> tabComplete(CommandSender sender, String alias, String[] args, Location location) throws IllegalArgumentException {
+ if (args.length <= 1) {
+ return getListMatchingLast(args, "help", "info", "reload", "version");
+ }
+ return Collections.emptyList();
+ }
+
+ // Code from Mojang - copyright them
+ public static List<String> getListMatchingLast(String[] args, String... matches) {
+ return getListMatchingLast(args, Arrays.asList(matches));
+ }
+
+ public static boolean matches(String s, String s1) {
+ return s1.regionMatches(true, 0, s, 0, s.length());
+ }
+
+ public static List<String> getListMatchingLast(String[] strings, Collection<?> collection) {
+ String last = strings[strings.length - 1];
+ List<String> results = Lists.newArrayList();
+
+ if (!collection.isEmpty()) {
+ Function<Object, String> toStringFunction = (o) -> {
+ Preconditions.checkNotNull(o);
+ return o.toString();
+ };
+ for (Object c : collection) {
+ String value = toStringFunction.apply(c);
+ if (matches(last, value)) {
+ results.add(value);
+ }
+ }
+
+ if (results.isEmpty()) {
+ for (Object c : collection) {
+ if (c instanceof MinecraftKey) {
+ MinecraftKey key = (MinecraftKey) c;
+ if (matches(last, key.getKey())) {
+ results.add(key.toString());
+ }
+ }
+ }
+ }
+ }
+
+ return results;
+ }
+ // end copy stuff
+
+ @Override
+ public boolean execute(CommandSender sender, String commandLabel, String[] args) {
+ if (!testPermission(sender)) return true;
+
+ if (args.length == 0) {
+ sender.sendMessage(ChatColor.RED + "Usage: " + usageMessage);
+ return false;
+ }
+
+ switch (args[0].toLowerCase(Locale.ENGLISH)) {
+ case "info":
+ doInfo(sender);
+ break;
+ case "reload":
+ doReload(sender);
+ break;
+ case "ver":
+ case "version":
+ Command ver = org.bukkit.Bukkit.getServer().getCommandMap().getCommand("version");
+ if (ver != null) {
+ ver.execute(sender, commandLabel, new String[0]);
+ break;
+ }
+ // else - fall through to default
+ default:
+ sender.sendMessage(ChatColor.RED + "Usage: " + usageMessage);
+ return false;
+ }
+
+ return true;
+ }
+
+ private void doInfo(CommandSender sender) {
+ broadcastMessage(sender, ChatColor.GOLD + "Last tick took " + TicksPerSecondCommand.format(Bukkit.getLastTickMs()));
+ for (World world : MinecraftServer.getServer().getWorlds()) {
+ String name = ((WorldDataServer) world.worldData).getName();
+ broadcastMessage(sender, ChatColor.GOLD + "Entities in world " +
+ ChatColor.YELLOW + "\"" + name + "\"" +
+ ChatColor.GOLD + ": " + ChatColor.YELLOW + world.getWorld().getEntityCount());
+ broadcastMessage(sender, ChatColor.GOLD + "Chunks loaded in world " +
+ ChatColor.YELLOW + "\"" + name + "\"" +
+ ChatColor.GOLD + ": " + ChatColor.YELLOW + world.getWorld().getChunkCount());
+ }
+ }
+
+ private void doReload(CommandSender sender) {
+ broadcastMessage(sender, ChatColor.RED + "Please note that this command is not supported and may cause issues.");
+ broadcastMessage(sender, ChatColor.RED + "If you encounter any issues please use the /stop command to restart your server.");
+
+ MinecraftServer console = MinecraftServer.getServer();
+ YatopiaConfig.init((File) console.options.valueOf("yatopia-settings"));
+ console.server.reloadCount++;
+
+ broadcastMessage(sender, ChatColor.GREEN + "Yatopia config reload complete.");
+ }
+
+ // utility method
+ private void broadcastMessage(CommandSender sender, String message) {
+ Command.broadcastCommandMessage(sender, message);
+ }
+}
diff --git a/src/main/java/net/yatopia/server/YatopiaConfig.java b/src/main/java/net/yatopia/server/YatopiaConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..f69be0c7eef07727028c14e5ad9c859363aa19c0
index 0000000000000000000000000000000000000000..c4dd521d18dd60ec07bdcf0d367b5135710dca58
--- /dev/null
+++ b/src/main/java/net/yatopia/server/YatopiaConfig.java
@@ -0,0 +1,213 @@
@@ -0,0 +1,193 @@
+package net.yatopia.server;
+
+import com.google.common.base.Throwables;
@ -239,15 +92,12 @@ index 0000000000000000000000000000000000000000..f69be0c7eef07727028c14e5ad9c8593
+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;
+
@ -260,11 +110,8 @@ index 0000000000000000000000000000000000000000..f69be0c7eef07727028c14e5ad9c8593
+ /*========================================================================*/
+ public static YamlConfiguration config;
+ public static int version; // since we're remapping sidestreams' configs we need this public
+ static Map<String, Command> commands;
+ public static boolean verbose; // since we're remapping sidestreams' configs we need this public
+ private static boolean fatalError;
+ /*========================================================================*/
+ private static boolean metricsStarted;
+
+ public static void init(File configFile) {
+ CONFIG_FILE = configFile;
@ -280,9 +127,6 @@ index 0000000000000000000000000000000000000000..f69be0c7eef07727028c14e5ad9c8593
+ config.options().copyDefaults(true);
+ verbose = getBoolean("verbose", false);
+
+ commands = new HashMap<String, Command>();
+ commands.put("yatopia", new YatopiaCommand("yatopia"));
+
+ version = getInt("config-version", 1);
+ set("config-version", 1);
+ removeLeftovers();
@ -311,23 +155,12 @@ index 0000000000000000000000000000000000000000..f69be0c7eef07727028c14e5ad9c8593
+ Bukkit.getLogger().severe(s);
+ }
+
+ protected static void fatal(String s) {
+ fatalError = true;
+ throw new RuntimeException("Fatal yatopia.yml config error: " + s);
+ }
+
+ protected static void log(String s) {
+ if (verbose) {
+ Bukkit.getLogger().info(s);
+ }
+ }
+
+ public static void registerCommands() {
+ for (Map.Entry<String, Command> entry : commands.entrySet()) {
+ MinecraftServer.getServer().server.getCommandMap().register(entry.getKey(), "Yatopia", entry.getValue());
+ }
+ }
+
+ static void readConfig(Class<?> clazz, Object instance) {
+ for (Method method : clazz.getDeclaredMethods()) {
+ if (Modifier.isPrivate(method.getModifiers())) {

View File

@ -36,10 +36,10 @@ index 95aeaaf0bb07c5ecf7117dae3382b0f0aac6426f..71636ce642efcd3453b6c5bfb2b2ef0e
}
diff --git a/src/main/java/net/yatopia/server/YatopiaConfig.java b/src/main/java/net/yatopia/server/YatopiaConfig.java
index f69be0c7eef07727028c14e5ad9c859363aa19c0..b918247b14c712f48eb0c55d2750c49fc86256df 100644
index c4dd521d18dd60ec07bdcf0d367b5135710dca58..d69001b126046070abfa96dd3d1e6f95a24af536 100644
--- a/src/main/java/net/yatopia/server/YatopiaConfig.java
+++ b/src/main/java/net/yatopia/server/YatopiaConfig.java
@@ -210,4 +210,9 @@ public class YatopiaConfig {
@@ -190,4 +190,9 @@ public class YatopiaConfig {
private static void brandName() {
brandName = getString("brand-name", brandName);
}

View File

@ -18,10 +18,10 @@ index 9110491fb4cf4424d737b47602a85abaa7f30bea..13a712f1c75a1d6d3a5cedb4a11b2768
if (this.noclip) {
this.l(this.locX(), (this.getBoundingBox().minY + this.getBoundingBox().maxY) / 2.0D, this.locZ());
diff --git a/src/main/java/net/yatopia/server/YatopiaConfig.java b/src/main/java/net/yatopia/server/YatopiaConfig.java
index b918247b14c712f48eb0c55d2750c49fc86256df..88ec22d8211276aeaadc14c5c13dc8a6fbedb382 100644
index d69001b126046070abfa96dd3d1e6f95a24af536..9357d12cd623cd3ea92e39bd9d70ee89330ad1b3 100644
--- a/src/main/java/net/yatopia/server/YatopiaConfig.java
+++ b/src/main/java/net/yatopia/server/YatopiaConfig.java
@@ -215,4 +215,9 @@ public class YatopiaConfig {
@@ -195,4 +195,9 @@ public class YatopiaConfig {
private static void pistonPushLimit() {
pistonPushLimit = getInt("settings.pistonPushLimit", 12);
}

View File

@ -151,10 +151,10 @@ index 1104196cf6dc448dada2e190e5e9e27c9f18d2dc..da2bd7c597a3f691ec13ff37dd2ef87d
MinecraftServer minecraftserver = ((WorldServer) this.world).getMinecraftServer();
diff --git a/src/main/java/net/yatopia/server/YatopiaConfig.java b/src/main/java/net/yatopia/server/YatopiaConfig.java
index 88ec22d8211276aeaadc14c5c13dc8a6fbedb382..c60c3c4b730fe299e62c277cdd644b6afd3841e5 100644
index 9357d12cd623cd3ea92e39bd9d70ee89330ad1b3..eb53176099103172961d544c0dab17cc19ef2e7f 100644
--- a/src/main/java/net/yatopia/server/YatopiaConfig.java
+++ b/src/main/java/net/yatopia/server/YatopiaConfig.java
@@ -220,4 +220,11 @@ public class YatopiaConfig {
@@ -200,4 +200,11 @@ public class YatopiaConfig {
private static void itemStuckSleepTicks() {
itemStuckSleepTicks = getInt("settings.itemStuckSleepTicks", 1);
}

View File

@ -46,13 +46,13 @@ index bbf09800b7b72bdfb75c91e4c6c77fe00e3ad436..1d98bfdee95fb1052fcd9f141a2ab82b
for (final Method method : clazz.getDeclaredMethods()) {
if (method.getReturnType() != void.class || method.getParameterCount() != 0 ||
diff --git a/src/main/java/net/minecraft/server/DedicatedServer.java b/src/main/java/net/minecraft/server/DedicatedServer.java
index dde91498e773cc6744612f780ce82bd35ad79637..15ccdad0f46297c30ed603879db467608c410df4 100644
index 72d7a017f2aa7f2fde3b5de437e7fd2e051edd24..6c280d64bb069fba0d52a7d8b4eb6a0816354cc1 100644
--- a/src/main/java/net/minecraft/server/DedicatedServer.java
+++ b/src/main/java/net/minecraft/server/DedicatedServer.java
@@ -185,6 +185,7 @@ public class DedicatedServer extends MinecraftServer implements IMinecraftServer
@@ -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);

View File

@ -18,10 +18,10 @@ index 26306687857100173e762578eb2c509370279207..c6bbc620e163acea757b610e95169e8f
}
diff --git a/src/main/java/net/yatopia/server/YatopiaConfig.java b/src/main/java/net/yatopia/server/YatopiaConfig.java
index c60c3c4b730fe299e62c277cdd644b6afd3841e5..c1aa37a91aef1bd2a2cafa32cb6028831f0f8c1d 100644
index eb53176099103172961d544c0dab17cc19ef2e7f..b0dac509dddd576742308b687048e432fcf0484f 100644
--- a/src/main/java/net/yatopia/server/YatopiaConfig.java
+++ b/src/main/java/net/yatopia/server/YatopiaConfig.java
@@ -227,4 +227,9 @@ public class YatopiaConfig {
@@ -207,4 +207,9 @@ public class YatopiaConfig {
simplerVillagerBehavior = getBoolean("settings.villager.simplerVillagerBehavior", false);
villagersHideAtNight = getBoolean("settings.villager.villagersHideAtNight", false);
}

View File

@ -65,10 +65,10 @@ index 1496c43fc9487caf6ddb3782a9d1c79ef6ca1e94..7e486c0f326449a10700efcec7ed3d9d
}
diff --git a/src/main/java/net/yatopia/server/YatopiaConfig.java b/src/main/java/net/yatopia/server/YatopiaConfig.java
index c1aa37a91aef1bd2a2cafa32cb6028831f0f8c1d..256a713df5ed27fbe926ab0a124ffcd438fa431c 100644
index b0dac509dddd576742308b687048e432fcf0484f..0237e91512dd15dae1597f1cbb37b0fb178ae35e 100644
--- a/src/main/java/net/yatopia/server/YatopiaConfig.java
+++ b/src/main/java/net/yatopia/server/YatopiaConfig.java
@@ -232,4 +232,26 @@ public class YatopiaConfig {
@@ -212,4 +212,26 @@ public class YatopiaConfig {
private static void fixFallDistance() {
fixFallDistance = getBoolean("settings.fixFallDistance", false);
}