You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Minecraft基岩版1.16:无需命令块实现指南针追踪玩家方案咨询

基岩版1.16 Addon实现指南针追踪玩家方案

嘿,你的这个思路其实很靠谱!在基岩版1.16里完全可以用.mcfunction和原生的tick机制实现指南针追踪玩家,不用命令块也没问题。下面针对你的问题详细拆解一下:

一、核心功能的实现步骤

  1. 编写追踪用的函数文件
    在你的行为包functions目录下新建一个track_target.mcfunction,注意基岩版1.16的execute语法和Java版有差异,得用适配的命令:

    # 把@e[tag=track_target]换成你要追踪的目标玩家,比如固定玩家@a[name=Steve]
    execute as @e[tag=track_target] at @s run setworldspawn ~ ~ ~
    

    这条命令会以目标玩家的身份、在其当前位置执行setworldspawn,每刻运行的话就能让重生点一直跟着目标走,指南针自然就会指向他了。

  2. tick.json实现每刻执行
    没错,tick.json就是基岩版里实现“每1/20秒自动运行函数”的正确方式!在functions目录下创建这个文件,内容如下:

    {
      "values": [
        "你的命名空间:track_target"
      ]
    }
    

    只要把你的函数命名空间填对,游戏启动后就会每刻自动执行这个追踪函数,不用手动触发。

二、让玩家自行设置追踪目标的可行方案

这个需求完全能实现,推荐用记分板+trigger的方式,简单易上手:

  1. 初始化记分板
    先写一个setup.mcfunction初始化函数,用来创建存储追踪目标的记分板:
    # 创建一个dummy类型的记分板,用来存玩家设置的目标ID
    scoreboard objectives add trackTarget dummy
    # 允许玩家通过trigger修改这个记分板的值
    scoreboard players enable @a trackTarget
    
    然后在同目录的load.json里配置Addon加载时自动运行这个初始化:
    {
      "values": [
        "你的命名空间:setup"
      ]
    }
    
  2. 玩家设置目标的方式
    玩家可以输入命令来设置自己的追踪目标,比如:
    /trigger trackTarget set <目标玩家的实体ID>
    
    如果觉得实体ID不直观,你还可以做个更友好的版本:让玩家输入/track <玩家名>,然后用onChat事件监听这个指令,在响应函数里把目标玩家的ID存到记分板里——这样玩家用起来更顺手。
  3. 修改追踪函数读取自定义目标
    更新track_target.mcfunction,让它读取每个玩家设置的目标:
    # 临时记分板中转目标ID,需要提前用scoreboard objectives add temp dummy创建
    execute as @a at @s store result score @s temp run scoreboard players get @s trackTarget
    execute as @e[type=player,score_temp_min=1] at @s run setworldspawn ~ ~ ~
    
    这样每个玩家的指南针就能追踪自己设置的目标了。

三、要注意的坑

  • 全局重生点冲突问题:因为setworldspawn是修改全局重生点,如果多个玩家同时追踪不同目标,这个方法会出问题——重生点只能有一个,最后执行的那个玩家的目标会覆盖之前的。如果要支持多玩家各自追踪不同目标,你得改用自定义指南针的NBT组件,让指南针直接指向特定实体,不过基岩版1.16的自定义物品配置会复杂一些。
  • 权限问题:测试时要确保开启作弊模式,或者给玩家授予相应的命令权限,不然函数可能执行失败。
  • 命名空间一致性:所有函数和配置文件的命名空间要统一,不然游戏找不到你的函数。

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

火山引擎 最新活动