diff --git a/nms-patches/DedicatedServer.patch b/nms-patches/DedicatedServer.patch
index 9085d70728..98570530b1 100644
--- a/nms-patches/DedicatedServer.patch
+++ b/nms-patches/DedicatedServer.patch
@@ -95,7 +95,7 @@
+
thread.setDaemon(true);
thread.start();
- DedicatedServer.LOGGER.info("Starting minecraft server version 1.8.6");
+ DedicatedServer.LOGGER.info("Starting minecraft server version 1.8.7");
@@ -73,7 +120,7 @@
}
diff --git a/nms-patches/HandshakeListener.patch b/nms-patches/HandshakeListener.patch
index 89fa10ffa2..d3fb466112 100644
--- a/nms-patches/HandshakeListener.patch
+++ b/nms-patches/HandshakeListener.patch
@@ -58,7 +58,7 @@
+ // CraftBukkit end
+
if (packethandshakinginsetprotocol.b() > 47) {
- chatcomponenttext = new ChatComponentText("Outdated server! I\'m still on 1.8.6");
+ chatcomponenttext = new ChatComponentText("Outdated server! I\'m still on 1.8.7");
this.b.handle(new PacketLoginOutDisconnect(chatcomponenttext));
@@ -26,6 +71,7 @@
this.b.close(chatcomponenttext);
diff --git a/nms-patches/PlayerConnection.patch b/nms-patches/PlayerConnection.patch
index 1b92fa7cfe..5833796899 100644
--- a/nms-patches/PlayerConnection.patch
+++ b/nms-patches/PlayerConnection.patch
@@ -1330,7 +1330,7 @@
PlayerConnectionUtils.ensureMainThread(packetplayinupdatesign, this, this.player.u());
this.player.resetIdleTimer();
WorldServer worldserver = this.minecraftServer.getWorldServer(this.player.dimension);
-@@ -847,14 +1751,29 @@
+@@ -847,14 +1751,30 @@
if (!tileentitysign.b() || tileentitysign.c() != this.player) {
this.minecraftServer.warning("Player " + this.player.getName() + " just tried to change non-editable sign");
@@ -1346,22 +1346,23 @@
+ int y = packetplayinupdatesign.a().getY();
+ int z = packetplayinupdatesign.a().getZ();
+ String[] lines = new String[4];
++
for (int i = 0; i < aichatbasecomponent.length; ++i) {
-- tileentitysign.lines[i] = new ChatComponentText(aichatbasecomponent[i].c());
-+ lines[i] = aichatbasecomponent[i].c();
-+ }
+- tileentitysign.lines[i] = new ChatComponentText(EnumChatFormat.a(aichatbasecomponent[i].c()));
++ lines[i] = EnumChatFormat.a(aichatbasecomponent[i].c());
+ }
+ SignChangeEvent event = new SignChangeEvent((org.bukkit.craftbukkit.block.CraftBlock) player.getWorld().getBlockAt(x, y, z), this.server.getPlayer(this.player), lines);
+ this.server.getPluginManager().callEvent(event);
+
+ if (!event.isCancelled()) {
+ System.arraycopy(org.bukkit.craftbukkit.block.CraftSign.sanitizeLines(event.getLines()), 0, tileentitysign.lines, 0, 4);
+ tileentitysign.isEditable = false;
- }
++ }
+ // CraftBukkit end
tileentitysign.update();
worldserver.notify(blockposition);
-@@ -877,11 +1796,27 @@
+@@ -877,11 +1797,27 @@
public void a(PacketPlayInAbilities packetplayinabilities) {
PlayerConnectionUtils.ensureMainThread(packetplayinabilities, this, this.player.u());
@@ -1390,7 +1391,7 @@
ArrayList arraylist = Lists.newArrayList();
Iterator iterator = this.minecraftServer.tabCompleteCommand(this.player, packetplayintabcomplete.a(), packetplayintabcomplete.b()).iterator();
-@@ -921,13 +1856,16 @@
+@@ -921,13 +1857,16 @@
itemstack1 = this.player.inventory.getItemInHand();
if (itemstack1 != null) {
if (itemstack.getItem() == Items.WRITABLE_BOOK && itemstack.getItem() == itemstack1.getItem()) {
@@ -1407,7 +1408,7 @@
return;
} finally {
packetdataserializer.release();
-@@ -950,16 +1888,21 @@
+@@ -950,16 +1889,21 @@
itemstack1 = this.player.inventory.getItemInHand();
if (itemstack1 != null) {
if (itemstack.getItem() == Items.WRITTEN_BOOK && itemstack1.getItem() == Items.WRITABLE_BOOK) {
@@ -1429,7 +1430,7 @@
return;
} finally {
packetdataserializer.release();
-@@ -976,11 +1919,12 @@
+@@ -976,11 +1920,12 @@
}
} catch (Exception exception2) {
PlayerConnection.c.error("Couldn\'t select trade", exception2);
@@ -1443,7 +1444,7 @@
packetdataserializer = packetplayincustompayload.b();
try {
-@@ -1016,6 +1960,7 @@
+@@ -1016,6 +1961,7 @@
}
} catch (Exception exception3) {
PlayerConnection.c.error("Couldn\'t set command block", exception3);
@@ -1451,7 +1452,7 @@
} finally {
packetdataserializer.release();
}
-@@ -1041,6 +1986,7 @@
+@@ -1041,6 +1987,7 @@
}
} catch (Exception exception4) {
PlayerConnection.c.error("Couldn\'t set beacon", exception4);
@@ -1459,7 +1460,7 @@
}
}
} else if ("MC|ItemName".equals(packetplayincustompayload.a()) && this.player.activeContainer instanceof ContainerAnvil) {
-@@ -1056,7 +2002,28 @@
+@@ -1056,7 +2003,28 @@
containeranvil.a("");
}
}
diff --git a/nms-patches/WorldServer.patch b/nms-patches/WorldServer.patch
index 76320014d6..09dd71324a 100644
--- a/nms-patches/WorldServer.patch
+++ b/nms-patches/WorldServer.patch
@@ -378,7 +378,7 @@
this.V.add(nextticklistentry);
}
-@@ -492,7 +664,7 @@
+@@ -489,7 +661,7 @@
if (blockposition.getX() >= structureboundingbox.a && blockposition.getX() < structureboundingbox.d && blockposition.getZ() >= structureboundingbox.c && blockposition.getZ() < structureboundingbox.f) {
if (flag) {
@@ -387,7 +387,7 @@
iterator.remove();
}
-@@ -508,6 +680,7 @@
+@@ -505,6 +677,7 @@
return arraylist;
}
@@ -395,7 +395,7 @@
public void entityJoinedWorld(Entity entity, boolean flag) {
if (!this.getSpawnAnimals() && (entity instanceof EntityAnimal || entity instanceof EntityWaterAnimal)) {
entity.die();
-@@ -519,6 +692,7 @@
+@@ -516,6 +689,7 @@
super.entityJoinedWorld(entity, flag);
}
@@ -403,7 +403,7 @@
private boolean getSpawnNPCs() {
return this.server.getSpawnNPCs();
-@@ -531,13 +705,43 @@
+@@ -528,13 +702,43 @@
protected IChunkProvider k() {
IChunkLoader ichunkloader = this.dataManager.createChunkLoader(this.worldProvider);
@@ -448,7 +448,7 @@
for (int k1 = 0; k1 < this.h.size(); ++k1) {
TileEntity tileentity = (TileEntity) this.h.get(k1);
BlockPosition blockposition = tileentity.getPosition();
-@@ -546,6 +750,8 @@
+@@ -543,6 +747,8 @@
arraylist.add(tileentity);
}
}
@@ -457,7 +457,7 @@
return arraylist;
}
-@@ -609,6 +815,23 @@
+@@ -606,6 +812,23 @@
int j = this.worldProvider.getSeaLevel();
int k = 0;
@@ -481,7 +481,7 @@
if (blockposition != null) {
i = blockposition.getX();
k = blockposition.getZ();
-@@ -618,7 +841,7 @@
+@@ -615,7 +838,7 @@
int l = 0;
@@ -490,7 +490,7 @@
i += random.nextInt(64) - random.nextInt(64);
k += random.nextInt(64) - random.nextInt(64);
++l;
-@@ -657,6 +880,7 @@
+@@ -654,6 +877,7 @@
public void save(boolean flag, IProgressUpdate iprogressupdate) throws ExceptionWorldConflict {
if (this.chunkProvider.canSave()) {
@@ -498,7 +498,7 @@
if (iprogressupdate != null) {
iprogressupdate.a("Saving level");
}
-@@ -667,7 +891,8 @@
+@@ -664,7 +888,8 @@
}
this.chunkProvider.saveChunks(flag, iprogressupdate);
@@ -508,7 +508,7 @@
Iterator iterator = arraylist.iterator();
while (iterator.hasNext()) {
-@@ -698,8 +923,12 @@
+@@ -695,8 +920,12 @@
this.worldData.k(this.getWorldBorder().getWarningTime());
this.worldData.b(this.getWorldBorder().j());
this.worldData.e(this.getWorldBorder().i());
@@ -522,7 +522,7 @@
}
protected void a(Entity entity) {
-@@ -731,8 +960,16 @@
+@@ -728,8 +957,16 @@
}
public boolean strikeLightning(Entity entity) {
@@ -540,7 +540,7 @@
return true;
} else {
return false;
-@@ -744,10 +981,20 @@
+@@ -741,10 +978,20 @@
}
public Explosion createExplosion(Entity entity, double d0, double d1, double d2, float f, boolean flag, boolean flag1) {
@@ -561,7 +561,7 @@
if (!flag1) {
explosion.clearBlocks();
}
-@@ -793,7 +1040,8 @@
+@@ -790,7 +1037,8 @@
BlockActionData blockactiondata = (BlockActionData) iterator.next();
if (this.a(blockactiondata)) {
@@ -571,7 +571,7 @@
}
}
-@@ -816,6 +1064,7 @@
+@@ -813,6 +1061,7 @@
boolean flag = this.S();
super.p();
@@ -579,7 +579,7 @@
if (this.o != this.p) {
this.server.getPlayerList().a(new PacketPlayOutGameStateChange(7, this.p), this.worldProvider.getDimension());
}
-@@ -834,6 +1083,21 @@
+@@ -831,6 +1080,21 @@
this.server.getPlayerList().sendAll(new PacketPlayOutGameStateChange(7, this.p));
this.server.getPlayerList().sendAll(new PacketPlayOutGameStateChange(8, this.r));
}
@@ -601,7 +601,7 @@
}
-@@ -862,10 +1126,17 @@
+@@ -859,10 +1123,17 @@
}
public void a(EnumParticle enumparticle, boolean flag, double d0, double d1, double d2, int i, double d3, double d4, double d5, double d6, int... aint) {
diff --git a/pom.xml b/pom.xml
index 5eb2da2844..2c045791c2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
org.bukkit
craftbukkit
jar
- 1.8.6-R0.1-SNAPSHOT
+ 1.8.7-R0.1-SNAPSHOT
CraftBukkit
http://www.bukkit.org
@@ -12,7 +12,7 @@
UTF-8
unknown
4.11
- 1.8.6
+ 1.8.7
1_8_R3
git-Bukkit-