授权制作 - 职业门槛制作

授权制作 - 职业门槛制作

授予玩家职业,然后选择没有职业的玩家不能制作、放置、使用或施法的物品。

Licensed to Craft - 职业限制合成

完整指南: github.com/teamdemivfxfish-dev/licensed-to-craft-wiki

版本: NeoForge 1.21.1。仅服务端。

你选择职业。你决定他们拥有什么。整合包里的每个模组都是你的游戏内容。

Licensed to Craft 是一个配置模组。它本身不附带任何职业,不硬编码任何模组列表,在你告知它之前对你的整合包一无所知。一个 JSON 文件即可定义任意数量的职业,包含你自己的 ID、名称和颜色,并为每个职业列出所有未拥有该职业的玩家不能做的事情。

将模组指向 Create、Mekanism、Ars Nouveau、Farmer's Delight、你自己的模组,或者原版钻石装备。只要整合包里有的,你就能进行限制,无论是整个模组、一个方块、一个通配符、一个标签,还是整个类别的物品。指定它,它就能成为某个职业的专属交易品。

它还附带一个可用的示例,而不是空文件。 默认配置是我们自己服务器 Warborn Realms 的四个职业:铁匠 (Blacksmith)、发明家 (Inventor)、自由民 (Freeholder) 和秘术师 (Arcanist),分别与 Apotheosis、Create、MineColonies 和 Iron's Spells 关联。放入模组即可直接游玩。删掉这些,改成矿工 (Miner)、厨师 (Cook)、工程师 (Engineer)、走私者 (Smuggler) 和死灵法师 (Necromancer),模组本身完全不会在意。

职业即数据

config/warbornprofessions.json 就是这个模组的全部。它可以随整合包分发,可以手动编辑,也可以在游戏中用命令实时编辑。

{
  "id": "engineer",
  "name": "Engineer",
  "color": "aqua",
  "craft": ["mekanism", "immersiveengineering", "!mekanism:*_ore"],
  "place": ["mekanism:metallurgic_infuser"],
  "interact": ["mekanism:metallurgic_infuser"],
  "use": [],
  "cast": []
}

这就是完整的职业。想要十个,就再加十个。

五道门禁

每个职业都有五个列表。每个列表定义了未拥有该职业的玩家不能做什么。

