From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: violetc <58360096+s-yh-china@users.noreply.github.com> Date: Sat, 29 Jan 2022 18:04:46 +0800 Subject: [PATCH] Add Leaves Command diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java index eda9ce9953943996ca000d762e15b7e6d5f45825..24a2a229bee621fe421553647198e21dad0ba072 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -1,26 +1,11 @@ package net.minecraft.server.dedicated; +import co.aikar.timings.MinecraftTimings; import com.google.common.base.Strings; -import com.google.common.collect.Lists; import com.mojang.authlib.GameProfile; import com.mojang.authlib.GameProfileRepository; import com.mojang.authlib.minecraft.MinecraftSessionService; import com.mojang.datafixers.DataFixer; -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.IOException; -import java.io.InputStreamReader; -import java.net.InetAddress; -import java.net.Proxy; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.Collections; -import java.util.List; -import java.util.Locale; -import java.util.function.BooleanSupplier; -import java.util.regex.Pattern; -import javax.annotation.Nullable; import net.minecraft.DefaultUncaughtExceptionHandler; import net.minecraft.DefaultUncaughtExceptionHandlerWithName; import net.minecraft.SharedConstants; @@ -58,15 +43,25 @@ import net.minecraft.world.level.GameType; import net.minecraft.world.level.block.entity.SkullBlockEntity; import net.minecraft.world.level.storage.LevelStorageSource; import net.minecraft.world.level.storage.WorldData; +import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.Level; import org.apache.logging.log4j.io.IoBuilder; import org.bukkit.command.CommandSender; -import co.aikar.timings.MinecraftTimings; // Paper -import org.bukkit.event.server.ServerCommandEvent; import org.bukkit.craftbukkit.util.Waitable; import org.bukkit.event.server.RemoteServerCommandEvent; +import org.bukkit.event.server.ServerCommandEvent; + +import javax.annotation.Nullable; +import java.io.BufferedWriter; +import java.io.IOException; +import java.net.InetAddress; +import java.net.Proxy; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Locale; +import java.util.function.BooleanSupplier; +import java.util.regex.Pattern; // CraftBukkit end public class DedicatedServer extends MinecraftServer implements ServerInterface { @@ -234,6 +229,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface // Paper end top.leavesmc.leaves.LeavesConfig.init((java.io.File) options.valueOf("leaves-settings")); // Leaves - Server Config + top.leavesmc.leaves.LeavesConfig.registerCommands(); // Leaves - Server Command this.setPvpAllowed(dedicatedserverproperties.pvp); this.setFlightAllowed(dedicatedserverproperties.allowFlight); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java index 11fa86d588d4c40a95246e1f78da51557838450e..f4f7f88cec1806a5378893769c26befe7dc97d82 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -1009,6 +1009,7 @@ public final class CraftServer implements Server { this.reloadData(); org.spigotmc.SpigotConfig.registerCommands(); // Spigot com.destroystokyo.paper.PaperConfig.registerCommands(); // Paper + top.leavesmc.leaves.LeavesConfig.registerCommands(); // Leaves - Server Command this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java index 3350a80d8790a17b19155425a53291fc3be9b886..a73c79e57f51a6ab0f0d0b37fa6c87ff9bd69325 100644 --- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java +++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java @@ -1,13 +1,18 @@ package top.leavesmc.leaves; import com.destroystokyo.paper.util.SneakyThrow; +import net.minecraft.server.MinecraftServer; import org.bukkit.Bukkit; +import org.bukkit.command.Command; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.YamlConfiguration; + import java.io.File; 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.logging.Level; // Copy form Tuinity(https://github.com/Tuinity/Tuinity) @@ -23,6 +28,7 @@ public final class LeavesConfig { public static YamlConfiguration config; private static int configVersion; public static boolean createWorldSections = true; + static Map commands; public static void init(final File file) { LeavesConfig.configFile = file; @@ -46,6 +52,8 @@ public final class LeavesConfig { } } + commands = new HashMap<>(); + LeavesConfig.load(config); } @@ -91,6 +99,12 @@ public final class LeavesConfig { snowballAndEggCanKnockback = getBoolean("settings.snowball-and-egg-can-knockback-player", snowballAndEggCanKnockback); } + public static void registerCommands() { + for (Map.Entry entry : commands.entrySet()) { + MinecraftServer.getServer().server.getCommandMap().register(entry.getKey(), "Leaves", entry.getValue()); + } + } + static boolean getBoolean(final String path, final boolean dfl) { LeavesConfig.config.addDefault(path, Boolean.valueOf(dfl)); return LeavesConfig.config.getBoolean(path, dfl);