mirror of
https://github.com/JonasunderscoreJones/BetterConsoleMC.git
synced 2025-10-25 14:39:19 +02:00
wip alias implementation
This commit is contained in:
parent
9f3750b52d
commit
16c45c7cf5
7 changed files with 83 additions and 2 deletions
|
|
@ -8,7 +8,7 @@ yarn_mappings=1.21+build.2
|
||||||
loader_version=0.15.11
|
loader_version=0.15.11
|
||||||
|
|
||||||
# Mod Properties
|
# Mod Properties
|
||||||
mod_version = 1.0.2
|
mod_version = 1.0.2-featuresnapshot01
|
||||||
maven_group = me.jonasjones
|
maven_group = me.jonasjones
|
||||||
archives_base_name = betterconsolemc
|
archives_base_name = betterconsolemc
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,12 @@ import me.jonasjones.betterconsolemc.modconfig.ModConfigs;
|
||||||
import me.jonasjones.betterconsolemc.util.CommandPreRegistry;
|
import me.jonasjones.betterconsolemc.util.CommandPreRegistry;
|
||||||
import net.fabricmc.api.ModInitializer;
|
import net.fabricmc.api.ModInitializer;
|
||||||
import net.fabricmc.loader.api.FabricLoader;
|
import net.fabricmc.loader.api.FabricLoader;
|
||||||
|
import net.minecraft.server.MinecraftServer;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import static me.jonasjones.betterconsolemc.command.GameCommandHandler.registerCommands;
|
import static me.jonasjones.betterconsolemc.command.GameCommandHandler.registerCommands;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -59,6 +59,10 @@ public class CmdConfigHandler {
|
||||||
return CmdMode.SIMPLE;
|
return CmdMode.SIMPLE;
|
||||||
} else if (configCommandDef.startsWith("RETURN ")) {
|
} else if (configCommandDef.startsWith("RETURN ")) {
|
||||||
return CmdMode.RETURN;
|
return CmdMode.RETURN;
|
||||||
|
} else if (configCommandDef.startsWith("GLOBALALIAS ")) {
|
||||||
|
return CmdMode.GLOBALALIAS;
|
||||||
|
} else if (configCommandDef.startsWith("SELFALIAS ")) {
|
||||||
|
return CmdMode.SELFALIAS;
|
||||||
} else {
|
} else {
|
||||||
throw new CommandModeException(getSplitCommandPartByIndex(configCommandDef, 0));
|
throw new CommandModeException(getSplitCommandPartByIndex(configCommandDef, 0));
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
package me.jonasjones.betterconsolemc.command;
|
||||||
|
|
||||||
|
import net.minecraft.server.command.ServerCommandSource;
|
||||||
|
import net.minecraft.server.MinecraftServer;
|
||||||
|
import net.minecraft.text.Text;
|
||||||
|
import net.minecraft.util.Formatting;
|
||||||
|
import net.minecraft.util.math.Vec2f;
|
||||||
|
import net.minecraft.util.math.Vec3d;
|
||||||
|
|
||||||
|
public class CapturingCommandSource extends ServerCommandSource {
|
||||||
|
private final StringBuilder outputBuilder;
|
||||||
|
|
||||||
|
public CapturingCommandSource(MinecraftServer server) {
|
||||||
|
super(server,
|
||||||
|
new Vec3d(0, 0, 0), // No specific entity
|
||||||
|
new Vec2f(0, 0), // No specific entity
|
||||||
|
server.getCommandSource().getWorld(),
|
||||||
|
server.getCommandSource().getServer().getOpPermissionLevel(),
|
||||||
|
"Server",
|
||||||
|
Text.literal("Server"),
|
||||||
|
server,
|
||||||
|
null
|
||||||
|
);
|
||||||
|
this.outputBuilder = new StringBuilder();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void sendMessage(Text message) {
|
||||||
|
outputBuilder.append(message.getString()).append("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCapturedOutput() {
|
||||||
|
return outputBuilder.toString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -8,7 +8,9 @@ import me.jonasjones.betterconsolemc.system.ShellCommand;
|
||||||
import me.jonasjones.betterconsolemc.util.CommandPreRegistry;
|
import me.jonasjones.betterconsolemc.util.CommandPreRegistry;
|
||||||
import me.jonasjones.betterconsolemc.util.Constants;
|
import me.jonasjones.betterconsolemc.util.Constants;
|
||||||
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
|
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
|
||||||
|
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents;
|
||||||
import net.minecraft.command.CommandRegistryAccess;
|
import net.minecraft.command.CommandRegistryAccess;
|
||||||
|
import net.minecraft.server.MinecraftServer;
|
||||||
import net.minecraft.server.command.CommandManager;
|
import net.minecraft.server.command.CommandManager;
|
||||||
import net.minecraft.server.command.ServerCommandSource;
|
import net.minecraft.server.command.ServerCommandSource;
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
|
|
@ -17,6 +19,8 @@ import static me.jonasjones.betterconsolemc.BetterConsoleMC.COMMANDPREREGISTRY;
|
||||||
|
|
||||||
public class GameCommandHandler {
|
public class GameCommandHandler {
|
||||||
|
|
||||||
|
private static MinecraftServer MC_SERVER;
|
||||||
|
|
||||||
public static void registerCommands() {
|
public static void registerCommands() {
|
||||||
CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> {
|
CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) -> {
|
||||||
for (CommandPreRegistry commandPreRegistry : CmdConfigHandler.FULLREG) {
|
for (CommandPreRegistry commandPreRegistry : CmdConfigHandler.FULLREG) {
|
||||||
|
|
@ -28,6 +32,18 @@ public class GameCommandHandler {
|
||||||
|
|
||||||
public static void register(CommandDispatcher<ServerCommandSource> serverCommandSourceCommandDispatcher, CommandRegistryAccess commandRegistryAccess, CommandManager.RegistrationEnvironment registrationEnvironment, CommandPreRegistry commandPreRegistry) {
|
public static void register(CommandDispatcher<ServerCommandSource> serverCommandSourceCommandDispatcher, CommandRegistryAccess commandRegistryAccess, CommandManager.RegistrationEnvironment registrationEnvironment, CommandPreRegistry commandPreRegistry) {
|
||||||
|
|
||||||
|
if (commandPreRegistry.getCommandmode() == Constants.CmdMode.GLOBALALIAS || commandPreRegistry.getCommandmode() == Constants.CmdMode.SELFALIAS) {
|
||||||
|
serverCommandSourceCommandDispatcher.register((CommandManager.literal(commandPreRegistry.getIngamecommand()).requires(source -> source.hasPermissionLevel(commandPreRegistry.getPermissionLevel()))
|
||||||
|
.executes((context -> {
|
||||||
|
runIngameCommand(commandPreRegistry, context);
|
||||||
|
return 1;
|
||||||
|
})))
|
||||||
|
);
|
||||||
|
// if a command is an alias type, register the tick event
|
||||||
|
startServerHandler();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
serverCommandSourceCommandDispatcher.register((CommandManager.literal(commandPreRegistry.getIngamecommand()).requires(source -> source.hasPermissionLevel(commandPreRegistry.getPermissionLevel()))
|
serverCommandSourceCommandDispatcher.register((CommandManager.literal(commandPreRegistry.getIngamecommand()).requires(source -> source.hasPermissionLevel(commandPreRegistry.getPermissionLevel()))
|
||||||
.executes((context -> {
|
.executes((context -> {
|
||||||
if (commandPreRegistry.getCommandmode() == Constants.CmdMode.RETURN) {
|
if (commandPreRegistry.getCommandmode() == Constants.CmdMode.RETURN) {
|
||||||
|
|
@ -43,8 +59,24 @@ public class GameCommandHandler {
|
||||||
return Text.of(ShellCommand.execute(commandPreRegistry, context));
|
return Text.of(ShellCommand.execute(commandPreRegistry, context));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void runIngameCommand(CommandPreRegistry commandPreRegistry, CommandContext<ServerCommandSource> context) {
|
||||||
|
if (commandPreRegistry.getCommandmode() == Constants.CmdMode.GLOBALALIAS) {
|
||||||
|
MC_SERVER.getCommandManager().executeWithPrefix(MC_SERVER.getCommandSource(), commandPreRegistry.getCommand());
|
||||||
|
} else {
|
||||||
|
MC_SERVER.getCommandManager().executeWithPrefix(context.getSource(), commandPreRegistry.getCommand());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void returnCommandOutput(String cmd, String commandFeedback, CommandContext<ServerCommandSource> context) {
|
public static void returnCommandOutput(String cmd, String commandFeedback, CommandContext<ServerCommandSource> context) {
|
||||||
String consoleLog = " [" + cmd + "]: " + commandFeedback;
|
String consoleLog = " [" + cmd + "]: " + commandFeedback;
|
||||||
BetterConsoleMC.LOGGER.info(consoleLog);
|
BetterConsoleMC.LOGGER.info(consoleLog);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void startServerHandler() {
|
||||||
|
ServerTickEvents.END_SERVER_TICK.register(server -> {
|
||||||
|
if (server.isRunning()) {
|
||||||
|
MC_SERVER = server;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,14 +5,20 @@ import me.jonasjones.betterconsolemc.BetterConsoleMC;
|
||||||
import me.jonasjones.betterconsolemc.command.GameCommandHandler;
|
import me.jonasjones.betterconsolemc.command.GameCommandHandler;
|
||||||
import me.jonasjones.betterconsolemc.modconfig.ModConfigs;
|
import me.jonasjones.betterconsolemc.modconfig.ModConfigs;
|
||||||
import me.jonasjones.betterconsolemc.util.CommandPreRegistry;
|
import me.jonasjones.betterconsolemc.util.CommandPreRegistry;
|
||||||
|
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents;
|
||||||
|
import net.minecraft.command.CommandSource;
|
||||||
|
import net.minecraft.server.MinecraftServer;
|
||||||
import net.minecraft.server.command.ServerCommandSource;
|
import net.minecraft.server.command.ServerCommandSource;
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
import java.io.BufferedReader;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStreamReader;
|
import java.io.InputStreamReader;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
public class ShellCommand {
|
public class ShellCommand {
|
||||||
|
|
||||||
public static String execute(CommandPreRegistry command, CommandContext<ServerCommandSource> context) {
|
public static String execute(CommandPreRegistry command, CommandContext<ServerCommandSource> context) {
|
||||||
|
|
||||||
StringBuilder output = new StringBuilder();
|
StringBuilder output = new StringBuilder();
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,8 @@ package me.jonasjones.betterconsolemc.util;
|
||||||
public class Constants {
|
public class Constants {
|
||||||
public enum CmdMode {
|
public enum CmdMode {
|
||||||
SIMPLE,
|
SIMPLE,
|
||||||
RETURN
|
RETURN,
|
||||||
|
GLOBALALIAS,
|
||||||
|
SELFALIAS
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue