Skip to content

ShiratamacoMc/TpBook

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📖 TpBook - 传送之书

Version Minecraft License Java

一个强大的 Minecraft 跨服传送插件,提供优雅的图形界面和丰富的传送功能

功能特性安装指南配置说明命令与权限跨服配置


📋 目录


✨ 功能特性

🎯 核心功能

  • 📗 绑定传送之书 - 将特定玩家绑定到传送书,快速传送到好友身边

    • 支持快速传送模式(无需对方确认)
    • 自定义绑定数量限制
    • 在线状态实时显示
    • 跨服传送支持
  • 📕 全局传送之书 - 传送到服务器内任意在线玩家

    • 支持跨服玩家列表
    • 传送请求系统
    • 防骚扰保护
  • 📘 家之书 - 管理和传送到你的家点

    • 多个家点支持
    • 图形化家点管理
    • 家点重命名和删除
    • 权限分组限制家点数量
  • 📙 坐标传送之书 - 传送到指定坐标

    • 精确坐标输入
    • 安全检查和自动调整
    • 费用预览

🌐 跨服支持

  • 多种消息代理

    • BungeeCord/Velocity 插件通道
    • Redis 消息代理(推荐大型服务器)
    • 集群ID隔离
  • 多数据库支持

    • SQLite(单服默认)
    • MySQL(跨服推荐)
    • MariaDB
    • PostgreSQL

💎 高级特性

  • 经济系统

    • 基于距离的传送费用
    • 跨维度额外费用
    • 权限组费用折扣
    • 免费传送次数系统
  • 传送控制

    • 传送延迟(Warmup)系统
    • 移动/受伤取消传送
    • 冷却时间系统
    • 权限组差异化配置
  • 安全保护

    • 传送位置安全检查
    • 自动调整到安全位置
    • 世界边界检查
    • 窒息/岩浆/虚空检测
  • 用户体验

    • 基于 FancyDialogs 的精美GUI
    • 双语支持(中文/英文)
    • 声音和标题提示
    • ActionBar 消息显示

🚀 安装指南

前置要求

  • 服务器核心: Paper 1.20+ / Purpur 1.20+ / Folia(推荐 Paper)
  • Java 版本: Java 17 或更高
  • 必需插件: FancyDialogs v0.0.25+
  • 可选插件:
    • Vault(用于经济系统)
    • 经济插件(如 EssentialsX)

安装步骤

  1. 下载插件

    • Releases 下载最新版本
    • 确保同时下载 FancyDialogs-x.x.x.jar
  2. 安装到服务器

    # 将插件放入 plugins 文件夹
    server/
    └── plugins/
        ├── FancyDialogs-0.0.25.jar
        └── TpBook-1.0.0.jar
  3. 重启服务器

    # 停止服务器
    stop
    
    # 启动服务器
    # Windows: start.bat
    # Linux: ./start.sh
  4. 验证安装

    # 在控制台执行
    plugins
    
    # 应该看到:
    # [✓] FancyDialogs v0.0.25
    # [✓] TpBook v1.0.0
  5. 配置插件(可选)

    • 编辑 plugins/TpBook/config.yml 进行个性化配置
    • 编辑 plugins/TpBook/lang/zh_CN.ymlen_US.yml 自定义消息

⚙️ 配置说明

主配置文件 (config.yml)

语言设置

# 支持的语言: zh_CN (简体中文), en_US (English)
language: zh_CN

message:
  # 消息显示模式: chat (聊天栏) 或 actionbar (快捷栏上方)
  display-mode: actionbar

数据库配置

单服模式(默认)

database:
  type: SQLITE  # 使用 SQLite,无需额外配置

跨服模式(MySQL)

database:
  type: MYSQL
  mysql:
    host: localhost
    port: 3306
    database: tpbook
    username: root
    password: 'your_password'
    pool:
      maximum-pool-size: 10
      minimum-idle: 2
      connection-timeout: 30000

冷却时间配置

