RTP - 高性能随机传送插件

授权转载 开源 RTP - 高性能随机传送插件 2024-07-20

完成注册/登录后下载
版权类型
授权转载
插件中文名称
随机传送
插件英文名称
RTP
原帖地址
https://www.spigotmc.org/resources/rtp.94812/
支持的核心(服务端)
  1. Spigot
  2. Paper
  3. Purpur
  4. PufferFish
  5. Leaves
语言支持
多语言
前置组件
无
适配版本(Java)
  1. 1.21
  2. 1.20
  3. 1.19
  4. 1.18
  5. 1.17
  6. 1.16
  7. 1.15
  8. 1.14
  9. 1.13
  10. 1.12
  11. 1.11
  12. 1.10
  13. 1.9
  14. 1.8
高性能

随机传送插件通常被认为是容易实现的,但实际上这是服务器中最耗费资源的插件类型之一。

因为 RTP 需要进行区块生成、区块加载、安全位置寻找、非安全位置重新查找、玩家传送等复杂操作。

市面上的随机传送插件往往会滞后服务器或者传送前等待一段时间,这严重影响了玩家的游戏体验。

为了解决这些问题 RTP 使用了位置缓存、Paper异步加载、异步随机化、玩家队列等方式改进了随机传送的问题。

所以,RTP 每次进行随机传送几乎只需要 <2ms(对于缓存好的位置) <200ms(对于缓存外的位置)。

为什么要让玩家随机传送时等待呢?试试 RTP 给你带来的超快随机传送

高可配置性


  • 每个世界内任意数量的传送区域
  • 每个区域和每个世界的传送配置
    • 传送区域形状(方形 / 圆形)
    • 传送半径和中心半径
    • 中心 x,z 坐标
    • 偏向加权(朝向或远离中心)
    • 最小值和最大传送高度值
    • 可选天空亮度检查(避免传送到地下)
    • 可选的世界权限要求
    • 可分 Region(区域),这意味着可以在地图任意位置划定多个随机传送区域,他们是可重复的(可参考下图 2)
  • 通过命令更新区域和世界配置
  • 多维度支持
  • 传送安全
    • 可配置的安全半径检查
    • 可配置的安全平台创建
    • 可配置的无敌时间
    • 可配置危险方块黑名单
  • 具有权限的世界和玩家参数
  • 自动从不良展示位置中吸取教训
    • 每次失败时,选择在统计上都会变得更快。
  • 完全可配置的日志和消息 lang.yml
  • 基于权限的声音和效果
  • 面向开发人员的 API
72e0fd910f84b92c1530a4b630a4254f36044eeb

bb818c173d5c9b00eacbb51fe79a8ef47ef93a7f


高兼容性

PlaceholderAPI 支持


  • %rtp_player_status% - 玩家当前的传送状态
  • %rtp_total_queue_length% - “/rtp”将使用的区域中玩家可用的位置总数
  • %rtp_public_queue_length% - “/rtp”将使用的区域中可供所有人使用的位置数
  • %rtp_personal_queue_length% - “/rtp”将使用的区域中专门分配给该玩家的位置数
  • %rtp_teleport_world% - 随机传送的目标世界
  • %rtp_teleport_x% - 随机传送的目标位置 X 坐标
  • %rtp_teleport_y% - 随机传送的目标世界 Y 坐标
  • %rtp_teleport_z% - 随机传送的目标世界 Z 坐标
领地支持

对应常用的领地插件,可以避免传送到其他人的领地。
  • Domain
  • Factions (and any factions plugins using massivecraft.factions as a base)
  • GriefDefender
  • GriefPrevention
  • HuskTowns
  • Lands
  • TownyAdvanced
  • WorldGuard
简单易用

  • /rtp - 传送到你所在世界的默认区域
  • /rtp [parameter]:[value] - 在传送之前指定区域、世界、玩家和/或临时区域参数
  • /rtp update - 通过命令更新任意/所有配置
  • /rtp fill - 尝试一个区域中所有可能的展示位置,并存储任何失败的展示位置和生物群落位置。(不稳定)
搬运授权证明

fdzwxw


汉化配置

YAML:
# 用户体验的一般消息配置
# 支持 Bukkit 颜色代码和十六进制颜色代码
# 支持 PlaceholderAPI 引用

# 额外占位符列表
# 格式:Pn - 其中 n 是此列表中的索引
placeholders:
  - '[#f2d68f传送&f]' #P0

# 当正在传送时,显示此消息
alreadyTeleporting: '&f[P0] 正在传送中!'
delayMessage: '&f[P0]  [delay]秒后开始传送,请勿移动!'
chunkLoading: '&f[P0] 区块加载中...'
teleportMessage: '&f[P0] 您出生在了x:%player_x% y:%player_y% z:%player_z% (耗时 [processingTime]) '

# 如果传送被取消
teleportCancel: '&f[P0] 传送已取消!'

