dfghjkl;'
This commit is contained in:
parent
baf8d849b6
commit
412cabff8a
23 changed files with 706 additions and 18 deletions
|
@ -0,0 +1,86 @@
|
|||
package me.kawaiizenbo.moonlight.command;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.mojang.brigadier.CommandDispatcher;
|
||||
import com.mojang.brigadier.ParseResults;
|
||||
import com.mojang.brigadier.exceptions.CommandSyntaxException;
|
||||
|
||||
import net.minecraft.client.MinecraftClient;
|
||||
import net.minecraft.client.network.ClientCommandSource;
|
||||
import net.minecraft.command.CommandSource;
|
||||
|
||||
import me.kawaiizenbo.moonlight.command.commands.*;
|
||||
|
||||
public class CommandManager
|
||||
{
|
||||
private static MinecraftClient mc = MinecraftClient.getInstance();
|
||||
private final CommandDispatcher<CommandSource> DISPATCHER = new CommandDispatcher<>();
|
||||
private final CommandSource COMMAND_SOURCE = new ChatCommandSource(mc);
|
||||
private final List<Command> commands = new ArrayList<>();
|
||||
private final Map<Class<? extends Command>, Command> commandInstances = new HashMap<>();
|
||||
|
||||
private CommandManager() {
|
||||
add(new VClip());
|
||||
add(new Help());
|
||||
add(new Toggle());
|
||||
commands.sort(Comparator.comparing(Command::getName));
|
||||
}
|
||||
|
||||
public static CommandManager get() {
|
||||
return new CommandManager();
|
||||
}
|
||||
|
||||
public void dispatch(String message) throws CommandSyntaxException {
|
||||
dispatch(message, new ChatCommandSource(mc));
|
||||
}
|
||||
|
||||
public void dispatch(String message, CommandSource source) throws CommandSyntaxException {
|
||||
ParseResults<CommandSource> results = DISPATCHER.parse(message, source);
|
||||
DISPATCHER.execute(results);
|
||||
}
|
||||
|
||||
public CommandDispatcher<CommandSource> getDispatcher() {
|
||||
return DISPATCHER;
|
||||
}
|
||||
|
||||
public CommandSource getCommandSource() {
|
||||
return COMMAND_SOURCE;
|
||||
}
|
||||
|
||||
private final static class ChatCommandSource extends ClientCommandSource {
|
||||
public ChatCommandSource(MinecraftClient client) {
|
||||
super(null, client);
|
||||
}
|
||||
}
|
||||
|
||||
public void add(Command command) {
|
||||
commands.removeIf(command1 -> command1.getName().equals(command.getName()));
|
||||
commandInstances.values().removeIf(command1 -> command1.getName().equals(command.getName()));
|
||||
|
||||
command.registerTo(DISPATCHER);
|
||||
commands.add(command);
|
||||
commandInstances.put(command.getClass(), command);
|
||||
}
|
||||
|
||||
public int getCount() {
|
||||
return commands.size();
|
||||
}
|
||||
|
||||
public List<Command> getAll() {
|
||||
return commands;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public <T extends Command> T get(Class<T> klass) {
|
||||
return (T) commandInstances.get(klass);
|
||||
}
|
||||
|
||||
public String getPrefix() {
|
||||
return "?";
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue