LTDV10/packet/kubejs/startup_scripts/special_spout.js
2026-04-14 18:20:56 +08:00

136 lines
5.7 KiB
JavaScript

/**
*
* @param {Internal.FluidStackJS} fluid 流体
*/
function getFuelMultipler(fluid) {
let fluidMultipler = 1
if (fluid.id == "minecraft:lava" || fluid.id == "minecraft:water")
fluidMultipler = 1
else if (fluid.id == "createdieselgenerators:diesel" || fluid.id == "createdieselgenerators:biodiesel")
fluidMultipler = 0.5
else if (fluid.id == "createdieselgenerators:gasoline")
fluidMultipler = 0.4
else if (fluid.id == "createdelight:fuel_mixtures")
fluidMultipler = 0.25
else
fluidMultipler = 0
return fluidMultipler
}
/**
*
* @param {Internal.FluidStackJS} fluid
* @param {boolean} simulate
* @param {Internal.ItemStack} item
*/
function fillWater(fluid, simulate, item) {
if (!item.nbt.tagWater) {
item.nbt.tagWater = 0
}
let fluidAmount = Math.min(1600 - item.nbt.tagWater, fluid.amount / 10) * 10
if (fluidAmount > 0) {
if (!simulate) {
item.nbt.tagWater += fluidAmount / 10
}
return fluidAmount
}
return 0
}
/**
*
* @param {Internal.FluidStackJS} fluid
* @param {boolean} simulate
* @param {Internal.ItemStack} item
*/
function fillFuel(fluid, simulate, item) {
if (!item.nbt.tagFuel) {
item.nbt.tagFuel = 0
}
let fuelMultipler = getFuelMultipler(fluid)
let fluidAmount = Math.min(1600 - item.nbt.tagFuel, fluid.amount / 10 / fuelMultipler) * 10
if (fluidAmount > 0) {
if (!simulate) {
item.nbt.tagFuel += fluidAmount / 10
}
return fluidAmount * fuelMultipler
}
return 0
}
CreateEvents.spoutHandler(e => {
// e.add(
// "createdelight:depot_filling_tank_spout_interaction",
// ["create:depot", "create:weighted_ejector"],
// (block, fluid, simulate) => {
// let inventory = block.getInventory()
// if (inventory.isEmpty())
// return 0
// let item = inventory.getAllItems().get(0)
// if (item.hasTag("create_sa:fillable") || item.hasTag("create_sa:fuelable")) {
// item.getOrCreateTag()
// if (item.hasTag("create_sa:fillable") && fluid.id == "minecraft:water")
// return fillWater(fluid, simulate, item)
// if (item.hasTag("create_sa:fuelable") && fluid.id != "minecraft:water")
// return fillFuel(fluid, simulate, item)
// }
// return 0
// }
// )
e.add("createdelight:budding_certus_grow_spout_interaction",
["ae2:flawless_budding_quartz", "ae2:flawed_budding_quartz", "ae2:chipped_budding_quartz", "ae2:damaged_budding_quartz"],
(block, fluid, simulate) => {
if (fluid.id == "createdelight:spent_liquor" && fluid.amount >= 50) {
if (!simulate) {
block.getBlockState().randomTick(block.level, block.pos, block.level.random)
block.getBlockState().randomTick(block.level, block.pos, block.level.random)
block.getBlockState().randomTick(block.level, block.pos, block.level.random)
}
return 50
}
return 0
}
)
// e.add("createdelight:budding_certus_fix_spout_interaction",
// ["ae2:chipped_budding_quartz", "ae2:damaged_budding_quartz", "ae2:quartz_block"],
// (block, fluid, simulate) => {
// if (fluid.id == "createdelight:spent_liquor" && fluid.amount >= 50 && block.level.random.nextInt(4) == 0) {
// if (!simulate) {
// if (block.id == "ae2:quartz_block")
// block.setBlockState(Block.getBlock("ae2:damaged_budding_quartz").defaultBlockState(), 2)
// else if (block.id == "ae2:damaged_budding_quartz")
// block.setBlockState(Block.getBlock("ae2:chipped_budding_quartz").defaultBlockState(), 2)
// else if (block.id == "ae2:chipped_budding_quartz")
// block.setBlockState(Block.getBlock("ae2:flawed_budding_quartz").defaultBlockState(), 2)
// }
// return 50
// }
// return 0
// }
// )
e.add(
"createdelight:sulfur_spout_interaction", // ID
"alexscaves:sulfur", // 目標方塊
(block, fluid, simulate) => {
let level = block.level
let upPos = block.pos.above()
let upBlock = level.getBlock(upPos)
if (fluid.id === "alexscaves:acid" && fluid.amount >= 10 && upBlock.getId() !== "alexscaves:sulfur_cluster") {
if (!simulate) {
if (level.getRandom().nextInt(3) == 0) {
if (upBlock.getId() === "minecraft:air")
level.server.runCommandSilent(`/execute in ${level.dimension} run setblock ${upPos.x} ${upPos.y} ${upPos.z} alexscaves:sulfur_bud_small`)
else if (upBlock.getId() === "alexscaves:sulfur_bud_small")
level.server.runCommandSilent(`/execute in ${level.dimension} run setblock ${upPos.x} ${upPos.y} ${upPos.z} alexscaves:sulfur_bud_medium`)
else if (upBlock.getId() === "alexscaves:sulfur_bud_medium")
level.server.runCommandSilent(`/execute in ${level.dimension} run setblock ${upPos.x} ${upPos.y} ${upPos.z} alexscaves:sulfur_bud_large`)
else if (upBlock.getId() === "alexscaves:sulfur_bud_large")
level.server.runCommandSilent(`/execute in ${level.dimension} run setblock ${upPos.x} ${upPos.y} ${upPos.z} alexscaves:sulfur_cluster`)
}
}
return 10;
}
return 0;
}
)
})