和我传送

和我传送

你的坐骑会跟随你完成每一次传送——无论是命令、插件还是传送门,都一样。保持骑乘状态,一起抵达。

玩家运载

TpWithMe – 传送与我同行

Teleport With Me

喜欢你的马吗?现在你不会再抛下它独自传送了。所有可骑乘生物同样适用!

你的坐骑会跟随你穿过每一次传送——命令、插件、传送门,无所不包。保持骑乘状态,一起抵达。

从 1.1.1 版本开始,本模组可使用 LuckPerms 配置权限。

✨ 功能特性

  • 🐴 坐骑会随你一起传送,包括每一次 /tp、/home、传送门、末影珍珠、紫颂果,或任何其他传送
  • 🧑‍🤝‍🧑 传送后玩家仍保持骑乘状态
  • 🌍 跨维度旅行 —— 主世界 ↔ 下界 ↔ 末地 (可配置)
  • 🔒 安全检查 —— 坐骑不会被传送到固体方块中 (可配置)
  • 🛡️ 传送过程中对坐骑施加伤害抗性,防止其死亡
  • 🚫 实体黑名单 —— 将特定坐骑排除在传送之外
  • 🔁 传送后重新骑乘监视器 —— 捕获边缘情况下的下马并自动修复
  • 🧩 可选的 Open Parties and Claims 支持 —— 尊重领地访问权限、紫颂果规则和末影珍珠屏障组
  • ⚙️ 可选的 Mod Menu + Cloth Config 支持,提供游戏内客户端配置界面
  • ⚙️ 可选的 LuckPerms 集成(配置开关)

🐴 支持的坐骑

全部 14 种原版可骑乘实体:

坐骑

🎮 命令

/tpwithme info - 管理员(gamemaster) - 在聊天中显示当前配置值。
/tpwithme reload - 管理员(gamemaster) - 从磁盘重新加载 tpwithme.json。

⚙️ 配置

文件:config/tpwithme.json
首次启动时自动创建。使用 /tpwithme reload 应用更改,无需重启。

json
{
  "enabled": true,
  "useLuckPerms": false,
  "crossDimensionalTeleport": true,
  "enderPearlTeleport": true,
  "chorusFruitTeleport": true,
  "respectOpenPartiesAndClaims": true,
  "requireSaddle": true,
  "checkSafety": true,
  "applyTeleportProtection": true,
  "protectionDurationTicks": 60,
  "safetySearchRadius": 2,
  "blacklistedEntities": []
}

🔄 选项

enabled
总开关。设为 false 可在不移除模组的情况下完全禁用它。
默认值:true

useLuckPerms
当安装了 luckperms 模组时,启用 LuckPerms 权限检查。

如果为 true 且 LuckPerms 存在,TpWithMe 会检查:

  • tpwithme.use
  • tpwithme.crossdimensionalteleport
  • tpwithme.enderpearlteleport
  • tpwithme.chorusfruitteleport

当 LuckPerms 启用时,玩家必须被显式授予这些权限。
如果未安装 LuckPerms,TpWithMe 会自动回退为允许所有人使用该模组。
默认值:false

crossDimensionalTeleport
允许坐骑跟随跨维度变化(主世界 ↔ 下界 ↔ 末地)。
当为 false 时,只有同维度传送才会携带坐骑。
默认值:true

enderPearlTeleport
允许末影珍珠携带你的坐骑。
当为 false 时,骑乘时使用末影珍珠将采用原版行为,只传送玩家。
默认值:true

chorusFruitTeleport
允许紫颂果携带你的坐骑。
当为 false 时,骑乘时食用紫颂果将采用原版行为,只传送玩家。
默认值:true

respectOpenPartiesAndClaims
当安装了 Open Parties and Claims 时,尊重其领地保护。

TpWithMe 在将坐骑移入领地之前会检查领地访问权限。对于骑乘时的紫颂果,它会尊重 OPAC 的紫颂果例外选项。对于骑乘时的末影珍珠,它会尊重 OPAC 配置的末影珍珠实体屏障组(若存在)。

仅当你刻意希望 TpWithMe 忽略 OPAC 领地保护时才禁用此项。
默认值:true

requireSaddle
仅当坐骑装备了相应的控制物品时才传送它:

  • 鞍 —— 马、驴、骡、骷髅马、僵尸马、骆驼、骆驼尸壳、猪、炽足兽、鹦鹉螺、僵尸鹦鹉螺
  • 挽具 —— 快乐恶魂
  • 豁免 —— 羊驼和商人羊驼(由拴绳控制,无鞍槽位)

