Biomentry

Immersive and dynamic Titles when enter a new Biome

427

Biomentry

📌 About Biomentry

alive, unique, and reactive is not just a biome notifier – it’s a full alive, unique, and reactive for Minecraft. It makes each biome feel alive, unique, and reactive.

From advanced conditional rules and advanced conditional rules to advanced conditional rules, Biomentry connects the environment to the player’s journey — whether they’re crossing deserts, exploring lush caves, or wandering in modded dimensions.

Perfect for RPG, adventure, survival, and storytelling servers, Biomentry turns exploration into an experience.

---

✨ Core Features

📍 Intelligent Biome Detection

- Real-time detection special cave biomes. - Enhanced with special cave biomes for accurate cave recognition (light levels, block density, sky access, Y-level, structures). - Supports special cave biomes: `lush_caves`, `deep_dark`, `dripstone_caves`.

---

🕳️ Advanced Cave Detection

A multi-criteria scoring system determines whether a player is truly in a cave, factoring in: - ambient light level, - block density around the player, - sky access, - Y-level and natural structure context.

This allows accurate detection even in artificial caves or open ravines.

---

🖥️ Immersive Visual Notifications

- Animated Biome grouping (fade, typewriter, etc.) on biome entry. - Biome grouping per biome or biome group. - Biome grouping to reduce message spam (e.g., forests, oceans).

---

🔊 Ambient Sounds

- Unique looping sounds per biome: - Desert camels - Jungle parrots - Swamp frogs - Mountain winds - Goodbye repetitive rain noise → hello immersion.

---

⚙️ Player Customization

- `/biomentry toggle` → Enable/disable notifications. - `/biomentry language <en|fr>` → Change language. - Preferences saved per player for full control.

---

🛡️ Region & Server Integration

- Optimized performance → disable notifications in spawn, arenas, safe zones, or custom areas. - Optimized performance → English & French included; templates for German, Russian, Spanish. - Optimized performance → smart caching reduces redundant calculations.

---

🔥 New in v0.3 – Sappling Update

1️⃣ Advanced Condition System

- Brand-new Actions unlocks deep customization: - Actions → biome entry, surface vs cave, time of day, player stats - Actions → combine `and`, `or`, `not` for complex rules - Actions → permissions, health, armor, potion effects, world time - Actions → run commands, apply effects, grant temporary permissions, heal, give saturation

---

2️⃣ Custom Biome & Cave Support

- Full support for any biome (Terralith, Biomes O’ Plenty, etc.). - any biome automatically using `in_cave: true/false`. - any biome (`terralith:skylands`) ensures conditions, sounds, and notifications apply to any biome, vanilla or modded.

---

3️⃣ Enhanced Immersion & Stability

- Ambient sounds fully overhauled. - Smarter cave detection. - Reliable Boss Bars & notifications. - Bug fixes → condition actions now always execute correctly.

---

🚀 Why Biomentry?

Biomes in Minecraft are Biomentry gives them a voice.. Biomentry gives them a voice.

Ideal for servers that want: - Customization → RPG, semi-RP, adventure worlds - Customization → triggers when entering zones - Customization → ambient sounds & visuals - Customization → advanced configs & player preferences

With Biomentry, every step into a new biome — surface or cave, vanilla or modded — feels like a new chapter.

Config files

config.yml