cooldown:
  default: 60    # 普通玩家 60 秒
  vip: 30        # VIP 玩家 30 秒
  svip: 10       # SVIP 玩家 10 秒
  admin: 0       # 管理员无冷却

传送延迟配置

warmup:
  enabled: true
  default: 5     # 普通玩家 5 秒延迟
  vip: 3         # VIP 玩家 3 秒
  svip: 1        # SVIP 玩家 1 秒
  admin: 0       # 管理员无延迟
  
  cancel-on-move: true      # 移动取消传送
  cancel-on-damage: true    # 受伤取消传送
  sound-enabled: true       # 播放提示音
  title-enabled: true       # 显示 Title

经济系统配置

pay-to-teleport:
  enabled: true  # 启用付费传送
  
  default:
    per-block: 0.1           # 每格 0.1 金币
    cross-dimension: 100.0   # 跨维度 100 金币
    minimum-cost: 1.0        # 最低 1 金币
    maximum-cost: 1000.0     # 最高 1000 金币
  
  vip:
    per-block: 0.05          # VIP 享受 50% 折扣
    cross-dimension: 50.0
    minimum-cost: 0.5
    maximum-cost: 500.0

安全检查配置

safety-check:
  enabled: true
  check-lava: true          # 检查岩浆
  check-void: true          # 检查虚空
  check-suffocation: true   # 检查窒息
  check-world-border: true  # 检查世界边界

📝 命令与权限

玩家命令

命令 描述 权限
/tpbook get 领取传送书 tpbook.command.get
/tpbook info [玩家] 查看传送书信息 tpbook.command.info
/tpbook accept 接受传送请求 tpbook.command.accept
/tpbook deny 拒绝传送请求 tpbook.command.deny
/tpbook acceptbind 接受绑定请求 tpbook.command.acceptbind
/tpbook denybind 拒绝绑定请求 tpbook.command.denybind
/tpbook checkfreetps [玩家] 查看免费传送次数 tpbook.command.checkfreetps

管理员命令

命令 描述 权限
/tpbook give <玩家> 给予传送书 tpbook.command.give
/tpbook unlock <玩家> <功能> 解锁功能 tpbook.command.unlock
/tpbook lock <玩家> <功能> 锁定功能 tpbook.command.lock
/tpbook setuses <玩家> <功能> <次数> 设置使用次数 tpbook.command.setuses
/tpbook adduses <玩家> <功能> <次数> 增加使用次数 tpbook.command.adduses
/tpbook addfreetps <玩家> <次数> 增加免费传送次数 tpbook.command.addfreetps
/tpbook setfreetps <玩家> <次数> 设置免费传送次数 tpbook.command.setfreetps
/tpbook reload 重载配置 tpbook.command.reload

功能类型: bound, global, home, coord

权限节点

核心权限

权限 描述 默认
tpbook.* 所有权限 OP
tpbook.admin 管理员权限 OP
tpbook.bypass.* 绕过所有限制 OP

功能解锁权限

权限 描述 默认
tpbook.feature.* 解锁所有功能 false
tpbook.feature.bound 解锁绑定传送 false
tpbook.feature.global 解锁全局传送 false
tpbook.feature.home 解锁家传送 false
tpbook.feature.coord 解锁坐标传送 false

冷却时间权限

权限 冷却时间 默认
tpbook.cooldown.default 60秒 true
tpbook.cooldown.vip 30秒 false
tpbook.cooldown.svip 10秒 false
tpbook.cooldown.admin 0秒 OP
tpbook.bypass.cooldown 无冷却 OP

传送延迟权限

权限 延迟时间 默认
tpbook.warmup.default 5秒 true
tpbook.warmup.vip 3秒 false
tpbook.warmup.svip 1秒 false
tpbook.warmup.admin 0秒 OP

经济权限

权限 费率 默认
tpbook.cost.default 0.1/格 true
tpbook.cost.vip 0.05/格 false
tpbook.cost.svip 0.02/格 false
tpbook.cost.admin 免费 OP
tpbook.teleport.free 完全免费 OP

