diff --git a/src/main/java/net/minecraft/command/CommandBase.java b/src/main/java/net/minecraft/command/CommandBase.java index 14a4d31..c81a422 100644 --- a/src/main/java/net/minecraft/command/CommandBase.java +++ b/src/main/java/net/minecraft/command/CommandBase.java @@ -1,496 +1,497 @@ -package net.minecraft.command; - -import com.google.common.primitives.Doubles; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import net.minecraft.block.Block; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.item.Item; -import net.minecraft.server.MinecraftServer; -import net.minecraft.util.ChatComponentText; -import net.minecraft.util.ChatComponentTranslation; -import net.minecraft.util.EnumChatFormatting; -import net.minecraft.util.IChatComponent; - -public abstract class CommandBase implements ICommand -{ - private static IAdminCommand theAdmin; - private static final String __OBFID = "CL_00001739"; - - public int getRequiredPermissionLevel() - { - return 4; - } - - public List getCommandAliases() - { - return null; - } - - public boolean canCommandSenderUseCommand(ICommandSender par1ICommandSender) - { - return par1ICommandSender.canCommandSenderUseCommand(this.getRequiredPermissionLevel(), this.getCommandName()); - } - - public List addTabCompletionOptions(ICommandSender par1ICommandSender, String[] par2ArrayOfStr) - { - return null; - } - - public static int parseInt(ICommandSender par0ICommandSender, String par1Str) - { - try - { - return Integer.parseInt(par1Str); - } - catch (NumberFormatException numberformatexception) - { - throw new NumberInvalidException("commands.generic.num.invalid", new Object[] {par1Str}); - } - } - - public static int parseIntWithMin(ICommandSender par0ICommandSender, String par1Str, int par2) - { - return parseIntBounded(par0ICommandSender, par1Str, par2, Integer.MAX_VALUE); - } - - public static int parseIntBounded(ICommandSender par0ICommandSender, String par1Str, int par2, int par3) - { - int k = parseInt(par0ICommandSender, par1Str); - - if (k < par2) - { - throw new NumberInvalidException("commands.generic.num.tooSmall", new Object[] {Integer.valueOf(k), Integer.valueOf(par2)}); - } - else if (k > par3) - { - throw new NumberInvalidException("commands.generic.num.tooBig", new Object[] {Integer.valueOf(k), Integer.valueOf(par3)}); - } - else - { - return k; - } - } - - public static double parseDouble(ICommandSender par0ICommandSender, String par1Str) - { - try - { - double d0 = Double.parseDouble(par1Str); - - if (!Doubles.isFinite(d0)) - { - throw new NumberInvalidException("commands.generic.num.invalid", new Object[] {par1Str}); - } - else - { - return d0; - } - } - catch (NumberFormatException numberformatexception) - { - throw new NumberInvalidException("commands.generic.num.invalid", new Object[] {par1Str}); - } - } - - public static double parseDoubleWithMin(ICommandSender par0ICommandSender, String par1Str, double par2) - { - return parseDoubleBounded(par0ICommandSender, par1Str, par2, Double.MAX_VALUE); - } - - public static double parseDoubleBounded(ICommandSender par0ICommandSender, String par1Str, double par2, double par4) - { - double d2 = parseDouble(par0ICommandSender, par1Str); - - if (d2 < par2) - { - throw new NumberInvalidException("commands.generic.double.tooSmall", new Object[] {Double.valueOf(d2), Double.valueOf(par2)}); - } - else if (d2 > par4) - { - throw new NumberInvalidException("commands.generic.double.tooBig", new Object[] {Double.valueOf(d2), Double.valueOf(par4)}); - } - else - { - return d2; - } - } - - public static boolean parseBoolean(ICommandSender par0ICommandSender, String par1Str) - { - if (!par1Str.equals("true") && !par1Str.equals("1")) - { - if (!par1Str.equals("false") && !par1Str.equals("0")) - { - throw new CommandException("commands.generic.boolean.invalid", new Object[] {par1Str}); - } - else - { - return false; - } - } - else - { - return true; - } - } - - public static EntityPlayerMP getCommandSenderAsPlayer(ICommandSender par0ICommandSender) - { - if (par0ICommandSender instanceof EntityPlayerMP) - { - return (EntityPlayerMP)par0ICommandSender; - } - else - { - throw new PlayerNotFoundException("You must specify which player you wish to perform this action on.", new Object[0]); - } - } - - public static EntityPlayerMP getPlayer(ICommandSender par0ICommandSender, String par1Str) - { - EntityPlayerMP entityplayermp = PlayerSelector.matchOnePlayer(par0ICommandSender, par1Str); - - if (entityplayermp != null) - { - return entityplayermp; - } - else - { - entityplayermp = MinecraftServer.getServer().getConfigurationManager().getPlayerForUsername(par1Str); - - if (entityplayermp == null) - { - throw new PlayerNotFoundException(); - } - else - { - return entityplayermp; - } - } - } - - public static String func_96332_d(ICommandSender par0ICommandSender, String par1Str) - { - EntityPlayerMP entityplayermp = PlayerSelector.matchOnePlayer(par0ICommandSender, par1Str); - - if (entityplayermp != null) - { - return entityplayermp.getCommandSenderName(); - } - else if (PlayerSelector.hasArguments(par1Str)) - { - throw new PlayerNotFoundException(); - } - else - { - return par1Str; - } - } - - public static IChatComponent func_147178_a(ICommandSender p_147178_0_, String[] p_147178_1_, int p_147178_2_) - { - return func_147176_a(p_147178_0_, p_147178_1_, p_147178_2_, false); - } - - public static IChatComponent func_147176_a(ICommandSender p_147176_0_, String[] p_147176_1_, int p_147176_2_, boolean p_147176_3_) - { - ChatComponentText chatcomponenttext = new ChatComponentText(""); - - for (int j = p_147176_2_; j < p_147176_1_.length; ++j) - { - if (j > p_147176_2_) - { - chatcomponenttext.appendText(" "); - } - - Object object = new ChatComponentText(p_147176_1_[j]); - - if (p_147176_3_) - { - IChatComponent ichatcomponent = PlayerSelector.func_150869_b(p_147176_0_, p_147176_1_[j]); - - if (ichatcomponent != null) - { - object = ichatcomponent; - } - else if (PlayerSelector.hasArguments(p_147176_1_[j])) - { - throw new PlayerNotFoundException(); - } - } - - chatcomponenttext.appendSibling((IChatComponent)object); - } - - return chatcomponenttext; - } - - public static String func_82360_a(ICommandSender par0ICommandSender, String[] par1ArrayOfStr, int par2) - { - StringBuilder stringbuilder = new StringBuilder(); - - for (int j = par2; j < par1ArrayOfStr.length; ++j) - { - if (j > par2) - { - stringbuilder.append(" "); - } - - String s = par1ArrayOfStr[j]; - stringbuilder.append(s); - } - - return stringbuilder.toString(); - } - - public static double func_110666_a(ICommandSender par0ICommandSender, double par1, String par3Str) - { - return func_110665_a(par0ICommandSender, par1, par3Str, -30000000, 30000000); - } - - public static double func_110665_a(ICommandSender par0ICommandSender, double par1, String par3Str, int par4, int par5) - { - boolean flag = par3Str.startsWith("~"); - - if (flag && Double.isNaN(par1)) - { - throw new NumberInvalidException("commands.generic.num.invalid", new Object[] {Double.valueOf(par1)}); - } - else - { - double d1 = flag ? par1 : 0.0D; - - if (!flag || par3Str.length() > 1) - { - boolean flag1 = par3Str.contains("."); - - if (flag) - { - par3Str = par3Str.substring(1); - } - - d1 += parseDouble(par0ICommandSender, par3Str); - - if (!flag1 && !flag) - { - d1 += 0.5D; - } - } - - if (par4 != 0 || par5 != 0) - { - if (d1 < (double)par4) - { - throw new NumberInvalidException("commands.generic.double.tooSmall", new Object[] {Double.valueOf(d1), Integer.valueOf(par4)}); - } - - if (d1 > (double)par5) - { - throw new NumberInvalidException("commands.generic.double.tooBig", new Object[] {Double.valueOf(d1), Integer.valueOf(par5)}); - } - } - - return d1; - } - } - - public static Item getItemByText(ICommandSender p_147179_0_, String p_147179_1_) - { - Item item = (Item)Item.itemRegistry.getObject(p_147179_1_); - - if (item == null) - { - try - { - Item item1 = Item.getItemById(Integer.parseInt(p_147179_1_)); - - if (item1 != null) - { - ChatComponentTranslation chatcomponenttranslation = new ChatComponentTranslation("commands.generic.deprecatedId", new Object[] {Item.itemRegistry.getNameForObject(item1)}); - chatcomponenttranslation.getChatStyle().setColor(EnumChatFormatting.GRAY); - p_147179_0_.addChatMessage(chatcomponenttranslation); - } - - item = item1; - } - catch (NumberFormatException numberformatexception) - { - ; - } - } - - if (item == null) - { - throw new NumberInvalidException("commands.give.notFound", new Object[] {p_147179_1_}); - } - else - { - return item; - } - } - - public static Block getBlockByText(ICommandSender p_147180_0_, String p_147180_1_) - { - if (Block.blockRegistry.containsKey(p_147180_1_)) - { - return (Block)Block.blockRegistry.getObject(p_147180_1_); - } - else - { - try - { - int i = Integer.parseInt(p_147180_1_); - - if (Block.blockRegistry.containsId(i)) - { - Block block = Block.getBlockById(i); - ChatComponentTranslation chatcomponenttranslation = new ChatComponentTranslation("commands.generic.deprecatedId", new Object[] {Block.blockRegistry.getNameForObject(block)}); - chatcomponenttranslation.getChatStyle().setColor(EnumChatFormatting.GRAY); - p_147180_0_.addChatMessage(chatcomponenttranslation); - return block; - } - } - catch (NumberFormatException numberformatexception) - { - ; - } - - throw new NumberInvalidException("commands.give.notFound", new Object[] {p_147180_1_}); - } - } - - public static String joinNiceString(Object[] par0ArrayOfObj) - { - StringBuilder stringbuilder = new StringBuilder(); - - for (int i = 0; i < par0ArrayOfObj.length; ++i) - { - String s = par0ArrayOfObj[i].toString(); - - if (i > 0) - { - if (i == par0ArrayOfObj.length - 1) - { - stringbuilder.append(" and "); - } - else - { - stringbuilder.append(", "); - } - } - - stringbuilder.append(s); - } - - return stringbuilder.toString(); - } - - public static IChatComponent joinNiceString(IChatComponent[] p_147177_0_) - { - ChatComponentText chatcomponenttext = new ChatComponentText(""); - - for (int i = 0; i < p_147177_0_.length; ++i) - { - if (i > 0) - { - if (i == p_147177_0_.length - 1) - { - chatcomponenttext.appendText(" and "); - } - else if (i > 0) - { - chatcomponenttext.appendText(", "); - } - } - - chatcomponenttext.appendSibling(p_147177_0_[i]); - } - - return chatcomponenttext; - } - - public static String joinNiceStringFromCollection(Collection par0Collection) - { - return joinNiceString(par0Collection.toArray(new String[par0Collection.size()])); - } - - public static boolean doesStringStartWith(String par0Str, String par1Str) - { - return par1Str.regionMatches(true, 0, par0Str, 0, par0Str.length()); - } - - public static List getListOfStringsMatchingLastWord(String[] par0ArrayOfStr, String ... par1ArrayOfStr) - { - String s1 = par0ArrayOfStr[par0ArrayOfStr.length - 1]; - ArrayList arraylist = new ArrayList(); - String[] astring1 = par1ArrayOfStr; - int i = par1ArrayOfStr.length; - - for (int j = 0; j < i; ++j) - { - String s2 = astring1[j]; - - if (doesStringStartWith(s1, s2)) - { - arraylist.add(s2); - } - } - - return arraylist; - } - - public static List getListOfStringsFromIterableMatchingLastWord(String[] par0ArrayOfStr, Iterable par1Iterable) - { - String s = par0ArrayOfStr[par0ArrayOfStr.length - 1]; - ArrayList arraylist = new ArrayList(); - Iterator iterator = par1Iterable.iterator(); - - while (iterator.hasNext()) - { - String s1 = (String)iterator.next(); - - if (doesStringStartWith(s, s1)) - { - arraylist.add(s1); - } - } - - return arraylist; - } - - public boolean isUsernameIndex(String[] par1ArrayOfStr, int par2) - { - return false; - } - - public static void notifyAdmins(ICommandSender par0ICommandSender, String par1Str, Object ... par2ArrayOfObj) - { - notifyAdmins(par0ICommandSender, 0, par1Str, par2ArrayOfObj); - } - - public static void notifyAdmins(ICommandSender par0ICommandSender, int par1, String par2Str, Object ... par3ArrayOfObj) - { - if (theAdmin != null) - { - theAdmin.notifyAdmins(par0ICommandSender, par1, par2Str, par3ArrayOfObj); - } - } - - public static void setAdminCommander(IAdminCommand par0IAdminCommand) - { - theAdmin = par0IAdminCommand; - } - - public int compareTo(ICommand par1ICommand) - { - return this.getCommandName().compareTo(par1ICommand.getCommandName()); - } - - public int compareTo(Object par1Obj) - { - return this.compareTo((ICommand)par1Obj); - } +package net.minecraft.command; + +import com.google.common.primitives.Doubles; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.Item; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IChatComponent; +import net.minecraft.world.World; + +public abstract class CommandBase implements ICommand +{ + private static IAdminCommand theAdmin; + private static final String __OBFID = "CL_00001739"; + + public int getRequiredPermissionLevel() + { + return 4; + } + + public List getCommandAliases() + { + return null; + } + + public boolean canCommandSenderUseCommand(ICommandSender par1ICommandSender) + { + return par1ICommandSender.canCommandSenderUseCommand(this.getRequiredPermissionLevel(), this.getCommandName()); + } + + public List addTabCompletionOptions(ICommandSender par1ICommandSender, String[] par2ArrayOfStr) + { + return null; + } + + public static int parseInt(ICommandSender par0ICommandSender, String par1Str) + { + try + { + return Integer.parseInt(par1Str); + } + catch (NumberFormatException numberformatexception) + { + throw new NumberInvalidException("commands.generic.num.invalid", new Object[] {par1Str}); + } + } + + public static int parseIntWithMin(ICommandSender par0ICommandSender, String par1Str, int par2) + { + return parseIntBounded(par0ICommandSender, par1Str, par2, Integer.MAX_VALUE); + } + + public static int parseIntBounded(ICommandSender par0ICommandSender, String par1Str, int par2, int par3) + { + int k = parseInt(par0ICommandSender, par1Str); + + if (k < par2) + { + throw new NumberInvalidException("commands.generic.num.tooSmall", new Object[] {Integer.valueOf(k), Integer.valueOf(par2)}); + } + else if (k > par3) + { + throw new NumberInvalidException("commands.generic.num.tooBig", new Object[] {Integer.valueOf(k), Integer.valueOf(par3)}); + } + else + { + return k; + } + } + + public static double parseDouble(ICommandSender par0ICommandSender, String par1Str) + { + try + { + double d0 = Double.parseDouble(par1Str); + + if (!Doubles.isFinite(d0)) + { + throw new NumberInvalidException("commands.generic.num.invalid", new Object[] {par1Str}); + } + else + { + return d0; + } + } + catch (NumberFormatException numberformatexception) + { + throw new NumberInvalidException("commands.generic.num.invalid", new Object[] {par1Str}); + } + } + + public static double parseDoubleWithMin(ICommandSender par0ICommandSender, String par1Str, double par2) + { + return parseDoubleBounded(par0ICommandSender, par1Str, par2, Double.MAX_VALUE); + } + + public static double parseDoubleBounded(ICommandSender par0ICommandSender, String par1Str, double par2, double par4) + { + double d2 = parseDouble(par0ICommandSender, par1Str); + + if (d2 < par2) + { + throw new NumberInvalidException("commands.generic.double.tooSmall", new Object[] {Double.valueOf(d2), Double.valueOf(par2)}); + } + else if (d2 > par4) + { + throw new NumberInvalidException("commands.generic.double.tooBig", new Object[] {Double.valueOf(d2), Double.valueOf(par4)}); + } + else + { + return d2; + } + } + + public static boolean parseBoolean(ICommandSender par0ICommandSender, String par1Str) + { + if (!par1Str.equals("true") && !par1Str.equals("1")) + { + if (!par1Str.equals("false") && !par1Str.equals("0")) + { + throw new CommandException("commands.generic.boolean.invalid", new Object[] {par1Str}); + } + else + { + return false; + } + } + else + { + return true; + } + } + + public static EntityPlayerMP getCommandSenderAsPlayer(ICommandSender par0ICommandSender) + { + if (par0ICommandSender instanceof EntityPlayerMP) + { + return (EntityPlayerMP)par0ICommandSender; + } + else + { + throw new PlayerNotFoundException("You must specify which player you wish to perform this action on.", new Object[0]); + } + } + + public static EntityPlayerMP getPlayer(ICommandSender par0ICommandSender, String par1Str) + { + EntityPlayerMP entityplayermp = PlayerSelector.matchOnePlayer(par0ICommandSender, par1Str); + + if (entityplayermp != null) + { + return entityplayermp; + } + else + { + entityplayermp = MinecraftServer.getServer().getConfigurationManager().getPlayerForUsername(par1Str); + + if (entityplayermp == null) + { + throw new PlayerNotFoundException(); + } + else + { + return entityplayermp; + } + } + } + + public static String func_96332_d(ICommandSender par0ICommandSender, String par1Str) + { + EntityPlayerMP entityplayermp = PlayerSelector.matchOnePlayer(par0ICommandSender, par1Str); + + if (entityplayermp != null) + { + return entityplayermp.getCommandSenderName(); + } + else if (PlayerSelector.hasArguments(par1Str)) + { + throw new PlayerNotFoundException(); + } + else + { + return par1Str; + } + } + + public static IChatComponent func_147178_a(ICommandSender p_147178_0_, String[] p_147178_1_, int p_147178_2_) + { + return func_147176_a(p_147178_0_, p_147178_1_, p_147178_2_, false); + } + + public static IChatComponent func_147176_a(ICommandSender p_147176_0_, String[] p_147176_1_, int p_147176_2_, boolean p_147176_3_) + { + ChatComponentText chatcomponenttext = new ChatComponentText(""); + + for (int j = p_147176_2_; j < p_147176_1_.length; ++j) + { + if (j > p_147176_2_) + { + chatcomponenttext.appendText(" "); + } + + Object object = new ChatComponentText(p_147176_1_[j]); + + if (p_147176_3_) + { + IChatComponent ichatcomponent = PlayerSelector.func_150869_b(p_147176_0_, p_147176_1_[j]); + + if (ichatcomponent != null) + { + object = ichatcomponent; + } + else if (PlayerSelector.hasArguments(p_147176_1_[j])) + { + throw new PlayerNotFoundException(); + } + } + + chatcomponenttext.appendSibling((IChatComponent)object); + } + + return chatcomponenttext; + } + + public static String func_82360_a(ICommandSender par0ICommandSender, String[] par1ArrayOfStr, int par2) + { + StringBuilder stringbuilder = new StringBuilder(); + + for (int j = par2; j < par1ArrayOfStr.length; ++j) + { + if (j > par2) + { + stringbuilder.append(" "); + } + + String s = par1ArrayOfStr[j]; + stringbuilder.append(s); + } + + return stringbuilder.toString(); + } + + public static double func_110666_a(ICommandSender par0ICommandSender, double par1, String par3Str) + { + return func_110665_a(par0ICommandSender, par1, par3Str, -World.MAX_BLOCK_COORD, World.MAX_BLOCK_COORD); + } + + public static double func_110665_a(ICommandSender par0ICommandSender, double par1, String par3Str, int par4, int par5) + { + boolean flag = par3Str.startsWith("~"); + + if (flag && Double.isNaN(par1)) + { + throw new NumberInvalidException("commands.generic.num.invalid", new Object[] {Double.valueOf(par1)}); + } + else + { + double d1 = flag ? par1 : 0.0D; + + if (!flag || par3Str.length() > 1) + { + boolean flag1 = par3Str.contains("."); + + if (flag) + { + par3Str = par3Str.substring(1); + } + + d1 += parseDouble(par0ICommandSender, par3Str); + + if (!flag1 && !flag) + { + d1 += 0.5D; + } + } + + if (par4 != 0 || par5 != 0) + { + if (d1 < (double)par4) + { + throw new NumberInvalidException("commands.generic.double.tooSmall", new Object[] {Double.valueOf(d1), Integer.valueOf(par4)}); + } + + if (d1 > (double)par5) + { + throw new NumberInvalidException("commands.generic.double.tooBig", new Object[] {Double.valueOf(d1), Integer.valueOf(par5)}); + } + } + + return d1; + } + } + + public static Item getItemByText(ICommandSender p_147179_0_, String p_147179_1_) + { + Item item = (Item)Item.itemRegistry.getObject(p_147179_1_); + + if (item == null) + { + try + { + Item item1 = Item.getItemById(Integer.parseInt(p_147179_1_)); + + if (item1 != null) + { + ChatComponentTranslation chatcomponenttranslation = new ChatComponentTranslation("commands.generic.deprecatedId", new Object[] {Item.itemRegistry.getNameForObject(item1)}); + chatcomponenttranslation.getChatStyle().setColor(EnumChatFormatting.GRAY); + p_147179_0_.addChatMessage(chatcomponenttranslation); + } + + item = item1; + } + catch (NumberFormatException numberformatexception) + { + ; + } + } + + if (item == null) + { + throw new NumberInvalidException("commands.give.notFound", new Object[] {p_147179_1_}); + } + else + { + return item; + } + } + + public static Block getBlockByText(ICommandSender p_147180_0_, String p_147180_1_) + { + if (Block.blockRegistry.containsKey(p_147180_1_)) + { + return (Block)Block.blockRegistry.getObject(p_147180_1_); + } + else + { + try + { + int i = Integer.parseInt(p_147180_1_); + + if (Block.blockRegistry.containsId(i)) + { + Block block = Block.getBlockById(i); + ChatComponentTranslation chatcomponenttranslation = new ChatComponentTranslation("commands.generic.deprecatedId", new Object[] {Block.blockRegistry.getNameForObject(block)}); + chatcomponenttranslation.getChatStyle().setColor(EnumChatFormatting.GRAY); + p_147180_0_.addChatMessage(chatcomponenttranslation); + return block; + } + } + catch (NumberFormatException numberformatexception) + { + ; + } + + throw new NumberInvalidException("commands.give.notFound", new Object[] {p_147180_1_}); + } + } + + public static String joinNiceString(Object[] par0ArrayOfObj) + { + StringBuilder stringbuilder = new StringBuilder(); + + for (int i = 0; i < par0ArrayOfObj.length; ++i) + { + String s = par0ArrayOfObj[i].toString(); + + if (i > 0) + { + if (i == par0ArrayOfObj.length - 1) + { + stringbuilder.append(" and "); + } + else + { + stringbuilder.append(", "); + } + } + + stringbuilder.append(s); + } + + return stringbuilder.toString(); + } + + public static IChatComponent joinNiceString(IChatComponent[] p_147177_0_) + { + ChatComponentText chatcomponenttext = new ChatComponentText(""); + + for (int i = 0; i < p_147177_0_.length; ++i) + { + if (i > 0) + { + if (i == p_147177_0_.length - 1) + { + chatcomponenttext.appendText(" and "); + } + else if (i > 0) + { + chatcomponenttext.appendText(", "); + } + } + + chatcomponenttext.appendSibling(p_147177_0_[i]); + } + + return chatcomponenttext; + } + + public static String joinNiceStringFromCollection(Collection par0Collection) + { + return joinNiceString(par0Collection.toArray(new String[par0Collection.size()])); + } + + public static boolean doesStringStartWith(String par0Str, String par1Str) + { + return par1Str.regionMatches(true, 0, par0Str, 0, par0Str.length()); + } + + public static List getListOfStringsMatchingLastWord(String[] par0ArrayOfStr, String ... par1ArrayOfStr) + { + String s1 = par0ArrayOfStr[par0ArrayOfStr.length - 1]; + ArrayList arraylist = new ArrayList(); + String[] astring1 = par1ArrayOfStr; + int i = par1ArrayOfStr.length; + + for (int j = 0; j < i; ++j) + { + String s2 = astring1[j]; + + if (doesStringStartWith(s1, s2)) + { + arraylist.add(s2); + } + } + + return arraylist; + } + + public static List getListOfStringsFromIterableMatchingLastWord(String[] par0ArrayOfStr, Iterable par1Iterable) + { + String s = par0ArrayOfStr[par0ArrayOfStr.length - 1]; + ArrayList arraylist = new ArrayList(); + Iterator iterator = par1Iterable.iterator(); + + while (iterator.hasNext()) + { + String s1 = (String)iterator.next(); + + if (doesStringStartWith(s, s1)) + { + arraylist.add(s1); + } + } + + return arraylist; + } + + public boolean isUsernameIndex(String[] par1ArrayOfStr, int par2) + { + return false; + } + + public static void notifyAdmins(ICommandSender par0ICommandSender, String par1Str, Object ... par2ArrayOfObj) + { + notifyAdmins(par0ICommandSender, 0, par1Str, par2ArrayOfObj); + } + + public static void notifyAdmins(ICommandSender par0ICommandSender, int par1, String par2Str, Object ... par3ArrayOfObj) + { + if (theAdmin != null) + { + theAdmin.notifyAdmins(par0ICommandSender, par1, par2Str, par3ArrayOfObj); + } + } + + public static void setAdminCommander(IAdminCommand par0IAdminCommand) + { + theAdmin = par0IAdminCommand; + } + + public int compareTo(ICommand par1ICommand) + { + return this.getCommandName().compareTo(par1ICommand.getCommandName()); + } + + public int compareTo(Object par1Obj) + { + return this.compareTo((ICommand)par1Obj); + } } \ No newline at end of file diff --git a/src/main/java/net/minecraft/world/World.java b/src/main/java/net/minecraft/world/World.java index dba6cf6..b9632b2 100644 --- a/src/main/java/net/minecraft/world/World.java +++ b/src/main/java/net/minecraft/world/World.java @@ -3978,7 +3978,7 @@ /* ======================================== ULTRAMINE START =====================================*/ - private static final int MAX_BLOCK_COORD = 500000;//524288; + public static final int MAX_BLOCK_COORD = 500000;//524288; public boolean chunkRoundExists(int cx, int cz, int radius) { diff --git a/src/main/java/org/ultramine/commands/CommandContext.java b/src/main/java/org/ultramine/commands/CommandContext.java index 8e0f8cd..951c82e 100644 --- a/src/main/java/org/ultramine/commands/CommandContext.java +++ b/src/main/java/org/ultramine/commands/CommandContext.java @@ -1,297 +1,317 @@ -package org.ultramine.commands; - -import net.minecraft.block.Block; -import net.minecraft.command.CommandBase; -import net.minecraft.command.CommandException; -import net.minecraft.command.ICommandSender; -import net.minecraft.command.WrongUsageException; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.item.Item; -import net.minecraft.util.IChatComponent; -import org.ultramine.server.PermissionHandler; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class CommandContext -{ - private ICommandSender sender; - private String[] args; - private IExtendedCommand command; - private Map argumentMap; - private int lastArgumentNum; - private String actionName; - private ICommandHandler actionHandler; - - private CommandContext(IExtendedCommand command, ICommandSender sender, String[] args) - { - this.sender = sender; - this.args = args; - this.command = command; - this.argumentMap = new HashMap(args.length); - this.actionName = ""; - this.lastArgumentNum = args.length - 1; - } - - public Argument get(String key) - { - if (!argumentMap.containsKey(key)) - throwBadUsage(); - - return argumentMap.get(key); - } - - public Argument get(int num) - { - if (num < 0 || num >= args.length) - throwBadUsage(); - - return new Argument(num); - } - - public boolean contains(String key) - { - return argumentMap.containsKey(key); - } - - public Argument set(String key, String value) - { - Argument arg = new Argument(value); - argumentMap.put(key, arg); - return arg; - } - - public String getAction() - { - return actionName; - } - - public void doAction() - { - if (actionHandler != null) - actionHandler.processCommand(this); - } - - public ICommandSender getSender() - { - return sender; - } - - public boolean senderIsServer() - { - return sender.getCommandSenderName().equals("Server"); - } - - public EntityPlayerMP getSenderAsPlayer() - { - return CommandBase.getCommandSenderAsPlayer(sender); - } - - public void notifyAdmins(String messageKey, Object... messageArgs) - { - CommandBase.notifyAdmins(sender, messageKey, messageArgs); - } - - public void checkSenderPermission(String permission) - { - if (!senderIsServer() && !PermissionHandler.getInstance().has(sender, permission)) - throw new CommandException("commands.generic.permission"); - } - - public void checkSenderPermissionInWorld(String world, String permission) - { - if (!senderIsServer() && !PermissionHandler.getInstance().has(world, sender.getCommandSenderName(), permission)) - throw new CommandException("commands.generic.permission"); - } - - public void throwBadUsage() - { - throw new WrongUsageException(command.getCommandUsage(sender)); - } - - public String[] getArgs() - { - return args; - } - - public IExtendedCommand getCommand() - { - return command; - } - - public class Argument - { - private int num; - private boolean last; - private String value; - - private Argument(int num) - { - this.value = args[num]; - this.num = num; - this.last = num == lastArgumentNum; - } - - private Argument(int num, boolean last) - { - this.value = args[num]; - this.num = num; - this.last = last; - } - - private Argument(String value) - { - this.value = value; - this.num = -1; - this.last = false; - } - - private String value() - { - return value; - } - - private String[] args() - { - if (num >= 0) - return args; - else - return new String[] {value}; - } - - private int num() - { - return Math.max(num, 0); - } - - public String asString() - { - if (last) - return CommandBase.func_82360_a(sender, args(), num()); - else - return value(); - } - - public Argument[] asArray() - { - if (num < 0) - return new Argument[] {this}; - - Argument[] result = new Argument[args.length - num]; - for (int i = num; i < args.length; i++) - result[i-num] = new Argument(i, false); - return result; - } - - public int asInt() - { - return CommandBase.parseInt(sender, value()); - } - - public int asInt(int minBound) - { - return CommandBase.parseIntWithMin(sender, value(), minBound); - } - - public int asInt(int minBound, int maxBound) - { - return CommandBase.parseIntBounded(sender, value(), minBound, maxBound); - } - - public double asDouble() - { - return CommandBase.parseDouble(sender, value()); - } - - public double asDouble(double minBound) - { - return CommandBase.parseDoubleWithMin(sender, value(), minBound); - } - - public double asDouble(double minBound, double maxBound) - { - return CommandBase.parseDoubleBounded(sender, value(), minBound, maxBound); - } - - public boolean asBoolean() - { - return CommandBase.parseBoolean(sender, value()); - } - - public EntityPlayerMP asPlayer() - { - return CommandBase.getPlayer(sender, value()); - } - - public IChatComponent asChatComponent(boolean emphasizePlayers) - { - return CommandBase.func_147176_a(sender, args(), num(), emphasizePlayers); - } - - public double asCoordinate(double original) - { - return CommandBase.func_110666_a(sender, original, value()); - } - - public double asCoordinate(double original, int minBound, int maxBound) - { - return CommandBase.func_110665_a(sender, original, value(), minBound, maxBound); - } - - public Item asItem() - { - return CommandBase.getItemByText(sender, value()); - } - - public Block asBlock() - { - return CommandBase.getBlockByText(sender, value()); - } - } - - public static class Builder - { - private CommandContext context; - - public Builder(IExtendedCommand command, ICommandSender sender, String[] args) - { - context = new CommandContext(command, sender, args); - } - - public Builder resolveArguments(List names) - { - context.lastArgumentNum = names.size(); - Map nameCount = new HashMap(); - for (int i = 0; i < names.size(); i++) - { - String name = names.get(i); - - if (name == null || name.isEmpty()) - continue; - - if (context.argumentMap.containsKey(name)) - { - Integer count = nameCount.containsKey(name) ? nameCount.get(name) + 1 : 2; - nameCount.put(name, count); - name = name + count.toString(); - } - - context.argumentMap.put(name, context.new Argument(i)); - } - return this; - } - - public Builder setAction(String actionName, ICommandHandler actionHandler) - { - context.actionName = actionName; - context.actionHandler = actionHandler; - return this; - } - - public CommandContext build() - { - return context; - } - } -} +package org.ultramine.commands; + +import net.minecraft.block.Block; +import net.minecraft.command.CommandBase; +import net.minecraft.command.CommandException; +import net.minecraft.command.ICommandSender; +import net.minecraft.command.WrongUsageException; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.Item; +import net.minecraft.server.MinecraftServer; +import net.minecraft.util.ChatComponentTranslation; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IChatComponent; +import net.minecraft.world.WorldServer; + +import org.ultramine.server.PermissionHandler; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class CommandContext +{ + private ICommandSender sender; + private String[] args; + private IExtendedCommand command; + private Map argumentMap; + private int lastArgumentNum; + private String actionName; + private ICommandHandler actionHandler; + + private CommandContext(IExtendedCommand command, ICommandSender sender, String[] args) + { + this.sender = sender; + this.args = args; + this.command = command; + this.argumentMap = new HashMap(args.length); + this.actionName = ""; + this.lastArgumentNum = args.length - 1; + } + + public Argument get(String key) + { + if (!argumentMap.containsKey(key)) + throwBadUsage(); + + return argumentMap.get(key); + } + + public Argument get(int num) + { + if (num < 0 || num >= args.length) + throwBadUsage(); + + return new Argument(num); + } + + public boolean contains(String key) + { + return argumentMap.containsKey(key); + } + + public Argument set(String key, String value) + { + Argument arg = new Argument(value); + argumentMap.put(key, arg); + return arg; + } + + public String getAction() + { + return actionName; + } + + public void doAction() + { + if (actionHandler != null) + actionHandler.processCommand(this); + } + + public ICommandSender getSender() + { + return sender; + } + + public boolean senderIsServer() + { + return sender.getCommandSenderName().equals("Server"); + } + + public EntityPlayerMP getSenderAsPlayer() + { + return CommandBase.getCommandSenderAsPlayer(sender); + } + + public void notifyAdmins(String messageKey, Object... messageArgs) + { + CommandBase.notifyAdmins(sender, messageKey, messageArgs); + } + + public void checkSenderPermission(String permission) + { + if (!senderIsServer() && !PermissionHandler.getInstance().has(sender, permission)) + throw new CommandException("commands.generic.permission"); + } + + public void checkSenderPermissionInWorld(String world, String permission) + { + if (!senderIsServer() && !PermissionHandler.getInstance().has(world, sender.getCommandSenderName(), permission)) + throw new CommandException("commands.generic.permission"); + } + + public void sendMessage(EnumChatFormatting color, String msg, Object... args) + { + ChatComponentTranslation comp = new ChatComponentTranslation(msg, args); + comp.getChatStyle().setColor(color); + sender.addChatMessage(comp); + } + + public void throwBadUsage() + { + throw new WrongUsageException(command.getCommandUsage(sender)); + } + + public String[] getArgs() + { + return args; + } + + public IExtendedCommand getCommand() + { + return command; + } + + public class Argument + { + private int num; + private boolean last; + private String value; + + private Argument(int num) + { + this.value = args[num]; + this.num = num; + this.last = num == lastArgumentNum; + } + + private Argument(int num, boolean last) + { + this.value = args[num]; + this.num = num; + this.last = last; + } + + private Argument(String value) + { + this.value = value; + this.num = -1; + this.last = false; + } + + private String value() + { + return value; + } + + private String[] args() + { + if (num >= 0) + return args; + else + return new String[] {value}; + } + + private int num() + { + return Math.max(num, 0); + } + + public String asString() + { + if (last) + return CommandBase.func_82360_a(sender, args(), num()); + else + return value(); + } + + public Argument[] asArray() + { + if (num < 0) + return new Argument[] {this}; + + Argument[] result = new Argument[args.length - num]; + for (int i = num; i < args.length; i++) + result[i-num] = new Argument(i, false); + return result; + } + + public int asInt() + { + return CommandBase.parseInt(sender, value()); + } + + public int asInt(int minBound) + { + return CommandBase.parseIntWithMin(sender, value(), minBound); + } + + public int asInt(int minBound, int maxBound) + { + return CommandBase.parseIntBounded(sender, value(), minBound, maxBound); + } + + public double asDouble() + { + return CommandBase.parseDouble(sender, value()); + } + + public double asDouble(double minBound) + { + return CommandBase.parseDoubleWithMin(sender, value(), minBound); + } + + public double asDouble(double minBound, double maxBound) + { + return CommandBase.parseDoubleBounded(sender, value(), minBound, maxBound); + } + + public boolean asBoolean() + { + return CommandBase.parseBoolean(sender, value()); + } + + public EntityPlayerMP asPlayer() + { + return CommandBase.getPlayer(sender, value()); + } + + public WorldServer asWorld() + { + WorldServer world = MinecraftServer.getServer().getMultiWorld().getWorldByNameOrID(value); + if(world == null) + throw new CommandException("commands.generic.world.invalid", value); + return world; + } + + public IChatComponent asChatComponent(boolean emphasizePlayers) + { + return CommandBase.func_147176_a(sender, args(), num(), emphasizePlayers); + } + + public double asCoordinate(double original) + { + return CommandBase.func_110666_a(sender, original, value()); + } + + public double asCoordinate(double original, int minBound, int maxBound) + { + return CommandBase.func_110665_a(sender, original, value(), minBound, maxBound); + } + + public Item asItem() + { + return CommandBase.getItemByText(sender, value()); + } + + public Block asBlock() + { + return CommandBase.getBlockByText(sender, value()); + } + } + + public static class Builder + { + private CommandContext context; + + public Builder(IExtendedCommand command, ICommandSender sender, String[] args) + { + context = new CommandContext(command, sender, args); + } + + public Builder resolveArguments(List names) + { + context.lastArgumentNum = names.size(); + Map nameCount = new HashMap(); + for (int i = 0; i < names.size(); i++) + { + String name = names.get(i); + + if (name == null || name.isEmpty()) + continue; + + if (context.argumentMap.containsKey(name)) + { + Integer count = nameCount.containsKey(name) ? nameCount.get(name) + 1 : 2; + nameCount.put(name, count); + name = name + count.toString(); + } + + context.argumentMap.put(name, context.new Argument(i)); + } + return this; + } + + public Builder setAction(String actionName, ICommandHandler actionHandler) + { + context.actionName = actionName; + context.actionHandler = actionHandler; + return this; + } + + public CommandContext build() + { + return context; + } + } +} diff --git a/src/main/java/org/ultramine/commands/syntax/DefaultCompleters.java b/src/main/java/org/ultramine/commands/syntax/DefaultCompleters.java index 0fe36d4..6745359 100644 --- a/src/main/java/org/ultramine/commands/syntax/DefaultCompleters.java +++ b/src/main/java/org/ultramine/commands/syntax/DefaultCompleters.java @@ -1,69 +1,75 @@ -package org.ultramine.commands.syntax; - -import net.minecraft.block.Block; -import net.minecraft.command.CommandBase; -import net.minecraft.entity.EntityList; -import net.minecraft.item.Item; -import net.minecraft.server.MinecraftServer; - -import java.util.ArrayList; -import java.util.List; - -public class DefaultCompleters -{ - @ArgumentCompleter(value = "player", isUsername = true) - public static List player(String val, String[] args) - { - return filterArray(val, MinecraftServer.getServer().getAllUsernames()); - } - - @ArgumentCompleter("item") - public static List item(String val, String[] args) - { - return filterCollection(val, Item.itemRegistry.getKeys()); - } - - @ArgumentCompleter("block") - public static List block(String val, String[] args) - { - return filterCollection(val, Block.blockRegistry.getKeys()); - } - - @ArgumentCompleter("entity") - public static List entity(String val, String[] args) - { - return filterCollection(val, EntityList.func_151515_b()); - } - - @ArgumentCompleter("list") - public static List list(String val, String[] args) - { - return filterArray(val, args); - } - - public static List filterArray(String filter, String[] strings) - { - List result = new ArrayList(); - - for (String str : strings) - { - if (CommandBase.doesStringStartWith(filter, str)) - result.add(str); - } - - return result; - } - - public static List filterCollection(String filter, Iterable iterable) - { - List result = new ArrayList(); - - for (String str : iterable) - { - if (CommandBase.doesStringStartWith(filter, str)) - result.add(str); - } - - return result; - } -} +package org.ultramine.commands.syntax; + +import net.minecraft.block.Block; +import net.minecraft.command.CommandBase; +import net.minecraft.entity.EntityList; +import net.minecraft.item.Item; +import net.minecraft.server.MinecraftServer; + +import java.util.ArrayList; +import java.util.List; + +public class DefaultCompleters +{ + @ArgumentCompleter(value = "player", isUsername = true) + public static List player(String val, String[] args) + { + return filterArray(val, MinecraftServer.getServer().getAllUsernames()); + } + + @ArgumentCompleter("item") + public static List item(String val, String[] args) + { + return filterCollection(val, Item.itemRegistry.getKeys()); + } + + @ArgumentCompleter("block") + public static List block(String val, String[] args) + { + return filterCollection(val, Block.blockRegistry.getKeys()); + } + + @ArgumentCompleter("entity") + public static List entity(String val, String[] args) + { + return filterCollection(val, EntityList.func_151515_b()); + } + + @ArgumentCompleter("list") + public static List list(String val, String[] args) + { + return filterArray(val, args); + } + + @ArgumentCompleter("world") + public static List world(String val, String[] args) + { + return filterCollection(val, MinecraftServer.getServer().getMultiWorld().getAllNames()); + } + + public static List filterArray(String filter, String[] strings) + { + List result = new ArrayList(); + + for (String str : strings) + { + if (CommandBase.doesStringStartWith(filter, str)) + result.add(str); + } + + return result; + } + + public static List filterCollection(String filter, Iterable iterable) + { + List result = new ArrayList(); + + for (String str : iterable) + { + if (CommandBase.doesStringStartWith(filter, str)) + result.add(str); + } + + return result; + } +} diff --git a/src/main/java/org/ultramine/server/MultiWorld.java b/src/main/java/org/ultramine/server/MultiWorld.java index fc1d6e3..ada8cc2 100644 --- a/src/main/java/org/ultramine/server/MultiWorld.java +++ b/src/main/java/org/ultramine/server/MultiWorld.java @@ -2,10 +2,12 @@ import java.util.HashMap; import java.util.Map; +import java.util.Set; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.ultramine.server.WorldsConfig.WorldConfig; +import org.ultramine.server.util.BasicTypeParser; import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.eventhandler.SubscribeEvent; @@ -175,6 +177,16 @@ return nameToWorldMap.get(name); } + public WorldServer getWorldByNameOrID(String id) + { + return BasicTypeParser.isInt(id) ? dimToWorldMap.get(Integer.parseInt(id)) : nameToWorldMap.get(id); + } + + public Set getAllNames() + { + return nameToWorldMap.keySet(); + } + public void register() { FMLCommonHandler.instance().bus().register(this); diff --git a/src/main/java/org/ultramine/server/UltramineServerModContainer.java b/src/main/java/org/ultramine/server/UltramineServerModContainer.java index a70a6e9..ab01a0c 100644 --- a/src/main/java/org/ultramine/server/UltramineServerModContainer.java +++ b/src/main/java/org/ultramine/server/UltramineServerModContainer.java @@ -22,6 +22,8 @@ import cpw.mods.fml.common.network.NetworkCheckHandler; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.relauncher.Side; + +import org.ultramine.commands.basic.TeleportCommands; import org.ultramine.commands.syntax.DefaultCompleters; import org.ultramine.permission.commands.BasicPermissionCommands; @@ -98,6 +100,7 @@ { e.registerArgumentHandlers(DefaultCompleters.class); e.registerCommands(BasicPermissionCommands.class); + e.registerCommands(TeleportCommands.class); } @Subscribe diff --git a/src/main/java/org/ultramine/server/util/BasicTypeParser.java b/src/main/java/org/ultramine/server/util/BasicTypeParser.java new file mode 100644 index 0000000..be0f9e2 --- /dev/null +++ b/src/main/java/org/ultramine/server/util/BasicTypeParser.java @@ -0,0 +1,54 @@ +package org.ultramine.server.util; + +public class BasicTypeParser +{ + public static boolean isInt(String val) + { + int len = val.length(); + if(len > 11 || len == 0) return false; + if(len > 9) + { + try + { + Integer.parseInt(val); + return true; + } catch(NumberFormatException e){return false;} + } + + int i = 0; + if(val.charAt(0) == '-') + { + i = 1; + if(len == 1) return false; + } + + for(; i < len; i++) + { + char c = val.charAt(i); + if(c < '0' || c > '9') return false; + } + + return true; + } + + public static boolean isUnsignedInt(String val) + { + int len = val.length(); + if(len > 10 || len == 0) return false; + if(len == 10) + { + try + { + if(Integer.parseInt(val) >= 0) return true; + } catch(NumberFormatException e){return false;} + } + + for(int i = 0; i < len; i++) + { + char c = val.charAt(i); + if(c < '0' || c > '9') return false; + } + + return true; + } +} diff --git a/src/main/resources/assets/ultramine/lang/en_US.lang b/src/main/resources/assets/ultramine/lang/en_US.lang index f36faf9..68d329a 100644 --- a/src/main/resources/assets/ultramine/lang/en_US.lang +++ b/src/main/resources/assets/ultramine/lang/en_US.lang @@ -1,24 +1,27 @@ -# Permissions -command.permissions.serverworld=You must specify world when using this command from console - -command.pconfig.usage=/pconfig -command.pconfig.description=Save or reload all permissions configs -command.pconfig.success.save=Permissions are saved -command.pconfig.success.reload=Permissions are reloaded - -command.pworld.usage=/pworld [world] -command.pworld.description=Add or remove permissions to all user in world (current is default) -command.pworld.success.add=Add permission <%s> to world <%s> -command.pworld.success.remove=Remove permission <%s> from world <%s> - -command.puser.usage=/puser [world] OR /puser [world] meta -command.puser.description=Add/remove permissions OR set meta for user in world (current is default) -command.puser.success.add=Add permission <%s> to user <%s> in world <%s> -command.puser.success.remove=Remove permission <%s> from user <%s> in world <%s> -command.puser.success.meta=Set meta <%s> to <%s> for user <%s> in world <%s> - -command.pgroup.usage=/pgroup OR /pgroup meta -command.pgroup.description=Add/remove permissions OR set meta for group -command.pgroup.success.add=Add permission <%s> to group <%s> -command.pgroup.success.remove=Remove permission <%s> from group <%s> +#Command generic +commands.generic.world.invalid=Can't find world '%s' + +# Permissions +command.permissions.serverworld=You must specify world when using this command from console + +command.pconfig.usage=/pconfig +command.pconfig.description=Save or reload all permissions configs +command.pconfig.success.save=Permissions are saved +command.pconfig.success.reload=Permissions are reloaded + +command.pworld.usage=/pworld [world] +command.pworld.description=Add or remove permissions to all user in world (current is default) +command.pworld.success.add=Add permission <%s> to world <%s> +command.pworld.success.remove=Remove permission <%s> from world <%s> + +command.puser.usage=/puser [world] OR /puser [world] meta +command.puser.description=Add/remove permissions OR set meta for user in world (current is default) +command.puser.success.add=Add permission <%s> to user <%s> in world <%s> +command.puser.success.remove=Remove permission <%s> from user <%s> in world <%s> +command.puser.success.meta=Set meta <%s> to <%s> for user <%s> in world <%s> + +command.pgroup.usage=/pgroup OR /pgroup meta +command.pgroup.description=Add/remove permissions OR set meta for group +command.pgroup.success.add=Add permission <%s> to group <%s> +command.pgroup.success.remove=Remove permission <%s> from group <%s> command.pgroup.success.meta=Set meta <%s> to <%s> for group <%s> \ No newline at end of file