code
- コード: 全て選択
public boolean onCommand(CommandSender sender, Command cmd, String s, String[] args) {
if (cmd.getName().equalsIgnoreCase("playerinfo")) {
if (!(sender instanceof Player)) {
if ("reload".equals(args[0])) {
処理
} else {
処理
}
} else {
if (sender.isOp()) {
getLogger().info("0");
if (args.length == 0) {
処理
} else if ("reload".equals(args[0])) {
処理
} else if ("help".equals(args[0])) {
処理
} else if ("show".equals(args[0])) {
if (args.length == 1) {
処理
} else if (getServer().getPlayer(args[1]) == null) {
処理
} else {
処理
}
} else if ("open".equals(args[0])) {
getLogger().info("1");
if (args.length == 1) {
処理
} else if (getServer().getPlayer(args[1]) == null) {
処理
} else {
getLogger().info("2");
Player senderP = (Player) sender;
getLogger().info("3");
int c;
getLogger().info("4");
Player p = getServer().getPlayer(args[1]);
getLogger().info("5");
Inventory playerInv = Bukkit.createInventory(null, 9, p.getName() + "'s inventory");
getLogger().info("6");
for (c = 0; c <= 26; c++) {
playerInv.setItem(c, p.getInventory().getItem(c + 9));
}
getLogger().info("7");
for (c = 27; c <= 35; c++) {
playerInv.setItem(c, new ItemStack(Material.STAINED_GLASS));
}
getLogger().info("8");
for (c = 36; c <= 44; c++) {
playerInv.setItem(c, p.getInventory().getItem(c));
}
getLogger().info("9");
int cc = 45;
getLogger().info("10");
for (c = 103; c >= 100; c--) {
playerInv.setItem(cc, p.getInventory().getItem(c));
cc++;
}
getLogger().info("11");
playerInv.setItem(49, new ItemStack(Material.STAINED_GLASS));
getLogger().info("12");
playerInv.setItem(50, p.getEquipment().getItemInOffHand());
getLogger().info("13");
for (c = 51; c <= 53; c++) {
playerInv.setItem(c, new ItemStack(Material.STAINED_GLASS));
}
getLogger().info("14");
senderP.openInventory(playerInv);
getLogger().info("15");
return true;
}
} else {
処理
}
} else {
処理
}
return true;
}
}
return false;
}
試行錯誤をした結果、引数が無い場合のhelpの表示に成功しました。
上記がそのコードです。
もう一つ、プレイヤーのインベントリ表示についてですが、自分の説明不足でした。すみません。
自分の考えてたことは、指定したプレイヤーのインベントリ、ホットバー、防具、オフハンドのアイテムを
1つのGUIに表示するというものです。
そのためfor文を複数使い新規作成したGUIにプレイヤーのインベントリから取得したアイテムをセットするという
処理を書きました。
しかし、なぜかfor文の手前で処理が例外処理へいってしまい、正常に動作しないという状況なのです。
これに関しては2つ目の引数でプレイヤーのフルネームや、プレイヤーの名前の一部(testというplayerなら引数2にtやteやtes)を
入れて実行するとエラーが発生します。
エラー
- コード: 全て選択
[17:24:19 ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'playerinfo' in plugin PlayerInfo v1.0
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[patched_1.10.2.jar:git-Paper-916.2]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:151) ~[patched_1.10.2.jar:git-Paper-916.2]
at org.bukkit.craftbukkit.v1_10_R1.CraftServer.dispatchCommand(CraftServer.java:672) ~[patched_1.10.2.jar:git-Paper-916.2]
at net.minecraft.server.v1_10_R1.PlayerConnection.handleCommand(PlayerConnection.java:1396) [patched_1.10.2.jar:git-Paper-916.2]
at net.minecraft.server.v1_10_R1.PlayerConnection.a(PlayerConnection.java:1201) [patched_1.10.2.jar:git-Paper-916.2]
at net.minecraft.server.v1_10_R1.PacketPlayInChat.a(PacketPlayInChat.java:45) [patched_1.10.2.jar:git-Paper-916.2]
at net.minecraft.server.v1_10_R1.PacketPlayInChat.a(PacketPlayInChat.java:5) [patched_1.10.2.jar:git-Paper-916.2]
at net.minecraft.server.v1_10_R1.PlayerConnectionUtils$1.run(SourceFile:13) [patched_1.10.2.jar:git-Paper-916.2]
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_112]
at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_112]
at net.minecraft.server.v1_10_R1.SystemUtils.a(SourceFile:45) [patched_1.10.2.jar:git-Paper-916.2]
at net.minecraft.server.v1_10_R1.MinecraftServer.D(MinecraftServer.java:808) [patched_1.10.2.jar:git-Paper-916.2]
at net.minecraft.server.v1_10_R1.DedicatedServer.D(DedicatedServer.java:404) [patched_1.10.2.jar:git-Paper-916.2]
at net.minecraft.server.v1_10_R1.MinecraftServer.C(MinecraftServer.java:740) [patched_1.10.2.jar:git-Paper-916.2]
at net.minecraft.server.v1_10_R1.MinecraftServer.run(MinecraftServer.java:639) [patched_1.10.2.jar:git-Paper-916.2]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_112]
Caused by: java.lang.ArrayIndexOutOfBoundsException: 9
at org.bukkit.craftbukkit.v1_10_R1.inventory.CraftInventoryCustom$MinecraftInventory.setItem(CraftInventoryCustom.java:105) ~[patched_1.10.2.jar:git-Paper-916.2]
at org.bukkit.craftbukkit.v1_10_R1.inventory.CraftInventory.setItem(CraftInventory.java:88) ~[patched_1.10.2.jar:git-Paper-916.2]
at mc.gogojp.playerinfo.PlayerInfo.onCommand(PlayerInfo.java:138) ~[?:?]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[patched_1.10.2.jar:git-Paper-916.2]
... 15 more