136 lines
5.7 KiB
JavaScript
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;
|
|
}
|
|
)
|
|
}) |