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

53 lines
2.2 KiB
JavaScript

const $ServerPlayer = Java.loadClass("net.minecraft.server.level.ServerPlayer")
const $MillingRecipe = Java.loadClass("com.simibubi.create.content.kinetics.millstone.MillingRecipe")
MBDMachineEvents.onRecipeWorking("createdelight:mortar", e => {
let event = e.event
const {machine} = event
machine.recipeLogic.progress--
})
MBDMachineEvents.onRightClick("createdelight:mortar", e => {
let event = e.event
const {machine, player} = event
if (player.shiftKeyDown) {
let output = machine.getCapability(ForgeCapabilities.ITEM_HANDLER, "down").orElse(null)
player.give(output.extractItem(0, output.getStackInSlot(0).count, false))
player.swing()
}
else if (machine.machineStateName == "working") {
let time = 5 * 2
machine.recipeLogic.progress += machine.recipeLogic.duration / time
player.sendData("kubejs_player_playsound", {soundEvent: "minecraft:block.stone.hit"})
player.swing()
}
})
MBDRecipeTypeEvents.onTransferProxyRecipe("createdelight:mortar", e => {
let event = e.event;
const {recipeType, proxyTypeId, proxyType, proxyRecipeId, proxyRecipe} = event;
// console.log(` : ${proxyRecipe}`)
// console.log(`proxyTypeId: ${proxyTypeId}`)
// make sure the recipe type is correct
if (proxyTypeId.toString() === "create:milling") {
let input = proxyRecipe.getIngredients()[0]; // we assume the ingredients has and only has one item.
/**@type {Internal.MillingRecipe} */
let proxyMillingRecipe = proxyRecipe
// console.log(`proxyMillingRecipe: ${proxyMillingRecipe}`)
/**@type {Internal.MBDRecipeSchema$MBDRecipeJS} */
let recipe = recipeType.recipeBuilder() // same as create recipe via kjs event
recipe
.duration(proxyMillingRecipe.processingDuration)
.inputItems(input)
.id(proxyRecipeId + "_mbd2")
proxyMillingRecipe.rollableResults.forEach(output => {
recipe
.chance(output.chance, builder => builder.outputItems(output.stack))
})
// If you want to skip this recipe
// event.mbdRecipe = null;
// set the result
event.mbdRecipe = recipe.buildMBDRecipe();
}
})