本篇教程由作者设定未经允许禁止转载。

前言:教程适用版本为MC1.19.2,理论兼容更高版本

有些mod提供了超模、导致崩溃、或者是别的原因不想要的附魔,

可以通过以下事件进行简单地移除:

    实体装备更换事件 LivingEquipmentChangeEvent

能操作物品附魔的事件不少,

但考虑到性能开销等因素,

本教程只提供一种个人常用的事件进行分享。

脚本路径(以开启版本隔离为例):

游戏文件夹\.minecraft\versions\版本名称\kubejs\startup_scripts\ForgeEvents.js

ForgeEvents.js可按规范任意命名,不要用中文;


ForgeEvents.onEvent('net.minecraftforge.event.entity.living.LivingEquipmentChangeEvent',e=>{
    let { entity,from,to,slot }=e;
    global.EquipmentChange(e);
})
/** 任意实体 任意槽位附魔修正
 * ForgeEvents无法被热重载,但是可以跟global对接
 * 用指令/kubejs reload startup_scripts 可对global内代码进行热重载
 * @param {Internal.LivingEquipmentChangeEvent} e 
 */
global.EquipmentChange = e =>{
    let {to}=e;
    // 此处添加附魔
    let enchantments=[
        'minecraft:sweeping',
        'minecraft:efficiency'
    ];
    enchantments.forEach(enc=>{
        to.getEnchantmentTags().removeIf(
            a=> a.asString.includes(enc));
    })
 }

脚本完成后,需要重启一次游戏加载ForgeEvents

效果图:当穿在身上时,附魔就会被移除

KJS6移除/禁用物品附魔-第1张图片

KJS6移除/禁用物品附魔-第2张图片无论主副手还是防具槽都能触发。

备注:某些不需要装备/手持的物品不会受此事件影响,如有需求应该要考虑去监听背包变动事件