我正在为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数据。没有出现控制台错误,我也无法说出我做错了什么。
答案 0 :(得分:1)
您在for语句中的条件不正确:
i=39; i < 0; i--
我被设置为39.第一个条件检查39&lt; 0本身会失败并退出循环。
应该设置为i&gt; 0或i> = 0取决于您的要求。