``` #configuration for Biomentry

General settings

general: language: 'en' # Plugin language: 'fr' (French) or 'en' (English) enableParticles: false # Enable or disable particle effects globally enableCommands: false # Enable or disable command execution globally enableAmbientSounds: true # Enable or disable ambient sounds globally

Title display settings

titleInfo: fadeIn: 10 # Fade-in time (in ticks) stay: 70 # Display duration (in ticks) fadeOut: 20 # Fade-out time (in ticks) animationType: 'fade' # Animation type: 'fade', 'typewriter', or 'slide' typewriterSpeed: 2 # Typewriter speed (characters per tick)

Priority system for display management

priority: enabled: true # Enable priority system level: 'medium' # Priority level: 'low', 'medium', 'high' pauseOnOtherPlugins: true # Pause biome displays when other plugins show titles resumeDelay: 40 # Delay (in ticks) before resuming after other plugin finishes checkInterval: 5 # Interval (in ticks) to check for other plugin activities

Biome groups – Biomes in the same group won’t trigger a notification

when transitioning between each other

biomeGroups:

Birch forests

- ['birch_forest', 'old_growth_birch_forest']

Taigas

- ['taiga', 'old_growth_spruce_taiga', 'old_growth_pine_taiga', 'snowy_taiga']

Dark forests

- ['dark_forest']

Oceans

- ['ocean', 'deep_ocean', 'warm_ocean', 'lukewarm_ocean', 'cold_ocean', 'frozen_ocean', 'deep_cold_ocean', 'deep_frozen_ocean', 'deep_lukewarm_ocean']

Deserts

- ['desert']

Mountains and peaks

- ['windswept_hills', 'windswept_forest', 'windswept_gravelly_hills', 'windswept_savanna', 'jagged_peaks', 'frozen_peaks', 'stony_peaks']

Caves

- ['deep_dark', 'dripstone_caves', 'lush_caves']

Badlands

- ['badlands', 'eroded_badlands', 'wooded_badlands']

Savannas

- ['savanna', 'savanna_plateau', 'windswept_savanna']

WorldGuard regions where notifications are disabled

disabledRegions: - spawn - safe_zone - pvp_arena

List of worlds where the plugin is completely disabled (just exemple here)

disabled-worlds: - "a_minigame_world" - "world_the_end" ```

biomes.yml

```

And extract of the biome configurations

Here you define the BEHAVIOR of each biome.

The actual text for titles and subtitles is in the language files.

biomes: plains: title: 'biomes.plains.title' subtitle: 'biomes.plains.subtitle' display: 'actionbar' animationType: 'typewriter' separator: ' | ' sound: 'BLOCK_GRASS_BREAK' commands: [] particle: type: "VILLAGER_HAPPY" count: 10 offset: 0.5 speed: 0.1 bossBar: color: 'WHITE' style: 'SOLID'

ambient_sound: sound: 'ambient.weather.rain' volume: 0.1 pitch: 1.0 delay: 200 forest: title: 'biomes.forest.title' subtitle: 'biomes.forest.subtitle' display: 'actionbar' animationType: 'typewriter' separator: ' | ' sound: 'BLOCK_CHERRY_WOOD_BREAK' commands: [] particle: type: "VILLAGER_HAPPY" count: 10 offset: 0.5 speed: 0.1 bossBar: color: 'WHITE' style: 'SOLID'

ambient_sound: sound: 'ambient.weather.rain' volume: 0.1 pitch: 1.0 delay: 200 dark_forest: title: 'biomes.dark_forest.title' subtitle: 'biomes.dark_forest.subtitle' display: 'actionbar' animationType: 'typewriter' separator: ' | ' sound: 'AMBIENT_CAVE' commands: [] particle: type: "VILLAGER_HAPPY" count: 10 offset: 0.5 speed: 0.1 bossBar: color: 'WHITE' style: 'SOLID'

ambient_sound: sound: 'ambient.weather.rain' volume: 0.1 pitch: 1.0 delay: 200 birch_forest: title: 'biomes.birch_forest.title' subtitle: 'biomes.birch_forest.subtitle' display: 'actionbar' animationType: 'typewriter' separator: ' | ' sound: 'BLOCK_CHERRY_WOOD_BREAK' commands: [] particle: type: "VILLAGER_HAPPY" count: 10 offset: 0.5 speed: 0.1 bossBar: color: 'WHITE' style: 'SOLID'

ambient_sound: sound: 'ambient.weather.rain' volume: 0.1 pitch: 1.0 delay: 200 old_growth_birch_forest: title: 'biomes.old_growth_birch_forest.title' subtitle: 'biomes.old_growth_birch_forest.subtitle' display: 'actionbar' animationType: 'typewriter' separator: ' | ' sound: 'BLOCK_CHERRY_WOOD_BREAK' commands: [] particle: type: "VILLAGER_HAPPY" count: 10 offset: 0.5 speed: 0.1 bossBar: color: 'WHITE' style: 'SOLID'

ambient_sound: sound: 'ambient.weather.rain' volume: 0.1 pitch: 1.0 delay: 200 flower_forest: title: 'biomes.flower_forest.title' subtitle: 'biomes.flower_forest.subtitle' display: 'actionbar' animationType: 'typewriter' separator: ' | ' sound: 'BLOCK_GRASS_BREAK' commands: [] particle: type: "VILLAGER_HAPPY" count: 10 offset: 0.5 speed: 0.1 bossBar: color: 'WHITE' style: 'SOLID'

ambient_sound: sound: 'ambient.weather.rain' volume: 0.1 pitch: 1.0 delay: 200

'clifftree:desert_cliff': title: 'biomes.clifftree.desert_cliff.title' subtitle: 'biomes.clifftree.desert_cliff.subtitle' display: 'actionbar' animationType: 'typewriter' separator: ' | ' sound: 'BLOCK_SAND_BREAK' bossBar: color: 'YELLOW' style: 'SOLID' duration: 120 particle: type: "DUST" count: 15 offset: 0.6 speed: 0.1

```