默认值:true

checkSafety
传送之前,检查目的地是否有足够空间让坐骑直立、骑手坐在其上方。
如果空间太小,坐骑将留在原地,并向玩家发送一条消息。

使用直接的方块碰撞形状迭代 —— 即使对于快乐恶魂(4×4×4 格)这样的大型坐骑也可靠。
默认值:true

applyTeleportProtection
传送后立即对坐骑施加 抗性提升 V,持续 protectionDurationTicks 刻。这可以防止传送过程中因窒息或摔落伤害而死亡。
默认值:true

protectionDurationTicks
传送后伤害免疫的持续时间,以游戏刻为单位(20 刻 = 1 秒)。
默认值:60(3 秒)

safetySearchRadius
当 checkSafety 为 true 且确切目的地被阻挡时,模组会在此半径(以方块为单位)内搜索附近的安全位置。

搜索优先级:先向上搜索 Y(最自然),然后水平偏移 X/Z,最后向下搜索 Y。

设为 0 可禁用搜索,仅检查确切目的地。
默认值:2

blacklistedEntities
一个实体类型 ID 列表,这些实体绝不传送,无论其他设置如何。
使用命名空间 ID,例如 "minecraft:horse" 或 "mymod:custom_mount"。
默认值:[](空)

🔐 LuckPerms

TpWithMe 仅在以下两个条件同时为真时才使用 LuckPerms:

  1. 在 config/tpwithme.json 中将 useLuckPerms 设为 true
  2. 服务器上实际安装了 luckperms 模组

如果任一条件为假,所有人都可以使用 TpWithMe,不需要权限插件。
如果 LuckPerms 启用,缺失的权限节点默认为 false。

权限节点

tpwithme.use - 允许玩家在传送时携带坐骑
tpwithme.crossdimensionalteleport - 允许玩家跨维度携带坐骑
tpwithme.enderpearlteleport - 允许玩家使用末影珍珠时携带坐骑
tpwithme.chorusfruitteleport - 允许玩家食用紫颂果时携带坐骑

示例命令

/lp group default permission set tpwithme.use true
/lp group default permission set tpwithme.crossdimensionalteleport false
/lp group default permission set tpwithme.enderpearlteleport false
/lp group default permission set tpwithme.chorusfruitteleport false

/lp group vip permission set tpwithme.use true
/lp group vip permission set tpwithme.crossdimensionalteleport true
/lp group vip permission set tpwithme.enderpearlteleport true
/lp group vip permission set tpwithme.chorusfruitteleport true

/tpwithme info

/tpwithme info 现在还会显示 LuckPerms 是否处于以下状态:

  • disabled(已禁用)
  • configured, but mod not installed(已配置,但模组未安装)
  • active(已启用)

🔨 工作原理

TpWithMe 在 ServerPlayer#teleport(TeleportTransition) 上使用 Mixin:

  1. HEAD 注入 —— 在玩家传送之前,捕获当前载具并检查资格(鞍、黑名单、LuckPerms 权限、跨维度标志)。
  2. 玩家正常传送(Minecraft 处理下马并移动玩家)。
  3. RETURN 注入 —— 玩家抵达后,目标区块此时已加载。安全检查基于实际的方块碰撞形状运行。如果安全,载具会被传送到玩家的新位置并调用 startRiding()。
  4. RemountWatcher —— 3 刻后,一个刻监听器验证玩家是否仍处于骑乘状态。如果 Minecraft 强制下马(罕见的边缘情况),载具会被移动到玩家处并再次尝试重新骑乘。

🧑‍🤝‍🧑 兼容性

兼容性

其他模组
如果另一个模组在 TpWithMe 的 HEAD 注入之前强制玩家下马,载具将无法被捕获。RemountWatcher 在某些情况下可以恢复这一点。如果你遇到冲突,请提交 issue。

📦 安装

  1. 为 Minecraft 安装 Fabric Loader。
  2. 下载 Fabric API 并放入 mods/。
  3. 下载 tpwithme-<version>.jar 并放入 mods/。
  4. 启动 Minecraft。首次运行时配置会自动创建。

🏜️ 测试服务器

欢迎加入我的 Minecraft 服务器测试我的模组:play.swordfishbe.eu