package org.bukkit.loot;
import java.util.Collection;
import java.util.Random;
import org.bukkit.Keyed;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* LootTables are technical files that represent what items should be in
* naturally generated containers, what items should be dropped when killing a
* mob, or what items can be fished.
*
* See the
* Minecraft Wiki for more information.
*/
public interface LootTable extends Keyed {
/**
* Returns a mutable list of loot generated by this LootTable.
*
* @param random the random instance to use to generate loot
* @param context context within to populate loot
* @return a list of ItemStacks
*/
@NotNull
Collection populateLoot(@Nullable Random random, @NotNull LootContext context);
/**
* Attempt to fill an inventory with this LootTable's loot.
*
* @param inventory the inventory to fill
* @param random the random instance to use to generate loot
* @param context context within to populate loot
*/
void fillInventory(@NotNull Inventory inventory, @Nullable Random random, @NotNull LootContext context);
}