53 lines
2.2 KiB
JavaScript
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();
|
|
}
|
|
}) |