Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-12-20 21:40:06 +01:00
Prevent Nether Portals from teleporting the player from Bukkit worlds to the Nether.
Plugins would need to provide a To Location for Nether Portals to work in Bukkit Worlds.
Dieser Commit ist enthalten in:
Ursprung
a7f2798862
Commit
ae43b837b0
@ -276,16 +276,24 @@ public class ServerConfigurationManager {
|
|||||||
// CraftBukkit start -- Replaced the standard handling of portals with a more customised method.
|
// CraftBukkit start -- Replaced the standard handling of portals with a more customised method.
|
||||||
int dimension = entityplayer.dimension;
|
int dimension = entityplayer.dimension;
|
||||||
WorldServer fromWorld = this.server.getWorldServer(dimension);
|
WorldServer fromWorld = this.server.getWorldServer(dimension);
|
||||||
WorldServer toWorld = this.server.getWorldServer(dimension == -1 ? 0 : -1);
|
WorldServer toWorld = null;
|
||||||
|
if (dimension < 10) {
|
||||||
|
int toDimension = dimension == -1 ? 0 : -1;
|
||||||
|
for (WorldServer world : this.server.worlds) {
|
||||||
|
if (world.dimension == toDimension) {
|
||||||
|
toWorld = world;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
double blockRatio = dimension == -1 ? 8 : 0.125;
|
double blockRatio = dimension == -1 ? 8 : 0.125;
|
||||||
|
|
||||||
Location fromLocation = new Location(fromWorld.getWorld(), entityplayer.locX, entityplayer.locY, entityplayer.locZ, entityplayer.yaw, entityplayer.pitch);
|
Location fromLocation = new Location(fromWorld.getWorld(), entityplayer.locX, entityplayer.locY, entityplayer.locZ, entityplayer.yaw, entityplayer.pitch);
|
||||||
Location toLocation = new Location(toWorld.getWorld(), (entityplayer.locX * blockRatio), entityplayer.locY, (entityplayer.locZ * blockRatio), entityplayer.yaw, entityplayer.pitch);
|
Location toLocation = toWorld == null ? null : new Location(toWorld.getWorld(), (entityplayer.locX * blockRatio), entityplayer.locY, (entityplayer.locZ * blockRatio), entityplayer.yaw, entityplayer.pitch);
|
||||||
|
|
||||||
org.bukkit.craftbukkit.PortalTravelAgent pta = new org.bukkit.craftbukkit.PortalTravelAgent();
|
org.bukkit.craftbukkit.PortalTravelAgent pta = new org.bukkit.craftbukkit.PortalTravelAgent();
|
||||||
PlayerPortalEvent event = new PlayerPortalEvent((Player) entityplayer.getBukkitEntity(), fromLocation, toLocation, pta);
|
PlayerPortalEvent event = new PlayerPortalEvent((Player) entityplayer.getBukkitEntity(), fromLocation, toLocation, pta);
|
||||||
Bukkit.getServer().getPluginManager().callEvent(event);
|
Bukkit.getServer().getPluginManager().callEvent(event);
|
||||||
if (event.isCancelled()) {
|
if (event.isCancelled() || event.getTo() == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren