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,201 @@
console.info("[SOCIETY] harvestHandling.js loaded");
// Yeah this filename has a typo. Fixing it would be more annoying than leaving it.
const deniedCrops = [
"farmersdelight:tomatoes",
"farmersdelight:budding_tomatoes",
"minecraft:melon_stem",
"minecraft:pitcher_crop",
"minecraft:torchflower_crop",
"minecraft:pumpkin_stem",
"minecraft:cocoa",
"supplementaries:flax",
"society:mana_fruit_crop"
];
const allowedBonemealCrops = [
"minecraft:crimson_fungus",
"minecraft:warped_fungus",
];
const reseedableCrops = [
"minecraft:potato",
"minecraft:carrot",
"farm_and_charm:onion",
"veggiesdelight:sweet_potato",
"vintagedelight:peanut",
"veggiesdelight:garlic_clove"
];
BlockEvents.rightClicked((e) => {
const { block, player, server, hand, item, level } = e;
if (reseedableCrops.includes(e.item.getId())) {
if (block.hasTag("dewdrop:waterable")) {
e.player.inventoryMenu.broadcastFullState();
e.cancel();
}
}
if (!allowedBonemealCrops.includes(block.id)) {
if (player.isHoldingInAnyHand("farm_and_charm:fertilizer")) e.cancel();
if (
player.isHoldingInAnyHand("minecraft:bone_meal") ||
player.isHoldingInAnyHand("meadow:watering_can")
) {
if (
block.hasTag("minecraft:crops") ||
block.hasTag("minecraft:saplings") ||
block.hasTag("vinery:lattice") ||
block.hasTag("farmersdelight:wild_crops") ||
block.hasTag("farm_and_charm:wild_crops") ||
block.hasTag("sereneseasons:summer_crops") ||
block.hasTag("sereneseasons:autumn_crops") ||
block.hasTag("sereneseasons:spring_crops") ||
block.hasTag("sereneseasons:winter_crops") ||
[
"veggiesdelight:wild_bellpeppers",
"veggiesdelight:wild_sweet_potatoes",
"veggiesdelight:wild_garlic",
"veggiesdelight:wild_cauliflowers",
"atmospheric:dragon_roots",
"atmospheric:aloe_vera",
"atmospheric:aloe_kernels",
"atmospheric:yucca_branch",
"minecraft:kelp",
"farmersdelight:tomatoes",
"farm_and_charm:wild_nettle",
"farm_and_charm:wild_ribwort",
"minecraft:cocoa",
"minecraft:cave_vines",
"minecraft:cave_vines_plant",
"minecraft:bamboo",
"nethervinery:crimson_grape_bush",
"nethervinery:warped_grape_bush",
"vinery:savanna_grape_bush_white",
"vinery:jungle_grape_bush_red",
"vinery:savanna_grape_bush_red",
"vinery:white_grape_bush",
"vinery:red_grape_bush",
"vinery:taiga_grape_bush_red",
"vinery:taiga_grape_bush_white",
"vinery:jungle_grape_bush_white",
"vinery:grapevine_stem",
"nethervinery:obsidian_stem",
"farmersdelight:budding_tomatoes",
"farmersdelight:rice",
"farmersdelight:rice_panicles",
"herbalbrews:lavender",
"herbalbrews:hibiscus",
"minecraft:torchflower",
"atmospheric:passion_vine",
"verdantvibes:bracket_mushroom",
"vinery:apple_leaves",
"vinery:dark_cherry_leaves",
"cluttered:blue_roundhead",
"cluttered:fly_agaric",
"quark:glow_shroom",
"farmersdelight:brown_mushroom_colony",
"species:alphacene_mushroom",
"farmersdelight:red_mushroom_colony"
].includes(block.id)
) {
player.tell(Text.translatable("society.bone_meal.weak"));
e.player.inventoryMenu.broadcastFullState();
e.cancel();
}
}
}
if (hand == "MAIN_HAND") {
let initialBlock = level.getBlockState(block.pos);
let checkBlocked;
let blockState;
if (
block.hasTag("minecraft:crops") &&
!deniedCrops.includes(block.id) &&
initialBlock.block.isMaxAge(initialBlock)
) {
let xpCount = 0;
let radius = 0;
if (item.hasTag("minecraft:hoes")) radius = 1;
if (
[
"minecraft:netherite_hoe",
"minecraft:diamond_hoe",
"botania:elementium_hoe",
].includes(item.id)
)
radius = 2;
for (let pos of BlockPos.betweenClosed(
new BlockPos(block.x - radius, block.y, block.z - radius),
[block.x + radius, block.y, block.z + radius],
)) {
checkBlocked = level.getBlock(pos);
blockState = level.getBlockState(pos);
if (
checkBlocked.hasTag("minecraft:crops") &&
!deniedCrops.includes(checkBlocked.id)
) {
if (blockState.block.isMaxAge(blockState)) {
if (player.isFake()) {
e.cancel();
} else {
xpCount += blockState.block.getMaxAge();
}
}
}
}
server.scheduleInTicks(2, () => {
initialBlock = level.getBlockState(block.pos);
if (!initialBlock.block.isMaxAge(initialBlock) && xpCount > 0) {
const xp = block.createEntity("experience_orb");
xp.mergeNbt({ Value: xpCount });
xp.spawn();
global.giveExperience(server, player, "farming", xpCount * 2);
}
});
}
}
});
// Vinery grapevine leaf mechanic
BlockEvents.rightClicked("vinery:grapevine_stem", (e) => {
const { block } = e;
let properties = block.getProperties();
properties.leaves_pending = false;
properties.leaves_done = true;
block.set(block.id, properties);
});
BlockEvents.rightClicked((e) => {
if (["society:mana_fruit_crop"].includes(e.item.getId())) {
if (!e.block.hasTag("dewdrop:waterable")) {
e.player.inventoryMenu.broadcastFullState();
e.cancel();
}
}
});
BlockEvents.rightClicked("society:mana_fruit_crop", (e) => {
const { level, server, block, player } = e;
let blockProperties = level.getBlock(block.pos).getProperties();
let age = Number(blockProperties.get("age"));
if (age == 7) {
blockProperties.age = "0";
block.set(block.id, blockProperties);
let quality = global.getCropQuality(block);
let count = 1;
if (player.stages.has("paradise_crop")) count += 1;
if (player.stages.has("crop_collector")) count *= 2;
if (quality) {
block.popItemFromFace(
Item.of(
`${count}x society:mana_fruit`,
`{quality_food:{effects:[],quality:${quality}}}`,
),
"up",
);
} else {
block.popItemFromFace(Item.of(`${count}x society:mana_fruit`), "up");
}
player.swing();
server.runCommandSilent(
`playsound minecraft:block.grass.break block @a ${block.x} ${block.y} ${block.z} 0.5`,
);
}
});