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