数量限制权限

家点数量

权限 数量 默认
tpbook.homes.limit.3 3个 true
tpbook.homes.limit.5 5个 false
tpbook.homes.limit.10 10个 false
tpbook.homes.unlimited 无限 OP

绑定数量

权限 数量 默认
tpbook.bindings.limit.5 5个 true
tpbook.bindings.limit.10 10个 false
tpbook.bindings.limit.20 20个 false
tpbook.bindings.unlimited 无限 OP

📚 使用教程

1️⃣ 获取传送书

# 玩家领取传送书
/tpbook get

# 管理员给予传送书
/tpbook give PlayerName

初次获得的传送书所有功能都是锁定的,需要管理员解锁或玩家自行获得权限。

2️⃣ 解锁功能

方式一:权限节点(推荐)

# 在 LuckPerms 或其他权限插件中给予权限
# 给予玩家绑定传送功能
lp user PlayerName permission set tpbook.feature.bound true

# 给予 VIP 组所有传送功能
lp group vip permission set tpbook.feature.* true

方式二:管理员命令

# 解锁单个功能
/tpbook unlock PlayerName bound
/tpbook unlock PlayerName home

# 设置使用次数(-1 表示无限)
/tpbook setuses PlayerName bound -1
/tpbook setuses PlayerName home 100

3️⃣ 绑定传送之书使用

  1. 绑定玩家

    • 手持传送书
    • 准星对准要绑定的玩家
    • 按住 Shift + 右键
    • 对方接受后绑定成功
  2. 传送到绑定玩家

    • 手持传送书右键打开菜单
    • 点击玩家名称
    • 等待对方接受(或使用快速传送模式)
    • 传送成功!
  3. 快速传送模式

    • 打开绑定玩家菜单
    • 点击 "⚙ 管理"
    • 点击 "✓ 请求启用快速传送"
    • 对方同意后,以后传送无需确认

4️⃣ 家之书使用

  1. 设置家点

    • 手持家之书
    • 走到想设为家的位置
    • 左键点击方块左键点击空气
    • 输入家点名称
    • 家点设置成功!
  2. 传送到家

    • 手持家之书右键打开菜单
    • 点击家点名称
    • 等待传送延迟
    • 传送成功!
  3. 管理家点

    • 打开家之书菜单
    • 点击家点旁边的 "管理" 按钮
    • 可以重命名或删除家点

5️⃣ 全局传送之书

  1. 手持全局传送之书右键
  2. 查看所有在线玩家(包括跨服)
  3. 点击玩家发送传送请求
  4. 等待对方接受
  5. 传送成功!

6️⃣ 坐标传送之书

  1. 手持坐标传送之书右键
  2. 依次输入 X、Y、Z 坐标
  3. 确认坐标和费用
  4. 点击 "确认传送"
  5. 等待传送延迟
  6. 传送成功!

🌐 跨服配置

BungeeCord / Velocity 模式(默认)

适用场景: 中小型服务器,简单部署

配置步骤:

  1. 在每个子服安装插件

    # 每个子服的 plugins 文件夹都需要
    server1/plugins/TpBook-1.0.0.jar
    server2/plugins/TpBook-1.0.0.jar
    server3/plugins/TpBook-1.0.0.jar
  2. 配置 MySQL 数据库(所有子服使用同一个数据库)

    # config.yml (所有子服相同配置)
    cross-server:
      enabled: true
      broker-type: PLUGIN_MESSAGE
      cluster-id: default  # 相同集群ID才能通信
    
    database:
      type: MYSQL
      mysql:
        host: mysql.example.com
        port: 3306
        database: tpbook_network
        username: tpbook
        password: 'strong_password'
  3. 配置 server.yml

    # 每个子服都需要配置自己的服务器名称
    # server1/plugins/TpBook/server.yml
    server-name: lobby
    
    # server2/plugins/TpBook/server.yml
    server-name: survival
    
    # server3/plugins/TpBook/server.yml
    server-name: creative
  4. 重启所有服务器

