跳到正文

Petrolpark’s Library

作者:petrolpark

为我的模组提供共享功能和实用工具的前置库。

收藏

介绍

介绍由机器翻译自 Modrinth 原页面,仅供参考。

这个前置库为模组和整合包开发者提供了各种以数据驱动为主的 API,并包含我为 Create 附属模组及其他模组编写的通用代码。它的大多数系统都经过精心设计,具有很强的通用性,让模组和整合包开发者能够实现游戏原本无法实现的功能。

这个前置库与 Create 深度集成,但并不依赖它。若未安装 Create,依赖 Create 的功能将自动禁用。

以下按规模和实用性排列了 API 功能:

API 功能

标记

标记是由数据驱动的内容,可以添加到物品堆、流体堆以及方块实体等其他对象上。标记会在原版的合成、冶炼等流程、大多数 Create 流程,以及本前置库的老化和回收等流程中保留(这些行为都可以在配置中更改)。例如,由带有“poison”标记的物品合成出的物品也会带有“poison”标记。

物品腐坏

物品可以设置腐坏效果,使其在经过指定时间后发生变化,即使它们位于任意模组添加的物品栏中也一样,因此可以实现物品腐烂或葡萄酒陈酿等效果。该功能参考了 Factorio 中的类似机制,并由数据驱动。腐坏效果可以改变物品本身,也可以修改其组件(例如添加或移除标记)。

老化配方

这是一种配方类型,会使放入木桶(或其他实现该功能的容器)中的物品开始指定的腐坏过程。物品离开容器后,腐坏过程便会停止。

队伍

该系统可用于检查玩家是否属于特定群组,并为该群组存储数据。支持的实现包括单人玩家、原版记分板队伍以及即将推出的 FTB Teams。绑定队伍的物品和方块实体允许玩家选择自己所属的队伍,之后该队伍的所有成员都可以访问该对象的相同信息。

愿望(开发中)

愿望旨在消除反复刷取随机掉落物的枯燥过程。玩家可以通过任务奖励、餐厅奖励、合成等方式获得愿望物品,并用它来选择想要的物品(具体来说,是指定一个高级材料,见下文)。每当玩家掷出战利品表时,游戏都会尽力调整掉落结果,以满足玩家已有的愿望。它的实现远不止反复掷出战利品表,直到找到目标物品那么简单,因此也能处理比指定单个物品更复杂的愿望,例如带有特定附魔的物品。

扩展物品栏(实验性)

新增两种属性类型:petrolpark:player.extra_inventory_slots 和 petrolpark:player.extra_hotbar_slots,作用与名称所示完全一致。额外槽位不仅会显示在物品栏界面中,也会显示在原版和大多数模组添加的界面中。由于它们属于属性,因此只需使用数据包和/或命令,就能通过盔甲、药水、附魔等方式修改。该功能旨在提供一种背包系统,无需点击进入单独的界面。

战利品表修改

以数据驱动的方式修改现有原版或模组战利品表,而无需覆盖整个战利品表,比 NeoForge 的 全局战利品修饰器 更加灵活(例如能够添加、移除和修改单个战利品池和战利品池条目)。这使得多个模组或数据包可以通过数据包同时修改现有的战利品表。

回收(开发中)

一个灵活且平衡的“反合成”系统。自动扫描配方并尝试创建反向回收配方,该配方接受要回收的材料比例作为参数;如果一个物品有大量不同的配方,那么除非明确定义,否则回收通常不会产出任何东西。如果某个配方材料没有单一明显的逆向物品,则会从回收结果中省略。材料逆向物品可以通过数据包定义。例如,你可以将你的物品“废木板”注册到 minecraft:planks 标签材料中,然后任何以 minecraft:planks 标签作为材料的配方都会回收为对应数量的废木板。

该系统与物品压缩系统(见下文)对接,因此如果一个模组配方需要一个 Moddium 锭,那么对应的 25% 回收率配方将给出 2 或 3 个 Moddium 粒,而无需你额外告知。模组开发者还可以注册回收输出修饰器,根据输入物品影响结果,内置实现包括根据输入物品的耐久度降低回收产出,以及将标记从输入转移到输出。

配方书

允许通过称为配方书的物品来锁定配方,这些物品可以作为任务奖励、餐厅奖励、高级合成产物等给予。除非在进行合成的方块旁边放置一个包含该配方书的雕纹书架(或其他实现解锁的方块),否则无法进行合成。

目前已有针对原版方块(如工作台、合成器和熔炉)以及大多数机械动力机器的实现。如果安装了 JEI,配方书解锁的配方将在物品的工具提示中精美呈现。

物品压缩(开发中)

自动扫描并索引可逆的“压缩”配方,例如九个锭合成一个块,也包括添加五重压缩圆石之类内容的模组。压缩配方不必由模组注册;它们会被自动扫描。这些压缩配方随后可以在运行时轻松访问。

高级材料

类似于原版/NeoForge 材料,但采用泛型类型。它们还带有说明文字,以便在 JEI 等配方查看器中更容易看出更复杂的材料实际需要什么,并与愿望系统对接。该前置库提供了多种实现,例如测试某个对象是否具有特定标记。

