本篇教程由作者设定未经允许禁止转载。
废话就不多讲了,适用版本1.20.1,模组版本9.2.8
修改生物血量的补充
对于spawn.json,你能够使用的所有格式:
result:这可以是'deny'(拒绝)、'allow'(允许)、'default'(默认)或未指定。如果不指定结果,则保留其他生物控制模组所做的决定。如果指定了result,则“In Control”将接管(因为“In C
ontrol”规则将最后触发)。使用'deny'可以阻止生物生成。如果使用'allow',则即使原版通常会阻止(例如光线过强),也会允许生物生成。如果使用'default',则由于光线不足等原因,生物生成仍可能被拒绝。除非使用'deny',否则可以使用以下任何操作:
NBT:允许为生成的生物添加NBT
customname:允许为生成的生物设置自定义名称
healthmultiply:表示生成生物的最大生命值乘数的浮点数。例如,使用2会使生成的生物生命值加倍。
healthadd:添加到最大生命值的浮点数
healthset:用作最大生命值的浮点数
speedmultiply:表示生成生物速度乘数的浮点数
speedadd:添加到速度的浮点数
speedset:用作速度的浮点数
damagemultiply:表示生成生物造成伤害乘数的浮点数
damageadd:添加到伤害的浮点数
damageset:用作伤害的浮点数
armormultiply:表示生成生物护甲乘数的浮点数
armoradd:添加到护甲的浮点数
armorset:用作护甲的浮点数
armortoughnessmultiply:表示生成生物护甲韧性乘数的浮点数
armortoughnessadd:添加到护甲韧性的浮点数
armortoughnessset:用作护甲韧性的浮点数
attackspeedmultiply:表示生成生物攻击速度乘数的浮点数(
attackspeedadd:添加到攻击速度的浮点数
attackspeedset:用作攻击速度的浮点数
followrangemultiply:表示生成生物跟随范围乘数的浮点数
followrangeadd:添加到跟随范围的浮点数
followrangeset:用作跟随范围的浮点数
angry:表示生物是否会愤怒并/或瞄准最近的玩家(布尔值)对于僵尸猪人,这会使它们立即对玩家愤怒。同样适用于末影人和狼
potion:可以是单个字符串或字符串列表。每个字符串表示一个药水效果,格式为:<药水>,<持续时间>,<等级>
例如“minecraft:invisibility,10,1”
(注:0级等级在游戏里是1级,1级等级则是2级,以此类推)
helditem:可以是单个字符串或字符串列表。每个字符串表示生成生物可能手持的物品。这仅适用于允许此操作的生物,如骷髅和僵尸。还可以通过在字符串前添加<数字>=来指定权重,例如:“1=minecraft:diamond_sword”,“2=minecraft:iron_sword”
armorboots:表示生成生物将穿戴的随机靴子的单个字符串或字符串列表
armorhelmet:表示生成生物将穿戴的随机头盔的单个字符串或字符串列表
armorlegs:表示生成生物将穿戴的随机护腿的单个字符串或字符串列表
armorchest:表示生成生物将穿戴的随机胸甲的单个字符串或字符串列表
此外,还支持gamestage(游戏阶段)、playerhelditem(玩家手持物品)和相关标签。在这种情况下,将使用最近的玩家作为决定规则的基础。
在此基础上,我们活用游戏阶段,可以做出随阶段运行的难度系统,甚至可以写出一些比较好玩的东西
{
"setphase": 1
},
{
"setphase": 2
},
{
"gamestage": "difficult1",
"togglephase": "1",
"when": "onjoin",
"result": "allow",
"healthmultiply": 2,
"damagemultiply": 2
},
{
"gamestage": "difficult2",
"togglephase": "2",
"when": "onjoin",
"result": "allow",
"healthmultiply": 4,
"damagemultiply": 2,
"armoradd": 2
},
这里定义阶段是为了后边做独特阶段掉落物等使用
打开in control文件夹里的loot文件夹
文本规范及解释(loot.json):
item:这是一个字符串或字符串列表,代表新的掉落物品。
解释:在游戏中,当满足特定条件时,玩家可以获得的物品。
itemcount:这是一个字符串,表示应该掉落多少物品(可选地取决于掠夺等级)。例如:“5/7-10/20-30”表示在掠夺等级为0时掉落5个物品,在掠夺等级为1时掉落7到10个物品,在掠夺等级为2或更高时掉落20到30个物品。
解释:游戏中的掠夺等级可能会影响掉落的物品数量。
nbt:这是一个JSON,指定用于掉落物品的NBT(Named Binary Tag,命名二进制标签)。
解释:NBT是Minecraft中用于存储复杂数据的格式,可以定义物品的属性和特性。
remove:这是一个字符串或字符串列表,表示要从掉落物品中移除的物品。
解释:如果某些物品不应该出现在掉落列表中,可以通过这个参数来移除它们。
removeall:如果这个参数存在,则将从掉落物品中移除所有物品(在添加由这条规则指定的新物品之前)。
解释:这个参数用于清空当前的掉落列表,然后添加新的掉落物品
{
"phase": "1",
"player": true,
"item": "kubejs:confusion",
"itemcount": "0-1"
},
{
"phase": "2",
"player": true,
"item": "kubejs:confusion",
"itemcount": "0-2"
},
当阶段在1时,掉落0-1个"kubejs:confusion"
如果想要让掉落物吃抢夺,需要这么写:
"itemcount": "2-3/3-4/4-6"
experience.json
填入experience.json文件夹里
这与掉落控制类似,但它控制的是从击杀怪物中获得多少经验值。除了与伤害类型(如魔法、爆炸等)相关的关键字外,掉落控制中的所有关键字都可以在这里使用,因为在这个事件中不包含伤害类型的信息。这些规则有四个输出选项:
result:将其设置为“deny”以完全不给予经验值。
setxp:设置固定的经验值,而不是默认值。
multxp:将正常经验值乘以这个数。
addxp:在正常经验值乘以某个数之后,再将这个数值加到最终经验值上。
于是我们就可以写出,在难度2时,掉落2倍exp等...
{
"phase": 2,
"player": true,
"multxp": 2
},
effects.json
在规则中,你可以使用“effects”来指定一个额外的“timeout”关键字。这个关键字代表在再次测试规则之前将等待的游戏刻(tick)数。请注意,其中一些规则可能会消耗较多资源,因此使用较高的timeout会使规则触发频率降低
explosion(爆炸):这是一个字符串,格式为:<强度>,<是否燃烧>,<是否冒烟>。例如,10,true,true 会引发一个给定强度的爆炸。
setblock(放置方块):这是一个包含方块描述的JSON,用于放置方块。例如:{'block': 'minecraft:chest', 'properties': {'name': 'facing', 'value': 'west'}} 会放置一个朝西的箱子。
give(给予):这是一个字符串或字符串列表,每个字符串代表玩家可能获得的物品。通过在字符串前添加<数字>=,还可以指定权重。例如:1=minecraft:diamond_sword, 2=minecraft:iron_sword。
drop(掉落):这与“give”类似,但用于指定掉落的物品。
potion(药水效果):这是一个字符串或字符串列表,每个字符串代表一个药水效果,格式为:<药水>,<持续时间>,<等级>。例如:minecraft:invisibility,10,1。
fire(着火):这是一个整数,表示玩家应该着火的秒数。
clear(清除):清除所有药水效果。
message(消息):向玩家发送一条消息。
damage(伤害):这是一个字符串,包含伤害源名称和伤害量。例如:fall=1.0 会造成1.0点的跌落伤害。支持所有原版伤害源(如'inFire', 'lightningBolt', 'lava', 'cramming', 'outOfWorld', 'magic'等)。
setstate(设置状态):如果EnigmaScript存在,可以使用此动作来设置一个状态,格式为:state=value。
setpstate(设置玩家状态):这与“setstate”类似,但用于设置玩家状态。
command(命令):这是一个字符串,表示将要执行的命令。其中的@p将被替换为玩家名称。例如:give @p minecraft:diamond_sword。
addstage(添加游戏阶段):这是一个字符串,表示将要添加到玩家的游戏阶段。
removestage(移除游戏阶段):这是一个字符串,表示将从玩家处移除的游戏阶段。
breakevents.json,placeevents.json
在breakevents.json,placeevents.json中的文本规范:
这里并没有“timeout”关键字。除了可以为effect执行的动作之外,它还有一个结果输出,可以是“allow”(允许)或“deny”(拒绝)。请注意,(与spawn.json不同)即使规则表示“false”,其他操作仍然会被执行
leftclicks.json,rightclicks.json
同上
Phase System
Phase System允许您定义全局条件并为它们命名。在控制规则中,可以使用这些相位,以便它们仅在一个或多个相位处于活动状态时才有效。这更加高效,因为全局条件每10个滴答(ticks,游戏内的时间单位)评估一次,而不是每次生物尝试生成时都评估。此外,这种方法也更加清晰。相位仅适用于一组有限的条件(仅全局为真的条件):
时间(time)、最小时间(mintime)和最大时间(maxtime)
天数(daycount)、最小天数(mindaycount)和最大天数(maxdaycount)
天气(weather)
冬季(winter)、夏季(summer)、春季(spring)和秋季(autumn)
状态(state,可能指游戏内的某种全局状态)
自1.20.1版本起,现在也可以在spawn.json或其他规则文件中设置相位。请注意,这些相位应与在phases.json中定义的相位分开,否则设置它们将不会生效。