console.info("[SOCIETY] enrichedBonemeal.js loaded"); const hasGreenhouseGlass = (level, cropPos) => { let scannedBlock; for (let i = 0; i < 16; i++) { scannedBlock = level.getBlock(cropPos.offset(0, i + 1, 0)); if (scannedBlock.hasTag("sereneseasons:greenhouse_glass")) { return true; } } return false; }; const rnd = (min, max) => { return Math.floor(Math.random() * (max - min + 1)) + min; }; const cropDrop = [ "herbalbrews:lavender", "herbalbrews:hibiscus", "farm_and_charm:wild_ribwort", "farm_and_charm:wild_nettle", ]; BlockEvents.rightClicked(cropDrop, (e) => { const { player, item, block, server } = e; if ( player.getHeldItem("main_hand") == "society:enriched_bone_meal" && !player.cooldowns.isOnCooldown(item) ) { player.getHeldItem("main_hand").count--; let crop = block.level.createEntity("minecraft:item"); crop.x = block.x + rnd(0, 0.5); crop.y = block.y + 0.5; crop.z = block.z + rnd(0, 0.5); crop.item = Item.of(block.id); crop.spawn(); block.level.spawnParticles( "minecraft:happy_villager", true, block.x + 0.5, block.y + 0.1, block.z + 0.5, 0.1 * rnd(1, 4), 0.1 * rnd(1, 4), 0.1 * rnd(1, 4), 10, 0.1 ); server.runCommandSilent( `playsound minecraft:item.bone_meal.use block @a ${e.player.x} ${e.player.y} ${e.player.z}` ); global.addItemCooldown(player, item, 1); } }); const cropGrowth = ["minecraft:cave_vines", "minecraft:cave_vines_plant"]; BlockEvents.rightClicked(cropGrowth, (e) => { const { player, item, block, hand, server } = e; if (hand == "OFF_HAND") return; if ( player.getHeldItem("main_hand") == "society:enriched_bone_meal" && !player.cooldowns.isOnCooldown(item) ) { player.getHeldItem("main_hand").count--; server.scheduleInTicks(1, () => { block.set(block.id, { berries: "true" }); }); block.level.spawnParticles( "minecraft:happy_villager", true, block.x + 0.5, block.y + 0.1, block.z + 0.5, 0.1 * rnd(1, 4), 0.1 * rnd(1, 4), 0.1 * rnd(1, 4), 10, 0.1 ); server.runCommandSilent( `playsound minecraft:item.bone_meal.use block @a ${e.player.x} ${e.player.y} ${e.player.z}` ); global.addItemCooldown(player, item, 1); } }); BlockEvents.rightClicked("vinery:apple_leaves", (e) => { const { block, player, item } = e; const season = global.getSeasonFromLevel(player.level); let modifiedProperties = block.properties; if ( block.properties.get("can_grow_apples").toString() == "true" && block.properties.get("has_apples").toString() == "true" && !player.cooldowns.isOnCooldown(item) ) { if ( season == "autumn" || hasGreenhouseGlass(player.level, block.getPos()) ) { modifiedProperties.can_grow_apples = false; modifiedProperties.has_apples = false; modifiedProperties.age = "0"; e.server.scheduleInTicks(5, () => { block.set(block.id, modifiedProperties); }); } else { player.tell( Text.translatable( "item.society.enriched_bone_meal.tree_fruit_season", Text.translatable("desc.sereneseasons.autumn").gold() ) ); e.cancel(); } } else if ( player.getHeldItem("main_hand") == "society:enriched_bone_meal" && !player.cooldowns.isOnCooldown(item) ) { player.getHeldItem("main_hand").count--; modifiedProperties.can_grow_apples = true; modifiedProperties.has_apples = true; modifiedProperties.age = "3"; block.set(block.id, modifiedProperties); block.level.spawnParticles( "minecraft:happy_villager", true, block.x + 0.5, block.y + 0.1, block.z + 0.5, 0.1 * rnd(1, 4), 0.1 * rnd(1, 4), 0.1 * rnd(1, 4), 10, 0.1 ); e.server.runCommandSilent( `playsound minecraft:item.bone_meal.use block @a ${player.x} ${player.y} ${player.z}` ); global.addItemCooldown(player, item, 1); } }); BlockEvents.rightClicked("vinery:dark_cherry_leaves", (e) => { const { block, player, item } = e; let modifiedProperties = block.properties; const season = global.getSeasonFromLevel(player.level); if ( block.properties.get("can_grow_cherries").toString() == "true" && block.properties.get("has_cherries").toString() == "true" && !player.cooldowns.isOnCooldown(item) ) { if ( season == "spring" || hasGreenhouseGlass(player.level, block.getPos()) ) { modifiedProperties.can_grow_cherries = false; modifiedProperties.has_cherries = false; modifiedProperties.age = "0"; e.server.scheduleInTicks(5, () => { block.set(block.id, modifiedProperties); }); } else { e.player.tell( Text.translatable( "item.society.enriched_bone_meal.tree_fruit_season", Text.translatable("desc.sereneseasons.spring").green() ) ); e.cancel(); } } else if ( player.getHeldItem("main_hand") == "society:enriched_bone_meal" && !player.cooldowns.isOnCooldown(item) ) { player.getHeldItem("main_hand").count--; modifiedProperties.can_grow_cherries = true; modifiedProperties.has_cherries = true; modifiedProperties.age = "3"; block.set(block.id, modifiedProperties); block.level.spawnParticles( "minecraft:happy_villager", true, block.x + 0.5, block.y + 0.1, block.z + 0.5, 0.1 * rnd(1, 4), 0.1 * rnd(1, 4), 0.1 * rnd(1, 4), 10, 0.1 ); e.server.runCommandSilent( `playsound minecraft:item.bone_meal.use block @a ${player.x} ${player.y} ${player.z}` ); global.addItemCooldown(player, item, 1); } });