Redis 模式(推荐大型服务器)

适用场景: 大型服务器群,高并发

优势:

  • 更低的延迟
  • 更高的性能
  • 更可靠的消息传递

配置步骤:

  1. 安装 Redis 服务器

    # Ubuntu/Debian
    sudo apt install redis-server
    sudo systemctl start redis
    
    # 或使用 Docker
    docker run -d -p 6379:6379 redis:latest
  2. 配置插件

    # config.yml (所有子服)
    cross-server:
      enabled: true
      broker-type: REDIS  # 使用 Redis
      cluster-id: default
    
    redis:
      host: redis.example.com
      port: 6379
      password: 'your_redis_password'  # 如果没设密码则留空
      use-ssl: false
      channel: tpbook
    
    database:
      type: MYSQL
      mysql:
        # ... MySQL 配置
  3. 验证连接

    # 在任意子服控制台查看日志
    [TpBook] Redis connection established
    [TpBook] Cross-server mode enabled

多集群隔离

如果你有多个独立的服务器群组,可以使用不同的 cluster-id 隔离:

# 生存服务器群组
cluster-id: survival_cluster

# 创造服务器群组
cluster-id: creative_cluster

# 小游戏服务器群组
cluster-id: minigame_cluster

💰 经济系统

启用经济功能

  1. 安装 Vault 和经济插件

  2. 启用付费传送

    # config.yml
    pay-to-teleport:
      enabled: true
  3. 配置费用

    pay-to-teleport:
      default:
        per-block: 0.1           # 每格 0.1 金币
        cross-dimension: 100.0   # 跨维度固定 100 金币
        minimum-cost: 1.0        # 最低费用
        maximum-cost: 1000.0     # 最高费用

费用计算示例

示例 1: 同维度传送

距离: 1000 格
费率: 0.1 金币/格
费用 = 1000 × 0.1 = 100 金币

示例 2: 跨维度传送

距离: 500 格
费率: 0.1 金币/格
跨维度: 100 金币
费用 = (500 × 0.1) + 100 = 150 金币

示例 3: 最大费用限制

距离: 50000 格
费率: 0.1 金币/格
理论费用 = 50000 × 0.1 = 5000 金币
最大限制 = 1000 金币
实际费用 = 1000 金币 ✓

免费传送次数

管理员可以给予玩家免费传送次数:

# 增加 10 次免费传送
/tpbook addfreetps PlayerName 10

# 设置为 50 次
/tpbook setfreetps PlayerName 50

# 查看剩余次数
/tpbook checkfreetps PlayerName

使用优先级:

  1. tpbook.teleport.free 权限(完全免费)
  2. 免费传送次数(有次数则使用)
  3. 根据权限组扣费

🎁 权限组示例

LuckPerms 配置示例

# ===== 默认玩家 =====
lp group default permission set tpbook.feature.bound true
lp group default permission set tpbook.homes.limit.3 true
lp group default permission set tpbook.bindings.limit.5 true
lp group default permission set tpbook.cooldown.default true
lp group default permission set tpbook.warmup.default true
lp group default permission set tpbook.cost.default true

# ===== VIP 玩家 =====
lp creategroup vip
lp group vip parent set default
lp group vip permission set tpbook.feature.* true
lp group vip permission set tpbook.homes.limit.5 true
lp group vip permission set tpbook.bindings.limit.10 true
lp group vip permission set tpbook.cooldown.vip true
lp group vip permission set tpbook.warmup.vip true
lp group vip permission set tpbook.cost.vip true

# ===== SVIP 玩家 =====
lp creategroup svip
lp group svip parent set vip
lp group svip permission set tpbook.homes.limit.10 true
lp group svip permission set tpbook.bindings.limit.20 true
lp group svip permission set tpbook.cooldown.svip true
lp group svip permission set tpbook.warmup.svip true
lp group svip permission set tpbook.cost.svip true

