diff --git a/BREAKING_CHANGES.md b/BREAKING_CHANGES.md new file mode 100644 index 000000000..1721e4978 --- /dev/null +++ b/BREAKING_CHANGES.md @@ -0,0 +1,6 @@ +# Overview of breaking changes for THE MERGE + +API + +Functionality +- geyser root commands now always have a permission attached to them, which is granted by default diff --git a/bootstrap/bungeecord/base/src/main/java/org/geysermc/geyser/platform/bungeecord/GeyserBungeePlugin.java b/bootstrap/bungeecord/base/src/main/java/org/geysermc/geyser/platform/bungeecord/GeyserBungeePlugin.java index 0070a3842..0ba064ab1 100644 --- a/bootstrap/bungeecord/base/src/main/java/org/geysermc/geyser/platform/bungeecord/GeyserBungeePlugin.java +++ b/bootstrap/bungeecord/base/src/main/java/org/geysermc/geyser/platform/bungeecord/GeyserBungeePlugin.java @@ -134,7 +134,7 @@ public class GeyserBungeePlugin extends Plugin implements GeyserBootstrap { ExecutionCoordinator.simpleCoordinator(), sourceConverter ); - this.commandRegistry = new CommandRegistry(geyser, cloud, false); // applying root permission would be a breaking change because we can't register permission defaults + this.commandRegistry = new CommandRegistry(geyser, cloud); // Big hack - Bungee does not provide us an event to listen to, so schedule a repeating // task that waits for a field to be filled which is set after the plugin enable diff --git a/bootstrap/velocity/base/src/main/java/org/geysermc/geyser/platform/velocity/GeyserVelocityPlatform.java b/bootstrap/velocity/base/src/main/java/org/geysermc/geyser/platform/velocity/GeyserVelocityPlatform.java index 7736d3cf1..844d2c528 100644 --- a/bootstrap/velocity/base/src/main/java/org/geysermc/geyser/platform/velocity/GeyserVelocityPlatform.java +++ b/bootstrap/velocity/base/src/main/java/org/geysermc/geyser/platform/velocity/GeyserVelocityPlatform.java @@ -139,7 +139,7 @@ public class GeyserVelocityPlatform implements GeyserBootstrap, IsolatedPlatform ExecutionCoordinator.simpleCoordinator(), sourceConverter ); - this.commandRegistry = new CommandRegistry(geyser, cloud, false); // applying root permission would be a breaking change because we can't register permission defaults + this.commandRegistry = new CommandRegistry(geyser, cloud); } @Override diff --git a/core/src/main/java/org/geysermc/geyser/command/CommandRegistry.java b/core/src/main/java/org/geysermc/geyser/command/CommandRegistry.java index 75ea81ff9..cfd527524 100644 --- a/core/src/main/java/org/geysermc/geyser/command/CommandRegistry.java +++ b/core/src/main/java/org/geysermc/geyser/command/CommandRegistry.java @@ -104,8 +104,6 @@ public class CommandRegistry implements EventRegistrar { protected final GeyserImpl geyser; private final CommandManager cloud; - private final boolean applyRootPermission; - /** * Map of Geyser subcommands to their Commands */ @@ -126,28 +124,15 @@ public class CommandRegistry implements EventRegistrar { */ protected final Map permissionDefaults = new Object2ObjectOpenHashMap<>(13); - /** - * Creates a new CommandRegistry. Does apply a root permission. If undesired, use the other constructor. - */ - public CommandRegistry(GeyserImpl geyser, CommandManager cloud) { - this(geyser, cloud, true); - } - /** * Creates a new CommandRegistry * * @param geyser the Geyser instance * @param cloud the cloud command manager to register commands to - * @param applyRootPermission true if this registry should apply a permission to Geyser and Extension root commands. - * This currently exists because we want to retain the root command permission for Spigot, - * but don't want to add it yet to platforms like Velocity where we cannot natively - * specify a permission default. Doing so will break setups as players would suddenly not - * have the required permission to execute any Geyser commands. */ - public CommandRegistry(GeyserImpl geyser, CommandManager cloud, boolean applyRootPermission) { + public CommandRegistry(GeyserImpl geyser, CommandManager cloud) { this.geyser = geyser; this.cloud = cloud; - this.applyRootPermission = applyRootPermission; // register our custom exception handlers ExceptionHandlers.register(cloud); @@ -275,10 +260,8 @@ public class CommandRegistry implements EventRegistrar { private void buildRootCommand(String permission, HelpCommand help) { Builder builder = cloud.commandBuilder(help.rootCommand()); - if (applyRootPermission) { - builder = builder.permission(permission); - permissionDefaults.put(permission, TriState.TRUE); - } + builder = builder.permission(permission); + permissionDefaults.put(permission, TriState.TRUE); cloud.command(builder.handler(context -> { GeyserCommandSource source = context.sender();