use of ivorius.reccomplex.world.storage.loot.LootTable in project RecurrentComplex by Ivorforce.
the class ItemLootGenMultiTag method generateInInventory.
@Override
public void generateInInventory(WorldServer server, IItemHandlerModifiable inventory, Random random, ItemStack stack, int fromSlot) {
LootTable lootTable = lootTable(stack);
inventory.setStackInSlot(fromSlot, ItemStack.EMPTY);
if (lootTable != null) {
IntegerRange range = getGenerationCount(stack);
int amount = range.getMin() < range.getMax() ? random.nextInt(range.getMax() - range.getMin() + 1) + range.getMin() : 0;
TIntList emptySlots = emptySlots(inventory);
for (int i = 0; i < amount; i++) {
int slot = emptySlots.isEmpty() ? random.nextInt(inventory.getSlots()) : emptySlots.removeAt(random.nextInt(emptySlots.size()));
ItemStack generated = lootTable.getRandomItemStack(server, random);
if (generated != null)
inventory.setStackInSlot(slot, generated);
}
}
}
use of ivorius.reccomplex.world.storage.loot.LootTable in project RecurrentComplex by Ivorforce.
the class RCForgeEventHandler method onItemGeneration.
@SubscribeEvent
public void onItemGeneration(ItemGenerationEvent event) {
Pair<String, Float> pair = null;
if (event instanceof ItemGenerationEvent.Artifact)
pair = RCConfig.customArtifactTag;
else if (event instanceof ItemGenerationEvent.Book)
pair = RCConfig.customBookTag;
if (pair != null && pair.getRight() > 0.0f && event.random.nextFloat() < pair.getRight()) {
LootTable lootTable = WeightedItemCollectionRegistry.INSTANCE.get(pair.getLeft());
if (lootTable != null)
event.inventory.setStackInSlot(event.fromSlot, lootTable.getRandomItemStack(event.server, event.random));
event.setCanceled(true);
}
}
Aggregations