本帖最后由 世界边境 于 2020-2-25 11:36 编辑
这个mod添加了一种Minecraft中原本不存在的概念——游戏阶段
在不同的游戏阶段中,玩家将会获得不同的游戏内容

利用游戏阶段,整合包作者/地图作者/腐竹可以实现但不限于如防止跳科技/职业系统/科技树/任务解锁道具使用权/类似帝国时代的科技系统等功能。
在各种附属mod的支持下,游戏阶段可以用来限制玩家可以交互的道具/方块/机器/实体等内容。


比如说,一开始玩家默认拥有"石器时代"的阶段,此时玩家可以制作石制工具,获取羊毛、皮革、腐肉、生肉,但mod会限制玩家制作、使用、获得非石器时代的物品及相应掉落,也就是说,只处于石器时代的玩家不能获得铁、煤矿、钻石,那就更别提使用相应的工具了。(这里只是个示例,仅安装此mod并不具有以上所述的功能,需要安装其他附属)

这个mod并不适合普通玩家,而是面向整合包作者、RPG作者或者腐竹。
mod本身并没有太多的功能,但它非常灵活,而且已经有很多的附属mod,允许使用者对游戏阶段的各个方面进行配置。
而且游戏阶段是非线性的,玩家可以同时获得多个阶段,并且随时获得或失去某个阶段。
比如玩家可以在拥有石器时代阶段的同时拥有钻石时代。如果拥有钻石时代后失去石器时代,将导致玩家不能使用石制工具等内容。

该mod中的游戏阶段是与玩家绑定的。mod可以根据这些阶段限制玩家对某些事物的使用或获得。比如:
不具有下界阶段阶段的玩家不能进入下界,直到玩家解锁了下界阶段,才允许玩家进入下界。(此功能需要安装其他附属)

基本使用方法
游戏阶段有一些基本的行为和机制。
首先,所有的阶段名称必须全部小写,不能有中文、空格,如果遇到需要空格的情况,建议使用下划线来代替。
其次,在1.13以下版本中,游戏阶段不需要事先注册,你可以在任何时候检查或给予任何的阶段名称。
而在1.13及以上版本中,你需要事先在/config/gamestages/known_stages.json文件中注册你创建的阶段。以下是配置文件的写法示例:
  1. ["stone_stage", "iron_stage", "gold_stage", "diamond_stage"]
复制代码

最后,这个mod默认情况下认定玩家不具有任何阶段,比如你限制了玩家获得钻石,那么在玩家拥有钻石阶段之前,玩家无法获得钻石,无论是通过挖矿还是苦力怕爆炸掉落。

战利品列表
这个mod还提供了一个战利品条件,可以用于战利品列表。除非玩家具有相应阶段,否则当玩家击杀时,怪物不会掉落相应的掉落物。
以下是相关配置示例;
  1.         "conditions": [{
  2.                 "condition": "required_stage",
  3.                 "stage_name": "one"
  4.         }]
复制代码

假人功能
这个mod允许使用者创建拥有某些阶段的假人,用来实现自动化等功能。
这个功能通过编辑config / gameStagesFakePlayerData.json文件来实现,
以下是相关配置示例;
  1. <font size="2">[
  2.   {
  3.     "fakePlayerName": "test123",
  4.     "stages": [
  5.       "stage1",
  6.       "stage2",
  7.       "stage3"
  8.     ]
  9.   },
  10.   {
  11.     "fakePlayerName": "fake456",
  12.     "stages": [
  13.       "fish",
  14.       "pepper",
  15.       "cheese"
  16.     ]
  17.   }
  18. ]</font>
复制代码

CraftTweaker支持
这个mod为CraftTweaker脚本提供了一些功能,比如检查玩家所拥有的阶段以及为玩家添加/删除阶段。
使得允许像是CraftTweaker事件和函数这样的玩意利用这个mod。
检查玩家是否拥有了阶段:
  1. player.hasGameStage(String stage);
复制代码

检查玩家是否拥有了其中任意一个阶段:
  1. player.hasAnyGameStages(String... stages);
复制代码
String... stages是一组字符串,比如如下用法:
  1. player.hasAnyGameStages("wood_stage","stone_stage");
复制代码

检查玩家是否拥有了其中所有阶段:
  1. player.hasAllGameStages (String... stages);
复制代码

给玩家添加一个阶段:
  1. addGameStage(String stage);
复制代码
其中,String stage为阶段名。
阶段名称有一定的限制和要求,
必须全部是英文小写,并且不能有空格,如果需要空格,请用下划线“_”代替。
请尽量不要使用颜表情等奇葩命名。

删除一个玩家拥有的阶段:
  1. removeGameStage(String stage);
复制代码

您可以在这里找到有关此功能的更多信息。

命令列表
/gamestage add <player> <stage>给玩家添加一个阶段
/gamestage silentadd <player> <stage> 给玩家添加一个阶段,但不通知他
/gamestage remove <player> <stage> 从玩家移除一个阶段
/gamestage silentremove <player> <stage> 从玩家移除一个阶段,但不通知他
/gamestage info 告诉玩家他们所拥有的所有阶段。这个命令一般用于调试
/gamestage check <player> <stage> 检查玩家是否拥某个阶段。这个命令可以在命令方块中使用,以便在玩家具有该阶段时发射红石信号。
/gamestage clear <player> 清除玩家拥有的所有阶段。
/gamestage reloadfakes 重载假人数据。一般用于高级整合包制作

推荐附属
阶段性维度(MCBBS) - 提供基于GS的维度访问限制
阶段性物品(MCBBS) - 提供基于GS的物品访问与显示限制
阶段性怪物(MCBBS) - 提供基于GS的怪物生成限制
阶段性匠魂(MCBBS) - 提供基于GS的匠魂材料与部件相关功能限制
阶段性提示(MCBBS) - 提供基于GS的Waila信息显示限制
阶段性旅行地图(MCBBS) - 提供基于GS的旅行地图功能限制
阶段性矿石(MCBBS) - 提供基于GS的方块显示相关功能限制
阶段性合成(Curse) - 提供基于GS的合成表修改
阶段表单(Curse) - 建立存有多个阶段的表,并提供通基于权重给予玩家随机阶段的功能
时间阶段(Curse) - 提供基于游戏时间解锁游戏阶段的功能

PS:搬运了这么多好累,想要金粒和人气补充一下营养_(:3 」∠ )_

如果您愿意帮助我推广这个mod,欢迎使用以下签名档代码:
  1. [url=https://www.mcbbs.net/thread-854578-1-1.html][img]http://somethingothers.oss-cn-beijing.aliyuncs.com/Gamestages%E5%AE%A3%E4%BC%A0.png[/img][/url]
复制代码
效果: