package com.sijobe.spc.util; import java.util.HashMap; import java.util.List; import net.minecraft.server.MinecraftServer; import net.minecraft.src.CommandBase; import net.minecraft.src.CommandDifficulty; import net.minecraft.src.CommandEffect; import net.minecraft.src.CommandEnchant; import net.minecraft.src.CommandException; import net.minecraft.src.CommandGameMode; import net.minecraft.src.CommandGive; import net.minecraft.src.CommandHelp; import net.minecraft.src.CommandTime; import net.minecraft.src.CommandWeather; import net.minecraft.src.EntityPlayerMP; import net.minecraft.src.EnumChatFormatting; import net.minecraft.src.ICommandSender; import net.minecraft.src.StatCollector; /** * Helper to make command blocks execute vanilla commands * * @author q3hardcore * @version 1.1 */ public class CommandBlockHelper { private static final HashMap<String, CommandBase> commandMappings; @SuppressWarnings("unchecked") public static boolean handleCommand(String cmdName, ICommandSender sender, String[] args) { if(sender.getCommandSenderName().equals("@") && commandMappings.containsKey(cmdName)) { try { commandMappings.get(cmdName).processCommand(sender, args); } catch (CommandException ce) { // sends command error to opped creative players MinecraftServer mcServer = MinecraftServer.getServer(); List<EntityPlayerMP> players = mcServer.getConfigurationManager().playerEntityList; for(EntityPlayerMP plr : players) { if(plr.canCommandSenderUseCommand(2, "") && plr.capabilities.isCreativeMode) { String cmdErr = StatCollector.translateToLocalFormatted(ce.getMessage(), ce.getErrorOjbects()); plr.addChatMessage(EnumChatFormatting.RED + cmdErr); } } } return true; } else { return false; } } static { commandMappings = new HashMap<String, CommandBase>(); commandMappings.put("difficulty", new CommandDifficulty()); commandMappings.put("effect", new CommandEffect()); commandMappings.put("enchant", new CommandEnchant()); commandMappings.put("gamemode", new CommandGameMode()); commandMappings.put("give", new CommandGive()); commandMappings.put("help", new CommandHelp()); // commandMappings.put("kill", new CommandKill()); commandMappings.put("time", new CommandTime()); commandMappings.put("weather", new CommandWeather()); } }