【发布时间】:2015-12-12 16:05:08
【问题描述】:
我有这个插件,基本上玩家可以创建派对。它们的数据存储在 YAML 文件中。
parties:
mynewparteh:
name: MyNewParteh
leader: Dr_Derek
balance: 0
policies:
- Default policy
members:
- Dr_Derek
我想这样做,例如,当党领袖运行“/party delete”时,它会首先检查他们是哪个党的成员,以及他们是否是领袖。
问题是,我不知道如何在不指定队伍本身的情况下检查一个玩家的名字是否属于一个队伍的成员列表?
int partyListLength = config.getConfigurationSection("parties").getKeys(false).size();
String[] partyList = config.getConfigurationSection("parties").getKeys(false).toArray(new String[partyListLength]);
for (int i = 0; i < partyListLength; i++)
{
if (config.getString("parties."+partyList[i]+".leader") == player.getName())
{
player.sendMessage(ChatColor.GREEN + "Party deleted!");
config.set("parties."+partyList[i], null);
saveConfig();
}
}
本质上,有人建议我使用 getConfigurationSection(),然后我尝试将集合转换为数组,然后使用 for 循环遍历所有数据并检查玩家的姓名。问题出在控制台中,我得到 ArrayIndexOutOfBoundsException,所以显然将集合转换为数组存在问题,我需要一个数组才能使用索引。我该如何解决这个问题?
从控制台:
[20:50:03] [Server thread/ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'party' in plugin Parties v1.0
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[craftbukkit.jar:git-Spigot-b8f6402-a646500]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:181) ~[craftbukkit.jar:git-Spigot-b8f6402-a646500]
at org.bukkit.craftbukkit.v1_8_R1.CraftServer.dispatchCommand(CraftServer.java:642) ~[craftbukkit.jar:git-Spigot-b8f6402-a646500]
at net.minecraft.server.v1_8_R1.PlayerConnection.handleCommand(PlayerConnection.java:1105) [craftbukkit.jar:git-Spigot-b8f6402-a646500]
at net.minecraft.server.v1_8_R1.PlayerConnection.a(PlayerConnection.java:940) [craftbukkit.jar:git-Spigot-b8f6402-a646500]
at net.minecraft.server.v1_8_R1.PacketPlayInChat.a(PacketPlayInChat.java:26) [craftbukkit.jar:git-Spigot-b8f6402-a646500]
at net.minecraft.server.v1_8_R1.PacketPlayInChat.a(PacketPlayInChat.java:53) [craftbukkit.jar:git-Spigot-b8f6402-a646500]
at net.minecraft.server.v1_8_R1.PacketHandleTask.run(SourceFile:13) [craftbukkit.jar:git-Spigot-b8f6402-a646500]
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_40]
at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_40]
at net.minecraft.server.v1_8_R1.MinecraftServer.z(MinecraftServer.java:683) [craftbukkit.jar:git-Spigot-b8f6402-a646500]
at net.minecraft.server.v1_8_R1.DedicatedServer.z(DedicatedServer.java:316) [craftbukkit.jar:git-Spigot-b8f6402-a646500]
at net.minecraft.server.v1_8_R1.MinecraftServer.y(MinecraftServer.java:623) [craftbukkit.jar:git-Spigot-b8f6402-a646500]
at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java:526) [craftbukkit.jar:git-Spigot-b8f6402-a646500]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_40]
Caused by: java.lang.ArrayIndexOutOfBoundsException: 1
at me.penghst.Parties.Main.onCommand(Main.java:212) ~[?:?]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44)
【问题讨论】:
-
您能否在edit 您的帖子中包含出现在控制台中的 ArrayIndexOutOfBoundsException 的完整堆栈跟踪?
-
好的...我看不出该异常会如何在您发布的代码的 sn-p 中引发。阅读this information on what a stack trace is,然后编辑您的问题以包含您的代码的那部分 - 我确实在您发布的 sn-p 中看到了一个错误,但只是更正它似乎并不能解决您的主要问题。