Skip to content

Loot Tables

In this chapter, loot table changes are implemented with native KubeJS APIs, not LootJS. LootJS usage is covered in the mod chapter.

Native KubeJS provides the following 6 ways to modify or add loot tables.

Although there are six event types, their loot editing patterns are very similar.

Before writing loot scripts, it helps to review , , and optionally .

Loot Event Call Purpose Modify Method Override Method Usage
ServerEvents.genericLootTables Global loot modify addGeneric
ServerEvents.blockLootTables Block loot modifyBlock addBlock
ServerEvents.entityLootTables Entity loot modifyEntity addEntity
ServerEvents.giftLootTables Gift loot modify addGift
ServerEvents.fishingLootTables Fishing loot modify addFishing
ServerEvents.chestLootTables Chest loot modify addChest

Common LootBuilderPool Methods

Method Parameters Usage Return Type
setUniformRolls(int1,int2) int1 -> min rolls, int2 -> max rolls Random roll count void
addCondition(JsonObject) ~ ~ ConditionContainer
addConditionalFunction(Consumer<ConditionalFunction>) ~ ~ FunctionContainer
addEmpty(int) int -> empty entry weight Set empty result weight LootTableEntry
addEntry(JsonObject) ~ ~ LootTableEntry
addItem(ItemStack) -> Add an item LootTableEntry
addItem(ItemStack,int) int -> weight ratio Add an item LootTableEntry
addItem(ItemStack,int,NumberProvider) NumberProvider -> count range Add an item LootTableEntry
addLootTable(ResourceLocation) -> Add another loot table LootTableEntry
addTag(string,bool) string -> tagId, bool -> pick one Add tag as loot entries LootTableEntry
randomChanceWithLooting(int1,int2) int1->chance int2->multiplier ~ ConditionContainer
count(NumberProvider) -> Set count range FunctionContainer
damage(NumberProvider) -> Set damage range FunctionContainer
enchantRandomly(ResourceLocation[]) -> Apply random enchantment FunctionContainer
enchantWithLevels(NumberProvider,bool) ~ ~ FunctionContainer
entityProperties(EntityTarget,JsonObject) ~ ~ ConditionContainer
entityScores(EntityTarget,Map<string, any>) ~ ~ ConditionContainer
entries() - Get entries list JsonArray
killedByPlayer() - Require player kill ConditionContainer
randomChance(int) -> ~ ConditionContainer
randomChanceWithLooting(int1,int2) int1-> chance int2-> multiplier ~ ConditionContainer
setBinomialRolls(int1,int2) ~ ~ void
survivesExplosion() - ~ ConditionContainer
furnaceSmelt() - Apply smelting behavior FunctionContainer