本篇教程由作者设定未经允许禁止转载。
前言:教程适用版本为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));
}
});
效果图:当拿在手中时,附魔就会被移除
无论主副手还是防具槽都能触发。
如果想继续加新的附魔,可直接往下写:
enchantment = <enchantment:minecraft:power>;
Lv = ITEM.getEnchantmentLevel(enchantment);
if (Lv > 0) {
entity.setItemSlot(SLOT, ITEM.removeEnchantment(enchantment));
}
简单来说,上面代码已经var赋值过的变量无需再var。
循环代码不在此教程范围。
备注:某些不需要装备/手持的物品不会受此事件影响,如有需求应该要考虑去监听背包变动事件。