# ===== 管理员 =====
lp group admin permission set tpbook.* true
lp group admin permission set tpbook.homes.unlimited true
lp group admin permission set tpbook.bindings.unlimited true

权限组对比表

功能 默认玩家 VIP SVIP 管理员
解锁功能
绑定传送
全局传送
家传送
坐标传送
限制
家点数量 3 5 10 无限
绑定数量 5 10 20 无限
冷却时间 60秒 30秒 10秒 0秒
传送延迟 5秒 3秒 1秒 0秒
费用
每格费用 0.1 0.05 0.02 免费
跨维度 100 50 20 免费

❓ 常见问题

Q1: 插件无法加载?

A: 检查以下几点:

  1. 确保安装了 FancyDialogs 前置插件
  2. 确保使用 Java 17+
  3. 确保使用 Paper 1.20+ 核心(不支持 Spigot)
  4. 查看控制台错误日志

Q2: 跨服传送不工作?

A: 检查配置:

  1. 所有子服都安装了插件
  2. 所有子服使用相同的 MySQL 数据库
  3. 所有子服的 cluster-id 必须相同
  4. 每个子服的 server-name 必须不同
  5. BungeeCord 配置了 ip_forward: true

Q3: 传送扣费不正确?

A:

  1. 检查是否安装了 Vault 和经济插件
  2. 检查玩家的权限组(tpbook.cost.*
  3. 检查是否有 tpbook.teleport.free 权限
  4. 检查免费传送次数(/tpbook checkfreetps

Q4: 如何重置玩家数据?

A:

-- 使用 MySQL 客户端
DELETE FROM tpbook_players WHERE player_uuid = 'uuid-here';
DELETE FROM tpbook_homes WHERE owner_uuid = 'uuid-here';
DELETE FROM tpbook_bindings WHERE player_uuid = 'uuid-here';

Q5: 性能优化建议?

A:

  1. 使用 Redis 而不是 PLUGIN_MESSAGE
  2. 使用 MySQL 而不是 SQLite
  3. 调整数据库连接池大小:
    database:
      mysql:
        pool:
          maximum-pool-size: 20  # 根据服务器调整
          minimum-idle: 5
  4. 启用调试模式排查问题:
    debug:
      enabled: true

Q6: 如何自定义消息?

A: 编辑 plugins/TpBook/lang/zh_CN.ymlen_US.yml

# 修改前缀
prefix: "&7[&6我的传送&7]&r "

# 修改传送成功消息
teleport:
  success: "&a✓ 传送成功!欢迎来到新世界!"
  
# 修改书本名称
book:
  bound-player-book: "&d我的好友传送书"

保存后执行 /tpbook reload 重载配置。

欢迎提交建议: Issues


📞 支持与反馈

  • QQ: 3323911737

🤝 贡献指南

欢迎贡献代码!请遵循以下步骤:

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

代码规范

  • 使用 Java 17 特性
  • 遵循 Google Java Style Guide
  • 添加必要的注释
  • 编写单元测试

📜 许可证

Copyright © 2025 TpBook Team. All Rights Reserved.

本软件及相关文档文件(以下简称"软件")的版权归 TpBook Team 所有。

使用许可

您可以:

  • ✓ 在您的 Minecraft 服务器上使用本软件
  • ✓ 修改配置文件以适应您的需求
  • ✓ 在服务器内部分享配置经验

您不得:

  • ✗ 未经许可修改、反编译或逆向工程本软件
  • ✗ 出售、转售或商业化本软件
  • ✗ 移除或修改版权声明
  • ✗ 在未经授权的情况下重新分发本软件

免责声明

本软件按"原样"提供,不提供任何明示或暗示的保证。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责。


🌟 特别感谢

  • FancyDialogs - 提供精美的对话框系统
  • Paper - 高性能 Minecraft 服务器核心
  • HuskHomes - 传送系统设计参考
  • 所有测试人员和反馈者

⭐ 如果这个插件对你有帮助,请给个 Star!⭐

About

为YuzuMC提供有限传送的工具书

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages