83 lines
2.5 KiB
JavaScript
83 lines
2.5 KiB
JavaScript
//priority: 100
|
|
console.info("[SOCIETY] moonStatue.js loaded");
|
|
|
|
const statueBuffs = [
|
|
"moon_extra_ore",
|
|
"moon_geode_roll",
|
|
"moon_rope_reveal",
|
|
"moon_remains",
|
|
"moon_damage",
|
|
];
|
|
global.handleMoonStatueClick = (click) => {
|
|
const { player, server, hand, block, level } = click;
|
|
|
|
if (!player.isFake() && player.stages.has("mining_mastery")) {
|
|
if (hand == "OFF_HAND") return;
|
|
if (hand == "MAIN_HAND") {
|
|
let day = global.getDay(level);
|
|
if (!player.persistentData.days) player.persistentData.days = {}
|
|
let dayData = player.persistentData.days.moonStatueDay;
|
|
if (dayData == undefined || global.compareDay(day, dayData, 1)) {
|
|
let selectedBuff =
|
|
statueBuffs[Math.floor(Math.random() * statueBuffs.length)];
|
|
player.tell(
|
|
Text.translatable(`block.society.moon_statue.announce`).aqua()
|
|
);
|
|
player.tell(
|
|
Text.translatable(`block.society.moon_statue.${selectedBuff}`).green()
|
|
);
|
|
player.persistentData.days.moonStatueDay = day;
|
|
statueBuffs.forEach((buff) => {
|
|
player.stages.remove(buff);
|
|
});
|
|
player.stages.add(selectedBuff);
|
|
server.runCommandSilent(
|
|
`playsound create:peculiar_bell_use block @a ${player.x} ${player.y} ${player.z}`
|
|
);
|
|
level.spawnParticles(
|
|
"species:spectre_smoke",
|
|
true,
|
|
block.x,
|
|
block.y + 1.5,
|
|
block.z,
|
|
0.1 * rnd(1, 2),
|
|
0.1 * rnd(1, 2),
|
|
0.1 * rnd(1, 2),
|
|
1,
|
|
0.5
|
|
);
|
|
} else {
|
|
player.tell(
|
|
Text.translatable("block.society.moon_statue.already_taken").red()
|
|
);
|
|
}
|
|
}
|
|
} else
|
|
player.tell(Text.translatable("block.society.moon_statue.no_mastery").red());
|
|
};
|
|
StartupEvents.registry("block", (event) => {
|
|
event
|
|
.create("society:moon_statue", "cardinal")
|
|
.displayName("Statue of The Moon Gnome")
|
|
.defaultCutout()
|
|
.soundType("stone")
|
|
.hardness(4.5)
|
|
.resistance(9.0)
|
|
.lightLevel(0.8)
|
|
.requiresTool(false)
|
|
.model("society:block/kubejs/moon_statue")
|
|
.tagBlock("minecraft:mineable/pickaxe")
|
|
.tagBlock("minecraft:needs_stone_tool")
|
|
.item((item) => {
|
|
item.tooltip(
|
|
Text.translatable("block.society.moon_statue.description").gray()
|
|
);
|
|
item.modelJson({
|
|
parent: "society:block/kubejs/moon_statue",
|
|
});
|
|
})
|
|
.rightClick((click) => {
|
|
global.handleMoonStatueClick(click);
|
|
});
|
|
});
|