
Petrolpark 的库
我的模组共享功能和工具库
这个库为模组和整合包开发者提供了多种以数据驱动为主的 API,并包含了我的 Create 系列附属模组和其他模组所共用的代码。其大部分系统都设计得非常通用,让模组作者和整合包开发者能够实现一些正常情况下无法做到的事情。
该库与 Create 深度集成,但并不依赖它。如果未安装 Create 模组,需要 Create 才能启用的功能将被直接禁用。
以下是按规模和实用性排序的 API 功能列表:
API 功能
标志 (Flags)
标志是一种数据驱动的内容,可以添加到物品堆、流体堆以及其他对象(如方块实体)上。它们会通过原版流程(如合成、烧炼等)、大部分 Create 的流程以及本库中的流程(如陈化和回收,这些都可以在配置中修改)得以保留。例如,用带有“中毒”标志的物品合成出的物品,也会带有“中毒”标志。
物品陈化 (Decaying Items)
可以对物品施加陈化效果,使其在给定时间后发生变化,即使它们位于任意模组的物品栏中也能生效,这可以实现诸如食物腐烂、葡萄酒陈酿等机制。此功能基于异星工厂 (Factorio) 中的类似特性,并且是数据驱动的。陈化可以改变物品本身,或修改其组件(例如添加或移除标志)。
陈化配方
一种配方类型,能使放入木桶(或其他实现了对应接口的容器)中的物品开始进行给定的陈化过程。如果将物品从容器中移除,陈化过程将停止。
团队 (Teams)
一个用于检查玩家是否属于特定分组,并为该分组存储数据的系统。其实现包括单人、原版的记分板团队以及 FTB Teams(即将推出)。与团队绑定的物品和方块实体允许玩家选择一个其所属的团队,然后该团队的任何成员都能访问该对象的相同信息。
愿望 (Wishes)(开发中)
旨在消除随机数生成(RNG)的重复劳作,愿望是一种可以通过任务奖励、餐厅奖励、合成等方式获得的物品,允许玩家选择物品(具体来说是指定一个高级材料,见下文)。每当玩家掷一个战利品表时,游戏会尽力操纵该战利品表以满足玩家已有的愿望。这比仅仅反复掷战利品表直到找到物品要复杂得多,因此也适用于比特定物品更复杂的愿望,例如带有特定附魔的物品。
扩展物品栏 (Extended Inventory)(实验性)
新增了两种属性类型:petrolpark:player.extra_inventory_slots 和 petrolpark:player.extra_hotbar_slots,其作用与名称完全一致。这些额外的槽位不仅会显示在物品栏界面中,也会显示在原版和大多数任意模组的菜单中。作为属性,它们可以通过盔甲、药水、附魔等,并且仅使用数据包和/或命令就能进行修改。其目标是提供一个无需点击进入单独界面的背包系统。
战利品表修改 (Loot Table Modifications)
无需覆盖整个战利品表即可对现有的原版或模组战利品表进行数据驱动修改,并且比 NeoForge 的 全局战利品修改器 具有更强的通用性(例如能够添加、移除和修改单个战利品池以及战利品池条目)。这允许多个模组或数据包同时使用数据包修改现有战利品表。
回收 (Recycling)(开发中)
一个通用且平衡的“反向合成”系统。它会自动扫描配方并尝试创建反向回收配方,这些配方接受一个参数来指定要回收的材料比例。如果一个物品有多个不同的配方,除非明确指定,否则回收通常不会产出任何东西。如果某个配方材料没有明显的单一反向物品,则会在回收结果中省略它。材料反向关系可以通过数据包定义。例如,你可以将你的物品“碎木板”注册到 minecraft:planks 标签材料上,那么任何使用 minecraft:planks 标签作为材料的配方,回收时都会产出相应数量的碎木板。
该系统与物品压缩系统(见下文)交互,因此如果一个模组配方需要 1 个 Moddium 锭,那么对应的 25% 回收率的回收配方将会产出 2 或 3 个 Moddium 粒,而无需你额外指定。模组作者还可以注册回收输出修改器,根据输入物品来影响结果,内置的实现包括根据输入物品的耐久度减少产出,以及将标志从输入转移到输出。
配方书 (Recipe Books)
允许将配方锁定在名为配方书的物品之后,这些配方书可以作为任务奖励、餐厅奖励、高级合成产物等。除非一个装有配方书的雕纹书架(或其他实现了对应接口的方块)被放置在执行合成的方块旁边,否则无法进行该合成。
目前,已对原版方块(如合成台、合成器和熔炉)以及大多数 Create 机器实现了此功能。如果安装了 JEI,配方书解锁的配方会在其物品提示框中以美观的方式呈现。
物品压缩 (Item Compression)(开发中)
自动扫描并索引可逆的“压缩”配方,例如九个锭合成为一个方块,也包括添加了诸如五倍压缩圆石等内容的模组。压缩关系无需由模组注册;它们会被自动扫描出来。这些压缩关系可以在运行时轻松访问。
高级材料 (Advanced Ingredients)
类似于原版/NeoForge 的配方材料,但具有通用类型。它们还带有标题说明,使得在 JEI 等配方查看器中更容易理解一个更复杂的材料实际需要什么,并与愿望系统交互。该库提供了几种实现,例如测试某个对象是否具有特定标志。
餐厅 (Restaurants)(开发中)
一个数据驱动的系统,用于随机生成物品请求,并给予物品(如配方书)、村民传闻、解锁交易和经验值等奖励。顾客会根据餐厅的等级等因素随机选择请求,随机应用修饰符(例如,如果物品带有此标志则需求翻倍),并随机选择奖励。所有这些随机选择都是数据驱动的。
餐厅可以有等级,并且与团队绑定,因此同一团队的玩家可以共同推进一个餐厅的进度。
兼容配方反序列化器 (Compat Recipe Deserializers)
允许在其他模组的机器中执行来自另一个模组的配方,而无需将该模组作为依赖,甚至不需要在构建环境中包含它,这是通过直接读取该模组的配方 JSON 文件来实现的。
战利品数字提供器 (Loot Number Providers)、条件与函数
新增了多种原版数据驱动的数字提供器、战利品物品条件和战利品物品函数的实现,使得在战利品表等方面具有更大的通用性。新增的数字提供器包括获取实体、物品和团队的属性。
高级配方
为配方提供接口,对其使用施加额外的限制。
需要配方书的配方
见上文。
生物群系依赖配方
只能在特定的一组生物群系中进行的配方。此信息可以在 JEI 及其衍生模组中渲染显示。
首次幸运配方
用于具有随机结果的配方(特别是 Create 的处理配方),以保证玩家第一次执行该配方时必定获得特定结果,从而减少重复劳作。已为某些 Create 配方类型实现了此功能。
徽章
徽章 是我为奖励某些行为(如提前下载我的模组、捐赠或赢得社区竞赛)而发放的游戏内装饰性奖励。如果你解锁了某个徽章,它会在你加入的任何世界中显示。如果安装了 Curios 模组,它们可以放置在新增的徽章饰品槽中。
可自定义的创造模式标签页
允许更好地控制物品在创造模式标签页中的放置位置,并允许添加分区标签。
木材兼容 (Wood Compat)
允许创建可由任何木材(原版或模组)合成的物品和方块,并且它们会调整其纹理以显示所使用的木材。
事件
新增了几个事件,允许你挂钩以前无法挂钩的系统:
- 混合方块颜色:在方块与周围方块混合之前改变其颜色,从而实现比原版内置的
BlockColor更平滑的过渡。 - 处理降水:当任何方块被雨淋或雪覆盖时触发。
- 村民特殊价格:修改交易的价格加成或惩罚(例如,如果你拥有村庄英雄效果或名声不佳)。
小型客户端功能
- 挤压方块模型:一种模型定义,接受一个掩码和纹理,通过将该掩码应用于给定纹理来创建模型,然后使用给定的侧边纹理按给定数量进行挤压。
- 均值偏移聚类纹理源:一种纹理加载器,用于平均纹理中的颜色,从而创建风格化的纹理。
- 小型旗帜纹理源:一种纹理加载器,通过适当切割基础的两格版本,创建一格版本的旗帜图案。
- 透明物品颜色:皮革盔甲等可以具有任意颜色的物品,现在也可以指定透明度。
Create API 功能
这些是当环境中存在 Create 时可用的 API 和模板。
花键管状方块
在世界中放置和渲染任意弯曲的样条线。在 Petrol's Parts 中,液压传动装置和气动管道就很好地利用了这一点。
额外的思考 (Ponder) 指令
- 晃动摄像机
- 创建钓鱼线
- 高亮一个思考标签
- 让实体挥动手臂
- 框选任意区域
离网平铺方块
其纹理的平铺间隔大于单个方块的方块,允许实现更广泛的镶嵌图案。
记住放置者行为
允许 Create 的方块记住是谁放置了它们,用于诸如“首次幸运配方”等功能。
共享功能
这些是增加内容的特性(不仅仅是 API),仅由特定的依赖模组启用。非 Petrolpark 的模组也可以启用这些功能。
红石编程器
连接到 Create 的红石链接,并允许编程特定的信号序列。本质上是一个用于红石链接频道的 MIDI 编辑器。用于 Destroy 和 Petrol's Parts。
盆盖
想法经 Create: Diesel Generators 许可后复制。放置在盆的顶部以进行带盖盆配方(除名称外,与其他盆配方完全相同),例如发酵和热解。用于 Destroy。与基础 Create 盆配方不同,带盖盆配方也支持生物群系特异性。
挤压模具
用 Create 的装置推动方块穿过它来进行切割,并伴有精美的动画。用于 Destroy 中,例如将土豆泥切成薯条,或将石英切成石英柱。配方当然是数据驱动的,可以由任何模组、整合包或数据包添加。
依赖模组
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。