155 lines
4.5 KiB
JavaScript
155 lines
4.5 KiB
JavaScript
console.info("[SOCIETY] plushieReRegister.js loaded");
|
|
|
|
global.plushieRightClick = (click) => {
|
|
const { item, block, player, level, server, hand } = click;
|
|
const { x, y, z } = block;
|
|
let nbt = block.getEntityData();
|
|
const { type, quest_id, affection, animal } = nbt.data;
|
|
|
|
if (player.isFake()) return;
|
|
if (hand == "OFF_HAND") return;
|
|
if (hand == "MAIN_HAND") {
|
|
if (!Number(type)) {
|
|
global.plushieTraits.forEach((trait, index) => {
|
|
if (trait.trait.equals(type)) {
|
|
nbt.merge({
|
|
data: {
|
|
type: index,
|
|
},
|
|
});
|
|
global.setBlockEntityData(block, nbt)
|
|
}
|
|
})
|
|
}
|
|
if (!animal) {
|
|
if (
|
|
player.stages.has("women_who_run_with_the_plushies") &&
|
|
affection < 2
|
|
) {
|
|
nbt.merge({
|
|
data: {
|
|
affection: 2,
|
|
},
|
|
});
|
|
global.setBlockEntityData(block, nbt)
|
|
level.spawnParticles(
|
|
"minecraft:heart",
|
|
true,
|
|
x + 0.5,
|
|
y + 0.5,
|
|
z + 0.5,
|
|
0.1 * rnd(1, 4),
|
|
0.1 * rnd(1, 4),
|
|
0.1 * rnd(1, 4),
|
|
10,
|
|
0.1
|
|
);
|
|
}
|
|
if (quest_id > 0) {
|
|
let questList = Ingredient.of(global.plushieTraits[type].tag).itemIds;
|
|
let questOffset = 3;
|
|
if (questList.length < 12) questOffset = 2;
|
|
if (questList.length > 36) questOffset = 6;
|
|
let questItem =
|
|
questList[affection * questOffset + Number(quest_id) - 1];
|
|
let questName = Item.of(questItem).displayName;
|
|
if (item && item == questItem) {
|
|
if (!player.isCreative()) item.count--;
|
|
level.spawnParticles(
|
|
"minecraft:heart",
|
|
true,
|
|
x + 0.5,
|
|
y + 0.5,
|
|
z + 0.5,
|
|
0.1 * rnd(1, 4),
|
|
0.1 * rnd(1, 4),
|
|
0.1 * rnd(1, 4),
|
|
10,
|
|
0.1
|
|
);
|
|
nbt.merge({
|
|
data: {
|
|
quest_id: affection == 3 ? "0" : String(rnd(1, 3)),
|
|
affection: affection + 1,
|
|
},
|
|
});
|
|
if (
|
|
player.stages.has("husbandry_mastery") &&
|
|
!player.stages.has("women_who_run_with_the_plushies") &&
|
|
affection > 2 &&
|
|
Math.random() <= 0.05
|
|
) {
|
|
block.popItemFromFace(
|
|
"society:women_who_run_with_the_plushies",
|
|
block.properties.get("facing")
|
|
);
|
|
}
|
|
global.setBlockEntityData(block, nbt)
|
|
player.tell(Text.translatable("society.plushie.thank").gray());
|
|
} else {
|
|
player.tell(Text.translatable("society.plushie.want_gift").gray());
|
|
player.tell(questName);
|
|
}
|
|
}
|
|
if (
|
|
item == "minecraft:air" &&
|
|
block.id === "whimsy_deco:adv_singing_frog_plushie"
|
|
) {
|
|
server.runCommandSilent(
|
|
`playsound species:music.disk.spawner block @a ${x} ${y} ${z}`
|
|
);
|
|
block.set("whimsy_deco:sunlit_singing_frog", block.properties);
|
|
global.setBlockEntityData(block, nbt)
|
|
server.scheduleInTicks(0, () => {
|
|
server.scheduleInTicks(2740, () => {
|
|
if (
|
|
level.getBlock(block.pos).id === "whimsy_deco:sunlit_singing_frog"
|
|
) {
|
|
block.set(
|
|
"whimsy_deco:adv_singing_frog_plushie",
|
|
block.properties
|
|
);
|
|
global.setBlockEntityData(block, nbt)
|
|
}
|
|
});
|
|
});
|
|
} else
|
|
server.runCommandSilent(
|
|
`playsound tanukidecor:block.mini_figure.squeak block @a ${x} ${y} ${z}`
|
|
);
|
|
}
|
|
}
|
|
};
|
|
|
|
StartupEvents.registry("block", (event) => {
|
|
global.originalPlushies.forEach((plushie) => {
|
|
const splitStr = plushie.split(":");
|
|
let modelPath = `${splitStr[0]}:block/${splitStr[1]}`;
|
|
if (splitStr[0].equals("tanukidecor"))
|
|
modelPath = `tanukidecor:block/mini_figure/${splitStr[1]}`;
|
|
event
|
|
.create(`${splitStr[0]}:adv_${splitStr[1]}`, "cardinal")
|
|
.defaultCutout()
|
|
.box(2, 0, 2, 14, 14, 14)
|
|
.tagBlock("minecraft:mineable/axe")
|
|
.soundType("wool")
|
|
.hardness(1.0)
|
|
.requiresTool(false)
|
|
.model(modelPath)
|
|
.item((item) => {
|
|
item.modelJson({
|
|
parent: modelPath,
|
|
});
|
|
})
|
|
.rightClick((click) => global.plushieRightClick(click))
|
|
.blockEntity((blockInfo) => {
|
|
blockInfo.initialData({
|
|
type: "",
|
|
quest_id: 0,
|
|
quality: 0,
|
|
affection: 0,
|
|
});
|
|
});
|
|
});
|
|
});
|