You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spigot 1.20.1中如何替换PathEntity与EntityInsentient类?

在Spigot 1.20.1中替换PathEntity和EntityInsentient的解决方案

Spigot 1.20.1对应Minecraft 1.20.1的NMS(Net Minecraft Server)代码有较大重构,原EntityInsentient和PathEntity类已被重命名,同时导航相关方法也做了调整。以下是适配后的代码及关键说明:

适配后的代码

import net.minecraft.world.entity.PathfinderMob;
import net.minecraft.world.level.pathfinder.Path;
import net.minecraft.world.entity.ai.navigation.Navigation;
import org.bukkit.craftbukkit.v1_20_R1.entity.CraftEntity; // 注意版本号对应,1.20.1的CraftBukkit包为v1_20_R1

// ... 保留原有其他导入类

public void lungeTask(Entity entity) {
    this.entity = entity;
    Location spawnLoc = getLocAroundCircle(this.player.getLocation(), 
        Double.valueOf(Lunged.getInstance().getConfiguration().getRadius()), 
        Double.valueOf(0.0D));

    // 校验实体类型,避免非导航型实体强转报错
    if (!(entity instanceof CraftEntity) || !(((CraftEntity) entity).getHandle() instanceof PathfinderMob)) {
        return;
    }
    PathfinderMob nmsEntity = ((PathfinderMob) ((CraftEntity) entity).getHandle());
    Navigation navigation = nmsEntity.getNavigation();

    // 生成目标路径(替代原PathEntity)
    Path path = navigation.createPath(spawnLoc.getX(), spawnLoc.getY(), spawnLoc.getZ(), 0);

    Location center = this.player.getLocation();
    // 启动实体导航移动(替代原a()方法)
    navigation.moveTo(path, 1.78D);

    this.task = Bukkit.getScheduler().runTaskTimer(Lunged.getInstance(), () -> {
        if (entity.getLocation().distance(spawnLoc) < 1.0D) {
            lunge(entity, center);
            this.task.cancel();
        } else {
            navigation.moveTo(path, 1.78D);
        }
    }, 0L, 2L);
}

关键变更点

  • EntityInsentient → PathfinderMob:Mojang在1.19+版本中将具有自主导航能力的智能实体统一归类到PathfinderMob类,替代了旧版的EntityInsentient。
  • PathEntity → Path:路径对象类重命名为net.minecraft.world.level.pathfinder.Path,功能与旧版一致,但包路径和类名调整。
  • 导航方法调整:
    • 原getNavigation().a(x,y,z, range)替换为navigation.createPath(x,y,z, range),用于生成目标点的导航路径。
    • 原getNavigation().a(path, speed)替换为navigation.moveTo(path, speed),用于驱动实体沿生成的路径移动。
  • 版本兼容性:CraftBukkit的包版本(如v1_20_R1)必须与你的Spigot版本严格对应,否则会出现类加载错误。

内容的提问来源于stack exchange,提问作者Kifo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 01:13:19