As the title shows, I wrote a script to randomize this recipe, but I don't know how to set the condition to make it execute only once, It looks like this
ServerEvents.recipes(event => {
const pool = "637265617465";
const getRandomFromPool = () => pool[Math.floor(Math.random() * pool.length)];
const randomNumbers = [];
for (let i = 0; i < 6; i++) {
randomNumbers.push(getRandomFromPool());
}
const numberMappings = randomNumbers.map(num => `kubejs:number_${num}`);
const itemsToCheck = [
'kubejs:uncoded_precision_mechanism'
];
const isItemRegistered = (itemId) => {
return Item.exists(itemId);
};
const specialItemRegistered = itemsToCheck.every(isItemRegistered);
if (specialItemRegistered) {
event.recipes.createSequencedAssembly(
[
Item.of('create:precision_mechanism').withChance(0.6),
Item.of('minecraft:dead_bush').withChance(0.4),
],
'kubejs:uncoded_precision_mechanism',
[
event.recipes.createDeploying('create:incomplete_precision_mechanism', ['create:incomplete_precision_mechanism', numberMappings[0]]),
event.recipes.createDeploying('create:incomplete_precision_mechanism', ['create:incomplete_precision_mechanism', numberMappings[1]]),
event.recipes.createDeploying('create:incomplete_precision_mechanism', ['create:incomplete_precision_mechanism', numberMappings[2]]),
event.recipes.createDeploying('create:incomplete_precision_mechanism', ['create:incomplete_precision_mechanism', numberMappings[3]]),
event.recipes.createDeploying('create:incomplete_precision_mechanism', ['create:incomplete_precision_mechanism', numberMappings[4]]),
event.recipes.createDeploying('create:incomplete_precision_mechanism', ['create:incomplete_precision_mechanism', numberMappings[5]]),
]
)
.transitionalItem('create:incomplete_precision_mechanism')
.loops(1)
.id('kubejs:create/sequenced_assembly/precision_mechanism');
}
});
If anyone can tell me the event that will only be judged once per load, or if there are other ways to improve it, I'd appreciate it.