Bonjour,
J’essaie de créer une commande pour incrémenter une valeur(capability) du joueur.
Ici de la money.
Problème : quand je lance la commande, j’ai une erreur sur le jeu : an error occured…
Et une autre dans la console :
| java.lang.ArrayIndexOutOfBoundsException: 0 |
| at com.drastic.redskyll.commands.CommandMoney.execute(CommandMoney.java:31) ~[CommandMoney.class:?] |
| at net.minecraft.command.CommandHandler.tryExecute(CommandHandler.java:126) [CommandHandler.class:?] |
| at net.minecraft.command.CommandHandler.executeCommand(CommandHandler.java:98) [CommandHandler.class:?] |
| at net.minecraft.network.NetHandlerPlayServer.handleSlashCommand(NetHandlerPlayServer.java:1005) [NetHandlerPlayServer.class:?] |
| at net.minecraft.network.NetHandlerPlayServer.processChatMessage(NetHandlerPlayServer.java:981) [NetHandlerPlayServer.class:?] |
| at net.minecraft.network.play.client.CPacketChatMessage.processPacket(CPacketChatMessage.java:47) [CPacketChatMessage.class:?] |
| at net.minecraft.network.play.client.CPacketChatMessage.processPacket(CPacketChatMessage.java:8) [CPacketChatMessage.class:?] |
| at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) [PacketThreadUtil$1.class:?] |
| at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_251] |
| at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_251] |
| at net.minecraft.util.Util.runTask(Util.java:53) [Util.class:?] |
| at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:798) [MinecraftServer.class:?] |
| at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:743) [MinecraftServer.class:?] |
| at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:192) [IntegratedServer.class:?] |
| at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:592) [MinecraftServer.class:?] |
| at java.lang.Thread.run(Thread.java:748) [?:1.8.0_251] |
| [18:38:35] [Server thread/INFO] [STDOUT]: [com.drastic.redskyll.commands.CommandMoney:execute:37]: give |
| [18:38:35] [Server thread/WARN] [minecraft/CommandHandler]: Couldn't process command: eco give |
| java.lang.ArrayIndexOutOfBoundsException: 1 |
| at com.drastic.redskyll.commands.CommandMoney.execute(CommandMoney.java:38) ~[CommandMoney.class:?] |
| at net.minecraft.command.CommandHandler.tryExecute(CommandHandler.java:126) [CommandHandler.class:?] |
| at net.minecraft.command.CommandHandler.executeCommand(CommandHandler.java:98) [CommandHandler.class:?] |
| at net.minecraft.network.NetHandlerPlayServer.handleSlashCommand(NetHandlerPlayServer.java:1005) [NetHandlerPlayServer.class:?] |
| at net.minecraft.network.NetHandlerPlayServer.processChatMessage(NetHandlerPlayServer.java:981) [NetHandlerPlayServer.class:?] |
| at net.minecraft.network.play.client.CPacketChatMessage.processPacket(CPacketChatMessage.java:47) [CPacketChatMessage.class:?] |
| at net.minecraft.network.play.client.CPacketChatMessage.processPacket(CPacketChatMessage.java:8) [CPacketChatMessage.class:?] |
| at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) [PacketThreadUtil$1.class:?] |
| at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_251] |
| at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_251] |
| at net.minecraft.util.Util.runTask(Util.java:53) [Util.class:?] |
| at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:798) [MinecraftServer.class:?] |
| at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:743) [MinecraftServer.class:?] |
| at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:192) [IntegratedServer.class:?] |
| at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:592) [MinecraftServer.class:?] |
| at java.lang.Thread.run(Thread.java:748) [?:1.8.0_251] |
| |
Mon code :
public class CommandMoney extends CommandBase
{
private final List<String> aliases = Lists.newArrayList("eco", "money", "purse");
@Override
public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException
{
EntityPlayerMP player = (EntityPlayerMP)sender;
String s = args[0];
if(player instanceof EntityPlayer)
{
IMoney money = (player).getCapability(MoneyProvider.MONEY_CAP, null);
System.out.println(args[0]);
System.out.println(args[1]);
System.out.println(args[2]);
if(s == null)
{
sender.sendMessage(new TextComponentString(TextFormatting.GREEN + (money.getMoney() + "$")));
}
else
{
if(s == "give")
{
if(args[1] == null)
{
player.sendMessage(new TextComponentString(TextFormatting.RED + "Format Incorrect"));
}
else
{
money.addMoney(Integer.parseInt(args[1]));
}
}
else if(s == "remove")
{
if(args[1] == null)
{
player.sendMessage(new TextComponentString(TextFormatting.RED + "Format Incorrect"));
}
if(args[2] != null)
{
money.shrinkMoney(Integer.parseInt(args[1]));
}
}
}
}
}
@Override
public String getName()
{
return "money";
}
@Override
public String getUsage(ICommandSender sender)
{
return "money (give/remove) (count) (player)";
}
@Override
public List<String> getAliases()
{
return aliases;
}
@Override
public boolean checkPermission(MinecraftServer server, ICommandSender sender)
{
return true;
}
@Override
public List<String> getTabCompletions(MinecraftServer server, ICommandSender sender, String[] args, BlockPos targetPos)
{
return java.util.Collections.EMPTY_LIST;
}
}