Bukkit - 将玩家的库存转换为 JSON
Bukkit - Converting a player's inventory into JSON
我正在为 BukkitGUI 设计一个 bukkit 插件,这样当你这样做时 /bukkitguihelp inventory <playername>
它会将玩家的物品栏吐出到控制台中。我遇到的问题是它没有读取所有插槽,打印出 JSON 数据时缺少第一个插槽。 (我正在使用 org.json 库)JSON 内容:http://pastebin.com/L8DhNGad
PlayerInventory inventory = ((Player) Bukkit.getServer().getPlayer(
args[1])).getInventory();
JSONObject mainInv = new JSONObject();
for (int i=39; i < 0; i--) {
ItemStack stack = inventory.getItem(i);
JSONObject inv = new JSONObject();
inv.put("id",Integer.valueOf(i));
if (stack != null) {
inv.put("amount",Integer.valueOf(stack.getAmount()));
MaterialData stackData = stack.getData();
inv.put("type", stack.getTypeId() + "-" + stack.getDurability());
inv.put("name", stackData.toString());
mainInv.put(Integer.valueOf(i), inv);
}
else mainInv.put(Integer.valueOf(i), "null");
}
System.out.println(mainInv);
但是当我将 i < 0
设置为 i == 0
时,它会打印出 { }
而不是库存 JSON 数据。没有出现控制台错误,我也不知道我做错了什么。
你在for语句中的条件不正确:
i=39; i < 0; i--
i 设置为 39。第一个条件检查 39 < 0 本身将失败并退出循环。
应根据您的要求设置为 i > 0 或 i >= 0。
我正在为 BukkitGUI 设计一个 bukkit 插件,这样当你这样做时 /bukkitguihelp inventory <playername>
它会将玩家的物品栏吐出到控制台中。我遇到的问题是它没有读取所有插槽,打印出 JSON 数据时缺少第一个插槽。 (我正在使用 org.json 库)JSON 内容:http://pastebin.com/L8DhNGad
PlayerInventory inventory = ((Player) Bukkit.getServer().getPlayer(
args[1])).getInventory();
JSONObject mainInv = new JSONObject();
for (int i=39; i < 0; i--) {
ItemStack stack = inventory.getItem(i);
JSONObject inv = new JSONObject();
inv.put("id",Integer.valueOf(i));
if (stack != null) {
inv.put("amount",Integer.valueOf(stack.getAmount()));
MaterialData stackData = stack.getData();
inv.put("type", stack.getTypeId() + "-" + stack.getDurability());
inv.put("name", stackData.toString());
mainInv.put(Integer.valueOf(i), inv);
}
else mainInv.put(Integer.valueOf(i), "null");
}
System.out.println(mainInv);
但是当我将 i < 0
设置为 i == 0
时,它会打印出 { }
而不是库存 JSON 数据。没有出现控制台错误,我也不知道我做错了什么。
你在for语句中的条件不正确:
i=39; i < 0; i--
i 设置为 39。第一个条件检查 39 < 0 本身将失败并退出循环。
应根据您的要求设置为 i > 0 或 i >= 0。