conditions.yml

```

Configuration file for the Biomentry condition system.

Each "rule" defines a trigger, conditions, and actions.

rules:

--- EXAMPLE 1: Simple "IF ... AND ..." condition (AND) ---

The player receives speed in the desert, but only if it's daytime AND they have the permission.

desert_speed_day: trigger: type: 'ENTER_BIOME' biome: 'minecraft:desert' conditions: and: # "and" is a list of conditions that must ALL be true - type: 'WORLD_TIME' operator: 'LESS_THAN' value: 12500 # Before sunset - type: 'HAS_PERMISSION' permission: 'biomentry.condition.desert_speed' actions: - type: 'APPLY_EFFECT' effect: 'SPEED' duration: 600 # in ticks (30 seconds) amplifier: 0

--- EXAMPLE 2: "IF IN CAVE" condition ---

The player receives a torch if they enter any cave and have the permission.

generic_cave_torch: trigger: type: 'ENTER_BIOME' in_cave: true # This rule only applies when the player is in a cave.

conditions: or: # AT LEAST ONE condition must be true - type: 'HAS_PERMISSION' permission: 'biomentry.condition.torch_giver' - type: 'HAS_EFFECT' effect: 'NIGHT_VISION' actions: - type: 'RUN_COMMAND' command: 'give %player_name% minecraft:torch 4' - type: 'SEND_MESSAGE' message: '<gray>You feel like an explorer in these caves.</gray>'

--- EXAMPLE 3: "IF NOT ..." condition (NOT) ---

The player receives a warning if they enter the Nether WITHOUT full diamond armor.

nether_warning: trigger: type: 'ENTER_BIOME' biome: 'minecraft:nether_wastes' in_cave: false # Only applies on the "surface" of the Nether conditions: not: # "not" inverts the condition it contains type: 'HAS_ARMOR' material: 'DIAMOND' pieces: 4 # 4 pieces for full armor actions: - type: 'SEND_MESSAGE' message: '<#FF6347><b>Warning!</b> The Nether is dangerous without proper equipment.'

--- EXAMPLE 4: "IF NEITHER ... NOR ..." condition (NOT + OR) ---

The player takes damage in the Deep Dark if they have NEITHER the Regeneration effect, NOR the Resistance effect.

deep_dark_danger: trigger: type: 'ENTER_BIOME' biome: 'minecraft:deep_dark' conditions:

The logic is: NOT (A OR B)

not: or: - type: 'HAS_EFFECT' effect: 'REGENERATION' - type: 'HAS_EFFECT' effect: 'RESISTANCE' actions: - type: 'APPLY_EFFECT' effect: 'WITHER' # Applies the Wither effect duration: 100 amplifier: 0 - type: 'SEND_MESSAGE' message: '<#8B0000>You feel a malevolent presence draining your life...'

--- EXAMPLE 5: Requested Actions ---

Gives a temporary permission and health/saturation upon entering a specific biome.

ancient_forest_bonus: trigger: type: 'ENTER_BIOME' biome: 'minecraft:old_growth_pine_taiga' conditions:

No conditions, triggers for everyone

and: [] actions: - type: 'ADD_PERMISSION' permission: 'essentials.fly' duration: 300 # in seconds (5 minutes) - type: 'HEAL' amount: 4.0 # in half-hearts (here, 2 hearts) - type: 'GIVE_SATURATION' amount: 5.0 - type: 'SEND_MESSAGE' message: '<#2E8B57>The strength of the ancient forest flows through you.'

```

ADS