@Override public void run(String playerID) { Player player = PlayerConverter.getPlayer(playerID); for (Item theItem : questItems) { QuestItem questItem = theItem.getItem(); int amount = theItem.getAmount(); if (notify) { Config.sendMessage( playerID, "items_given", new String[] { (questItem.getName() != null) ? questItem.getName() : questItem.getMaterial().toString().toLowerCase().replace("_", " "), String.valueOf(amount) }); } while (amount > 0) { int stackSize; if (amount > 64) { stackSize = 64; } else { stackSize = amount; } ItemStack item = questItem.generateItem(stackSize); HashMap<Integer, ItemStack> left = player.getInventory().addItem(item); for (Integer leftNumber : left.keySet()) { ItemStack itemStack = left.get(leftNumber); if (Utils.isQuestItem(itemStack)) { BetonQuest.getInstance().getDBHandler(playerID).addItem(itemStack, stackSize); } else { player.getWorld().dropItem(player.getLocation(), itemStack); } } amount = amount - stackSize; } } }