package net.minecraft.command.collections; import java.util.List; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; import net.minecraft.command.NumberInvalidException; import net.minecraft.command.SyntaxErrorException; import net.minecraft.command.arg.ArgWrapper; import net.minecraft.command.parser.Context; import net.minecraft.command.parser.Parser; import net.minecraft.command.type.CDataType; import net.minecraft.command.type.CTypeParse; import net.minecraft.command.type.base.CompoundType; import net.minecraft.command.type.custom.ParserName; import net.minecraft.command.type.custom.TypeList; import net.minecraft.command.type.custom.TypeStringLiteral; import net.minecraft.command.type.custom.command.ParserCommand; import net.minecraft.command.type.management.CConverter; import net.minecraft.command.type.management.TypeID; import net.minecraft.entity.Entity; import net.minecraft.item.Item; public final class Types { private Types() { } public static final CDataType<String> opName = new CompoundType<>(new ParserName("operator name"), Completers.opName); public static final CDataType<String> nonOppedOnline = new CompoundType<>(new ParserName("player name"), Completers.nonOppedOnline); public static final CDataType<String> name = new CompoundType<>(new ParserName("player name"), Completers.userCompleter); public static final CDataType<List<String>> nameList = new TypeList.GParsed<>(TypeIDs.StringList, name); public static final CDataType<String> UUID = new CompoundType<>(Parsers.uuid, Completers.userCompleter); public static final CDataType<List<String>> UUIDList = new TypeList.GParsed<>(TypeIDs.UUIDList, UUID); public static final CDataType<String> scoreHolder = new CompoundType<>(Parsers.scoreHolder, Completers.scoreHolder); public static final CDataType<List<String>> scoreHolderList = new TypeList.GParsed<>(TypeIDs.UUIDList, scoreHolder); public static final CDataType<String> scoreHolderWC = new CompoundType<>(Parsers.scoreHolderWC, Completers.scoreHolderWC); public static final CDataType<List<String>> scoreHolderListWC = new TypeList.GParsed<>(TypeIDs.UUIDList, scoreHolderWC); public static final CDataType<Entity> entity = new CompoundType<>(Parsers.entity, Completers.userCompleter); public static final CDataType<List<Entity>> entityList = new TypeList.GParsed<>(TypeIDs.EntityList, entity); public static final CDataType<String> teamName = new CompoundType<>(new ParserName("team name"), Completers.teamName); public static final CDataType<List<String>> teamNameList = new TypeList.GParsed<>(TypeIDs.StringList, teamName); public static final CDataType<String> entityID = new CompoundType<>(new ParserName("entity id"), Completers.entityID); public static final CDataType<List<String>> entityIDList = new TypeList.GParsed<>(TypeIDs.StringList, entityID); public static final CDataType<ICommandSender> ICmdSender = new CompoundType<>(Parsers.iCmdSender, Completers.userCompleter); public static final CDataType<List<ICommandSender>> iCmdSenderList = new TypeList.GParsed<>(TypeIDs.ICmdSenderList, ICmdSender); public static final CDataType<String> entityIDWPlayer = new CompoundType<>(new ParserName("entity id"), Completers.entityIDWPlayer); public static final CDataType<List<String>> entityIDWPlayerList = new TypeList.GParsed<>(TypeIDs.StringList, entityIDWPlayer); public static final CDataType<Block> blockID = new CompoundType<>(Parsers.blockID, Completers.blockCompleter); public static final CDataType<IBlockState> blockState = generalType(TypeIDs.BlockState); public static final CDataType<String> stringBoolean = new TypeStringLiteral("true", "false"); public static final CDataType<Item> itemID = new CompoundType<>(Parsers.itemID, Completers.itemCompleter); public static final CDataType<Integer> defaultedInt(final int def) { return new CompoundType<>(new ParserName.CustomType<>(Matchers.intMatcher, "int", TypeIDs.Integer, new CConverter<String, Integer>() { @Override public Integer convert(final String toConvert) throws CommandException { try { return "*".equals(toConvert) ? def : new Integer(toConvert); } catch (final NumberFormatException e) { throw new NumberInvalidException("Cannot convert " + toConvert + " to int"); } } }, true), Completers.wildcardCompleter); } public static final <T> CDataType<T> generalType(final TypeID<T> target) { return new CTypeParse<T>() { @Override public ArgWrapper<T> iParse(final Parser parser, final Context context) throws SyntaxErrorException { final ArgWrapper<T> ret = context.generalParse(parser, target); if (ret != null) return ret; throw parser.SEE("Could not find any selector or label "); } }; } public static final CDataType<String> commandName = new CompoundType<>(new ParserName("command name"), ParserCommand.nameCompleter); }