Bukkit - 将玩家的库存转换为JSON

时间:2015-01-24 17:32:16

标签: java json bukkit

我正在为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数据。没有出现控制台错误,我也无法说出我做错了什么。

1 个答案:

答案 0 :(得分:1)

您在for语句中的条件不正确:

i=39; i < 0; i--

我被设置为39.第一个条件检查39&lt; 0本身会失败并退出循环。

应该设置为i&gt; 0或i> = 0取决于您的要求。