Files
Mohammad-Ali Minaie b86dedad2f base mod created
2018-10-08 09:07:47 -04:00

143 lines
5.0 KiB
Java

package net.minecraft.command;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.Set;
import javax.annotation.Nullable;
import net.minecraft.server.MinecraftServer;
import net.minecraft.tileentity.CommandBlockBaseLogic;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.text.TextComponentString;
import net.minecraft.util.text.TextComponentTranslation;
import net.minecraft.util.text.TextFormatting;
import net.minecraft.util.text.event.ClickEvent;
public class CommandHelp extends CommandBase
{
private static final String[] SEARGE_SAYS = new String[] {"Yolo", "Ask for help on twitter", "/deop @p", "Scoreboard deleted, commands blocked", "Contact helpdesk for help", "/testfornoob @p", "/trigger warning", "Oh my god, it's full of stats", "/kill @p[name=!Searge]", "Have you tried turning it off and on again?", "Sorry, no help today"};
private final Random rand = new Random();
/**
* Gets the name of the command
*/
public String getName()
{
return "help";
}
/**
* Return the required permission level for this command.
*/
public int getRequiredPermissionLevel()
{
return 0;
}
/**
* Gets the usage string for the command.
*/
public String getUsage(ICommandSender sender)
{
return "commands.help.usage";
}
/**
* Get a list of aliases for this command. <b>Never return null!</b>
*/
public List<String> getAliases()
{
return Arrays.<String>asList("?");
}
/**
* Callback for when the command is executed
*/
public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException
{
if (sender instanceof CommandBlockBaseLogic)
{
sender.sendMessage((new TextComponentString("Searge says: ")).appendText(SEARGE_SAYS[this.rand.nextInt(SEARGE_SAYS.length) % SEARGE_SAYS.length]));
}
else
{
List<ICommand> list = this.getSortedPossibleCommands(sender, server);
int i = 7;
int j = (list.size() - 1) / 7;
int k = 0;
try
{
k = args.length == 0 ? 0 : parseInt(args[0], 1, j + 1) - 1;
}
catch (NumberInvalidException numberinvalidexception)
{
Map<String, ICommand> map = this.getCommandMap(server);
ICommand icommand = map.get(args[0]);
if (icommand != null)
{
throw new WrongUsageException(icommand.getUsage(sender), new Object[0]);
}
if (MathHelper.getInt(args[0], -1) == -1 && MathHelper.getInt(args[0], -2) == -2)
{
throw new CommandNotFoundException();
}
throw numberinvalidexception;
}
int l = Math.min((k + 1) * 7, list.size());
TextComponentTranslation textcomponenttranslation1 = new TextComponentTranslation("commands.help.header", new Object[] {k + 1, j + 1});
textcomponenttranslation1.getStyle().setColor(TextFormatting.DARK_GREEN);
sender.sendMessage(textcomponenttranslation1);
for (int i1 = k * 7; i1 < l; ++i1)
{
ICommand icommand1 = list.get(i1);
TextComponentTranslation textcomponenttranslation = new TextComponentTranslation(icommand1.getUsage(sender), new Object[0]);
textcomponenttranslation.getStyle().setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, "/" + icommand1.getName() + " "));
sender.sendMessage(textcomponenttranslation);
}
if (k == 0)
{
TextComponentTranslation textcomponenttranslation2 = new TextComponentTranslation("commands.help.footer", new Object[0]);
textcomponenttranslation2.getStyle().setColor(TextFormatting.GREEN);
sender.sendMessage(textcomponenttranslation2);
}
}
}
protected List<ICommand> getSortedPossibleCommands(ICommandSender sender, MinecraftServer server)
{
List<ICommand> list = server.getCommandManager().getPossibleCommands(sender);
Collections.sort(list);
return list;
}
protected Map<String, ICommand> getCommandMap(MinecraftServer server)
{
return server.getCommandManager().getCommands();
}
/**
* Get a list of options for when the user presses the TAB key
*/
public List<String> getTabCompletions(MinecraftServer server, ICommandSender sender, String[] args, @Nullable BlockPos targetPos)
{
if (args.length == 1)
{
Set<String> set = this.getCommandMap(server).keySet();
return getListOfStringsMatchingLastWord(args, (String[])set.toArray(new String[set.size()]));
}
else
{
return Collections.<String>emptyList();
}
}
}