diff --git a/Spigot-Server-Patches/0049-Configurable-end-credits-when-leaving-the-end.patch b/Spigot-Server-Patches/0049-Configurable-end-credits-when-leaving-the-end.patch new file mode 100644 index 0000000000..34e3eb12ed --- /dev/null +++ b/Spigot-Server-Patches/0049-Configurable-end-credits-when-leaving-the-end.patch @@ -0,0 +1,93 @@ +From c8b5e5d2a5f28356e4eeaae97dd8dd8dd27d7f60 Mon Sep 17 00:00:00 2001 +From: DoctorDark +Date: Thu, 28 May 2015 20:12:38 -0500 +Subject: [PATCH] Configurable end credits when leaving the end + + +diff --git a/src/main/java/net/minecraft/server/EntityPlayer.java b/src/main/java/net/minecraft/server/EntityPlayer.java +index 02e3ce6..40db6ee 100644 +--- a/src/main/java/net/minecraft/server/EntityPlayer.java ++++ b/src/main/java/net/minecraft/server/EntityPlayer.java +@@ -508,11 +508,16 @@ public class EntityPlayer extends EntityHuman implements ICrafting { + } + + public void c(int i) { +- if (this.dimension == 1 && i == 1) { ++ // PaperSpigot start - Allow configurable end portal credits ++ boolean endPortal = this.dimension == 1 && i == 1; ++ if (endPortal) { + this.b((Statistic) AchievementList.D); +- this.world.kill(this); +- this.viewingCredits = true; +- this.playerConnection.sendPacket(new PacketPlayOutGameStateChange(4, 0.0F)); ++ if (!world.paperSpigotConfig.disableEndCredits) { ++ this.world.kill(this); ++ this.viewingCredits = true; ++ this.playerConnection.sendPacket(new PacketPlayOutGameStateChange(4, 0.0F)); ++ } ++ // PaperSpigot end + } else { + if (this.dimension == 0 && i == 1) { + this.b((Statistic) AchievementList.C); +@@ -530,15 +535,19 @@ public class EntityPlayer extends EntityHuman implements ICrafting { + } else { + this.b((Statistic) AchievementList.y); + } ++ } + ++ // PaperSpigot start - Allow configurable end portal credits ++ if (!endPortal || world.paperSpigotConfig.disableEndCredits) { + // CraftBukkit start +- TeleportCause cause = (this.dimension == 1 || i == 1) ? TeleportCause.END_PORTAL : TeleportCause.NETHER_PORTAL; ++ TeleportCause cause = (endPortal || (this.dimension == 1 || i == 1)) ? TeleportCause.END_PORTAL : TeleportCause.NETHER_PORTAL; + this.server.getPlayerList().changeDimension(this, i, cause); + // CraftBukkit end + this.lastSentExp = -1; + this.bM = -1.0F; + this.bN = -1; + } ++ // PaperSpigot end + + } + +diff --git a/src/main/java/net/minecraft/server/PlayerList.java b/src/main/java/net/minecraft/server/PlayerList.java +index f4f78e8..fac50e4 100644 +--- a/src/main/java/net/minecraft/server/PlayerList.java ++++ b/src/main/java/net/minecraft/server/PlayerList.java +@@ -693,6 +693,8 @@ public abstract class PlayerList { + } + + TravelAgent agent = exit != null ? (TravelAgent) ((CraftWorld) exit.getWorld()).getHandle().getTravelAgent() : org.bukkit.craftbukkit.CraftTravelAgent.DEFAULT; // return arbitrary TA to compensate for implementation dependent plugins ++ agent.setCanCreatePortal(cause != TeleportCause.END_PORTAL); // PaperSpigot - Configurable end credits, don't allow End Portals to create portals ++ + PlayerPortalEvent event = new PlayerPortalEvent(entityplayer.getBukkitEntity(), enter, exit, agent, cause); + event.useTravelAgent(useTravelAgent); + Bukkit.getServer().getPluginManager().callEvent(event); +@@ -700,7 +702,8 @@ public abstract class PlayerList { + return; + } + +- exit = event.useTravelAgent() ? event.getPortalTravelAgent().findOrCreate(event.getTo()) : event.getTo(); ++ // PaperSpigot - Configurable end credits, if a plugin sets to use a travel agent even if the cause is an end portal, ignore it ++ exit = cause != TeleportCause.END_PORTAL && event.useTravelAgent() ? event.getPortalTravelAgent().findOrCreate(event.getTo()) : event.getTo(); + if (exit == null) { + return; + } +diff --git a/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java b/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java +index 64f8630..6a690ee 100644 +--- a/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java ++++ b/src/main/java/org/github/paperspigot/PaperSpigotWorldConfig.java +@@ -248,4 +248,10 @@ public class PaperSpigotWorldConfig + { + optimizeDraining = getBoolean( "optimize-draining", false ); + } ++ ++ public boolean disableEndCredits; ++ private void disableEndCredits() ++ { ++ disableEndCredits = getBoolean( "game-mechanics.disable-end-credits", false ); ++ } + } +-- +2.4.1.windows.1 +