餐厅(开发中)

由数据驱动的系统,可随机生成物品需求,并提供物品(例如配方书)、村民闲谈、解锁交易和经验值等奖励。顾客会根据餐厅等级等因素随机选择需求,随机应用修正项(例如,物品带有某个标记时,奖励乘以 1.5),并随机选择奖励。所有这些随机选择都由数据驱动。

餐厅可以设定等级,并与队伍绑定,因此同一队伍中的玩家可以共同经营并提升餐厅等级。

兼容配方反序列化器

直接读取其他模组的配方 JSON 文件,即可让你的模组中的机器制作该模组的配方,无需将其作为依赖,甚至无需在构建环境中安装该模组。

战利品数字提供器、条件与函数

新增了多种原版数据驱动数字提供器、战利品物品条件和战利品物品函数的实现,让战利品表等功能更加灵活。新增的数字提供器包括获取实体、物品和队伍属性的提供器。

高级配方

为配方提供接口,以添加使用限制。

需要配方书的配方

见上文。

依赖生物群系的配方

只能在指定生物群系中制作的配方。这些信息可以显示在 JEI物品管理器及其衍生模组中。

初次幸运配方

用于具有随机结果的配方(尤其是 Create 的加工配方),确保玩家首次制作配方时必定获得结果,从而减少反复刷取。目前已为部分 Create 配方类型实现此功能。

徽章

徽章是我发放的游戏内外观奖励,可用于奖励早期下载我的模组、捐赠或在社区比赛中获胜等行为。解锁徽章后,它们会出现在你加入的所有世界中。安装 Curios 模组后,还可以将徽章放入新增的徽章饰品栏位。

可自定义的创造模式物品栏标签页

可以更灵活地控制物品在创造模式标签页中的摆放位置,还可以添加分区标签。

木材兼容

允许制作可由任意木材(原版或模组添加)合成的物品和方块,并会相应调整它们的纹理。

事件

新增了一些事件,可用于接入此前无法挂钩的系统:

  • 混合方块颜色:在方块与周围方块混合颜色之前更改其颜色,从而实现比原版内置的 BlockColor 更平滑的过渡效果。
  • 处理降水:在方块被雨淋或雪覆盖时触发
  • 村民特殊价格:修改交易的价格加成或惩罚(例如,拥有村庄英雄效果或声誉不佳时)

客户端小功能

  • 挤出式方块模型:一种模型定义,使用遮罩和纹理生成模型:先将遮罩应用到指定纹理上,再按指定厚度挤出,并使用指定的侧面纹理
  • 均值偏移聚类精灵图源:一种精灵图加载器,通过计算纹理颜色的平均值来生成风格化纹理
  • 小型旗帜精灵图源:一种精灵图加载器,通过适当裁剪原本占据两格的旗帜图案,生成单格版本
  • 透明物品颜色:现在,皮革盔甲等可设置任意颜色的物品也可以指定透明度

Create API 功能

如果环境中也安装了 Create,便可使用以下前置库和模板。

样条管状方块

在世界中放置并渲染任意弯曲的样条线。在Petrol’s Parts中,这项功能被用于液压传动装置和气动管,效果出色。

额外的 Ponder 指令

  • 抖动摄像机
  • 创建一条钓鱼线
  • 高亮显示 Ponder 标签
  • 让实体挥动手臂
  • 为任意方框描边

非网格铺贴方块

这类方块的纹理铺贴间隔大于单个方块,从而可以实现更多种镶嵌图案。

记住放置者

让 Create 方块记住是谁放置了它们,可用于 First-Time-Lucky 配方等功能。

共享功能

这些是添加内容的功能(而非单纯的前置库),仅由特定依赖模组启用。非 Petrolpark 模组也可以启用这些功能。

红石编程器

连接到 Create 的红石链接,并可编排特定的信号序列。本质上,它是一个用于红石链接频率的 MIDI 编辑器。Destroy和Petrol’s Parts均使用了该功能。

盆盖

此创意经许可改编自Create: Diesel Generators。将其放在盆上,即可制作带盖盆配方(除名称外与其他盆配方完全相同),例如发酵和热解配方。Destroy使用了该功能。与 Create 原版盆配方不同,带盖盆配方还支持按生物群系指定。

挤压模具

使用 Create 装置将方块推过模具并切片,过程动画十分精美。例如,Destroy用它将土豆泥切成薯条,并将石英切成石英柱。当然,配方由数据驱动,任何模组、整合包或数据包都可以添加。

依赖此模组的项目

常见问题

Petrolpark’s Library 支持哪些 Minecraft 版本?

Petrolpark’s Library 支持 Minecraft Java 版 1.20.1–1.21.1,共 2 个版本,可用的加载器:Forge / NeoForge。下载时注意选择和你游戏版本一致的文件。

Petrolpark’s Library 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 Forge / NeoForge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。运行环境:客户端和服务端都要装。

评论

登录后评论和评分

petrolpark 的其他作品

查看全部 →