package openblocks.rubbish; import static openmods.utils.CommandUtils.error; import static openmods.utils.CommandUtils.filterPrefixes; import static openmods.utils.CommandUtils.fiterPlayerNames; import static openmods.utils.CommandUtils.getPlayer; import static openmods.utils.CommandUtils.respond; import com.google.common.collect.Lists; import java.util.List; import net.minecraft.command.ICommand; import net.minecraft.command.ICommandSender; import net.minecraft.entity.player.EntityPlayerMP; import openblocks.api.IFlimFlamDescription; import openblocks.enchantments.flimflams.FlimFlamRegistry; import openmods.utils.CollectionUtils; public class CommandFlimFlam implements ICommand { private static final String NAME = "flimflam"; @Override public int compareTo(Object o) { return NAME.compareTo(((ICommand)o).getCommandName()); } @Override public String getCommandName() { return NAME; } @Override public String getCommandUsage(ICommandSender icommandsender) { return NAME + " <player> [<effect>]"; } @Override @SuppressWarnings("rawtypes") public List getCommandAliases() { return null; } @Override public void processCommand(ICommandSender sender, String[] params) { if (params.length != 1 && params.length != 2) throw error("openblocks.misc.command.invalid"); String playerName = params[0]; EntityPlayerMP player = getPlayer(sender, playerName); String effectName = (params.length > 1)? params[1] : null; IFlimFlamDescription meta; if (effectName == null) { meta = CollectionUtils.getRandom(FlimFlamRegistry.instance.getFlimFlams()); effectName = meta.name(); } else { meta = FlimFlamRegistry.instance.getFlimFlamByName(effectName); if (meta == null) throw error("openblocks.misc.command.no_flim_flam"); } if (meta.action().execute(player)) { respond(sender, "openblocks.misc.command.flim_flam_source", playerName, effectName); if (!player.equals(sender)) respond(player, "openblocks.misc.command.flim_flam_target"); } else throw error("openblocks.misc.command.flim_flam_failed"); } @Override public boolean canCommandSenderUseCommand(ICommandSender sender) { return sender.canCommandSenderUseCommand(4, NAME); // OP } @Override @SuppressWarnings("rawtypes") public List addTabCompletionOptions(ICommandSender sender, String[] params) { if (params.length == 1) { String playerPrefix = params[0]; return fiterPlayerNames(playerPrefix); } if (params.length == 2) { String effectPrefix = params[1]; return filterPrefixes(effectPrefix, FlimFlamRegistry.instance.getAllFlimFlamsNames()); } return Lists.newArrayList(); } @Override public boolean isUsernameIndex(String[] astring, int i) { return i == 0; } }