Files
jgl_sunlit_patch/kubejs/server_scripts/blockEvents/customBlockEntityBroken.js
T
2026-07-31 10:34:32 +09:00

105 lines
3.7 KiB
JavaScript

console.info("[SOCIETY] customBlockEntityBroken.js loaded");
const handleBrokenMachine = (block) => {
const machine = global.artisanMachineDefinitions.filter((obj) => {
return obj.id === block.id;
})[0];
if (!machine) return;
let working = block.properties.get("working").toLowerCase() == "true";
if (machine.upgrade && block.properties.get("upgraded").toLowerCase() == "true") {
block.popItem(machine.upgrade);
}
const nbt = block.getEntityData();
const currentRecipe = machine.recipes.get(nbt.data.recipe);
if (block.properties.get("mature").toLowerCase() == "true") {
currentRecipe.output.forEach((element) => {
block.popItem(element);
});
if (
block.id == "society:ancient_cask" &&
block.properties.get("upgraded").toLowerCase() == "true"
) block.popItem(Item.of(`3x ${Item.of(`${currentRecipe.output[0]}`).id}`));
} else if (!["society:charging_rod", "society:tapper", "society:mushroom_log"].includes(block.id)) {
let stage = Number(nbt.data.stage);
if (
currentRecipe &&
block.id == "society:ancient_cask" &&
block.properties.get("upgraded").toLowerCase() == "true"
) {
if (working) block.popItem(Item.of(`4x ${nbt.data.recipe}`));
else block.popItem(Item.of(`${stage}x ${nbt.data.recipe}`));
} else if (
block.id == "society:deluxe_worm_farm" &&
block.properties.get("upgraded").toLowerCase() == "true"
) {
// Do nothing because of infinity worm upgrade
} else if (
currentRecipe &&
block.id == "society:preserves_jar" &&
block.properties.get("upgraded").toLowerCase() == "true"
) {
if (working) block.popItem(Item.of(`3x ${nbt.data.recipe}`));
else block.popItem(Item.of(`${stage}x ${nbt.data.recipe}`));
} else if (currentRecipe) {
if (nbt.data.originalInputs && nbt.data.originalInputs.length > 0) {
nbt.data.originalInputs.forEach((item) => {
block.popItem(Item.of(`${item.Count}x ${item.id}`));
});
} else {
if (working) block.popItem(Item.of(`${machine.maxInput}x ${nbt.data.recipe}`));
else block.popItem(Item.of(`${stage}x ${nbt.data.recipe}`));
}
}
}
};
BlockEvents.broken(global.artisanMachineIds, (e) => {
handleBrokenMachine(e.block);
});
BlockEvents.broken("society:fish_pond", (e) => {
const { block } = e;
const nbt = block.getEntityData();
if (nbt.data.type !== "") {
block.popItem(
Item.of(
"society:fish_pond",
`{type:"${nbt.data.type}",population:${Number(nbt.data.population)},max_population:${Number(
nbt.data.max_population
)},quest:${block.properties.get("quest")},quest_id:${Number(nbt.data.quest_id)}}`
)
);
} else {
block.popItem(Item.of("society:fish_pond"));
}
if (block.properties.get("upgraded").toLowerCase() == "true") {
block.popItem(Item.of("society:sea_biscut"));
}
});
BlockEvents.broken("society:prize_machine", (e) => {
const nbt = e.block.getEntityData();
e.block.popItem(Item.of("society:prize_machine", `{prize:${nbt.data.prize}}`));
});
BlockEvents.broken("society:coin_leaderboard", (e) => {
global.clearOldTextDisplay(e.block, e.level, "leaderboard");
});
BlockEvents.broken("society:shipping_bin_monitor", (e) => {
global.clearOldTextDisplay(e.block, e.level, "shipping_bin_monitor");
});
BlockEvents.broken("society:fish_pond_basket", (e) => {
const { block } = e;
if (block.properties.get("upgraded").toLowerCase() == "true") {
block.popItem(Item.of("minecraft:bucket"));
}
});
BlockEvents.broken("society:auto_grabber", (e) => {
const { block } = e;
if (block.properties.get("upgraded").toLowerCase() == "true") {
block.popItem(Item.of("society:magic_shears"));
}
});