add first patch

This commit is contained in:
2026-07-31 10:34:32 +09:00
parent 03aac2e45e
commit b1cbc6c78d
6390 changed files with 547430 additions and 0 deletions
@@ -0,0 +1,246 @@
console.info("[SOCIETY] skullCavernBroken.js loaded");
const crashableHammers = [
"botania:terra_pick",
"justhammers:diamond_impact_hammer",
"justhammers:gold_impact_hammer",
"justhammers:iron_impact_hammer",
"justhammers:stone_impact_hammer",
"justhammers:netherite_hammer",
"justhammers:diamond_hammer",
"justhammers:gold_hammer",
"justhammers:iron_hammer",
"justhammers:stone_hammer",
"justhammers:netherite_impact_hammer",
];
const biomeAirTypeMap = new Map([
["society:cavern_top", 0],
["society:skull_caves", 0],
["society:lush_caverns", 0],
["society:frozen_caves", 1],
["society:frozen_maelstrom", 1],
["society:desert_caves", 2],
["society:desert_fault", 2],
["society:blackstone_caves", 3],
["society:umbra_barrens", 4],
]);
const scheduleFunction = (level, pos, server, rockType) => {
if (global.susFunctionLogging)
console.log("[SOCIETY-SUSFN] skullCavernBroken.js - Regen Air");
server.schedule(5, () => {
let toggleBit = level.persistentData.chunkParityMap[level.getChunkAt(pos).pos.toString()].toggleBit;
if (!level.isLoaded(pos)) return;
if (
level.getBlock(pos) &&
["minecraft:air", "minecraft:void_air", "minecraft:cave_air"].includes(
level.getBlock(pos).id
)
) {
level.getBlock(pos).set("society:cavern_air", {
type: String(rockType),
chunkbit: toggleBit.toString(),
});
}
});
};
BlockEvents.broken(
[
"society:stone_boulder",
"society:ice_boulder",
"society:sandstone_boulder",
"society:blackstone_boulder",
"society:end_stone_boulder",
"minecraft:deepslate_copper_ore",
"oreganized:lead_ore",
"create:zinc_ore",
"create:deepslate_zinc_ore",
"society:geode_node",
"society:magma_geode_node",
"society:omni_geode_node",
"society:earth_crystal",
"society:fire_quartz",
"minecraft:deepslate_emerald_ore",
"minecraft:emerald_ore",
"minecraft:deepslate_lapis_ore",
"minecraft:lapis_ore",
"minecraft:deepslate_diamond_ore",
"minecraft:diamond_ore",
"society:deepslate_sparkstone_ore",
"society:sparkstone_ore",
"society:deepslate_iridium_ore",
"society:iridium_ore",
"minecraft:copper_ore",
"minecraft:deepslate_iron_ore",
"minecraft:iron_ore",
"minecraft:coal_ore",
"minecraft:deepslate_coal_ore",
"minecraft:deepslate_redstone_ore",
"minecraft:redstone_ore",
"oreganized:deepslate_silver_ore",
"oreganized:silver_ore",
"minecraft:deepslate_gold_ore",
"minecraft:gold_ore",
"oreganized:deepslate_lead_ore",
"society:grimwood_supply_crate",
"society:oak_supply_crate",
"society:spruce_supply_crate",
"society:palm_supply_crate",
],
(e) => {
const { level, block, player, server } = e;
const pos = block.getPos();
if (level.dimension === "society:skull_cavern") {
if (global.disableHammersSkullCavern && crashableHammers.includes(player.getHeldItem("main_hand").id)) {
server.runCommandSilent(
`dialog ${player.username} show ${player.username} ${player.getHeldItem("main_hand").id.equals("botania:terra_pick") ? "goddess_unique_skull_cavern_shatterer" : "goddess_unique_skull_cavern_hammer"}`
);
e.cancel();
}
let rockType = biomeAirTypeMap.get(`${block.biomeId.toString()}`);
scheduleFunction(level, pos.immutable(), server, rockType);
}
}
);
const scheduleUnplaceableRegenFunction = (level, pos, server, id) => {
server.scheduleInTicks(100, () => {
if (!level.isLoaded(pos)) return;
if (level.getBlock(pos) == "minecraft:air") {
level.getBlock(pos).set(id);
level.spawnParticles(
"snowyspirit:glow_light",
true,
pos.x,
pos.y + 0.5,
pos.z,
0.2 * rnd(1, 4),
0.2 * rnd(1, 4),
0.2 * rnd(1, 4),
5,
2
);
}
});
};
// Skull Cavern unplacable tag
BlockEvents.broken(
[
"atmospheric:arid_sand",
"atmospheric:red_arid_sand",
"minecraft:sand",
"minecraft:basalt",
"minecraft:end_stone",
"minecraft:magma_block",
"oreganized:glance",
"oreganized:glance_bricks",
"oreganized:polished_glance",
"minecraft:moss_block",
"minecraft:pale_moss_block",
"oreganized:spotted_glance",
"minecraft:snow_block",
"minecraft:blue_ice",
"minecraft:packed_ice",
],
(e) => {
const { level, block, server } = e;
const unplacablePos = block.getPos();
if (level.dimension === "society:skull_cavern") {
scheduleUnplaceableRegenFunction(
level,
unplacablePos.immutable(),
server,
block.getId()
);
}
}
);
LevelEvents.beforeExplosion((e) => {
const { x, y, z, size, level, server } = e;
if (level.dimension === "society:skull_cavern") {
if (global.susFunctionLogging)
console.log("[SOCIETY-SUSFN] skullCavernBroken.js - explosion");
let range = Math.round(Math.floor((size * 1.3) / 0.225) * 0.5);
let blocks = [];
for (let xi = Math.floor(x - range); xi <= Math.ceil(x + range); xi++) {
for (let zi = Math.floor(z - range); zi <= Math.ceil(z + range); zi++) {
for (let yi = Math.floor(y - range); yi <= Math.ceil(y + range); yi++) {
let dist = Math.hypot(x - xi, y - yi, z - zi);
if (dist <= range) {
let block = level.getBlock(xi, yi, zi);
if (block.hasTag("society:skull_cavern_bomb_denied")) {
blocks.push({ xi: xi, yi: yi, zi: zi, dist: dist, id: block.id });
} else if (block.hasTag("society:skull_cavern_regens")) {
let rockType = biomeAirTypeMap.get(`${block.biomeId.toString()}`);
scheduleFunction(level, block.pos.immutable(), server, rockType);
}
}
}
}
}
blocks.sort((a, b) => a.dist - b.dist);
for (let i = 0; i < blocks.length; i++) {
let { xi, yi, zi, id } = blocks[i];
server.scheduleInTicks(i, () => {
level.getBlock(xi, yi, zi).set(id);
});
}
}
});
BlockEvents.broken("society:skull_cavern_teleporter", (e) => {
const { level } = e;
if (level.dimension === "society:skull_cavern") e.cancel();
});
BlockEvents.broken(
[
"society:stone_boulder",
"society:ice_boulder",
"society:sandstone_boulder",
"society:blackstone_boulder",
"society:end_stone_boulder",
],
(e) => {
const { level, player, server, block } = e;
if (player.stages.has("moon_rope_reveal") && Math.random() < 0.15) {
const { x, y, z } = block;
let scanBlock;
let abovePos;
let radius = 8;
for (let pos of BlockPos.betweenClosed(
new BlockPos(x - radius, y - radius, z - radius),
[x + radius, y + radius, z + radius]
)) {
if (!level.isLoaded(pos)) continue;
scanBlock = level.getBlock(pos);
abovePos = scanBlock.getPos().above();
if (
scanBlock.id == "farmersdelight:rope" &&
level.getBlock(abovePos).id != "farmersdelight:rope"
) {
level.spawnParticles(
"species:spectre_pop",
true,
abovePos.x,
abovePos.y + 0.5,
abovePos.z,
0.1 * rnd(1, 4),
0.1 * rnd(1, 4),
0.1 * rnd(1, 4),
5,
0.01
);
server.runCommandSilent(
`playsound create:peculiar_bell_use block @a ${abovePos.x} ${abovePos.y} ${abovePos.z}`
);
}
}
}
}
);