package me.km.api; import java.util.ArrayList; import java.util.Collections; import java.util.List; import javax.annotation.Nullable; import me.km.KajetansMod; import me.km.permissions.Permissions; import net.minecraft.command.CommandBase; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; import net.minecraft.server.MinecraftServer; import net.minecraft.util.math.BlockPos; public abstract class ModuleCommand extends CommandBase { private final Module m; private final String name; private String usage; private String description; private Permissions perm; private List aliases; public ModuleCommand(String name, Module m) { this.name = name; this.m = m; this.usage = ""; this.perm = null; this.aliases = Collections.emptyList(); } @Override public List getAliases() { return aliases; } public void addAlias(String s) { if(aliases.isEmpty()) { aliases = new ArrayList<>(); } aliases.add(s); } public Module getModule() { return m; } @Override public String getName() { return name; } public void setUsage(String s) { usage = s; } @Override public String getUsage(ICommandSender sender) { return usage; } public void setDescription(String s) { description = s; } public String getDescription() { return description; } public void setPermission(Permissions perm) { this.perm = perm; } public Permissions getPermission() { return perm; } public abstract boolean execute(ICommandSender cs, String[] arg); @Override public void execute(MinecraftServer server, ICommandSender cs, String[] args) throws CommandException { try { if(!execute(cs, args)) { m.send(cs, this.getUsage(cs)); } } catch(Exception ex) { ex.printStackTrace(); if(KajetansMod.singlePlayer) { m.send(cs, "Dieser Command sollte nicht im SinglePlayer benutzt werden."); } } } @Override public boolean checkPermission(MinecraftServer server, ICommandSender cs) { return KajetansMod.perms.has(cs, perm); } @Override public List getTabCompletions(MinecraftServer server, ICommandSender sender, String[] args, @Nullable BlockPos targetPos) { return getListOfStringsMatchingLastWord(args, server.getOnlinePlayerNames()); } }