# 📌 关于Biometry
**Biometry** 不仅仅是一个生物群系提示器——它是一个为 Minecraft 打造的**沉浸式系统**。
它让每个生物群系都感觉**鲜活、独特和具有反应性**。
从**动画标题**和**环境音效**到**高级条件规则**,Biomentry 将环境与玩家的旅程连接起来——无论他们穿越沙漠、探索茂密的洞穴,还是在模组维度中游荡。
非常适合**RPG、冒险、生存和讲故事服务器**,Biometry 将探索变成一种体验。
---
## ✨ 核心功能
### 📍 智能生物群系检测
- 实时检测**地面和地下**。
- 通过**自定义逻辑**增强,以实现准确的洞穴识别(光照等级、方块密度、天空访问、Y 轴坐标、结构)。
- 支持**特殊洞穴生物群系**: `lush_caves`, `deep_dark`, `dripstone_caves`。
---
## 🕳️ 高级洞穴检测
一个多标准评分系统来确定玩家是否真正处于洞穴中,考虑以下因素:
- 环境光照等级,
- 玩家周围的方块密度,
- 天空访问,
- Y 轴坐标和自然结构语境。
这允许在人工洞穴或开阔的峡谷中进行准确的检测。
---
### 🖥️ 沉浸式视觉通知
- 动画**标题和字幕**(淡入、打字机等)在进入生物群系时显示。
- **可自定义的风格**,适用于每个生物群系或生物群系组。
- **生物群系分组**以减少消息垃圾(例如,森林、海洋)。
---
### 🔊 环境音效
- 每个生物群系都具有独特的循环音效:
- 沙漠骆驼
- 丛林鹦鹉
- 沼泽青蛙
- 山脉风声
- **告别重复的雨声 → 迎接沉浸感。**
---
### ⚙️ 玩家自定义
- `/biomentry toggle` → 启用/禁用通知。
- `/biomentry language ` → 更改语言。
- **偏好设置保存到每个玩家**,以便完全控制。
---
### 🛡️ 区域和服务器集成
- **WorldGuard 支持** → 在出生点、竞技场、安全区或自定义区域中禁用通知。
- **多语言支持** → 包含英语和法语;德语、俄语、西班牙语模板。
- **优化性能** → 智能缓存减少了冗余计算。
---
## 🔥 v0.3 – 树苗更新的新增功能
### 1️⃣ 高级条件系统
- 全新的 **`conditions.yml`** 解锁了深度自定义:
- **触发器** → 生物群系进入、地面与洞穴、时间、玩家统计信息
- **逻辑门** → 组合 `and`、`or`、`not` 以创建复杂规则
- **条件** → 权限、生命值、盔甲、药水效果、世界时间
- **行为** → 运行命令、应用效果、授予临时权限、治愈、给予饱和度
---
### 2️⃣ 自定义生物群系和洞穴支持
- 对**模组和数据包生物群系**的全面支持(Terralith、Biomes O’ Plenty 等)。
- **自动识别自定义洞穴**,使用 `in_cave: true/false`。
- **完全使用生物群系 ID** (`terralith:skylands`) 确保条件、声音和通知适用于**任何生物群系**,无论是原版还是模组。
---
### 3️⃣ 增强的沉浸感和稳定性
- 环境音效已完全改版。
- 更智能的洞穴检测。
- 可靠的 Boss 条和通知。
- 修复错误 → 条件行为现在总是执行正确。
---
## 🚀 为什么选择 Biometry?
Minecraft 中的生物群系是**故事、氛围和身份**。
**Biometry 为它们赋予了声音。**
非常适合希望:
- **沉浸感** → RPG、半角色扮演、冒险世界
- **讲故事工具** → 进入区域时触发
- **氛围** → 环境声音和视觉效果
- **自定义** → 高级配置和玩家偏好
随着 Biometry,**每一步进入新的生物群系——无论是地面、洞穴,还是原版或模组——都感觉像一个新的章节。**
## 配置文件
config.yml
```
#Biomentry 的配置
# 常规设置
general:
language: 'en' # 插件语言:'fr' (法语) 或 'en' (英语)
enableParticles: false # 全局启用或禁用粒子效果
enableCommands: false # 全局启用或禁用命令执行
enableAmbientSounds: true # 全局启用或禁用环境音效
# 标题显示设置
titleInfo:
fadeIn: 10 # 淡入时间(以刻为单位)
stay: 70 # 显示时长(以刻为单位)
fadeOut: 20 # 淡出时间(以刻为单位)
animationType: 'fade' # 动画类型:'fade'、'typewriter' 或 'slide'
typewriterSpeed: 2 # 打字机速度(每刻字符数)
# 显示管理优先级系统
priority:
enabled: true # 启用优先级系统
level: 'medium' # 优先级等级:'low'、'medium'、'high'
pauseOnOtherPlugins: true # 当其他插件显示标题时暂停生物群系显示
resumeDelay: 40 # 其他插件完成后恢复之前的延迟(以刻为单位)
checkInterval: 5 # 检查是否存在其他插件活动(以刻为单位)的间隔
# 生物群系组 - 同一组的生物群系在彼此过渡时不会触发通知
# 白桦林
biomeGroups:
- ['birch_forest', 'old_growth_birch_forest']
# 针叶林
- ['taiga', 'old_growth_spruce_taiga', 'old_growth_pine_taiga', 'snowy_taiga']
# 黑暗森林
- ['dark_forest']
# 海洋
- ['ocean', 'deep_ocean', 'warm_ocean', 'lukewarm_ocean', 'cold_ocean', 'frozen_ocean', 'deep_cold_ocean', 'deep_frozen_ocean', 'deep_lukewarm_ocean']
# 沙漠
- ['desert']
# 山脉和高峰
- ['windswept_hills', 'windswept_forest', 'windswept_gravelly_hills', 'windswept_savanna', 'jagged_peaks', 'frozen_peaks', 'stony_peaks']
# 洞穴
- ['deep_dark', 'dripstone_caves', 'lush_caves']
# 坏地
- ['badlands', 'eroded_badlands', 'wooded_badlands']
# 热带草原
- ['savanna', 'savanna_plateau', 'windswept_savanna']
# WorldGuard 区域,在此区域禁用通知
disabledRegions:
- spawn
- safe_zone
- pvp_arena
# 插件完全禁用的世界列表(这里仅为示例)
disabled-worlds:
- "a_minigame_world"
- "world_the_end"
```
biomes.yml
```
# 生物群系配置文件的摘录
# 在这里,您可以定义每个生物群系的 BEHAVIOR。
# 标题和字幕的实际文本在语言文件中。
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
```
#Biometry 条件系统的配置文件。
# 每个“规则”定义一个触发器、条件和行为。
rules:
# --- 示例 1:简单的“如果...和...”条件(AND)---
# 玩家在沙漠中获得速度,但只有在白天并且拥有权限时。
desert_speed_day:
trigger:
type: 'ENTER_BIOME'
biome: 'minecraft:desert'
conditions:
and: # “and” 是一个必须全部为真的条件的列表
- type: 'WORLD_TIME'
operator: 'LESS_THAN'
value: 12500 # 在日落之前
- type: 'HAS_PERMISSION'
permission: 'biomentry.condition.desert_speed'
actions:
- type: 'APPLY_EFFECT'
effect: 'SPEED'
duration: 600 # 以刻为单位(30 秒)
amplifier: 0
# --- 示例 2:“如果处于洞穴中”条件 ---
# 如果玩家进入任何洞穴并且拥有权限,则该玩家会得到火把。
generic_cave_torch:
trigger:
type: 'ENTER_BIOME'
in_cave: true # 此规则仅在玩家处于洞穴中时才生效。
conditions:
or: # 至少一个条件必须为真
- 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: '你感觉自己在这些洞穴中像一个探险家。'
# --- 示例 3:“如果不是...”条件(NOT)---
# 如果玩家进入地狱而没有全钻石盔甲,则会收到警告。
nether_warning:
trigger:
type: 'ENTER_BIOME'
biome: 'minecraft:nether_wastes'
in_cave: false # 仅适用于地狱的“表面”
conditions:
not: # “not” 反转其包含的条件
type: 'HAS_ARMOR'
material: 'DIAMOND'
pieces: 4 # 全部盔甲 4 个部件
actions:
- type: 'SEND_MESSAGE'
message: '<#FF6347>警告! 没有适当的装备,地狱很危险。'
# --- 示例 4:“如果既不...也不...”条件(NOT + OR)---
# 如果玩家既没有再生效果,也没有抗性效果,则在地狱深渊中会受到伤害。
deep_dark_danger:
trigger:
type: 'ENTER_BIOME'
biome: 'minecraft:deep_dark'
conditions:
# 逻辑是:NOT (A OR B)
not:
or:
- type: 'HAS_EFFECT'
effect: 'REGENERATION'
- type: 'HAS_EFFECT'
effect: 'RESISTANCE'
actions:
- type: 'APPLY_EFFECT'
effect: 'WITHER' # 应用枯萎效果
duration: 100
amplifier: 0
- type: 'SEND_MESSAGE'
message: '<#8B0000>你感觉到一种邪恶的存在在吸取你的生命...'
# --- 示例 5:请求的行为 ---
# 进入特定生物群系时授予临时权限和生命值/饱和度。
ancient_forest_bonus:
trigger:
type: 'ENTER_BIOME'
biome: 'minecraft:old_growth_pine_taiga'
conditions:
# 无条件,对所有人触发
and: []
actions:
- type: 'ADD_PERMISSION'
permission: 'essentials.fly'
duration: 300 # 以秒为单位(5 分钟)
- type: 'HEAL'
amount: 4.0 # 以半心为单位(这里,2 个心)
- type: 'GIVE_SATURATION'
amount: 5.0
- type: 'SEND_MESSAGE'
message: '<#2E8B57>古老针叶林的力量流淌在你的体内。'
```