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

前言:教程适用版本为MC1.19.2

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

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

    实体装备更换事件 LivingEquipmentChangeEvent

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

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

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

附注:crt仅作为个人参考学习用,主用kjs;

基础代码或者深入用法不做详细说明。

import crafttweaker.api.events.CTEventManager;
import crafttweaker.api.event.Event;
import crafttweaker.api.event.entity.EntityEvent;
import crafttweaker.api.event.entity.LivingEvent;
import crafttweaker.api.item.IItemStack;
import crafttweaker.api.entity.equipment.EquipmentSlot;
import crafttweaker.api.item.enchantment.Enchantment;
import crafttweaker.api.event.entity.living.LivingEquipmentChangeEvent;
import crafttweaker.api.entity.Entity;
import crafttweaker.api.entity.EntityType;
import crafttweaker.api.entity.LivingEntity;

//任意实体 任意槽位附魔修正
CTEventManager.register<LivingEquipmentChangeEvent>((event) => {
    var entity = event.entityLiving;
    var level = entity.level;
    if (level.isClientSide) {return;}

    var SLOT = event.getSlot();
    var ITEM = event.getTo();
    //举例横扫之刃
    var enchantment = <enchantment:minecraft:sweeping>;
    var Lv = ITEM.getEnchantmentLevel(enchantment);
    if (Lv > 0) {
        entity.setItemSlot(SLOT, ITEM.removeEnchantment(enchantment));
   }
});

效果图:当拿在手中时,附魔就会被移除

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

Crt移除/禁用物品附魔-第2张图片

无论主副手还是防具槽都能触发。

如果想继续加新的附魔,可直接往下写:

    enchantment = <enchantment:minecraft:power>;
    Lv = ITEM.getEnchantmentLevel(enchantment);
    if (Lv > 0) {
        entity.setItemSlot(SLOT, ITEM.removeEnchantment(enchantment));
    }

简单来说,上面代码已经var赋值过的变量无需再var。

循环代码不在此教程范围。


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