本帖最后由 世界边境 于 2019-9-20 23:41 编辑
阶段性矿石是一个基于Game Stages的附属,它提供了基于GS的矿物显示功能,
可以让拥有不同阶段的玩家看到不同的矿物种类。


当某种方块A被这个mod限制的时候,会产生如下效果:
1. 没有相应阶段的玩家看A方块时将会看到一个被设定的B方块
2. 玩家不能右键点击这种A方块
3. A方块的掉落物将会被替换为被相应的B的掉落物
4. 这种A方块需要花很多时间才能挖掘掉

当附近没有玩家的时候,方块就像是一个没有任何阶段的玩家看到它时那样。这是默认的行为。

使用方法
这个mod通过CraftTweaker进行配置。
用原版石头替换方块的脚本:
  1. mods.orestages.OreStages.addReplacement(String stage,IIngredient original);
复制代码
其中,String stage为阶段名, IIngredient original为被替换的方块。
例如:
  1. mods.orestages.OreStages.addReplacement("dirt_stage", <minecraft:dirt>);
复制代码
这个例子的意义为:没有dirt_stage这个阶段的玩家看到的泥土方块将会被替换为石头。

用一种方块替换另一种方块的脚本:
  1. mods.orestages.OreStages.addReplacement(String stage, IIngredient original, IItemStack replacement);
复制代码
例如:
  1. mods.orestages.OreStages.addReplacement("dirt_stage", <minecraft:dirt>, <minecraft:cobblestone>);
复制代码
这个例子为:没有dirt_stage这个阶段的玩家看到的泥土方块将会被替换为原石。

以上两条只适用于没有附加ID的方块,如果想要替换具体某种方块,比如minecraft:tallgrass:2这种后面带了":2"这种附加ID的方块,就需要使用以下脚本:
  1. mods.orestages.OreStages.addReplacementById(String stage, String original, String replacement);
复制代码
其中, String original是被替换的方块,String replacement是替换后显示的方块
例如:
  1. mods.orestages.OreStages.addReplacementById("one", "minecraft:potatoes:*", "minecraft:tallgrass:2");
复制代码
这个例子为:没有one这个阶段的玩家看到的马铃薯将会被替换为附加id为2的高草丛。

如果希望被限制的方块在被非人工手段破坏(水,爆炸,机器)时表现出其原有的特性,那么可以用以下的脚本:
  1. mods.orestages.OreStages.addNonDefaultingReplacement(String stage, IIngredient original);
  2. mods.orestages.OreStages.addNonDefaultingReplacement(String stage, IIngredient original, IItemStack replacement);
  3. mods.orestages.OreStages.addNonDefaultingReplacementById(String stage, String original, String replacement);
复制代码
以上三个脚本是之前三个脚本的特殊化用法,其特殊点就是非人工破坏时表现原有特性,而不是遵循默认行为。
例如:
  1. mods.orestages.OreStages.addNonDefaultingReplacement("one", <minecraft:torch:*>, <minecraft:redstone_torch>)
复制代码
这个例子为:没有one这个阶段的玩家看到的火把将会被替换为红石火把,但是当被替换的火把被水、爆炸、机器破坏的时候,将会像是没有被替换那样掉落一个火把,而不是遵循默认行为掉落一个红石火把。