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。