Ocean API

Ocean API

一个为添加海洋生物群系、水色和实体桶而制作的库模组!

一个用于添加海洋生物群系、水色和实体桶的库模组!

curseforge modrinth

如果你是整合包开发者,想要将 Ocean API 添加到在 CurseForge 或 Modrinth 之外分发的整合包中,请使用 File Director 以避免重新上传 Ocean API 的文件。


Ocean API 使用的新的灰度水纹理是在运行时动态生成的,并且会根据你的资源包而改变!下方截图使用的是 Faithful 32x 和 Tropical Waters 资源包。

如果你想使用明确的纹理而不是自动生成的灰度纹理,请将你的纹理放在以下路径:assets/ocean_api/textures/minecraft/blocks/water_still、assets/ocean_api/textures/minecraft/blocks/water_flow 和 assets/ocean_api/textures/minecraft/blocks/water_overlay。

Ocean API 还提供了一个配置设置(默认禁用),用于启用新版 Minecraft 使用的现代水纹理!注意:此配置设置需要安装 AssetMover 或 Aqua Acrobatics,因为这些模组为 Ocean API 提供了一种获取现代水纹理的方式。

水流体引用了新的纹理和颜色,因此任何拥有渲染流体系统的模组都能正常使用新纹理。新的水纹理注册到了新的精灵图中,并不会替换原版的水精灵图。这意味着任何直接引用旧纹理的模组将继续正确工作。如果你发现任何模组渲染了未着色的灰度水纹理,请将其报告给 Ocean API 的 错误追踪器,以便我为其添加特殊支持!


生物群系水色可以通过直接编辑 config/ocean_api/fog_colors.cfg 和 config/ocean_api/surface_colors.cfg 文件来添加,或者使用配置界面。以下是使用默认条目时的效果:

这提供了一个你新水色的酷炫渲染效果,并使用格式 biomeId = color 或 #biomeTag = color,其中生物群系标签必须以井号(#)字符为前缀。

如果你有一个不完整或格式不正确的条目(错误的生物群系 ID、无法识别的颜色等),渲染器会显示一个缺失纹理,以表示该条目将被跳过。这是为了便于排查错误的条目!

此模组完全支持 Aqua Acrobatics 的生物群系水色,并且在它们启用时会自动注册!同时支持 Simple Difficulty 和 SimpleDifficulty for Underdog 的水流体。

