观前提示

教程作者本人魔改水平不高,有可以改进的地方请在评论区中指正

教程中的例子真的只是简单的例子,请不要拿来正常的魔改使用

本教程使用的mod版本均为1.19.2

主要mod为kubejs,其余mod非必要

关于本教程的脚本,存放于.minecraft\kubejs\server_scripts之中

正文

总所周知,字符魔法师有两种手段施展魔法。

其一,通过在聊天栏输入咒语——以吟唱的方式施法。

其二,通过使用法术书——以书本的力量进行施法。

而恰巧,kubejs就能对这两种施法方式进行检测。检测到了,那便能够进行修改。

吟唱魔法

kubejs以下简称kjs,kjs可以检测玩家的聊天事件,具体代码如下

PlayerEvents.chat(event => {
    //这里是之后代码要写的地方
})

接下来我们就可以写咒语的检测了,检测代码如下,在引号中填入自己想要检测的咒语

event.message.match("")

之后就是用if来检测我们的咒语了,我这里就将"女仆我爱你"定为咒语

PlayerEvents.chat(event => {
    if (event.message.match("女仆我爱你")) {
        //这里是写我们念完咒语后的代码
    }
})

之后就仍由大家发挥了,我这里简单举一个例子

由于教程作者水平原因,其中效果的部分实现由原版指令替代

PlayerEvents.chat(event => {
    if (event.message.match("女仆我爱你")) {//玩家念出对应咒语后执行以下代码
        if (!event.player.hasEffect("scriptor:hoarse")) {//如果玩家没有对应buff,则执行以下代码
            //对所有女仆实体施加10秒力量I的效果
            event.server.runCommandSilent('effect give @e[type=littlemaidrebirth:little_maid_mob] minecraft:strength 10')
            //给予对应buff,时间为300tick
            event.player.potionEffects.add("scriptor:hoarse", 300)
            //取消玩家的信息发送,以免刷屏
            event.cancel()
            //发送对应消息
            event.server.tell("女仆受到了鼓舞!")
        }
    }
})

效果图

用kubejs来添加类似于

用kubejs来添加类似于用kubejs来添加类似于

注:嘶哑buff是我在例子中使用的"scriptor:hoarse"效果

魔法书

关于魔法书的实现,mod中的魔法书,是有着对应咒语的nbt的

用kubejs来添加类似于

也就是说,我们检测手中法术书的nbt,就能制作一些简单的法术,以下代码是检测玩家右键物品事件

ItemEvents.rightClicked(event => {
    //这里写使用之后要用的代码
})

接下来就是检测玩家手中的物品以及物品所拥有的nbt了

//获取玩家主手物品,并与法术书进行比对
event.player.getMainHandItem() == 'scriptor:spellbook'
//将手中物品的nbt字符串化,并检查是否有对应咒语
event.item.nbtString.match("女仆我爱你")

最后就是例子了,与刚刚吟唱魔法的代码类似

ItemEvents.rightClicked(event => {
    if (event.player.getMainHandItem() == 'scriptor:spellbook') {//检测手中物品是否为法术书
        if (event.item.nbtString.match("女仆我爱你")) {//检测咒语是否包含
            //发送对应消息
            event.server.tell("女仆受到了鼓舞!")
            //对所有女仆实体施加10秒力量I的效果
            event.server.runCommandSilent('effect give @e[type=littlemaidrebirth:little_maid_mob] minecraft:strength 10')
            //给法术书添加100tick的冷却
            event.player.addItemCooldown('scriptor:spellbook', 100)
        }
    }
})

效果图

用kubejs来添加类似于用kubejs来添加类似于用kubejs来添加类似于用kubejs来添加类似于

结语

本教程就到此结束了,我写这篇教程只是因为想要分享我的灵感

希望大家能够更多的开脑洞做出更多好玩的整合包给我玩

谢谢大家能够看到最后,最后再提醒一下,教程中的代码并非完善,请不要直接拿来使用