diff --git a/patches/server/0004-Set-Gale-permissions-root.patch b/patches/server/0004-Set-Gale-permissions-root.patch index 54b9c72..c985379 100644 --- a/patches/server/0004-Set-Gale-permissions-root.patch +++ b/patches/server/0004-Set-Gale-permissions-root.patch @@ -5,14 +5,14 @@ Subject: [PATCH] Set Gale permissions root diff --git a/src/main/java/org/bukkit/craftbukkit/util/permissions/CraftDefaultPermissions.java b/src/main/java/org/bukkit/craftbukkit/util/permissions/CraftDefaultPermissions.java -index 8e06bc11fb28baee3407bbfe9d7b3689d6f85ff2..31a8161967139d1576a9c47f11d875adbd896f3d 100644 +index 8e06bc11fb28baee3407bbfe9d7b3689d6f85ff2..2e23147f807c6620b54d3047fe24a3847900712c 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/permissions/CraftDefaultPermissions.java +++ b/src/main/java/org/bukkit/craftbukkit/util/permissions/CraftDefaultPermissions.java @@ -5,6 +5,7 @@ import org.bukkit.util.permissions.DefaultPermissions; public final class CraftDefaultPermissions { private static final String ROOT = "minecraft"; -+ public static final String GALE_ROOT = "gale"; ++ public static final String GALE_ROOT = "gale"; // Gale - set Gale permissions root private CraftDefaultPermissions() {} diff --git a/patches/server/0005-Gale-commands.patch b/patches/server/0005-Gale-commands.patch new file mode 100644 index 0000000..9c76f92 --- /dev/null +++ b/patches/server/0005-Gale-commands.patch @@ -0,0 +1,456 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: MartijnMuijsers +Date: Sat, 26 Nov 2022 10:47:56 +0100 +Subject: [PATCH] Gale commands + + +diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +index 661794310eb10d4b9fe29c9445abd57826214d41..d2b14c65e6a925ba4a29d48bcedc0d9504092052 100644 +--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java ++++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +@@ -50,6 +50,7 @@ import net.minecraft.world.level.GameRules; + import net.minecraft.world.level.GameType; + import net.minecraft.world.level.block.entity.SkullBlockEntity; + import net.minecraft.world.level.storage.LevelStorageSource; ++import org.galemc.gale.command.GaleCommands; + import org.slf4j.Logger; + + // CraftBukkit start +@@ -221,6 +222,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface + org.spigotmc.WatchdogThread.doStart(org.spigotmc.SpigotConfig.timeoutTime, org.spigotmc.SpigotConfig.restartOnCrash); + thread.start(); // Paper - start console thread after MinecraftServer.console & PaperConfig are initialized + io.papermc.paper.command.PaperCommands.registerCommands(this); ++ GaleCommands.registerCommands(this); // Gale - Gale commands - register commands + com.destroystokyo.paper.Metrics.PaperMetrics.startMetrics(); + com.destroystokyo.paper.VersionHistoryManager.INSTANCE.getClass(); // load version history now + io.papermc.paper.brigadier.PaperBrigadierProviderImpl.INSTANCE.getClass(); // init PaperBrigadierProvider +diff --git a/src/main/java/org/galemc/gale/command/GaleCommand.java b/src/main/java/org/galemc/gale/command/GaleCommand.java +new file mode 100644 +index 0000000000000000000000000000000000000000..005718cac1c74527e02b70852acb1922243c6016 +--- /dev/null ++++ b/src/main/java/org/galemc/gale/command/GaleCommand.java +@@ -0,0 +1,176 @@ ++// Gale - Gale commands - /gale command ++ ++package org.galemc.gale.command; ++ ++import io.papermc.paper.command.CommandUtil; ++import it.unimi.dsi.fastutil.Pair; ++import net.minecraft.Util; ++import org.bukkit.Bukkit; ++import org.bukkit.Location; ++import org.bukkit.command.Command; ++import org.bukkit.command.CommandSender; ++import org.bukkit.permissions.Permission; ++import org.bukkit.permissions.PermissionDefault; ++import org.bukkit.plugin.PluginManager; ++import org.jetbrains.annotations.Nullable; ++ ++import java.util.ArrayList; ++import java.util.Arrays; ++import java.util.Collection; ++import java.util.Collections; ++import java.util.HashMap; ++import java.util.List; ++import java.util.Locale; ++import java.util.Map; ++import java.util.Objects; ++import java.util.Set; ++import java.util.stream.Collectors; ++ ++import static net.kyori.adventure.text.Component.newline; ++import static net.kyori.adventure.text.Component.text; ++import static net.kyori.adventure.text.format.NamedTextColor.RED; ++import static net.kyori.adventure.text.format.NamedTextColor.GRAY; ++ ++public final class GaleCommand extends Command { ++ public static final String COMMAND_LABEL = "gale"; ++ static final String BASE_PERM = GaleCommands.COMMAND_BASE_PERM + "." + COMMAND_LABEL; ++ private static final Permission basePermission = new Permission(BASE_PERM, PermissionDefault.TRUE); ++ // subcommand label -> subcommand ++ private static final GaleSubcommand RELOAD_SUBCOMMAND = new ReloadSubcommand(); ++ private static final GaleSubcommand VERSION_SUBCOMMAND = new VersionSubcommand(); ++ private static final GaleSubcommand INFO_SUBCOMMAND = new InfoSubcommand(); ++ private static final Map SUBCOMMANDS = Util.make(() -> { ++ final Map, GaleSubcommand> commands = new HashMap<>(); ++ ++ commands.put(Set.of(ReloadSubcommand.LITERAL_ARGUMENT), RELOAD_SUBCOMMAND); ++ commands.put(Set.of(VersionSubcommand.LITERAL_ARGUMENT), VERSION_SUBCOMMAND); ++ commands.put(Set.of(InfoSubcommand.LITERAL_ARGUMENT), INFO_SUBCOMMAND); ++ ++ return commands.entrySet().stream() ++ .flatMap(entry -> entry.getKey().stream().map(s -> Map.entry(s, entry.getValue()))) ++ .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); ++ }); ++ // alias -> subcommand label ++ private static final Map ALIASES = Util.make(() -> { ++ final Map> aliases = new HashMap<>(); ++ ++ aliases.put(VersionSubcommand.LITERAL_ARGUMENT, Set.of("ver")); ++ aliases.put(InfoSubcommand.LITERAL_ARGUMENT, Set.of("about")); ++ ++ return aliases.entrySet().stream() ++ .flatMap(entry -> entry.getValue().stream().map(s -> Map.entry(s, entry.getKey()))) ++ .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); ++ }); ++ ++ private String createUsageMessage(Collection arguments) { ++ return "/" + COMMAND_LABEL + " [" + String.join(" | ", arguments) + "]"; ++ } ++ ++ public GaleCommand() { ++ super(COMMAND_LABEL); ++ this.description = "Gale related commands"; ++ this.usageMessage = this.createUsageMessage(SUBCOMMANDS.keySet()); ++ final List permissions = SUBCOMMANDS.values().stream().map(GaleSubcommand::getPermission).filter(Objects::nonNull).toList(); ++ this.setPermission(BASE_PERM); ++ final PluginManager pluginManager = Bukkit.getServer().getPluginManager(); ++ pluginManager.addPermission(basePermission); ++ for (final Permission permission : permissions) { ++ pluginManager.addPermission(permission); ++ } ++ } ++ ++ @Override ++ public List tabComplete( ++ final CommandSender sender, ++ final String alias, ++ final String[] args, ++ final @Nullable Location location ++ ) throws IllegalArgumentException { ++ if (args.length <= 1) { ++ List subCommandArguments = new ArrayList<>(SUBCOMMANDS.size()); ++ for (Map.Entry subCommandEntry : SUBCOMMANDS.entrySet()) { ++ if (subCommandEntry.getValue().testPermission(sender)) { ++ subCommandArguments.add(subCommandEntry.getKey()); ++ } ++ } ++ return CommandUtil.getListMatchingLast(sender, args, subCommandArguments); ++ } ++ ++ final @Nullable Pair subCommand = resolveCommand(args[0]); ++ if (subCommand != null && subCommand.second().testPermission(sender)) { ++ return subCommand.second().tabComplete(sender, subCommand.first(), Arrays.copyOfRange(args, 1, args.length)); ++ } ++ ++ return Collections.emptyList(); ++ } ++ ++ private boolean testHasOnePermission(CommandSender sender) { ++ for (Map.Entry subCommandEntry : SUBCOMMANDS.entrySet()) { ++ if (subCommandEntry.getValue().testPermission(sender)) { ++ return true; ++ } ++ } ++ return false; ++ } ++ ++ @Override ++ public boolean execute( ++ final CommandSender sender, ++ final String commandLabel, ++ final String[] args ++ ) { ++ ++ // Check if the sender has the base permission and at least one specific permission ++ if (!sender.hasPermission(basePermission) || !this.testHasOnePermission(sender)) { ++ sender.sendMessage(Bukkit.permissionMessage()); ++ return true; ++ } ++ ++ // Determine the usage message with the subcommands they can perform ++ List subCommandArguments = new ArrayList<>(SUBCOMMANDS.size()); ++ for (Map.Entry subCommandEntry : SUBCOMMANDS.entrySet()) { ++ if (subCommandEntry.getValue().testPermission(sender)) { ++ subCommandArguments.add(subCommandEntry.getKey()); ++ } ++ } ++ String specificUsageMessage = this.createUsageMessage(subCommandArguments); ++ ++ // If they did not give a subcommand ++ if (args.length == 0) { ++ INFO_SUBCOMMAND.execute(sender, InfoSubcommand.LITERAL_ARGUMENT, new String[0]); ++ sender.sendMessage(newline().append(text("Command usage: " + specificUsageMessage, GRAY))); ++ return false; ++ } ++ ++ // If they do not have permission for the subcommand they gave, or the argument is not a valid subcommand ++ final @Nullable Pair subCommand = resolveCommand(args[0]); ++ if (subCommand == null || !subCommand.second().testPermission(sender)) { ++ sender.sendMessage(text("Usage: " + specificUsageMessage, RED)); ++ return false; ++ } ++ ++ // Execute the subcommand ++ final String[] choppedArgs = Arrays.copyOfRange(args, 1, args.length); ++ return subCommand.second().execute(sender, subCommand.first(), choppedArgs); ++ ++ } ++ ++ private static @Nullable Pair resolveCommand(String label) { ++ label = label.toLowerCase(Locale.ENGLISH); ++ @Nullable GaleSubcommand subCommand = SUBCOMMANDS.get(label); ++ if (subCommand == null) { ++ final @Nullable String command = ALIASES.get(label); ++ if (command != null) { ++ label = command; ++ subCommand = SUBCOMMANDS.get(command); ++ } ++ } ++ ++ if (subCommand != null) { ++ return Pair.of(label, subCommand); ++ } ++ ++ return null; ++ } ++ ++} +diff --git a/src/main/java/org/galemc/gale/command/GaleCommands.java b/src/main/java/org/galemc/gale/command/GaleCommands.java +new file mode 100644 +index 0000000000000000000000000000000000000000..b729f2c778e6158f1cb3aecc7f0ed0a746ff6339 +--- /dev/null ++++ b/src/main/java/org/galemc/gale/command/GaleCommands.java +@@ -0,0 +1,31 @@ ++// Gale - Gale commands ++ ++package org.galemc.gale.command; ++ ++import net.minecraft.server.MinecraftServer; ++import org.bukkit.command.Command; ++import org.bukkit.craftbukkit.util.permissions.CraftDefaultPermissions; ++import org.checkerframework.checker.nullness.qual.NonNull; ++import org.checkerframework.framework.qual.DefaultQualifier; ++ ++import java.util.HashMap; ++import java.util.Map; ++ ++@DefaultQualifier(NonNull.class) ++public final class GaleCommands { ++ ++ public static final String COMMAND_BASE_PERM = CraftDefaultPermissions.GALE_ROOT + ".command"; ++ ++ private GaleCommands() {} ++ ++ private static final Map COMMANDS = new HashMap<>(); ++ static { ++ COMMANDS.put(GaleCommand.COMMAND_LABEL, new GaleCommand()); ++ } ++ ++ public static void registerCommands(final MinecraftServer server) { ++ COMMANDS.forEach((s, command) -> { ++ server.server.getCommandMap().register(s, "Gale", command); ++ }); ++ } ++} +diff --git a/src/main/java/org/galemc/gale/command/GaleSubcommand.java b/src/main/java/org/galemc/gale/command/GaleSubcommand.java +new file mode 100644 +index 0000000000000000000000000000000000000000..7bcf875f91f5018daa06ef3280c4cdd7e8df4fd5 +--- /dev/null ++++ b/src/main/java/org/galemc/gale/command/GaleSubcommand.java +@@ -0,0 +1,27 @@ ++// Gale - Gale commands ++ ++package org.galemc.gale.command; ++ ++import org.bukkit.command.CommandSender; ++import org.bukkit.permissions.Permission; ++import org.checkerframework.checker.nullness.qual.NonNull; ++import org.checkerframework.framework.qual.DefaultQualifier; ++import org.jetbrains.annotations.Nullable; ++ ++import java.util.Collections; ++import java.util.List; ++ ++@DefaultQualifier(NonNull.class) ++public interface GaleSubcommand { ++ ++ boolean execute(CommandSender sender, String subCommand, String[] args); ++ ++ default List tabComplete(final CommandSender sender, final String subCommand, final String[] args) { ++ return Collections.emptyList(); ++ } ++ ++ boolean testPermission(CommandSender sender); ++ ++ @Nullable Permission getPermission(); ++ ++} +diff --git a/src/main/java/org/galemc/gale/command/InfoSubcommand.java b/src/main/java/org/galemc/gale/command/InfoSubcommand.java +new file mode 100644 +index 0000000000000000000000000000000000000000..c51ce1d7d602e587b3fb43aa3e3564ff60b92bca +--- /dev/null ++++ b/src/main/java/org/galemc/gale/command/InfoSubcommand.java +@@ -0,0 +1,41 @@ ++// Gale - Gale commands - /gale info command ++ ++package org.galemc.gale.command; ++ ++import net.kyori.adventure.text.event.ClickEvent; ++import net.kyori.adventure.text.format.TextDecoration; ++import org.bukkit.command.CommandSender; ++import org.bukkit.permissions.Permission; ++import org.checkerframework.checker.nullness.qual.NonNull; ++import org.checkerframework.framework.qual.DefaultQualifier; ++import org.jetbrains.annotations.Nullable; ++ ++import static net.kyori.adventure.text.Component.text; ++ ++@DefaultQualifier(NonNull.class) ++public final class InfoSubcommand implements GaleSubcommand { ++ ++ public final static String LITERAL_ARGUMENT = "info"; ++ ++ @Override ++ public boolean execute(final CommandSender sender, final String subCommand, final String[] args) { ++ sender.sendMessage( ++ text("Gale is a performant Minecraft server system. Find us on: ") ++ .append(text("https://github.com/GaleMC/Gale") ++ .decorate(TextDecoration.UNDERLINED) ++ .clickEvent(ClickEvent.openUrl("https://github.com/GaleMC/Gale"))) ++ ); ++ return true; ++ } ++ ++ @Override ++ public boolean testPermission(CommandSender sender) { ++ return true; ++ } ++ ++ @Override ++ public @Nullable Permission getPermission() { ++ return null; ++ } ++ ++} +diff --git a/src/main/java/org/galemc/gale/command/PermissionedGaleSubcommand.java b/src/main/java/org/galemc/gale/command/PermissionedGaleSubcommand.java +new file mode 100644 +index 0000000000000000000000000000000000000000..35ffa5f1bb682ac962ab9466e682a461efa65e7b +--- /dev/null ++++ b/src/main/java/org/galemc/gale/command/PermissionedGaleSubcommand.java +@@ -0,0 +1,32 @@ ++// Gale - Gale commands ++ ++package org.galemc.gale.command; ++ ++import org.bukkit.command.CommandSender; ++import org.bukkit.permissions.Permission; ++import org.bukkit.permissions.PermissionDefault; ++import org.jetbrains.annotations.Nullable; ++ ++public abstract class PermissionedGaleSubcommand implements GaleSubcommand { ++ ++ public final Permission permission; ++ ++ protected PermissionedGaleSubcommand(Permission permission) { ++ this.permission = permission; ++ } ++ ++ protected PermissionedGaleSubcommand(String permission, PermissionDefault permissionDefault) { ++ this(new Permission(permission, permissionDefault)); ++ } ++ ++ @Override ++ public boolean testPermission(CommandSender sender) { ++ return sender.hasPermission(this.permission); ++ } ++ ++ @Override ++ public @Nullable Permission getPermission() { ++ return this.permission; ++ } ++ ++} +diff --git a/src/main/java/org/galemc/gale/command/ReloadSubcommand.java b/src/main/java/org/galemc/gale/command/ReloadSubcommand.java +new file mode 100644 +index 0000000000000000000000000000000000000000..7cfc541e023b8a975c2d1ad25d1e5e3a4cb0e15e +--- /dev/null ++++ b/src/main/java/org/galemc/gale/command/ReloadSubcommand.java +@@ -0,0 +1,44 @@ ++// Gale - Gale commands - /gale reload command ++ ++package org.galemc.gale.command; ++ ++import net.minecraft.server.MinecraftServer; ++import org.bukkit.command.Command; ++import org.bukkit.command.CommandSender; ++import org.bukkit.craftbukkit.CraftServer; ++import org.bukkit.permissions.PermissionDefault; ++import org.checkerframework.checker.nullness.qual.NonNull; ++import org.checkerframework.framework.qual.DefaultQualifier; ++ ++import static net.kyori.adventure.text.Component.text; ++import static net.kyori.adventure.text.format.NamedTextColor.GREEN; ++import static net.kyori.adventure.text.format.NamedTextColor.RED; ++ ++@DefaultQualifier(NonNull.class) ++public final class ReloadSubcommand extends PermissionedGaleSubcommand { ++ ++ public final static String LITERAL_ARGUMENT = "reload"; ++ static final String PERM = GaleCommand.BASE_PERM + "." + LITERAL_ARGUMENT; ++ ++ ReloadSubcommand() { ++ super(PERM, PermissionDefault.OP); ++ } ++ ++ @Override ++ public boolean execute(final CommandSender sender, final String subCommand, final String[] args) { ++ this.doReload(sender); ++ return true; ++ } ++ ++ private void doReload(final CommandSender sender) { ++ Command.broadcastCommandMessage(sender, text("Please note that this command is not supported and may cause issues.", RED)); ++ Command.broadcastCommandMessage(sender, text("If you encounter any issues please use the /stop command to restart your server.", RED)); ++ ++ MinecraftServer server = ((CraftServer) sender.getServer()).getServer(); ++ server.galeConfigurations.reloadConfigs(server); ++ server.server.reloadCount++; ++ ++ Command.broadcastCommandMessage(sender, text("Gale config reload complete.", GREEN)); ++ } ++ ++} +diff --git a/src/main/java/org/galemc/gale/command/VersionSubcommand.java b/src/main/java/org/galemc/gale/command/VersionSubcommand.java +new file mode 100644 +index 0000000000000000000000000000000000000000..ef7182ad67371eef8777d3ede3852498abfc04c0 +--- /dev/null ++++ b/src/main/java/org/galemc/gale/command/VersionSubcommand.java +@@ -0,0 +1,37 @@ ++// Gale - Gale commands - /gale version command ++ ++package org.galemc.gale.command; ++ ++import net.minecraft.server.MinecraftServer; ++import org.bukkit.command.Command; ++import org.bukkit.command.CommandSender; ++import org.bukkit.permissions.PermissionDefault; ++import org.checkerframework.checker.nullness.qual.NonNull; ++import org.checkerframework.checker.nullness.qual.Nullable; ++import org.checkerframework.framework.qual.DefaultQualifier; ++ ++@DefaultQualifier(NonNull.class) ++public final class VersionSubcommand extends PermissionedGaleSubcommand { ++ ++ public final static String LITERAL_ARGUMENT = "version"; ++ static final String PERM = GaleCommand.BASE_PERM + "." + LITERAL_ARGUMENT; ++ ++ VersionSubcommand() { ++ super(PERM, PermissionDefault.TRUE); ++ } ++ ++ @Override ++ public boolean execute(final CommandSender sender, final String subCommand, final String[] args) { ++ final @Nullable Command ver = MinecraftServer.getServer().server.getCommandMap().getCommand("version"); ++ if (ver != null) { ++ ver.execute(sender, GaleCommand.COMMAND_LABEL, new String[0]); ++ } ++ return true; ++ } ++ ++ @Override ++ public boolean testPermission(CommandSender sender) { ++ return super.testPermission(sender) && sender.hasPermission("bukkit.command.version"); ++ } ++ ++} diff --git a/patches/server/0005-Recommend-disabling-timings-on-startup.patch b/patches/server/0006-Recommend-disabling-timings-on-startup.patch similarity index 100% rename from patches/server/0005-Recommend-disabling-timings-on-startup.patch rename to patches/server/0006-Recommend-disabling-timings-on-startup.patch diff --git a/patches/server/0006-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch b/patches/server/0007-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch similarity index 100% rename from patches/server/0006-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch rename to patches/server/0007-Strip-raytracing-for-EntityLiving-hasLineOfSight.patch diff --git a/patches/server/0007-Simpler-ShapelessRecipe-comparison-for-vanilla.patch b/patches/server/0008-Simpler-ShapelessRecipe-comparison-for-vanilla.patch similarity index 100% rename from patches/server/0007-Simpler-ShapelessRecipe-comparison-for-vanilla.patch rename to patches/server/0008-Simpler-ShapelessRecipe-comparison-for-vanilla.patch diff --git a/patches/server/0008-Reduce-projectile-chunk-loading.patch b/patches/server/0009-Reduce-projectile-chunk-loading.patch similarity index 100% rename from patches/server/0008-Reduce-projectile-chunk-loading.patch rename to patches/server/0009-Reduce-projectile-chunk-loading.patch diff --git a/patches/server/0009-Reduce-spooky-season-checks.patch b/patches/server/0010-Reduce-spooky-season-checks.patch similarity index 100% rename from patches/server/0009-Reduce-spooky-season-checks.patch rename to patches/server/0010-Reduce-spooky-season-checks.patch diff --git a/patches/server/0010-Move-random-tick-random.patch b/patches/server/0011-Move-random-tick-random.patch similarity index 100% rename from patches/server/0010-Move-random-tick-random.patch rename to patches/server/0011-Move-random-tick-random.patch diff --git a/patches/server/0011-Optimize-random-calls-in-chunk-ticking.patch b/patches/server/0012-Optimize-random-calls-in-chunk-ticking.patch similarity index 100% rename from patches/server/0011-Optimize-random-calls-in-chunk-ticking.patch rename to patches/server/0012-Optimize-random-calls-in-chunk-ticking.patch diff --git a/patches/server/0012-Reduce-enderman-teleport-chunk-lookups.patch b/patches/server/0013-Reduce-enderman-teleport-chunk-lookups.patch similarity index 100% rename from patches/server/0012-Reduce-enderman-teleport-chunk-lookups.patch rename to patches/server/0013-Reduce-enderman-teleport-chunk-lookups.patch diff --git a/patches/server/0013-Reduce-acquire-POI-for-stuck-entities.patch b/patches/server/0014-Reduce-acquire-POI-for-stuck-entities.patch similarity index 100% rename from patches/server/0013-Reduce-acquire-POI-for-stuck-entities.patch rename to patches/server/0014-Reduce-acquire-POI-for-stuck-entities.patch diff --git a/patches/server/0014-Remove-iterators-from-Inventory-contains.patch b/patches/server/0015-Remove-iterators-from-Inventory-contains.patch similarity index 100% rename from patches/server/0014-Remove-iterators-from-Inventory-contains.patch rename to patches/server/0015-Remove-iterators-from-Inventory-contains.patch diff --git a/patches/server/0015-Check-targeting-range-before-getting-visibility.patch b/patches/server/0016-Check-targeting-range-before-getting-visibility.patch similarity index 100% rename from patches/server/0015-Check-targeting-range-before-getting-visibility.patch rename to patches/server/0016-Check-targeting-range-before-getting-visibility.patch diff --git a/patches/server/0016-Print-stack-trace-for-plugins-not-shutting-down-task.patch b/patches/server/0017-Print-stack-trace-for-plugins-not-shutting-down-task.patch similarity index 100% rename from patches/server/0016-Print-stack-trace-for-plugins-not-shutting-down-task.patch rename to patches/server/0017-Print-stack-trace-for-plugins-not-shutting-down-task.patch diff --git a/patches/server/0017-Improve-fluid-direction-caching.patch b/patches/server/0018-Improve-fluid-direction-caching.patch similarity index 100% rename from patches/server/0017-Improve-fluid-direction-caching.patch rename to patches/server/0018-Improve-fluid-direction-caching.patch diff --git a/patches/server/0018-Cache-on-climbable-check.patch b/patches/server/0019-Cache-on-climbable-check.patch similarity index 100% rename from patches/server/0018-Cache-on-climbable-check.patch rename to patches/server/0019-Cache-on-climbable-check.patch diff --git a/patches/server/0019-Config-to-disable-vanilla-profiler.patch b/patches/server/0020-Config-to-disable-vanilla-profiler.patch similarity index 100% rename from patches/server/0019-Config-to-disable-vanilla-profiler.patch rename to patches/server/0020-Config-to-disable-vanilla-profiler.patch diff --git a/patches/server/0020-Use-array-for-gamerule-storage.patch b/patches/server/0021-Use-array-for-gamerule-storage.patch similarity index 100% rename from patches/server/0020-Use-array-for-gamerule-storage.patch rename to patches/server/0021-Use-array-for-gamerule-storage.patch diff --git a/patches/server/0021-Make-EntityCollisionContext-a-live-representation.patch b/patches/server/0022-Make-EntityCollisionContext-a-live-representation.patch similarity index 100% rename from patches/server/0021-Make-EntityCollisionContext-a-live-representation.patch rename to patches/server/0022-Make-EntityCollisionContext-a-live-representation.patch diff --git a/patches/server/0022-Improve-container-checking-with-a-bitset.patch b/patches/server/0023-Improve-container-checking-with-a-bitset.patch similarity index 100% rename from patches/server/0022-Improve-container-checking-with-a-bitset.patch rename to patches/server/0023-Improve-container-checking-with-a-bitset.patch diff --git a/patches/server/0023-Better-checking-for-useless-move-packets.patch b/patches/server/0024-Better-checking-for-useless-move-packets.patch similarity index 100% rename from patches/server/0023-Better-checking-for-useless-move-packets.patch rename to patches/server/0024-Better-checking-for-useless-move-packets.patch diff --git a/patches/server/0024-Use-fast-item-merge-raytracing.patch b/patches/server/0025-Use-fast-item-merge-raytracing.patch similarity index 100% rename from patches/server/0024-Use-fast-item-merge-raytracing.patch rename to patches/server/0025-Use-fast-item-merge-raytracing.patch diff --git a/patches/server/0025-Use-aging-cache-for-biome-temperatures.patch b/patches/server/0026-Use-aging-cache-for-biome-temperatures.patch similarity index 100% rename from patches/server/0025-Use-aging-cache-for-biome-temperatures.patch rename to patches/server/0026-Use-aging-cache-for-biome-temperatures.patch diff --git a/patches/server/0026-Inline-level-height.patch b/patches/server/0027-Inline-level-height.patch similarity index 100% rename from patches/server/0026-Inline-level-height.patch rename to patches/server/0027-Inline-level-height.patch diff --git a/patches/server/0027-Use-ThreadUnsafeRandom-for-mob-spawning.patch b/patches/server/0028-Use-ThreadUnsafeRandom-for-mob-spawning.patch similarity index 100% rename from patches/server/0027-Use-ThreadUnsafeRandom-for-mob-spawning.patch rename to patches/server/0028-Use-ThreadUnsafeRandom-for-mob-spawning.patch diff --git a/patches/server/0028-Remove-streams-and-iterators-from-range-check.patch b/patches/server/0029-Remove-streams-and-iterators-from-range-check.patch similarity index 100% rename from patches/server/0028-Remove-streams-and-iterators-from-range-check.patch rename to patches/server/0029-Remove-streams-and-iterators-from-range-check.patch diff --git a/patches/server/0029-Remove-streams-from-getting-nearby-players.patch b/patches/server/0030-Remove-streams-from-getting-nearby-players.patch similarity index 100% rename from patches/server/0029-Remove-streams-from-getting-nearby-players.patch rename to patches/server/0030-Remove-streams-from-getting-nearby-players.patch diff --git a/patches/server/0030-Skip-cloning-loot-parameters.patch b/patches/server/0031-Skip-cloning-loot-parameters.patch similarity index 100% rename from patches/server/0030-Skip-cloning-loot-parameters.patch rename to patches/server/0031-Skip-cloning-loot-parameters.patch diff --git a/patches/server/0031-Block-goal-does-not-load-chunks.patch b/patches/server/0032-Block-goal-does-not-load-chunks.patch similarity index 100% rename from patches/server/0031-Block-goal-does-not-load-chunks.patch rename to patches/server/0032-Block-goal-does-not-load-chunks.patch diff --git a/patches/server/0032-Reduce-entity-allocations.patch b/patches/server/0033-Reduce-entity-allocations.patch similarity index 100% rename from patches/server/0032-Reduce-entity-allocations.patch rename to patches/server/0033-Reduce-entity-allocations.patch diff --git a/patches/server/0033-Remove-lambda-from-ticking-guard.patch b/patches/server/0034-Remove-lambda-from-ticking-guard.patch similarity index 100% rename from patches/server/0033-Remove-lambda-from-ticking-guard.patch rename to patches/server/0034-Remove-lambda-from-ticking-guard.patch diff --git a/patches/server/0034-Reduce-entity-fluid-lookups-if-no-fluids.patch b/patches/server/0035-Reduce-entity-fluid-lookups-if-no-fluids.patch similarity index 100% rename from patches/server/0034-Reduce-entity-fluid-lookups-if-no-fluids.patch rename to patches/server/0035-Reduce-entity-fluid-lookups-if-no-fluids.patch diff --git a/patches/server/0035-SIMD-support.patch b/patches/server/0036-SIMD-support.patch similarity index 94% rename from patches/server/0035-SIMD-support.patch rename to patches/server/0036-SIMD-support.patch index 976b542..42a38c7 100644 --- a/patches/server/0035-SIMD-support.patch +++ b/patches/server/0036-SIMD-support.patch @@ -32,7 +32,7 @@ index 3103e811e1f41b782a5b95537b921c59cac2054f..6de2f2ebca9f4580f5f0463dbbacd11e archiveClassifier.set("dev") diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 661794310eb10d4b9fe29c9445abd57826214d41..7d36f27c856fa28d844f8f12272862183583adf5 100644 +index d2b14c65e6a925ba4a29d48bcedc0d9504092052..007fe6820e208c04e81acbd7bb7eaf0a22f6f64f 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java @@ -14,6 +14,8 @@ import java.util.Locale; @@ -44,15 +44,15 @@ index 661794310eb10d4b9fe29c9445abd57826214d41..7d36f27c856fa28d844f8f1227286218 import net.minecraft.DefaultUncaughtExceptionHandler; import net.minecraft.DefaultUncaughtExceptionHandlerWithName; import net.minecraft.SharedConstants; -@@ -50,6 +52,7 @@ import net.minecraft.world.level.GameRules; - import net.minecraft.world.level.GameType; +@@ -51,6 +53,7 @@ import net.minecraft.world.level.GameType; import net.minecraft.world.level.block.entity.SkullBlockEntity; import net.minecraft.world.level.storage.LevelStorageSource; + import org.galemc.gale.command.GaleCommands; +import org.galemc.gale.configuration.GaleGlobalConfiguration; import org.slf4j.Logger; // CraftBukkit start -@@ -226,6 +229,21 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -228,6 +231,21 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface io.papermc.paper.brigadier.PaperBrigadierProviderImpl.INSTANCE.getClass(); // init PaperBrigadierProvider // Paper end diff --git a/patches/server/0036-Optimize-entity-coordinate-key.patch b/patches/server/0037-Optimize-entity-coordinate-key.patch similarity index 100% rename from patches/server/0036-Optimize-entity-coordinate-key.patch rename to patches/server/0037-Optimize-entity-coordinate-key.patch diff --git a/patches/server/0037-Reduce-in-wall-checks.patch b/patches/server/0038-Reduce-in-wall-checks.patch similarity index 100% rename from patches/server/0037-Reduce-in-wall-checks.patch rename to patches/server/0038-Reduce-in-wall-checks.patch diff --git a/patches/server/0038-Don-t-trigger-lootable-refresh-for-non-player-intera.patch b/patches/server/0039-Don-t-trigger-lootable-refresh-for-non-player-intera.patch similarity index 100% rename from patches/server/0038-Don-t-trigger-lootable-refresh-for-non-player-intera.patch rename to patches/server/0039-Don-t-trigger-lootable-refresh-for-non-player-intera.patch diff --git a/patches/server/0039-Reduce-hopper-item-checks.patch b/patches/server/0040-Reduce-hopper-item-checks.patch similarity index 100% rename from patches/server/0039-Reduce-hopper-item-checks.patch rename to patches/server/0040-Reduce-hopper-item-checks.patch diff --git a/patches/server/0040-Reduce-villager-item-re-pickup.patch b/patches/server/0041-Reduce-villager-item-re-pickup.patch similarity index 100% rename from patches/server/0040-Reduce-villager-item-re-pickup.patch rename to patches/server/0041-Reduce-villager-item-re-pickup.patch diff --git a/patches/server/0041-Do-not-log-invalid-statistics.patch b/patches/server/0042-Do-not-log-invalid-statistics.patch similarity index 100% rename from patches/server/0041-Do-not-log-invalid-statistics.patch rename to patches/server/0042-Do-not-log-invalid-statistics.patch diff --git a/patches/server/0042-Do-not-log-empty-message-warnings.patch b/patches/server/0043-Do-not-log-empty-message-warnings.patch similarity index 100% rename from patches/server/0042-Do-not-log-empty-message-warnings.patch rename to patches/server/0043-Do-not-log-empty-message-warnings.patch diff --git a/patches/server/0043-Do-not-log-ignored-advancements.patch b/patches/server/0044-Do-not-log-ignored-advancements.patch similarity index 100% rename from patches/server/0043-Do-not-log-ignored-advancements.patch rename to patches/server/0044-Do-not-log-ignored-advancements.patch diff --git a/patches/server/0044-Do-not-log-setBlock-in-far-chunks.patch b/patches/server/0045-Do-not-log-setBlock-in-far-chunks.patch similarity index 100% rename from patches/server/0044-Do-not-log-setBlock-in-far-chunks.patch rename to patches/server/0045-Do-not-log-setBlock-in-far-chunks.patch diff --git a/patches/server/0045-Do-not-log-unrecognized-recipes.patch b/patches/server/0046-Do-not-log-unrecognized-recipes.patch similarity index 100% rename from patches/server/0045-Do-not-log-unrecognized-recipes.patch rename to patches/server/0046-Do-not-log-unrecognized-recipes.patch diff --git a/patches/server/0046-Do-not-log-legacy-Material-initialization.patch b/patches/server/0047-Do-not-log-legacy-Material-initialization.patch similarity index 100% rename from patches/server/0046-Do-not-log-legacy-Material-initialization.patch rename to patches/server/0047-Do-not-log-legacy-Material-initialization.patch diff --git a/patches/server/0047-Do-not-log-expired-message-warnings.patch b/patches/server/0048-Do-not-log-expired-message-warnings.patch similarity index 100% rename from patches/server/0047-Do-not-log-expired-message-warnings.patch rename to patches/server/0048-Do-not-log-expired-message-warnings.patch diff --git a/patches/server/0048-Do-not-log-Not-Secure-marker.patch b/patches/server/0049-Do-not-log-Not-Secure-marker.patch similarity index 100% rename from patches/server/0048-Do-not-log-Not-Secure-marker.patch rename to patches/server/0049-Do-not-log-Not-Secure-marker.patch diff --git a/patches/server/0049-Softly-log-invalid-pool-element-errors.patch b/patches/server/0050-Softly-log-invalid-pool-element-errors.patch similarity index 100% rename from patches/server/0049-Softly-log-invalid-pool-element-errors.patch rename to patches/server/0050-Softly-log-invalid-pool-element-errors.patch