Ocean API 提供了几种方式让其他模组为其生物群系注册自定义水色:

  • 第一种方式是通过代码,在 FMLPreInitializationEvent 或 FMLInitializationEvent 之前或期间调用 OceanAPI.registerWaterFogColor(biome, color) 和 OceanAPI.registerWaterSurfaceColor(biome, color)。或者,你可以使用新的 GetWaterFogColorEvent 事件来设置水雾颜色,以及使用 Forge 现有的 BiomeEvent.GetWaterColor 事件来设置水表面颜色,但这些事件应仅作为最后的手段使用,因为它们会覆盖用户配置。
  • 第二种方式是在你的模组中创建新的 assets/ocean_api/fog_colors.txt 和 assets/ocean_api/surface_colors.txt 文件,这些文件的格式与配置文件相同(biomeId = color 或 #biomeTag = color)。这些文件支持双斜杠(//)注释,并且永远不会覆盖或与其他模组可能添加的文件冲突!

请注意,原版允许生物群系具有自定义水色。由于使用该系统(指Minecraft原版生物群系水色系统)的模组不期望灰度水纹理,Ocean API 会自动对这些水色进行颜色校正,添加额外的蓝色调,以模拟它们渲染在原版水纹理上的效果!


Ocean API 通过在其最终确定之前对原版海洋生物群系进行“掩蔽”来应用其海洋生物群系生成,使用 Forge 的 WorldTypeEvent.InitBiomeGens 事件来注入一个新的 GenLayer。这意味着任何使用该事件的模组世界类型都将自动得到支持!

通过 Ocean API 注册用于生成的海洋生物群系,可以在 FMLPostInitializationEvent 期间或之前调用 OceanAPI.registerOceanBiome(type, entry, deepOcean, shoreOcean) 来完成,其中:

  • type = 海洋温度类型。具有相同温度类型的海洋生物群系在生成时会分组在一起。例如,温暖和寒冷的海洋生物群系永远不会相邻生成。
  • entry = 一个 BiomeManager.BiomeEntry,包含用于海洋生物群系生成的浅海生物群系及其生成权重。
  • deepOcean = 与浅海生物群系配对的深海生物群系。如果通常会在那里生成深海生物群系,则深海生物群系将代替浅海生物群系生成。任何深海生物群系只能与一个浅海生物群系配对,反之亦然。
  • shoreOcean = 海岸海洋生物群系,如果存在,当它在非常靠近陆地生物群系的地方生成时,将代替浅海生物群系生成。可以为空。

这也会将浅海、深海和海岸海洋生物群系添加到 Forge 的内部海洋生物群系列表以及“海洋”生物群系词典条目中。

Ocean API 提供了其他杂项方法来更改海洋生物群系的其他属性,这些方法是:

  • OceanAPI.registerOceanMonumentSpawnBiome(biome)
  • OceanAPI.registerOceanMonumentWaterBiome(biome)
  • OceanAPI.setOceanFloorBlock(biome, blockState)

如果安装了 Biomes O' Plenty 并且其海洋生物群系已启用,Ocean API 将自动注册它们用于海洋生物群系生成,并为它们提供新的深海生物群系!


Ocean API 添加的实体桶系统完全通过 nbt 控制,被称为“可装桶实体行为”,它不会添加任何新物品!这意味着包含任何流体(甚至没有流体)的桶都可以被支持!

可装桶实体行为控制与任何给定实体的实体桶相关的所有内容,包括有效流体、物品覆盖层的渲染方式、创造模式标签页变体等。每个行为在创建时都与一个实体类配对,并带有新的 Forge 注册表。不需要对实体本身进行任何更改即可支持可装桶实体行为。有关更多信息,请参阅 api.BucketableEntityBehavior 类。

默认情况下,Ocean API 为以下物品添加了对可装桶实体行为的支持:

  • minecraft:bucket
  • minecraft:lava_bucket
  • minecraft:water_bucket
  • forge:bucketfilled
  • ceramics:clay_bucket
  • erebus:bambucket

如果你发现其他应支持可装桶实体行为的模组桶物品,请在 Ocean API 的 错误追踪器 上请求添加!

如果你有一个自定义的桶物品,并希望添加可装桶实体行为支持,请在您的模组中创建一个新的 assets/ocean_api/bucketable_info.jsonc 文件。请参阅 Ocean API 中的文件作为示例(在此链接)。然后确保该物品使用 Forge 的 FluidUtil 类来放置其包含的流体,并正确管理流体能力。

Ocean API 还附带了许多与鱼类实体相关的实体类!(请参阅 api.entity 包)。


Ocean API 添加的常规配置设置列表:

  • Cauldron Fluid Collision(默认禁用)= 炼药锅内的流体与实体正常交互。这允许实体在装满的炼药锅中游泳,让实体在着火时自行熄灭等。
  • Cauldron Nether Vaporize(默认禁用)= 如果放置在当前维度中通常会蒸发,则放置在炼药锅内的任何流体都会蒸发。例如:在地狱中放置在炼药锅内的水。
  • Fix Bucket Models(默认禁用)= 用 Forge 自己的动态桶模型替换原版的桶模型。统一桶的视觉效果。
  • Fix Water Potion Color(默认禁用)= 水瓶类型的颜色与水流体颜色匹配。
  • Modern Water Textures(默认禁用)= 搜索或尝试下载新版 Minecraft 的水纹理。需要重新加载资源包(F3 + T)才能直观地应用对此设置所做的任何更改。
  • Ocean Biome Size(默认为 6)= 此数字代表由 Ocean API 生成的海洋生物群系的大小。将此数字调大将导致更大的海洋生物群系。将此数字设为 0 将阻止海洋生物群系生成。此数字不会改变海洋的大小,只会改变海洋内部生成的生物群系的大小。
  • Water Fog Color Fallback(默认禁用)= 如果生物群系没有水雾颜色,则生物群系水雾颜色将使用生物群系水表面颜色。

直接联系:jbred.dev@gmail.com
此模组不会被移植