105 lines
3.1 KiB
JavaScript
105 lines
3.1 KiB
JavaScript
console.info("[SOCIETY] farmingLoot.js loaded");
|
|
|
|
// TODO: "vintagedelight:gearo_berry_bush"
|
|
const cropCollectorDenied = [
|
|
"pamhc2trees:pamapple",
|
|
"pamhc2trees:pamcherry",
|
|
"pamhc2trees:pamorange",
|
|
"pamhc2trees:pampeach",
|
|
"pamhc2trees:pamplum",
|
|
"pamhc2trees:pamhazelnut",
|
|
"pamhc2trees:pampawpaw",
|
|
"pamhc2trees:pambanana",
|
|
"pamhc2trees:pamcinnamon",
|
|
"pamhc2trees:pamdragonfruit",
|
|
"pamhc2trees:pammango",
|
|
"pamhc2trees:pamstarfruit",
|
|
"pamhc2trees:pamlychee",
|
|
"pamhc2trees:pamlemon",
|
|
"pamhc2trees:pampassionfruit",
|
|
];
|
|
const checkMaxGrown = (destroyedBlock) => {
|
|
return destroyedBlock.blockState.block.isMaxAge(destroyedBlock.blockState);
|
|
};
|
|
|
|
const checkMaxGrownWithChance = (destroyedBlock, chance) => {
|
|
return chance > Math.random() && checkMaxGrown(destroyedBlock);
|
|
};
|
|
|
|
LootJS.modifiers((e) => {
|
|
e.addBlockLootModifier(global.cropList).apply((c) => {
|
|
c.forEachLoot((item) => {
|
|
const quality = global.getCropQuality(c.destroyedBlock);
|
|
if (quality > 0)
|
|
item.setNbt(`{quality_food:{effects:[],quality:${quality}}}`);
|
|
});
|
|
});
|
|
e.addBlockLootModifier(global.cropList)
|
|
.hasAnyStage("sticky_crops")
|
|
.apply((c) => {
|
|
if (checkMaxGrownWithChance(c.destroyedBlock, 0.02)) {
|
|
c.addLoot("society:pine_tar");
|
|
}
|
|
});
|
|
e.addBlockLootModifier(global.cropList)
|
|
.hasAnyStage("soil_inspector")
|
|
.apply((c) => {
|
|
if (checkMaxGrownWithChance(c.destroyedBlock, 0.05)) {
|
|
c.addLoot("farm_and_charm:fertilizer");
|
|
}
|
|
});
|
|
e.addBlockLootModifier(global.cropList)
|
|
.randomChance(0.25)
|
|
.customCondition({
|
|
condition: "minecraft:location_check",
|
|
offsetY: -1,
|
|
predicate: {
|
|
block: {
|
|
blocks: ["dew_drop_farmland_growth:bountiful_fertilized_farmland"],
|
|
},
|
|
},
|
|
})
|
|
.modifyLoot(Ingredient.all, (itemStack) => {
|
|
itemStack.setCount(itemStack.getCount() + 1);
|
|
return itemStack;
|
|
});
|
|
|
|
e.addBlockLootModifier(global.cropList)
|
|
.hasAnyStage("paradise_crop")
|
|
.modifyLoot(Ingredient.all, (itemStack) => {
|
|
if (!cropCollectorDenied.includes(itemStack.id))
|
|
itemStack.setCount(itemStack.getCount() + 1);
|
|
return itemStack;
|
|
});
|
|
e.addBlockLootModifier(global.cropList)
|
|
.hasAnyStage("crop_collector")
|
|
.modifyLoot(Ingredient.all, (itemStack) => {
|
|
if (!cropCollectorDenied.includes(itemStack.id))
|
|
itemStack.setCount(itemStack.getCount() * 2);
|
|
return itemStack;
|
|
});
|
|
|
|
// Mastery
|
|
e.addBlockLootModifier(global.cropList)
|
|
.hasAnyStage("husbandry_mastery")
|
|
.apply((c) => {
|
|
if (checkMaxGrownWithChance(c.destroyedBlock, 0.005)) {
|
|
c.addLoot("society:plushie_capsule");
|
|
}
|
|
});
|
|
e.addBlockLootModifier(global.cropList)
|
|
.hasAnyStage("husbandry_mastery")
|
|
.apply((c) => {
|
|
if (checkMaxGrownWithChance(c.destroyedBlock, 0.003)) {
|
|
c.addLoot("society:animal_cracker");
|
|
}
|
|
});
|
|
e.addBlockLootModifier(global.cropList)
|
|
.hasAnyStage("farming_mastery")
|
|
.apply((c) => {
|
|
if (checkMaxGrownWithChance(c.destroyedBlock, 0.005)) {
|
|
c.addLoot("atmospheric:grimwood_sapling");
|
|
}
|
|
});
|
|
});
|