106 lines
3.2 KiB
JavaScript
106 lines
3.2 KiB
JavaScript
console.info("[SOCIETY] animalBreeding.js loaded");
|
|
|
|
const breedingItems = [
|
|
"minecraft:carrot",
|
|
"minecraft:wheat",
|
|
"minecraft:beetroot",
|
|
"minecraft:potato",
|
|
"farmersdelight:cabbage_seeds",
|
|
"vintagedelight:ghost_pepper_seeds",
|
|
"vintagedelight:cucumber_seeds",
|
|
"supplementaries:flax_seeds",
|
|
"minecraft:beetroot_seeds",
|
|
"minecraft:wheat_seeds",
|
|
"minecraft:pumpkin_seeds",
|
|
"minecraft:torchflower_seeds",
|
|
"farmersdelight:tomato_seeds",
|
|
"society:tubabacco_seed",
|
|
"society:ancient_fruit_seed",
|
|
"society:blueberry_seed",
|
|
"minecraft:dandelion",
|
|
"minecraft:golden_carrot",
|
|
];
|
|
|
|
ItemEvents.entityInteracted((e) => {
|
|
const { hand, player, item, target, level, server } = e;
|
|
if (player.cooldowns.isOnCooldown(item)) return;
|
|
if (!global.checkEntityTag(target, "society:husbandry_animal") || target.isBaby()) return;
|
|
if (breedingItems.includes(item.id)) {
|
|
server.runCommandSilent(
|
|
global.getEmbersTextAPICommand(
|
|
player.username,
|
|
global.animalMessageSettings,
|
|
160,
|
|
Text.translatable("society.husbandry.breeding.need_potion").toJson()
|
|
)
|
|
);
|
|
e.cancel();
|
|
}
|
|
|
|
if (hand == "OFF_HAND") return;
|
|
if (hand == "MAIN_HAND" && item === "society:miracle_potion") {
|
|
if (global.checkEntityTag(target, "society:infertile")) {
|
|
server.runCommandSilent(
|
|
global.getEmbersTextAPICommand(
|
|
player.username,
|
|
global.animalMessageSettings,
|
|
120,
|
|
Text.translatable("society.husbandry.breeding.infertile").toJson()
|
|
)
|
|
);
|
|
e.cancel();
|
|
}
|
|
let animalNbt = target.getNbt();
|
|
let day = global.getDay(level);
|
|
let ageLastBred = target.persistentData.ageLastBred || 0;
|
|
if (global.isFresh(day, ageLastBred)) ageLastBred = 0;
|
|
if (Number(animalNbt.InLove) === 0 && day > ageLastBred) {
|
|
if (
|
|
["crittersandcompanions:red_panda", "minecraft:panda"].includes(target.type) &&
|
|
Math.random() > 0.2
|
|
) {
|
|
item.count--;
|
|
target.persistentData.ageLastBred = day;
|
|
server.runCommandSilent(
|
|
global.getEmbersTextAPICommand(
|
|
player.username,
|
|
global.animalMessageSettings,
|
|
160,
|
|
Text.translatable("society.husbandry.breeding.fail").toJson()
|
|
)
|
|
);
|
|
} else {
|
|
animalNbt.InLove = 2000;
|
|
target.setNbt(animalNbt);
|
|
item.count--;
|
|
level.spawnParticles(
|
|
"minecraft:heart",
|
|
true,
|
|
target.x,
|
|
target.y + 1.5,
|
|
target.z,
|
|
0.2 * rnd(1, 4),
|
|
0.2 * rnd(1, 4),
|
|
0.2 * rnd(1, 4),
|
|
12,
|
|
0.01
|
|
);
|
|
target.persistentData.ageLastBred = day;
|
|
global.giveExperience(server, player, "husbandry", 80);
|
|
player.swing();
|
|
global.addItemCooldown(player, item, 10);
|
|
}
|
|
} else if (day > ageLastBred) {
|
|
global.addItemCooldown(player, "society:miracle_potion", 40);
|
|
server.runCommandSilent(
|
|
global.getEmbersTextAPICommand(
|
|
player.username,
|
|
global.animalMessageSettings,
|
|
120,
|
|
Text.translatable("society.husbandry.breeding.cooldown").toJson()
|
|
)
|
|
);
|
|
}
|
|
}
|
|
});
|