aboutsummaryrefslogtreecommitdiff
path: root/mod/src/main/java/moe/ymc/acron/mixin/CommandManagerMixin.java
diff options
context:
space:
mode:
Diffstat (limited to 'mod/src/main/java/moe/ymc/acron/mixin/CommandManagerMixin.java')
-rw-r--r--mod/src/main/java/moe/ymc/acron/mixin/CommandManagerMixin.java38
1 files changed, 38 insertions, 0 deletions
diff --git a/mod/src/main/java/moe/ymc/acron/mixin/CommandManagerMixin.java b/mod/src/main/java/moe/ymc/acron/mixin/CommandManagerMixin.java
new file mode 100644
index 0000000..9aaed2e
--- /dev/null
+++ b/mod/src/main/java/moe/ymc/acron/mixin/CommandManagerMixin.java
@@ -0,0 +1,38 @@
+package moe.ymc.acron.mixin;
+
+import com.mojang.brigadier.CommandDispatcher;
+import moe.ymc.acron.config.ConfigReloadCmd;
+import net.minecraft.server.command.CommandManager;
+import net.minecraft.server.command.ServerCommandSource;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.spongepowered.asm.mixin.Final;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.Shadow;
+import org.spongepowered.asm.mixin.injection.At;
+import org.spongepowered.asm.mixin.injection.Inject;
+import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
+
+import static net.minecraft.server.command.CommandManager.literal;
+
+
+@Mixin(CommandManager.class)
+public abstract class CommandManagerMixin {
+ private static final Logger AC_LOGGER = LogManager.getLogger();
+
+ @Shadow
+ @Final
+ private CommandDispatcher<ServerCommandSource> dispatcher;
+
+ @Inject(method = "<init>", at = @At("RETURN"))
+ private void onRegister(CommandManager.RegistrationEnvironment arg, CallbackInfo ci) {
+ AC_LOGGER.debug("onRegister");
+ dispatcher.register(
+ literal("acron").requires(player -> player.hasPermissionLevel(4)).then(
+ literal("rule").then(
+ literal("update")
+ .executes(new ConfigReloadCmd()))
+ )
+ );
+ }
+}