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

82 lines
3.2 KiB
JavaScript

console.info("[SOCIETY] magnifyingGlass.js loaded");
const DELAY = 10;
const REPETITIONS = 10;
const magnifyingGlassBlocks = [
{ id: "society:auto_grabber", radius: 5, includeY: true },
{ id: "society:artisan_hopper", radius: 3, includeY: true },
{ id: "society:mini_artisan_hopper", radius: 1, includeY: true },
{ id: "society:auto_petter", radius: 2, includeY: true },
{ id: "society:fish_pond_basket", radius: 1, includeY: true },
{ id: "society:feeding_trough", radius: 6, includeY: true },
{ id: "splendid_slimes:slime_feeder", radius: 6, includeY: true },
{ id: "dew_drop_farmland_growth:iron_sprinkler", radius: 1 },
{ id: "dew_drop_farmland_growth:gold_sprinkler", radius: 2 },
{ id: "society:mana_sprinkler", radius: 2 },
{ id: "dew_drop_farmland_growth:diamond_sprinkler", radius: 3 },
{ id: "dew_drop_farmland_growth:netherite_sprinkler", radius: 4 },
{ id: "society:mana_milker", radius: 10, includeY: true },
{ id: "society:golden_clock", radius: 2, includeY: true },
{ id: "society:mana_clock", radius: 1, includeY: true },
{ id: "society:snow_melter", radius: 10 },
{ id: "farmingforblockheads:chicken_nest", radius: 8, includeY: true },
{ id: "society:growth_obelisk", radius: 3, includeY: false },
{ id: "society:ribbit_hut", radius: 7, includeY: false },
{ id: "society:mushroom_log", radius: 8, includeY: true },
{ id: "society:fish_pond_manager", radius: 10, includeY: true },
{ id: "society:drum_cornucopia", radius: 10, includeY: true },
];
const magnifyingGlassBlockIds = magnifyingGlassBlocks.map((x) => x.id);
BlockEvents.rightClicked(magnifyingGlassBlockIds, (e) => {
const { item, hand, player, server, level, block } = e;
let resolvedBlock = block;
if (hand == "MAIN_HAND" && item == "society:magnifying_glass") {
global.addItemCooldown(player, item, (DELAY * REPETITIONS) / 2);
player.swing();
server.runCommandSilent(
`playsound tanukidecor:block.lantern_clock.chime block @a ${player.x} ${player.y} ${player.z}`
);
magnifyingGlassBlocks.forEach((hitBlock) => {
if (hitBlock.id == block.id) {
if (block.id === "society:ribbit_hut") {
resolvedBlock = global.getOpposite(block.getProperties().get("facing"), block.getPos());
}
for (let index = 0; index < REPETITIONS; index++) {
server.scheduleInTicks(DELAY * index, () => {
for (let pos of BlockPos.betweenClosed(
new BlockPos(
resolvedBlock.x - hitBlock.radius,
resolvedBlock.y - hitBlock.radius,
resolvedBlock.z - hitBlock.radius
),
[
resolvedBlock.x + hitBlock.radius,
resolvedBlock.y + hitBlock.radius,
resolvedBlock.z + hitBlock.radius,
]
)) {
if (pos.y === resolvedBlock.y || hitBlock.includeY) {
level.spawnParticles(
"supplementaries:stasis",
true,
pos.x + 0.5,
pos.y + 0.5,
pos.z + 0.5,
0,
0,
0,
0,
0.0001
);
}
}
});
}
}
});
e.cancel();
}
});