2021-06-11 14:02:28 +02:00
|
|
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
|
|
From: Sudzzy <originmc@outlook.com>
|
|
|
|
Date: Thu, 3 Mar 2016 02:50:31 -0600
|
|
|
|
Subject: [PATCH] Configurable inter-world teleportation safety
|
|
|
|
|
|
|
|
People are able to abuse the way Bukkit handles teleportation across worlds since it provides a built in teleportation
|
|
|
|
safety check.
|
|
|
|
|
|
|
|
To abuse the safety check, players are required to get into a location deemed unsafe by Bukkit e.g. be within a chest
|
|
|
|
or door block. While they are in this block, they accept a teleport request from a player within a different world. Once
|
|
|
|
the player teleports, Minecraft will recursively search upwards for a safe location, this could eventually land within a
|
|
|
|
player's skybase.
|
|
|
|
|
|
|
|
Example setup to perform the glitch: http://puu.sh/ng3PC/cf072dcbdb.png
|
|
|
|
The wanted destination was on top of the emerald block however the player ended on top of the diamond block.
|
|
|
|
This only is the case if the player is teleporting between worlds.
|
|
|
|
|
|
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
2024-01-24 13:07:40 +01:00
|
|
|
index cfa95917b39b32917bf32b2e97211d232d9037fd..2de70507a03e662afa45dd9f2e3c28c857a8037c 100644
|
2021-06-11 14:02:28 +02:00
|
|
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
|
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
2024-01-24 13:07:40 +01:00
|
|
|
@@ -1126,7 +1126,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
2021-06-11 14:02:28 +02:00
|
|
|
entity.connection.teleport(to);
|
|
|
|
} else {
|
2023-04-10 10:03:36 +02:00
|
|
|
// The respawn reason should never be used if the passed location is non null.
|
2023-10-27 01:34:58 +02:00
|
|
|
- this.server.getHandle().respawn(entity, toWorld, true, to, true, null);
|
|
|
|
+ this.server.getHandle().respawn(entity, toWorld, true, to, !toWorld.paperConfig().environment.disableTeleportationSuffocationCheck, null); // Paper
|
2021-06-11 14:02:28 +02:00
|
|
|
}
|
|
|
|
return true;
|
|
|
|
}
|