add first patch
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
console.info("[SOCIETY] juiceInserter.js loaded");
|
||||
|
||||
StartupEvents.registry("block", (event) => {
|
||||
event
|
||||
.create("society:juice_inserter", "cardinal")
|
||||
.tagBlock("minecraft:mineable/axe")
|
||||
.box(1, 0, 1, 15, 16, 15)
|
||||
.defaultCutout()
|
||||
.item((item) => {
|
||||
item.tooltip(Text.translatable("block.society.juice_inserter.description").gray());
|
||||
item.modelJson({
|
||||
parent: "society:block/kubejs/juice_inserter",
|
||||
});
|
||||
})
|
||||
.blockEntity((blockInfo) => {
|
||||
blockInfo.initialData({ Fluid: 0, FluidType: "" });
|
||||
blockInfo.serverTick(10, 0, (entity) => {
|
||||
global.runJuiceInserter(entity);
|
||||
});
|
||||
blockInfo.attachCapability(
|
||||
CapabilityBuilder.FLUID.customBlockEntity()
|
||||
.getCapacity(() => 10000)
|
||||
.getFluid((blockInfo, fl) => global.getFluid(blockInfo))
|
||||
.onFill((blockInfo, fluid, sim) => global.onFill(blockInfo, fluid, sim))
|
||||
.onDrain((blockInfo, fluid, sim) => global.onDrain(blockInfo, fluid, sim))
|
||||
);
|
||||
}).blockstateJson = {
|
||||
multipart: [
|
||||
{
|
||||
apply: { model: "society:block/kubejs/juice_inserter_particle" },
|
||||
},
|
||||
].concat(getCardinalMultipartJsonBasic("juice_inserter")),
|
||||
};
|
||||
});
|
||||
|
||||
const juiceMap = [
|
||||
{ fluid: "vinery:white_grape_juice", barrelFluidId: "white_general" },
|
||||
{ fluid: "vinery:white_savanna_grape_juice", barrelFluidId: "white_savanna" },
|
||||
{ fluid: "vinery:white_taiga_grape_juice", barrelFluidId: "white_taiga" },
|
||||
{ fluid: "vinery:white_jungle_grape_juice", barrelFluidId: "white_jungle" },
|
||||
{ fluid: "nethervinery:warped_grape_juice", barrelFluidId: "white_warped" },
|
||||
{ fluid: "vinery:red_grape_juice", barrelFluidId: "red_general" },
|
||||
{ fluid: "vinery:red_savanna_grape_juice", barrelFluidId: "red_savanna" },
|
||||
{ fluid: "vinery:red_taiga_grape_juice", barrelFluidId: "red_taiga" },
|
||||
{ fluid: "vinery:red_jungle_grape_juice", barrelFluidId: "red_jungle" },
|
||||
{ fluid: "nethervinery:crimson_grape_juice", barrelFluidId: "red_crimson" },
|
||||
{ fluid: "vinery:apple_juice", barrelFluidId: "apple" },
|
||||
];
|
||||
global.runJuiceInserter = (blockInfo) => {
|
||||
const { block, level } = blockInfo;
|
||||
const fluidHandler = blockInfo.getCapability(ForgeCapabilities.FLUID_HANDLER).orElse(null);
|
||||
const fermentationBarrel = global.getFermentingBarrel(level, level.getBlock(block.getPos()));
|
||||
if (!fermentationBarrel.id.equals("vinery:fermentation_barrel")) return;
|
||||
let barrelData = fermentationBarrel.getEntityData();
|
||||
if (!barrelData) return;
|
||||
if (!block.getEntityData()) return;
|
||||
const fluidData = block.getEntityData().ForgeData;
|
||||
if (!barrelData) return;
|
||||
if (Number(barrelData.FluidLevel) + 25 > 100) return;
|
||||
if (fluidData === null || fluidData.Fluid < 250) return;
|
||||
juiceMap.forEach((juice) => {
|
||||
if (fluidData.FluidType && fluidData.FluidType.equals(juice.fluid)) {
|
||||
if (barrelData.FluidLevel === 0) {
|
||||
barrelData.JuiceType = juice.barrelFluidId;
|
||||
fermentationBarrel.setEntityData(barrelData);
|
||||
}
|
||||
if (barrelData.JuiceType.equals(juice.barrelFluidId)) {
|
||||
fluidHandler.drain(Fluid.of(fluidData.FluidType, 250), "execute");
|
||||
barrelData.FluidLevel = barrelData.FluidLevel + 25.0;
|
||||
fermentationBarrel.setEntityData(barrelData);
|
||||
level
|
||||
.getServer()
|
||||
.runCommandSilent(`playsound create:spout block @a ${block.x} ${block.y} ${block.z}`);
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
Reference in New Issue
Block a user