From 03f1e37ae2f81b4a34006266e4a01f98aeaf5aff Mon Sep 17 00:00:00 2001
From: md_5 <git@md-5.net>
Date: Sun, 18 Jun 2017 19:23:33 +1000
Subject: [PATCH] Fix nether world border center not adjusting

---
 nms-patches/PacketPlayOutWorldBorder.patch | 15 +++++++++++++++
 nms-patches/WorldProviderHell.patch        | 16 ++++++++++++++++
 2 files changed, 31 insertions(+)
 create mode 100644 nms-patches/PacketPlayOutWorldBorder.patch
 create mode 100644 nms-patches/WorldProviderHell.patch

diff --git a/nms-patches/PacketPlayOutWorldBorder.patch b/nms-patches/PacketPlayOutWorldBorder.patch
new file mode 100644
index 0000000000..d37e4ec3ee
--- /dev/null
+++ b/nms-patches/PacketPlayOutWorldBorder.patch
@@ -0,0 +1,15 @@
+--- a/net/minecraft/server/PacketPlayOutWorldBorder.java
++++ b/net/minecraft/server/PacketPlayOutWorldBorder.java
+@@ -18,8 +18,10 @@
+ 
+     public PacketPlayOutWorldBorder(WorldBorder worldborder, PacketPlayOutWorldBorder.EnumWorldBorderAction packetplayoutworldborder_enumworldborderaction) {
+         this.a = packetplayoutworldborder_enumworldborderaction;
+-        this.c = worldborder.getCenterX();
+-        this.d = worldborder.getCenterZ();
++        // CraftBukkit start - multiply out nether border
++        this.c = worldborder.getCenterX() * (worldborder.world.worldProvider instanceof WorldProviderHell ? 8 : 1);
++        this.d = worldborder.getCenterZ() * (worldborder.world.worldProvider instanceof WorldProviderHell ? 8 : 1);
++        // CraftBukkit end
+         this.f = worldborder.getSize();
+         this.e = worldborder.j();
+         this.g = worldborder.i();
diff --git a/nms-patches/WorldProviderHell.patch b/nms-patches/WorldProviderHell.patch
new file mode 100644
index 0000000000..3b43b31649
--- /dev/null
+++ b/nms-patches/WorldProviderHell.patch
@@ -0,0 +1,16 @@
+--- a/net/minecraft/server/WorldProviderHell.java
++++ b/net/minecraft/server/WorldProviderHell.java
+@@ -44,11 +44,11 @@
+     public WorldBorder getWorldBorder() {
+         return new WorldBorder() {
+             public double getCenterX() {
+-                return super.getCenterX() / 8.0D;
++                return super.getCenterX(); // CraftBukkit
+             }
+ 
+             public double getCenterZ() {
+-                return super.getCenterZ() / 8.0D;
++                return super.getCenterZ(); // CraftBukkit
+             }
+         };
+     }