LastLocation - 最后位置传送
注意
我最近发现了一个名为 StayPut 的插件,它能实现相同的功能,并且效率非常高,简单直接。我建议你直接使用那个插件。
关于当前版本
我一直打算重做这个插件,但由于目前政府工作非常繁忙,时间有限。那些关于公务员工作节奏慢、时间充裕的玩笑?我真希望那是真的!言归正传,尽管我希望能发布尽可能完善的版本,但我还是决定先推出目前已完成的核心部分。核心功能应该可以正常运行,只是我还没来得及制作游戏内便捷配置界面。我会尽快完成它。
在测试中,它的表现相当不错。因此,我决定让有兴趣的用户参与测试,并反馈使用情况。如果你想使用上一个稳定版本,请在版本历史记录中下载之前的发布版本。
当前版本须知
- 当前发布的 3.0 版本 需要手动配置。
- 请查看文档页面,获取配置说明。
LastLocation 是一款用于管理玩家跨世界传送行为的插件。当玩家切换世界时,插件会创建一个“传送票据”,并根据配置文件中的规则和触发条件来决定玩家的最终目的地。以下是其详细功能与配置说明。
核心机制
当玩家发生传送行为时,插件会基于多种触发条件生成一个“传送票据”。多个触发条件可能同时生效,插件会根据其“权重”来决定最终执行哪个规则。权重值越高,优先级越低。
触发条件
触发条件决定了规则在何种情况下被评估,包括
- 离开某个世界
- 到达某个世界
- 使用 Multiverse 传送门
- 离开某种环境(如主世界、下界)
- 到达某种环境
- 离开某个 WorldGuard 区域
- 到达某个 WorldGuard 区域
- 加入服务器
- 重生
可执行动作
每个触发规则可以指定以下动作之一
- LASTLOCATION - 传送至玩家在该世界上次保存的位置
- DISABLED - 不执行任何操作
- SPAWN - 传送至该世界的出生点
- RANDOM - 传送至世界内的一个随机位置
- LOCATION - 传送至一个指定的具体坐标
权重与优先级
每个触发条件都有一个默认权重值,数值越低,优先级越高。默认权重如下:
- 0: 离开世界
- 1: 到达世界
- 2: 加入服务器
- 3: 重生
- 4: 离开环境
- 5: 到达环境
- 6: 离开 WorldGuard 区域
- 7: 到达 WorldGuard 区域
- 8: 使用 MV 传送门
当多个规则被触发时,插件会选择权重值最低(即优先级最高)的规则来执行。你可以在配置中手动设置 weight 值来覆盖默认权重,以控制特定规则的优先级。
配置详解
配置文件采用 YAML 格式,主要结构在 behavior 节点下定义。
世界规则
可以为每个世界分别设置到达 (arriving) 和离开 (departing) 时的行为。
behavior:
world:
world:
arriving:
action: SPAWN
departing:
action: RANDOM
world_nether:
arriving:
action: DISABLED环境规则
可以为特定的环境(如 nether)设置规则。注意:此功能尚未经过充分测试。
behavior:
environment:
nether:
arriving:
action: LOCATION
weight: 10 # 手动设置权重
location: # 序列化的 Location 对象
==: org.bukkit.Location
world: world_nether
x: 22.87
y: 70.0
z: 10.94WorldGuard 区域规则
可以为指定的 WorldGuard 区域设置规则。
behavior:
wgregion:
spawn:
arriving:
action: LOCATION
location: ...
departing:
action: DISABLED全局规则
使用 __global 可以定义适用于所有项目的默认规则,目前支持以下部分:
behavior.wgregion.__global.arrivingbehavior.wgregion.__global.departingbehavior.world.__global.arrivingbehavior.world.__global.departingbehavior.mvportal.__globalconfig.teleport-safety.unsafe-materials.__global
动作详细配置
RANDOM 动作
可以为随机传送指定 X 和 Z 坐标的范围。Y 坐标会自动设置为最高处的方块。
- 使用
low和high定义范围。 - 如果未指定,默认范围为 -20000 到 20000。
- 请确保
low值小于high值。
random:
x:
low: -1098
high: 4098
z:
low: 10000
high: 12000LOCATION 动作
需要提供一个序列化的 Bukkit Location 对象。可以从示例配置中复制格式。
通用配置
插件开关
config.plugin-active:设置为false可完全禁用插件。
全局随机范围
config.random:设置全局的随机传送范围。如果未设置,则使用默认的 -20000 到 20000。
传送安全设置
config.teleport-safety.unsafe-materials.__global:定义全局的不安全方块列表(使用 Spigot 标准 Material 名称)。随机传送会避开这些方块。config.teleport-safety.unsafe-materials.(world):为特定世界定义独立的不安全方块列表。如果为世界设置了列表,将仅使用该列表,而忽略全局列表。config.teleport-safety.max-attempts:设置寻找安全传送点的最大尝试次数。
时间阈值与命令拦截
config.time-thresholds:调整插件内部功能(如临时禁用 LastLocation)的时间容差。在服务器延迟较高时可能需要调整。config.blocked-commands:在此列表中的命令将不会触发 LastLocation 记录。可用于拦截如/warp、/home等可能导致世界切换的命令。
命令与权限
目前插件只有一个命令
/ll reload- 重载配置文件。
所需权限节点
lastlocation.reload
重要须知
- 本插件(特别是环境触发功能)仍处于测试阶段,建议先在测试服务器上进行充分验证。
- 版本 3.0 为重写版本,代码较新,虽然经过基础测试,但不同环境下可能存在未知问题。
- 如需帮助,请使用插件发布页的 Discussion(讨论) 选项卡,不要在论坛其他位置或作者个人资料下提问。