本篇教程由作者设定未经允许禁止转载。
首先!检查一下你的 In Control!版本
为什么要检查?因为in control每次更新基本都会修一些bug,或者添加/修改一些表达式
这里附上官方的案例和公告(wiki搬运),可以对应日期来决定你需要什么版本:
这里是更新日志喵!
2024年9月11日:
修复了“onjoin”规则中“incontrol”标签无法正常工作的问题
新增了两个关键字:“inmultibuilding”和“multibuilding”,它们的作用与“inbuilding”和“building”关键字类似,但适用于多建筑场景(失落之城)
2024年5月7日:
新增“hasstructure”布尔测试,用于检测当前位置是否存在任何建筑。
新增“cave”测试,用于判断位置是否在洞穴中。
物品过滤器中的“mod”测试之前完全无法工作。
物品过滤器已得到改进。现在,您不必指定物品,而可以仅通过标签或模组进行匹配。
新增“armorset”、“armormultiply”、“armoradd”、“followrangeset”、“followrangemultiply”和“followrangeadd”动作,用于更改生物的护甲和跟随范围。
新增“attackspeedset”、“attackspeedmultiply”、“attackspeedadd”、“armortoughnessset”、“armortoughnessmultiply”和“armortoughnessadd”动作,用于更改生物的攻击速度和护甲韧性。
如果分散在多个规则中,所有修改属性的动作现在都将正常工作。
2024年3月9日:
“structure”测试现在支持列表。
新增“structuretags”测试,用于支持(结构标签的)列表。
2024年1月27日:
新增命名数字系统,允许您为变量设置名称和整数值:
新增两个命令:“numbers”用于显示当前数字,“setnumber”用于设置数字。
新增“number”测试,几乎可用于所有规则中,以测试数字是否满足给定表达式。
此测试也适用于事件和生成器规则。基本上,在您可以测试阶段的任何地方,现在都可以测试数字。
新增名为“number”的事件动作,允许在事件发生时修改数字。
新增“changenumber”动作,可用于多种规则中。其语法与数字事件动作相同:“changenumber”: “mycounter=+1”。
对阶段系统进行了多项修复和改进:
手动设置的阶段现在将在世界重新加载时保持不变。
新增名为“phase”的事件动作,允许在事件发生时设置或清除阶段。例如,您可以在玩家杀死生物时设置阶段,然后在生成器规则中使用该阶段,以便仅在该阶段设置时生成生物。
现在,经验、战利品、效果、收获、左键单击、右键单击、放置和召唤援助规则也支持“phase”测试。
新增自定义事件:
新增“customevent”动作,可在多种规则中使用以触发自定义事件。
新增名为“custom”的事件触发器。
新增名为“deny_with_actions”的结果,将拒绝事件但仍执行动作。这可用于拒绝生物的生成,但仍触发事件。
2023年11月3日:
新增了events.json系统,允许玩家在发生某些事件时生成生物。目前已实现“mob_killed”(生物被杀死)和“block_broken”(方块被破坏)事件。
在spawn.json中新增了“eventspawn”测试,可用于测试由新events.json系统生成的生物。
为效果、经验、左键单击、右键单击、收获和生成事件新增了“setphase”(设置阶段)、“clearphase”(清除阶段)和“togglephase”(切换阶段)动作。
在areas.json中新增了区域系统。地图制作者可以使用它来定义地图上的预定义位置。这些区域随后可以在各种规则中使用。例如,在服务器上创建一个和平区域。
新增了“area”测试,几乎可用于所有规则(如spawn.json、loot.json、effects.json等)。如果位置在指定区域内,则此测试的结果为true。
新增了/incontrol area命令,用于显示当前区域。
新增了“setphase”和“clearphase”命令。
2023年7月9日:
In Control 1.20版本的工作方式与前几版有所不同。“onjoin”功能已被移除。取而代之的是现在的“when”,它有四个可能的值:“position”、“onjoin”(尽管名称相同,但功能已变化)、“finalize”和“despawn”。
“special.json”文件已被移除。现在,您可以使用“spawn.json”来满足所有需求。通过在“finalize”时使用“when”,您现在可以控制生物的装备和属性。
将所有FxControl功能合并到了InControl中。
2023年7月1日:
添加了“minlight_full”和“maxlight_full”关键字。它们与“minlight”和“maxlight”类似,但会测试完整的光照等级(包括天空光照等级)。而“minlight”和“maxlight”仅测试方块光照等级。
2023年5月10日:
为spawner.json和spawn.json添加了新关键字“addscoreboardtags”。使用此关键字,您可以为通过此规则生成的每个实体添加记分板标签。
为spawn、experience、loot、special和summonaid添加了新条件“scoreboardtags_all”和“scoreboardtags_any”。这些条件将测试实体上是否存在所有或任何给定的标签。
为spawn、special和summonaid添加了新动作“nodespawn”。这将阻止生物消失。
添加了新关键字“time”、“height”和“light”,在支持相应min/max版本的任何地方都支持这些关键字。使用这些关键字,您可以对特定值进行更精确的测试。有关此功能的更多文档,请参阅wiki。
“daycount”关键字现在也支持这种新的表达式语法。使用它,您现在可以做诸如“每10天生成两天的僵尸,并在同一周期中生成一天的爬行者”之类的事情。
向生成器系统添加了新关键字“minverticaldist”和“maxverticaldist”。这将允许您指定生成器和生成位置之间的垂直距离。
如果未指定维度,生成器系统将失败(这是应该的,因为维度不是可选的)
2023年4月30日:
新增了“building”关键字,可作为条件进行测试。例如,这将允许测试某个生成点是否位于特定建筑列表中。
2023年4月28日:
在方块描述中增加了对“tag”关键字的支持(以取代旧版且已失效的“ore”关键字)。
2023年2月7日:
在生成器系统中新增了“validspawn”和“sturdy”条件。这可以避免在某些表面(例如板岩)上生成生物。
更新日志部分结束完毕,接下来讲讲都更新了啥/咋用
规则文件/什么文件填哪个位置
所有规则文件都可以在.config/incontrol目录中找到。
目前支持的规则文件包括:
phases.json:使用此文件,你可以定义一组全局活动的公共条件(称为阶段)。然后,可以在所有后续规则中使用这些阶段,以更高效和清晰的方式选择规则。
spawn.json:使用此文件,你可以在某些条件下阻止特定生物的生成。此外,当允许生成时,你还可以更改生物的一些属性,如最大生命值等。请注意,此文件中的规则仅修改已存在的生成。例如,仅使用此文件无法将烈焰人添加到主世界的生成中。为此,你需要查看toospawner.json。
summonaid.json:此文件的结构与spawn.json相同,但仅在召唤僵尸支援时使用
spawner.json:这是一个新的生成系统(从1.16.5版本开始),你可以使用它来代替当前已损坏的potentialspawn。
loot.json:使用此文件,你可以根据各种条件控制生物被杀死时掉落的物品。
experience.json:此文件控制你杀死生物时获得的经验值。它的结构与loot.json类似,但你不能基于伤害类型(如魔法、火焰、爆炸等)来控制经验值
effects.json:使用此文件,你可以根据各种条件给玩家添加效果。
breakevents.json:使用此文件,你可以在破坏方块时(还可以阻止方块被破坏)给玩家或世界添加效果。
placeevents.json:使用此文件,你可以在放置方块时(还可以阻止方块被放置)给玩家或世界添加效果。
rightclicks.json:使用此文件,你可以在玩家右键点击方块时(还可以阻止交互)给玩家或世界添加效果。
leftclicks.json:使用此文件,你可以在玩家左键点击方块时(还可以阻止交互)给玩家或世界添加效果。
areas.json:使用此文件,你可以定义可用于规则的命名区域。
events.json:使用此文件,你可以定义事件,以便在发生某些事情时生成生物。目前已实现的事件包括“mob_killed”(生物被杀死)、“block_broken”(方块被破坏)和“custom”(自定义)事件。
这里是说明喵!
关于 spawn.json 的一些额外说明:
每个规则都有一个结果,可以是 allow、deny、deny_with_actions 或 default。如果是 deny,则生成将被取消。
deny 和 deny_with_actions 之间的区别在于,deny_with_actions 仍然会测试一些简单的原版生成限制(比如不在方块内部生成),而 deny 则不会。
当 result 等于 deny_with_actions 时,与 default 的区别在于 deny_with_actions 仍然允许原版游戏的“finalize”操作执行(例如,骷髅仍然会获得它们的弓)。如果你使用 deny,则只有你自己的动作会被执行。
continue 关键字允许一个匹配的规则执行后,继续处理可能存在的其他不同规则(记住!规则是按顺序执行的)。
规则按类别的顺序执行!对于发生的每次生成,每条规则都是从上到下评估的。 匹配所有条件的第一条规则将被执行,其余规则将被忽略(除非你使用关键字continue)这也意味着执行一个类别的规则不会停止执行其他类别中的规则
有些模组生物在所有情况下都不会触发正确的事件,因此你可能需要使用 onjoin 类别来获得所需的效果 将其设置为 onjoin