neuralgia/kubejs/server_scripts/gregtech/loot.js
2024-02-10 13:35:31 +07:00

55 lines
2.1 KiB
JavaScript

// priority: 0
const registerGTCEULoots = (event) => {
global.TFC_STONE_TYPES.forEach(stoneType => {
GTMaterialRegistry.getRegisteredMaterials().forEach(material => {
if (material.hasProperty(PropertyKey.ORE)) {
let stoneTypeMaterial = GTMaterials.get(stoneType)
let stoneTypeDust = null
if (stoneTypeMaterial != null) stoneTypeDust = ChemicalHelper.get(TagPrefix.dust, stoneTypeMaterial, 1)
let richRawOre = ChemicalHelper.get(TFGTagPrefix.richRawOre, material, 1)
let normalRawOre = ChemicalHelper.get(TagPrefix.rawOre, material, 1)
let poorRawOre = ChemicalHelper.get(TFGTagPrefix.poorRawOre, material, 1)
let crushedOre = ChemicalHelper.get(TagPrefix.crushed, material, 1)
let blockName = `gtceu:${stoneType}_${material.getName()}_ore`
if (!richRawOre.isEmpty() && !normalRawOre.isEmpty() && !poorRawOre.isEmpty()) {
event.addBlockLootModifier(blockName)
.removeLoot(Ingredient.all)
.addWeightedLoot([
richRawOre.withChance(0.2),
normalRawOre.withChance(0.6),
poorRawOre.withChance(0.2)
]);
}
if (!stoneTypeDust.isEmpty()) {
event.addBlockLootModifier(blockName)
.addLoot(
LootEntry.of(stoneTypeDust).when((c) => c.randomChance(0.25))
)
}
if (!crushedOre.isEmpty()) {
event.addBlockLootModifier(blockName)
.matchMainHand('#forge:tools/hammers')
.removeLoot(Ingredient.all)
.addWeightedLoot([
crushedOre.withChance(0.8),
crushedOre.withCount(2).withChance(0.2)
]);
}
}
})
})
}