Guten Tag,
Ich habe eine Methode für ein Minecraft Plugin geschrieben, welche mir eine random Anzahl an random Items zurückgeben soll:
[CODE=java]public List<ItemStack> getWZChestLoot() {
List<ItemStack> list = new ArrayList<>();
int randomNumber = random(3, 8);
int chance;
List<ItemStack> items = new ArrayList<>(getCases().getClosedCases());
items.add(getOther().getExpBottle(500, this.rarityCommon));
items.add(getOther().getExpBottle(1000, this.rarityCommon));
items.add(getOther().getExpBottle(1500, this.rarityRare));
items.add(getOther().getExpBottle(2000, this.rarityEpic));
int xpBottleAmount = random(1, 15);
items.add(new ItemBuilder(Material.EXP_BOTTLE, xpBottleAmount).setLore((xpBottleAmount > 6 ? this.rarityRare : this.rarityCommon)).toItemStack());
int goldAppleAmount = random(2, 8);
items.add(new ItemBuilder(Material.GOLDEN_APPLE, goldAppleAmount).setLore(this.rarityCommon).toItemStack());
int goldCarrotAmount = random(3, 13);
items.add(new ItemBuilder(Material.GOLDEN_CARROT, goldCarrotAmount).setLore(this.rarityCommon).toItemStack());
int backed = random(3, 15);
items.add(new ItemBuilder(Material.BAKED_POTATO, backed).setLore(this.rarityCommon).toItemStack());
items.add(new ItemBuilder(Material.POTION, 1).setDurability((short) 8227).addLoreLine(this.rarityCommon).toItemStack());
items.add(new ItemBuilder(Material.POTION, 1).setDurability((short) 8265).addLoreLine(this.rarityRare).toItemStack());
items.add(new ItemBuilder(Material.POTION, 1).setDurability((short) 16424).addLoreLine(this.rarityCommon).toItemStack());
items.add(new ItemBuilder(Material.POTION, 1).setDurability((short) 8194).addLoreLine(this.rarityRare).toItemStack());
items.add(new ItemBuilder(Material.POTION, 1).setDurability((short) 8262).addLoreLine(this.rarityCommon).toItemStack());
items.add(new ItemBuilder(Material.POTION, 1).setDurability((short) 8238).addLoreLine(this.rarityCommon).toItemStack());
int enderpearlAmount = random(3, 8);
items.add(new ItemBuilder(Material.ENDER_PEARL, enderpearlAmount).setLore(this.rarityRare).toItemStack());
items.add(new ItemBuilder(Material.MONSTER_EGG, 1).setDurability((short) 90).setLore(this.rarityOp).toItemStack());
items.add(new ItemBuilder(Material.MONSTER_EGG, 1).setDurability((short) 91).setLore(this.rarityOp).toItemStack());
items.add(new ItemBuilder(Material.MONSTER_EGG, 1).setDurability((short) 92).setLore(this.rarityOp).toItemStack());
items.add(new ItemBuilder(Material.MONSTER_EGG, 1).setDurability((short) 93).setLore(this.rarityOp).toItemStack());
for(EnchantmentProvider.EnchantmentType enchantmentType : EnchantmentProvider.EnchantmentType.values()) {
if(!enchantmentType.getRarity().equalsIgnoreCase(this.rarityOp)) {
items.add(getBücher().getBook(enchantmentType, "I"));
}
}
for (int i = 0; i < randomNumber; i++) {
chance = random(1, 100);
if (chance <= 5) {
list.add(getItem(this.rarityOp, items));
} else if (chance <= 10) {
list.add(getItem(this.rarityMythical, items));
} else if (chance <= 30) {
list.add(getItem(this.rarityEpic, items));
} else if (chance <= 50) {
list.add(getItem(this.rarityRare, items));
} else {
list.add(getItem(this.rarityCommon, items));
}
}
return list;
}
private ItemStack getItem(String rarity, List<ItemStack> allSets) {
for (ItemStack stack : allSets) {
if (stack.getItemMeta().getLore().contains(rarity)) {
return stack;
}
}
return new ItemStack(Material.BARRIER, 1);
}[/CODE]
Allerdings gibt mir die Methode NUR die Items zurück, die ich im Konstruktor übergeben habe. Also getCases().getClosedCases(). Warum werden nur diese Items zurückgegeben und die anderen nicht?
MfG