SANY0u 2025-09-27 20:06 采纳率: 0%
浏览 5

我的世界服务器 传送问题

我目前在做主城 目前是打算 新玩家进入主城 有一个加入生存的NPC点击后会随机传送到一个坐标 以后再次点击则传送到上一次下线的坐标 但是目前解决了随机传送 再次点击则传送到上一次下线的坐标 这个功能怎么实现 需要哪些插件 感谢大家回答

  • 写回答

3条回答 默认 最新

  • 檀越@新空间 2025-09-27 20:07
    关注

    晚上好🌙🌙🌙
    本答案参考通义千问

    要实现“新玩家进入主城后,点击NPC可以随机传送;再次点击则传送到上一次下线的坐标”这个功能,你可以通过 Minecraft 服务器插件 来实现。以下是详细的解决方案和所需的插件建议。


    问题分析

    你希望实现以下两个主要功能:

    1. 第一次点击NPC时:随机传送至预设的某个坐标。
    2. 之后再次点击NPC时:传送至玩家最后一次下线时所在的位置(即上次离开时的坐标)。

    🛠️ 实现方式

    一、所需插件推荐

    | 插件名称 | 功能说明 | |----------|----------| | EssentialsX | 提供基础命令、权限管理、传送等功能。支持 setspawntp 等命令。 | | Multiverse-Core / Multiverse-Portals | 可用于创建传送门或自定义传送逻辑。 | | PlayerPointsVault | 可用于记录玩家的坐标信息(可选)。 | | MyWorlds | 可用于管理世界和玩家数据(可选)。 | | Custom NPCs(如: Citizens) | 创建可交互的NPC,支持脚本触发事件。 |

    推荐组合:EssentialsX + Citizens + Multiverse-Core


    🔧 具体实现步骤

    1. 设置NPC并绑定事件

    使用 Citizens 插件创建一个NPC,然后为其添加一个 点击事件,当玩家点击该NPC时触发一个命令或脚本。

    示例配置(Citizens NPC 配置文件):

    npc:
      name: "SurvivalGuide"
      type: VILLAGER
      location: world, 0, 64, 0
      script: survival_script
    

    survival_script 中添加如下内容:

    if (player has permission "survival.use") {
        if (player has variable "last_logout_pos" == null) {
            // 第一次点击,随机传送
            execute as @p run tp @p 100 64 100
            set player variable "last_logout_pos" to [x, y, z]
        } else {
            // 后续点击,传送到上次下线位置
            execute as @p run tp @p [x, y, z]
        }
    }
    

    注意:以上是伪代码,实际需要使用 ScriptAPISkript 实现更复杂的逻辑。


    2. 记录玩家最后下线坐标

    你需要在 玩家下线时 记录其坐标,并保存到数据库中。

    使用 EssentialsX 的 setspawn 命令:

    execute as @a at @s run data merge entity @s {LastLocation:[x,y,z]}
    

    或者使用 Vault + MySQL 存储玩家数据(需配置 Vault 和 MySQL 数据库)。


    3. 读取玩家最后下线坐标

    当玩家再次点击NPC时,从数据库中读取其 LastLocation,并执行传送命令。

    示例命令(通过插件调用):

    tp @p [x,y,z]
    

    💡 可选方案:使用 Skript 脚本语言

    如果你熟悉 Skript,可以编写一个简单的脚本来实现:

    on right click on a villager named "SurvivalGuide":
        if player's last location is not set:
            teleport player to random position
            set player's last location to current position
        else:
            teleport player to player's last location
    

    需要安装 SkriptSkript-MCStats 插件来存储玩家数据。


    📌 总结:关键步骤

    1. 使用 Citizens 创建可交互NPC
    2. 使用 EssentialsX 或 Skript 实现传送逻辑
    3. 记录玩家最后下线坐标(可通过 data 或数据库)。
    4. 根据是否首次点击决定传送目标

    最终效果示例

    • 新玩家第一次点击NPC → 随机传送到指定区域。
    • 再次点击NPC → 传送到他上次下线时的坐标。

    📦 推荐插件列表

    1. EssentialsX – 基础命令与权限控制
    2. Citizens – 创建可交互NPC
    3. Skript(可选)– 自定义脚本逻辑
    4. Vault(可选)– 玩家数据存储
    5. Multiverse-Core(可选)– 多世界管理

    如果你有具体的 Minecraft 版本(如 1.18、1.20 等),我可以提供更精确的插件版本和配置方法。欢迎继续提问!

    评论

报告相同问题?

问题事件

  • 创建了问题 9月27日