Flandre923
325 words
2 minutes
11 一步十行

11 一步十行#

/** * 用于处理“一步登天”附魔效果的 mixin,该附魔可以增加玩家的步高。 */ @EventBusSubscriber(modid = NeoMafishMod.MODID) public class LivingEquipmentChange { // 用于存储生物的默认步高值 private static final Map<LivingEntity, Double> defaultStepHeightMap = new HashMap<>(); /** * 当玩家更换装备时触发,用于处理“一步登天”附魔效果。 * * @param event 装备更换事件 */ @SubscribeEvent public static void onLivingEquipmentChange(LivingEquipmentChangeEvent event) { LivingEntity entity = event.getEntity(); // 获取更换装备的生物实体 EquipmentSlot slot = event.getSlot(); // 获取更换的装备槽位 ItemStack from = event.getFrom(); // 获取被替换的装备 ItemStack to = event.getTo(); // 获取新的装备 // 如果更换的装备槽位是脚部装备槽 if (slot == EquipmentSlot.FEET) { // 获取生物的步高属性 AttributeInstance stepHeightAttribute = entity.getAttribute(Attributes.STEP_HEIGHT); // 如果是第一次更换装备,保存默认步高值 if (!defaultStepHeightMap.containsKey(entity) && stepHeightAttribute != null) { defaultStepHeightMap.put(entity, stepHeightAttribute.getBaseValue()); } // 如果被替换的装备有“一步登天”附魔 if (from.isEnchanted() && ModEnchantmentHelper.getEnchantmentLevel(ModEnchantments.ONE_STEP_TEN_LINE, from) > 0) { // 重置步高属性为默认值 if (stepHeightAttribute != null) { Double defaultStepHeight = defaultStepHeightMap.get(entity); if (defaultStepHeight != null) { stepHeightAttribute.setBaseValue(defaultStepHeight); } } } // 如果新的装备有“一步登天”附魔 if (to.isEnchanted() && ModEnchantmentHelper.getEnchantmentLevel(ModEnchantments.ONE_STEP_TEN_LINE, to) > 0) { // 设置步高属性为 10.0D,增加玩家的步高 if (stepHeightAttribute != null) { stepHeightAttribute.setBaseValue(10.0D); } } } } }
11 一步十行
https://fuwari.vercel.app/posts/minecraft1_21_0/11_一步十行/
Author
Flandre923
Published at
2024-08-24