# 如果在达到最大尝试次数后找不到安全地点
unsafe: '&f[P0] [attempts]次尝试后无法找到安全出生点'

# 当玩家处于冷却期
cooldownMessage: '&f[P0] 等待 [remainingCooldown] 后才能继续随机传送'

# 如果区域没有排队的位置,并且玩家没有 rtp.unqueued 权限
noLocationsQueued: '#f5eb73[P0] 未准备就绪'

# 当队列发生变化时
queueUpdate: '#2636ef[P0]队列中[spot]'

# 如果玩家在该区域没有足够的金钱进行传送
# 占位符:[money] - 执行命令所需的金额
notEnoughMoney: '&f[P0] 您没有用于传送的 [money]$'

# 对于时间占位符,表示天数、小时数、分钟数、秒数的词汇
days: 天
hours: 小时
minutes: 分钟
seconds: 秒
millis: 毫秒

# 如果配置文件的版本低于最新版
# 占位符:[filename] - 文件名,包括扩展名
oldFile: '&f[P0] 正在更新旧的 [filename]'

# 检测到未在配置文件中的 Bukkit 世界
# 占位符:[world] - 被检测到的世界
newWorld: '&f[P0] 检测到新世界'[world]''

# 世界在 Bukkit 中不存在
invalidWorld: '&f[P0] 不存在的世界'[world]''

# 配置更新
updatingWorlds: '&f[P0] 正在升级世界...'
updatedWorlds: '&f[P0] 世界配置文件升级完成!'

updatingRegions: '&f[P0] 正在升级区域...'
updatedRegions: '&f[P0] 区域配置文件升级完成!'

# 插件重新加载文本
reloading: '&f[P0] 正在加载[filename]...'
reloaded: '&f[P0] 成功加载[filename].'
updating: '&a[P0] 正在升级 [filename]...'
updated: '&a[P0] 成功升级 [filename].'

# 插件没有用户请求的命令
# 占位符:[arg] - 尝试的参数
badArg: '&c[P0] 使用错误: [arg]'

# 用户没有执行请求命令的权限
noPerms: '#f2d68f无权限'

# 用户试图唤醒一个不向其位置发送消息的世界,但没有权限
# 占位符:[world] - 命令中尝试的世界
noGlobalPerms: '#f2d68f无权限'

fillStart: '&a[P0] 开始填充区域 [region]'
fillCancel: '&f[P0] 取消填充区域 [region]'
fillPause: '#A020F0[P0] 暂停填充区域 [region]'
fillResume: '#10A5F5[P0] 继续填充区域 [region]'
fillRunning: '&c[P0] 区域 [region] 的填充任务已在运行'
fillNotRunning: '&c[rtp] 区域 [region] 的填充任务未运行'
fillStatus: '&a[P0] 区域 [region] 完成 [chunks] / [totalChunks] 区块的填充速率为 [cps] 区块每秒 。预计完成时间: [eta]'

# 信息命令
infoTitle: '&a======RTP 信息======'
infoChunks: '#D4AF37当前由 RTP 加载的区块数: [chunks]'
infoWorldHeader: '#008080世界:'
infoWorld: '  #21ADA8[world]'
infoRegionHeader: '#63C5DA区域:'
infoRegion: '  #52B2BF[region]'

# 子信息
worldInfo:
  - '#21ADA8[world]:'
  - '#99EEBB  名称: [name]'
  - '#99EEBB  区域: [region]'
  - '#99EEBB  需要权限: [requirePermission]'
  - '#99EEBB  覆盖设置: [override]'

regionInfo:
  - '#52B2BF[region]:'
  - '#58CCED  世界: [world]'
  - '#58CCED  形状: [shape]'
  - '#58CCED  需要权限: [requirePermission]'
  - '#58CCED  超越世界边界: [worldBorderOverride]'
  - '#58CCED  缓存上限: [cacheCap]'
  - '#58CCED  已缓存: [cached]'

# 命令描述
rtp: '#f2d68f/rtp - 随机传送'
help: '#f2d68f/rtp help - 这个帮助页面'
reload: '#f2d68f/rtp reload - 重新加载'
fill: '#f2d68f/rtp fill - 预加载'

# 用于 PAPI 的玩家传送状态占位符
PLAYER_AVAILABLE: '&a空闲'
PLAYER_COOLDOWN: '#f2d68f冷却中'
PLAYER_SETUP: '#f2d68f选择位置中'
PLAYER_LOADING: '#f2d68f加载区块中'
PLAYER_TELEPORTING: '#f2d68f传送中'

# 显示标题
# 删除或设置标题为 "" 以禁用
# 推荐使用 PlaceholderAPI 来获取坐标
title: '#f2d68f你出生在地球的一个角落'
subtitle: ''
fadeIn: 20
stay: 60
fadeOut: 20

actionbar: ''

version: '1.0'
作者
Radiation_pi
下载
792
查看
3,478
首次发布
最后更新

评分

0.00 星 0 次评分

Radiation_pi 的其他资源

后退
顶部 底部