From a2c4d7e150ea295a656487062a187be07cd47677 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fabian=20Fa=C3=9Fbender?=
 <fabian.fassbender42@googlemail.com>
Date: Sat, 29 Nov 2014 00:38:21 +0100
Subject: [PATCH] Minecraft by default only uses the World at index 0 for the
 WorldBorder command. This fixes SPIGOT-12

---
 nms-patches/CommandWorldBorder.patch | 28 ++++++++++++++++++++++++++++
 nms-patches/ICommand.patch           | 11 +++++++++++
 2 files changed, 39 insertions(+)
 create mode 100644 nms-patches/CommandWorldBorder.patch
 create mode 100644 nms-patches/ICommand.patch

diff --git a/nms-patches/CommandWorldBorder.patch b/nms-patches/CommandWorldBorder.patch
new file mode 100644
index 0000000000..dbb2dfc7db
--- /dev/null
+++ b/nms-patches/CommandWorldBorder.patch
@@ -0,0 +1,28 @@
+--- ../work/decompile-8eb82bde//net/minecraft/server/CommandWorldBorder.java	2014-11-29 00:40:43.197707433 +0000
++++ src/main/java/net/minecraft/server/CommandWorldBorder.java	2014-11-29 00:40:17.000000000 +0000
+@@ -18,11 +18,11 @@
+         return "commands.worldborder.usage";
+     }
+ 
+-    public void execute(ICommandListener icommandlistener, String[] astring) {
++    public void execute(ICommandListener icommandlistener, String[] astring) throws ExceptionUsage { // CraftBukkit - Add Exception
+         if (astring.length < 1) {
+             throw new ExceptionUsage("commands.worldborder.usage", new Object[0]);
+         } else {
+-            WorldBorder worldborder = this.d();
++            WorldBorder worldborder = icommandlistener.getWorld().af(); // CraftBukkit - Use the world the player is in instead of the first in Minecraft
+             double d0;
+             double d1;
+             long i;
+@@ -141,4 +141,11 @@
+     public List tabComplete(ICommandListener icommandlistener, String[] astring, BlockPosition blockposition) {
+         return astring.length == 1 ? a(astring, new String[] { "set", "center", "damage", "warning", "add", "get"}) : (astring.length == 2 && astring[0].equals("damage") ? a(astring, new String[] { "buffer", "amount"}) : (astring.length == 2 && astring[0].equals("warning") ? a(astring, new String[] { "time", "distance"}) : null));
+     }
++
++    // CraftBukkit start - Implement compareTo since obfuscation has renamed it to a(ICommand)
++    @Override
++    public int compareTo( Object o ) {
++        return a((ICommand) o);
++    }
++    // CraftBukkit end
+ }
diff --git a/nms-patches/ICommand.patch b/nms-patches/ICommand.patch
new file mode 100644
index 0000000000..f42a35f40c
--- /dev/null
+++ b/nms-patches/ICommand.patch
@@ -0,0 +1,11 @@
+--- ../work/decompile-8eb82bde//net/minecraft/server/ICommand.java	2014-11-29 00:40:43.197707433 +0000
++++ src/main/java/net/minecraft/server/ICommand.java	2014-11-29 00:40:17.000000000 +0000
+@@ -10,7 +10,7 @@
+ 
+     List b();
+ 
+-    void execute(ICommandListener icommandlistener, String[] astring);
++    void execute(ICommandListener icommandlistener, String[] astring) throws ExceptionUsage; // CraftBukkit - Add exception
+ 
+     boolean canUse(ICommandListener icommandlistener);
+