门禁 限制内容
craft 合成该物品。成品永远不会出现在格子里,因此不会损失任何材料
place 放置该方块
interact 右键点击已放置的方块。在其旁边建造仍可正常进行
use 右键使用手持物品
cast 施放法术 (Iron's Spells & Spellbooks)

理解你的整合包的条目

门禁列表不仅仅是一堆需要永远维护的 ID:

条目 匹配目标
create 模组 ID:该模组的所有内容
apotheosis:reforging_table 一个精确的方块或物品
malum:spirit_* 通配符
#minecraft:planks 物品或方块标签
@weapon 一个类别,根据物品本身判断
!toxony:glass_vial 例外项,无论其他条目如何匹配,永不受限

类别是其中最有用的部分。它们读取物品是什么,而不是它叫什么,所以即使模组更新并添加了四十个新物品,它们也依然有效:

@gear, @weapon, @tool, @armor, @machine, @building, @block, @item, @food, @potion, @seed

所以“只有铁匠能制造武器和护甲,无论来自哪个模组”只需要两个条目:@weapon 和 @armor。

提示: 门禁列表匹配模组的 命名空间,这并不总是它的 jar 文件名。有些模组以包装 jar 的形式发布,自身不注册任何内容,而是将实际内容隐藏在嵌套的模组中。按 F3+H 悬停物品以显示高级提示框,然后对你实际看到的 ID 设置门禁。

制造垄断,而非一堵墙

如果你想要,你可以把它配置成一堵砖墙,但默认配置遵循了一条值得借鉴的规则。大多数门禁会把模组锁起来,并悄悄破坏周围的整合包。而这个模组则把界限划在工作台处:

  • 你不能合成其他职业的商品。
  • 你完全可以正常使用你购买、战利品获取或别人赠予的任何东西。购买的护甲可以穿上,购买的机器可以运行,购买的修理包可以修复。
  • 他们的合成站仍然是他们的。这才是职业真正拥有的部分。
  • 破坏方块永不受限。任何人都可以挖掘、清理或回收任何东西,无论它属于谁。

结果是形成了一种有效的经济,而不是四个玩家盯着一份被锁定的模组列表。

安全网

天真地限制整个模组,也会连同它的建材一起限制。在我们自己的服务器上,一位玩家砍倒了一棵魔法模组里的树,结果发现自己无法合成木板。这可不是游戏玩法,这是穿着规则外衣的 Bug。

因此,一个裸露的模组 ID 被有意设计为最弱的条目类型。它由一个全局豁免列表 neverGate 弱化,默认豁免 @building(任何没有方块实体的方块:木板、石头、砖块、玻璃、栅栏、装饰品)、@food 和 @seed,自动应用于所有模组。

任何比模组 ID 更具体的条目都可以绕过安全网,因此精确 ID、通配符、标签或类别无论如何都会被限制。这就是为什么一个合成站即使看起来像普通方块也能保持锁定,而木板则始终免费。

如果某件事在任一方向上被遗漏了,你可以实时修复它,只需十秒钟:

/profession nevergate add @potion
/profession gate add blacksmith craft mekanism:atomic_disassembler
/profession reload

命令

命令 作用
/profession grant|revoke <targets> <profession> 授予或移除职业
/profession list [target] 查看某个玩家拥有的职业
/profession professions 查看所有已定义的职业及其限制范围
/profession reload 重新读取文件,无需重启
/profession gate show <profession> 打印其五个列表
/profession gate add|remove <profession> <gate> <entries> 编辑列表并保存文件
/profession nevergate show|add|remove <entries> 编辑安全网

所有命令都需要 权限等级 2,因此任务奖励、命令方块和控制台都可以分配职业。我们的职业来自 FTB Quests:/profession grant @p blacksmith。

设置

设置项 作用
enabled 总开关
creativeBypass 创造模式无视所有门禁
opBypassLevel 无视所有门禁的权限等级,0 表示无人
ignoreFakePlayers 通过玩家行动的机器永不受限,因此自动化流程可以继续运行
messageCooldownTicks 拒绝消息之间的间隔
denyMessage, denyMessages 你自己的措辞,可共用或按门禁单独设置
neverGate 安全网

默认示例,全文

保留、修改或删除它。这就是文件开箱即用的内容:

职业 拥有 保持独占的合成站
铁匠 (Blacksmith) Apotheosis、Toxony、Iron's Repair Kits 拆解、重铸、宝石切割和强化台;炼金锻造台、蒸馏器、铜坩埚、研钵和研杵
发明家 (Inventor) Create 及其附属 机械合成器、磨盘、粉碎轮、动力活塞、搅拌器、水盆、动力锯、放置器、鼓风机、烈焰人燃烧室、喷口、物品抽取口、打包机、蓝图大炮、物理装配器
自由民 (Freeholder) MineColonies 小屋、采石场、补给营地、权杖
秘术师 (Arcanist) Iron's Spells 及其附属、Malum 的魔法 灵魂祭坛、坩埚、罐子、催化器、符文台和编织台、基座、方尖碑、石柱、图腾。也包括施放所有法术

其中有两个故意的缺口,都值得借鉴:Numismatics 不受限制,因为它是服务器货币,限制它会破坏每个人的商店;另外,Create 的机器任何人都可以放置和操作,所以发明家可以为客户建造工厂,而客户可以运行它。

需求

模组 状态
NeoForge 1.21.1 必需
Iron's Spells & Spellbooks 可选,仅用于 cast 门禁

仅服务端: 只需在服务端安装。客户端不需要任何东西,也不会因为缺少它而被拒绝连接。没有 Mixin,没有客户端数据包,没有注册表添加。

有一点值得了解:craft 指的是合成网格。模组自己的机器配方不属于合成,所以要在 place 和 interact 下限制机器本身,这正是默认的合成站列表所做的。


赋予他们一门手艺。让他们进行交易。

Warborn Realm 的一部分,作者:barunn