mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-22 22:45:31 +01:00
Handle patches merged to craftbukkit
This commit is contained in:
parent
21a8ef9729
commit
4f044403de
2 changed files with 0 additions and 104 deletions
|
@ -1,104 +0,0 @@
|
||||||
From 06e1d0e6a51ad056751c7e4ed6660b3692b49db9 Mon Sep 17 00:00:00 2001
|
|
||||||
From: EdGruberman <ed@rjump.com>
|
|
||||||
Date: Sun, 20 Jan 2013 23:13:04 -0700
|
|
||||||
Subject: [PATCH] Compensate for allow-nether/allow-end as false; BUKKIT-3466
|
|
||||||
|
|
||||||
When either of those settings are false, the worlds are not loaded and
|
|
||||||
therefore will not be targeted for portal exits. Existing worlds are
|
|
||||||
iterated directly to avoid defaulting to the first world if a direct
|
|
||||||
dimension match is not found.
|
|
||||||
|
|
||||||
Plugins must also specify exit from custom Bukkit worlds to comply with
|
|
||||||
original commit: https://github.com/Bukkit/CraftBukkit/commit/2dc2af0
|
|
||||||
|
|
||||||
This commit introduces a constant to clarify the dependency on the
|
|
||||||
CraftBukkit implementation of custom worlds having a dimension offset.
|
|
||||||
---
|
|
||||||
src/main/java/net/minecraft/server/PlayerList.java | 34 ++++++++++++++++------
|
|
||||||
.../java/org/bukkit/craftbukkit/CraftServer.java | 2 +-
|
|
||||||
.../java/org/bukkit/craftbukkit/CraftWorld.java | 2 ++
|
|
||||||
3 files changed, 28 insertions(+), 10 deletions(-)
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java
|
|
||||||
index ced8cf0..642a4d9 100644
|
|
||||||
--- a/src/main/java/net/minecraft/server/PlayerList.java
|
|
||||||
+++ b/src/main/java/net/minecraft/server/PlayerList.java
|
|
||||||
@@ -424,24 +424,40 @@ public abstract class PlayerList {
|
|
||||||
|
|
||||||
// CraftBukkit start - Replaced the standard handling of portals with a more customised method.
|
|
||||||
public void changeDimension(EntityPlayer entityplayer, int i, TeleportCause cause) {
|
|
||||||
- WorldServer exitWorld = this.server.getWorldServer(i);
|
|
||||||
+ WorldServer exitWorld = null;
|
|
||||||
+ if (entityplayer.dimension < CraftWorld.CUSTOM_DIMENSION_OFFSET) { // plugins must specify exit from custom Bukkit worlds
|
|
||||||
+ // only target existing worlds (compensate for allow-nether/allow-end as false)
|
|
||||||
+ for (WorldServer world : this.server.worlds) {
|
|
||||||
+ if (world.dimension == i) {
|
|
||||||
+ exitWorld = world;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
Location enter = entityplayer.getBukkitEntity().getLocation();
|
|
||||||
Location exit = null;
|
|
||||||
- if ((cause == TeleportCause.END_PORTAL) && (i == 0)) {
|
|
||||||
- // THE_END -> NORMAL; use bed if available
|
|
||||||
- exit = ((CraftPlayer) entityplayer.getBukkitEntity()).getBedSpawnLocation();
|
|
||||||
- }
|
|
||||||
- if (exit == null) {
|
|
||||||
- exit = this.calculateTarget(enter, exitWorld);
|
|
||||||
+ if (exitWorld != null) {
|
|
||||||
+ if ((cause == TeleportCause.END_PORTAL) && (i == 0)) {
|
|
||||||
+ // THE_END -> NORMAL; use bed if available
|
|
||||||
+ exit = ((CraftPlayer) entityplayer.getBukkitEntity()).getBedSpawnLocation();
|
|
||||||
+ }
|
|
||||||
+ if (exit == null) {
|
|
||||||
+ exit = this.calculateTarget(enter, exitWorld);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
|
|
||||||
- TravelAgent agent = (TravelAgent) ((CraftWorld) exit.getWorld()).getHandle().s();
|
|
||||||
+ TravelAgent agent = exit != null ? (TravelAgent) ((CraftWorld) exit.getWorld()).getHandle().s() : null;
|
|
||||||
PlayerPortalEvent event = new PlayerPortalEvent(entityplayer.getBukkitEntity(), enter, exit, agent, cause);
|
|
||||||
Bukkit.getServer().getPluginManager().callEvent(event);
|
|
||||||
if (event.isCancelled() || event.getTo() == null) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
- exit = event.useTravelAgent() ? event.getPortalTravelAgent().findOrCreate(exit) : event.getTo();
|
|
||||||
+
|
|
||||||
+ if (event.useTravelAgent() && event.getPortalTravelAgent() != null) {
|
|
||||||
+ exit = event.getPortalTravelAgent().findOrCreate(exit);
|
|
||||||
+ } else {
|
|
||||||
+ exit = event.getTo();
|
|
||||||
+ }
|
|
||||||
exitWorld = ((CraftWorld) exit.getWorld()).getHandle();
|
|
||||||
|
|
||||||
Vector velocity = entityplayer.getBukkitEntity().getVelocity();
|
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
||||||
index dac1cb7..e7a459b 100644
|
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
|
|
||||||
@@ -719,7 +719,7 @@ public final class CraftServer implements Server {
|
|
||||||
converter.convert(name, new ConvertProgressUpdater(console));
|
|
||||||
}
|
|
||||||
|
|
||||||
- int dimension = 10 + console.worlds.size();
|
|
||||||
+ int dimension = CraftWorld.CUSTOM_DIMENSION_OFFSET + console.worlds.size();
|
|
||||||
boolean used = false;
|
|
||||||
do {
|
|
||||||
for (WorldServer server : console.worlds) {
|
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
||||||
index 4861609..21bd64a 100644
|
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
||||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
|
||||||
@@ -49,6 +49,8 @@ import org.bukkit.plugin.messaging.StandardMessenger;
|
|
||||||
import org.bukkit.craftbukkit.util.LongHash;
|
|
||||||
|
|
||||||
public class CraftWorld implements World {
|
|
||||||
+ public static final int CUSTOM_DIMENSION_OFFSET = 10;
|
|
||||||
+
|
|
||||||
private final WorldServer world;
|
|
||||||
private Environment environment;
|
|
||||||
private final CraftServer server = (CraftServer) Bukkit.getServer();
|
|
||||||
--
|
|
||||||
1.8.0.3
|
|
||||||
|
|
Loading…
Reference in a new issue