
Cobblemon 动态生成
为Cobblemon添加动态生物群系/光照刷怪、尸潮和SV风格的大规模 outbreak
Cobblemon 动态生成
阅读本文的其他语言版本:Português (Brasil)。
这是一个Cobblemon 1.7.3(Minecraft 1.21.1,Fabric)的附属模组,让宝可梦的生成变得更加动态:更广泛的生物群系种类、基于光照的洞穴生成、由进化型首领带领的野生宝可梦群、SV 风格的大量出现,以及一丝纯粹的随机性。
当前版本:1.1.0 — 参见更新日志。
功能特性
1. 生物群系 + 光照生成多样性(数据包)
这是一个纯叠加式的生成层,置于 Cobblemon 默认生成池之上——不会修改原始生成的任何内容,我们仅在 data/cobblemon/spawn_pool_world/dynamicspawns_*.json 下添加新条目:
- 黑暗洞穴(
光照 0-3,无天空通道):超音蝠、鬼斯、勾魂眼(稀有) - 明亮洞穴(
光照 4+,无天空通道):小拳石、腕力、可可多拉、石丸子 - 森林:猫头夜鹰(夜间)、橡实果、蘑蘑菇、榛果球
- 平原:小火马、嘟嘟、卡蒂狗、伊布(稀有)
- 沙漠:穿山鼠、大颚蚁(白天)、沙铃仙人掌(夜间)、黑眼鳄
- 雪地生物群系:小山猪、雪童子(夜间)、喷嚏熊、暴雪王
- 海岸/海滩:大钳蟹、长翅鸥(白天)、龙虾小兵、海星星(夜间)
2. 宝可梦群
当一个可以进化的基础物种自然生成时(例如:大牙狸),有可配置的概率(默认10%)将其转变为一个宝可梦群:
- 生成的宝可梦将成为群成员之一
- 一只进化型首领(例如:大尾狸)会在附近生成,带有等级加成(+5)和3项随机完美个体值
- 周围会额外生成3-5只基础成员
在常见的基础阶段生成上触发(而非稀有的进化阶段),使得宝可梦群出现的频率大幅提高——由于触发条件适用于大多数自然生成,即使只有百分之几的概率也已经足够;请相应地调低 chance 值。
3. 大量出现(朱/紫风格)
在随机间隔(以游戏内天数计算——因此睡觉/推进天数会触发,而不仅仅是实际游戏时间)后,世界某处会开始一次全局性的大量出现事件,并通过聊天栏通知所有玩家:
- 最多6个同时进行的大量出现(
maxSimultaneous),每个对应不同的物种,且开始时间错开 - 领地间距:活跃的大量出现之间至少保持16个区块(256格)的距离(
minChunkDistanceBetweenOutbreaks)——它们绝不会重叠;如果找不到有效位置,开始时间将推迟到下一个间隔 - 第一个大量出现是保证触发的,在第一个游戏日结束的那一刻(
startAfterInGameDays);后续的则遵循随机间隔。管理员指令可绕过此规则 - 单个物种大量生成(预算为80只宝可梦,每次大量出现最多同时存活8只)
- 传说、幻之宝可梦和究极异兽永远不会成为大量出现对象(
excludedLabels) - 只有玩家进入大量出现的激活半径(
activationRadius)内,宝可梦才会实际生成,因此它们总是在已加载、正在 tick 的区块中生成——大量出现会通过聊天栏全球广播坐标;你需要前往那里触发生成(朱/紫风格) - 地形匹配:物种会根据中心位置选择(海洋中选水生,坚实陆地上选陆生),并且每次单独生成都会重新检查——不会在旱地上出现鱼,也不会在海洋中出现陆生宝可梦
- 击败/捕捉30只 → 闪光概率**×2**| 60只 → ×3(聊天栏公告)
- 等级递增:每击败/捕捉
clearsPerLevelStep(10)只宝可梦,下一批生成的宝可梦获得+levelBonusPerStep(8)级——随着你清剿,大量出现的难度会提高(例如,15-40级 → 30只后约39-64级 → 60只后约63-80级)。差异来自等级范围,上限为levelCap(80) - 个体值进阶(SV风格):每清剿
clearsPerIvStep(20)只宝可梦,下一批生成获得+1项保证完美个体值(31),从baseGuaranteedIvs到maxProgressionIvs(4);其余保持随机 - 闪光个体值奖励:来自大量出现的闪光宝可梦接近完美——
shinyMinPerfectIvs-shinyMaxPerfectIvs(5-6)项保证31个体值 - 清剿整个大量出现 → 一只保底的闪光宝可梦作为最终奖励生成
- 当其持续时间耗尽时结束(同样以游戏内天数计算,因此推进时间/睡觉也会结束大量出现),或者被完全清剿时结束
- 感知功能:加入世界时会列出所有活跃的大量出现(坐标 + 剩余分钟数),
/dynamicspawns outbreak info会显示每个的进度和剩余时间 - 持久化:活跃的大量出现和计划表按世界保存(
dynamicspawns_outbreaks.json),因此它们会在关闭并重新打开世界后继续存在,而不是重新开始。持续时间使用世界时间(gameTime),因此它会在服务器运行时倒计时——无论大量出现的区块是否加载——并在世界关闭时暂停。重新打开世界不再生成误报的大量出现
4. 飞行生成
鸟类和其他真正的飞行宝可梦会在空中生成,并且已经在飞行状态,而不是站在地面上——例如,一只七夕青鸟会出现在地形上方滑翔,而不是蹲在田野里。“真正的飞行者”是指会飞行且不是水生的物种:Cobblemon 会标记一些水系宝可梦(哈克龙、快龙、水母、鳗鱼、鱿鱼)具有canFly属性,这些宝可梦被有意不会被升上天空。距离地表的高度可配置(minHeight/maxHeight,默认12-40;将其调高至约120可实现云端高度生成),并且onlyPureFliers可以将其限制为不能行走的物种。使用Cobblemon的canFly/setFlying API——无 mixin。
在此基础上,一个循环的天空生成器(skyFliers)会定期在每个玩家附近的高空中生成少量飞行宝可梦,要求是露天环境。生成池排除水生飞行宝可梦、传说/幻之宝可梦/究极异兽以及非常稀有的物种(低捕获率),并且选择按Cobblemon的稀有度等级加权(bucketWeights,常见>不常见>稀有>超稀有),因此常见飞行宝可梦比稀有出现的更多。默认是严格的纯飞行者(不能行走的物种,例如:超音蝠、飘飘球);设置onlyPureFliers: false也可以包括能行走的鸟类,如七夕青鸟和大比鸟。间隔、数量、高度、距离和等级均可配置。
5. 随机生成
6%的自然生成(可配置)会被替换为其他物种,忽略生物群系规则——任何宝可梦都可能出现在任何地方,但遵循Cobblemon自身的稀有度:
- 替换物种通过稀有度等级抽取(在运行时从世界生成池中读取,因此会尊重数据包/modpack):首先根据模组的权重(
bucketWeights,默认常见60 / 不常见25 / 稀有10 / 超稀有5——比Cobblemon的94.3/5/0.5/0.2更宽松,因此稀有宝可梦出现更多),然后在该等级内均匀选择一个物种。一个物种的等级是它出现的最常见等级(例如:喷火龙 = 超稀有) - 没有任何自然生成(无等级)的物种不会被抽中
- 参见 docs/selecao-spawn-aleatorio.pdf 获取完整的物种列表及各物种概率
- 传说、幻之宝可梦、究极异兽、悖谬形态和化石宝可梦被排除在抽取之外(
excludedLabels)——并且这些物种的自然生成绝不会被替换掉(保护野生传说宝可梦免受 modpack 影响) - 在水中/水生生物群系(海洋、河流、淡水)中,抽取只会选择真正生活在水下的物种(可以在水下呼吸)
- 逼真等级(
realisticLevels):等级随物种的基础种族值总和缩放,±levelVariance(5)以产生差异——一条鲤鱼王会在1-10级左右出现,而准传说宝可梦则接近50-55级(rareLevelCap)。设置realisticLevels: false以改为保持原始生成的等级 excludedNamespaces允许你排除特定附属模组中的物种(例如:lumymon)
BetterEnd / BetterNether 集成
可选数据包生成池(仅在安装了相应模组时激活,通过neededInstalledMods),为这些模组维度提供主题宝可梦阵容:
- BetterNether(22个生物群系,51个生成点):绯红/疣木森林 → 戴鲁比、夜盗火蜥、焰后蜥;诡异森林 → 鬼斯、小灰怪;真菌和倒置森林 → 瓦斯弹、臭泥、双弹瓦斯;沼泽地 → 不良蛙、臭鼬噗、臭臭泥;岩浆和三角洲 → 熔岩虫、煤炭龟、熔岩蜗牛,外加席多蓝恩作为超稀有;砾石沙漠 → 小拳石、独角犀牛、大岩蛇;骨礁和灵魂平原 → 卡拉卡拉、烛光灵、夜巡灵、嘎啦嘎啦、花岩怪。没有草/水/冰/虫系,符合下界规则。
- BetterEnd(29个生物群系,71个生成点):合唱森林 → 小灰怪、随风球;阴影森林和暗影谷 → 黑暗鸦、索罗亚、阿勃梭鲁、花岩怪;水晶/琥珀/翡翠洞穴 → 石丸子、盾甲龙、大朝北鼻、铁哑铃;发光生物群系 → 皮皮、拉鲁拉丝、风铃铃,外加克雷色利亚;龙之墓地 → 单首龙、赤面龙、泥偶巨人,外加雷吉铎拉戈;荒地 → 天秤偶、念力土偶、钻角犀兽;巨湖 → 灯笼鱼、轻飘飘、宝石海星、拉普拉斯;冰之星域 → 雪童子、几何雪花、冰岩怪,外加代欧奇希斯;蘑菇地和硫磺泉;末地洞穴 → 滚滚蝙蝠、嗡蝠、音波龙。
- 传说宝可梦仅在
ultra-rare等级以0.05权重生成(比同一生物群系中的常见宝可梦稀有约180倍)。 - 兼容性修复: BetterEnd 的25个生物群系被添加到
cobblemon:is_end标签(required: false),因此Cobblemon约42种原版末地生成物也能在那里工作——否则它们似乎无法工作,因为没有东西将这些生物群系添加到minecraft:is_end中。
请注意,这些是原生的 Cobblemon 数据包生成,独立于模组的environment规则(这些规则仅管辖随机替换和大量出现系统)。
环境规则
随机生成和大量出现都遵循环境合理性检查(environment配置节),因此宝可梦不会出现在不应出现的地方:
- 禁用的维度(
disabledDimensions,默认minecraft:the_end):那里没有动态随机性——末地保留其原版宝可梦 - 每个维度禁止的类型(
dimensionBannedTypes,默认:下界中禁止草/水/冰/虫系):具有被禁类型的物种将在该维度被过滤掉 - 地形适宜性(
enforceTerrain):避开陆地的水生物种只会在水中生成(不再有雷利克斯出现在树顶),而厌恶水的物种不会被放置在水下。宝可梦群完全跳过水生物种,因为其成员放置在坚实的地面上
指令(权限等级2)
| 指令 | 效果 |
|---|---|
/dynamicspawns reload |
重新加载配置 |
/dynamicspawns horde <物种> |
在你的位置强制生成宝可梦群(使用可以进化的基础物种,例如:bidoof) |
/dynamicspawns outbreak start [物种] |
开始一次大量出现(随机,或在你附近指定物种) |
/dynamicspawns outbreak stop |
结束所有活跃的大量出现 |
/dynamicspawns outbreak info |
列出活跃的大量出现及其状态 |
配置
首次运行后在config/dynamicspawns.json生成。所有数值(概率、大小、间隔、闪光里程碑)都可以在那里调整;/dynamicspawns reload可应用更改而无需重启。
Cobbleverse 兼容性
已针对COBBLEVERSE 1.7.31(Modrinth,2026年4月)验证:MC 1.21.1 + Fabric 0.18.4 + Cobblemon 1.7.3 + fabric-language-kotlin 1.13.10——所有依赖项均与该模组匹配。该整合包的生成相关附属模组(LumyMon、LegendaryMonuments、Raid Dens、Mega Showdown)使用自己的机制(结构/祭坛/巢穴),不通过 BestSpawner,且标签保护保证野生传说宝可梦永远不会被随机生成系统替换。大量出现的闪光几率提升在运行时读取Cobblemon的shinyRate配置,自动尊重整合包改进后的1:2048概率。
这是通过运行一个包含全部135个Cobbleverse模组再加上本模组的完整专用服务器验证的——启动干净,无冲突。
兼容性与可移植性
本模组仅使用Cobblemon的公开API(ENTITY_SPAWN、POKEMON_CAPTURED、POKEMON_FAINTED和BATTLE_FAINTED事件,以及数据驱动的生成池格式)——零mixins进入Cobblemon内部。这最大限度地减少了未来更新中的破坏风险。声明的依赖接受>=1.7.3 <1.8.0;要更新,请在build.gradle.kts和fabric.mod.json中提升版本号。
依赖项:
- Cobblemon(必需)
- Fabric API(必需)
- Fabric Language Kotlin(必需)
已知限制(v1.1.0)
- 聊天消息在客户端翻译(包含英语和巴西葡萄牙语);如果玩家客户端未安装该模组,他们将在聊天中看到原始翻译键
- 大量出现总是选择地表位置(高度图)
构建
./gradlew build # jar 文件生成在 build/libs/
./gradlew runClient # 测试客户端
许可证
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。