LTDV10/packet/kubejs/server_scripts/mbd2/contract_executor.js
2026-04-14 18:20:56 +08:00

37 lines
1.2 KiB
JavaScript

MBDMachineEvents.onAfterRecipeModify("createdelight:contract_executor", e => {
let event = e.event
const {machine, recipe} = event
const {pos, level, customData} = machine
let positions = [pos.north(), pos.south(), pos.west(), pos.east()]
let heat = 0
let count = 0
positions.forEach(pos => {
let block = level.getBlock(pos)
if (block.id == "create:blaze_burner") {
count++
let blaze = block.properties.get("blaze")
if (blaze == "kindled")
heat += 2
else if (blaze == "seething")
heat += 3
else
heat += 1
}
})
if (count == 0)
event.setCanceled(true)
let multipler = heat / Math.sqrt(count)
let newRecipe = recipe.copy()
newRecipe.duration /= multipler
event.setRecipe(newRecipe)
customData.putInt("blazeBurnerCount", count)
})
MBDMachineEvents.onUI("createdelight:contract_executor", e => {
let event = e.event
const {machine, root} = event
let text = root.getFirstWidgetById("blaze_burner_count")
text.setTextProvider(() => Component.translate("message.createdelight.blaze_burner_count",
machine.customData.getInt("blazeBurnerCount").toFixed(0)))
})