diff --git a/README.md b/README.md
index 4306572e7..ee62161dd 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,7 @@
# ViaVersion 1.0.5 - Spigot, Sponge, BungeeCord
[![Build Status](https://travis-ci.org/MylesIsCool/ViaVersion.svg?branch=master)](https://travis-ci.org/MylesIsCool/ViaVersion)
[![Gitter](https://badges.gitter.im/MylesIsCool/ViaVersion.svg)](https://gitter.im/MylesIsCool/ViaVersion)
+[![Discord](https://img.shields.io/badge/chat-on%20discord-blue.svg)](https://viaversion.com/discord)
IRC: [#viaversion](http://irc.spi.gt/iris/?channels=viaversion) on irc.spi.gt for Support.
diff --git a/bukkit/pom.xml b/bukkit/pom.xml
index 987849fd2..582e3b99c 100644
--- a/bukkit/pom.xml
+++ b/bukkit/pom.xml
@@ -5,7 +5,7 @@
viaversion-parent
us.myles
- 1.0.5-1_12pre4
+ 1.0.5-1_12pre5
4.0.0
diff --git a/bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitViaInjector.java b/bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitViaInjector.java
index 3025e18c1..29631778a 100644
--- a/bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitViaInjector.java
+++ b/bukkit/src/main/java/us/myles/ViaVersion/bukkit/platform/BukkitViaInjector.java
@@ -37,14 +37,12 @@ public class BukkitViaInjector implements ViaInjector {
// Inject the list
List wrapper = new ListWrapper((List) value) {
@Override
- public synchronized void handleAdd(Object o) {
- synchronized (this) {
- if (o instanceof ChannelFuture) {
- try {
- injectChannelFuture((ChannelFuture) o);
- } catch (Exception e) {
- e.printStackTrace();
- }
+ public void handleAdd(Object o) {
+ if (o instanceof ChannelFuture) {
+ try {
+ injectChannelFuture((ChannelFuture) o);
+ } catch (Exception e) {
+ e.printStackTrace();
}
}
}
diff --git a/bungee/pom.xml b/bungee/pom.xml
index c701a93a4..3c514cd2e 100644
--- a/bungee/pom.xml
+++ b/bungee/pom.xml
@@ -5,7 +5,7 @@
viaversion-parent
us.myles
- 1.0.5-1_12pre4
+ 1.0.5-1_12pre5
4.0.0
@@ -37,7 +37,7 @@
us.myles
viaversion-common
- 1.0.5-1_12pre4
+ 1.0.5-1_12pre5
\ No newline at end of file
diff --git a/bungee/src/main/java/us/myles/ViaVersion/bungee/handlers/BungeeServerHandler.java b/bungee/src/main/java/us/myles/ViaVersion/bungee/handlers/BungeeServerHandler.java
index 7e77b9b6e..5bb6406ba 100644
--- a/bungee/src/main/java/us/myles/ViaVersion/bungee/handlers/BungeeServerHandler.java
+++ b/bungee/src/main/java/us/myles/ViaVersion/bungee/handlers/BungeeServerHandler.java
@@ -8,6 +8,7 @@ import net.md_5.bungee.event.EventHandler;
import net.md_5.bungee.event.EventPriority;
import us.myles.ViaVersion.api.Pair;
import us.myles.ViaVersion.api.Via;
+import us.myles.ViaVersion.api.boss.BossBar;
import us.myles.ViaVersion.api.data.UserConnection;
import us.myles.ViaVersion.api.protocol.Protocol;
import us.myles.ViaVersion.api.protocol.ProtocolPipeline;
@@ -15,6 +16,7 @@ import us.myles.ViaVersion.api.protocol.ProtocolRegistry;
import us.myles.ViaVersion.bungee.service.ProtocolDetectorService;
import us.myles.ViaVersion.bungee.storage.BungeeStorage;
import us.myles.ViaVersion.protocols.base.ProtocolInfo;
+import us.myles.ViaVersion.protocols.protocol1_9to1_8.storage.EntityTracker;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
@@ -79,6 +81,15 @@ public class BungeeServerHandler implements Listener {
public void checkServerChange(ServerConnectedEvent e, UserConnection user) throws Exception {
if (user == null) return;
+ // Manually hide ViaVersion-created BossBars if the childserver was version 1.8.x (#666)
+ if (user.has(EntityTracker.class)) {
+ EntityTracker tracker = user.get(EntityTracker.class);
+
+ if (tracker.getBossBarMap() != null)
+ for (BossBar bar : tracker.getBossBarMap().values())
+ bar.hide();
+ }
+ // Handle server/version change
if (user.has(BungeeStorage.class)) {
BungeeStorage storage = user.get(BungeeStorage.class);
ProxiedPlayer player = storage.getPlayer();
diff --git a/common/pom.xml b/common/pom.xml
index 98df94c14..e0dc67a7e 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -5,7 +5,7 @@
viaversion-parent
us.myles
- 1.0.5-1_12pre4
+ 1.0.5-1_12pre5
4.0.0
diff --git a/common/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolVersion.java b/common/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolVersion.java
index d2c187791..2deb78434 100644
--- a/common/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolVersion.java
+++ b/common/src/main/java/us/myles/ViaVersion/api/protocol/ProtocolVersion.java
@@ -55,7 +55,7 @@ public class ProtocolVersion {
register(v1_10 = new ProtocolVersion(210, "1.10"));
register(v1_11 = new ProtocolVersion(315, "1.11"));
register(v1_11_1 = new ProtocolVersion(316, "1.11.1"));
- register(snapshot = new ProtocolVersion(331, "1.12-pre4"));
+ register(snapshot = new ProtocolVersion(332, "1.12-pre5"));
register(unknown = new ProtocolVersion(-1, "UNKNOWN"));
}
diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocolsnapshotto1_11_1/ProtocolSnapshotTo1_11_1.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocolsnapshotto1_11_1/ProtocolSnapshotTo1_11_1.java
index 3e2a3f75a..4cef64ddc 100644
--- a/common/src/main/java/us/myles/ViaVersion/protocols/protocolsnapshotto1_11_1/ProtocolSnapshotTo1_11_1.java
+++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocolsnapshotto1_11_1/ProtocolSnapshotTo1_11_1.java
@@ -19,37 +19,11 @@ public class ProtocolSnapshotTo1_11_1 extends Protocol {
@Override
protected void registerPackets() {
- // As of 1.12-pre4
+ // As of 1.12-pre5
// Outgoing
- // New packet at 0x08
- registerOutgoing(State.PLAY, 0x08, 0x09);
- registerOutgoing(State.PLAY, 0x09, 0x0a);
- registerOutgoing(State.PLAY, 0x0a, 0x0b);
- registerOutgoing(State.PLAY, 0x0b, 0x0c);
- // error here, 0x0c
- registerOutgoing(State.PLAY, 0x0c, 0x0d);
- registerOutgoing(State.PLAY, 0x0d, 0x0e);
- registerOutgoing(State.PLAY, 0x0e, 0x0f);
- registerOutgoing(State.PLAY, 0x0f, 0x10);
- registerOutgoing(State.PLAY, 0x10, 0x11);
- registerOutgoing(State.PLAY, 0x11, 0x12);
- registerOutgoing(State.PLAY, 0x12, 0x13);
- registerOutgoing(State.PLAY, 0x13, 0x14);
- registerOutgoing(State.PLAY, 0x14, 0x15);
- registerOutgoing(State.PLAY, 0x15, 0x16);
- registerOutgoing(State.PLAY, 0x16, 0x17);
- registerOutgoing(State.PLAY, 0x17, 0x18);
- registerOutgoing(State.PLAY, 0x18, 0x19);
- registerOutgoing(State.PLAY, 0x19, 0x1a);
- registerOutgoing(State.PLAY, 0x1a, 0x1b);
- registerOutgoing(State.PLAY, 0x1b, 0x1c);
- registerOutgoing(State.PLAY, 0x1c, 0x1d);
- registerOutgoing(State.PLAY, 0x1d, 0x1e);
- registerOutgoing(State.PLAY, 0x1e, 0x1f);
- registerOutgoing(State.PLAY, 0x1f, 0x20);
// Chunk Data
- registerOutgoing(State.PLAY, 0x20, 0x21, new PacketRemapper() {
+ registerOutgoing(State.PLAY, 0x20, 0x20, new PacketRemapper() {
@Override
public void registerMap() {
handler(new PacketHandler() {
@@ -91,27 +65,55 @@ public class ProtocolSnapshotTo1_11_1 extends Protocol {
});
}
});
- registerOutgoing(State.PLAY, 0x21, 0x22);
- registerOutgoing(State.PLAY, 0x22, 0x23);
- registerOutgoing(State.PLAY, 0x23, 0x24);
- registerOutgoing(State.PLAY, 0x24, 0x25);
+ // Join Packet
+ registerOutgoing(State.PLAY, 0x23, 0x23, new PacketRemapper() {
+ @Override
+ public void registerMap() {
+ map(Type.INT); // 0 - Entity ID
+ map(Type.UNSIGNED_BYTE); // 1 - Gamemode
+ map(Type.INT); // 2 - Dimension
+
+ handler(new PacketHandler() {
+ @Override
+ public void handle(PacketWrapper wrapper) throws Exception {
+ ClientWorld clientChunks = wrapper.user().get(ClientWorld.class);
+
+ int dimensionId = wrapper.get(Type.INT, 1);
+ clientChunks.setEnvironment(dimensionId);
+ }
+ });
+ }
+ });
+
+ // 0x28 moved to 0x25
+ registerOutgoing(State.PLAY, 0x28, 0x25);
registerOutgoing(State.PLAY, 0x25, 0x26);
registerOutgoing(State.PLAY, 0x26, 0x27);
registerOutgoing(State.PLAY, 0x27, 0x28);
- registerOutgoing(State.PLAY, 0x28, 0x29);
- registerOutgoing(State.PLAY, 0x29, 0x2a);
- registerOutgoing(State.PLAY, 0x2a, 0x2b);
- registerOutgoing(State.PLAY, 0x2b, 0x2c);
- registerOutgoing(State.PLAY, 0x2c, 0x2d);
- registerOutgoing(State.PLAY, 0x2d, 0x2e);
- registerOutgoing(State.PLAY, 0x2e, 0x2f);
- registerOutgoing(State.PLAY, 0x2f, 0x30);
- registerOutgoing(State.PLAY, 0x30, 0x32);
- // New packet at 0x31
- registerOutgoing(State.PLAY, 0x31, 0x33);
- registerOutgoing(State.PLAY, 0x32, 0x34);
- registerOutgoing(State.PLAY, 0x33, 0x35);
- registerOutgoing(State.PLAY, 0x34, 0x36);
+ // New packet at 0x30
+ registerOutgoing(State.PLAY, 0x30, 0x31);
+ registerOutgoing(State.PLAY, 0x31, 0x32);
+ registerOutgoing(State.PLAY, 0x32, 0x33);
+ // Respawn Packet
+ registerOutgoing(State.PLAY, 0x33, 0x34, new PacketRemapper() {
+ @Override
+ public void registerMap() {
+ map(Type.INT); // 0 - Dimension ID
+
+ handler(new PacketHandler() {
+ @Override
+ public void handle(PacketWrapper wrapper) throws Exception {
+ ClientWorld clientWorld = wrapper.user().get(ClientWorld.class);
+
+ int dimensionId = wrapper.get(Type.INT, 0);
+ clientWorld.setEnvironment(dimensionId);
+ }
+ });
+ }
+ });
+
+ registerOutgoing(State.PLAY, 0x34, 0x35);
+ // New packet at 0x36
registerOutgoing(State.PLAY, 0x35, 0x37);
registerOutgoing(State.PLAY, 0x36, 0x38);
registerOutgoing(State.PLAY, 0x37, 0x39);
@@ -130,7 +132,7 @@ public class ProtocolSnapshotTo1_11_1 extends Protocol {
registerOutgoing(State.PLAY, 0x44, 0x46);
registerOutgoing(State.PLAY, 0x45, 0x47);
- // Sound effect, TODO: This changed in 17w15a
+ // Sound effect, should work fine, might need checking for parrots?
registerOutgoing(State.PLAY, 0x46, 0x48, new PacketRemapper() {
@Override
public void registerMap() {
@@ -159,9 +161,9 @@ public class ProtocolSnapshotTo1_11_1 extends Protocol {
registerOutgoing(State.PLAY, 0x47, 0x49);
registerOutgoing(State.PLAY, 0x48, 0x4a);
registerOutgoing(State.PLAY, 0x49, 0x4b);
- registerOutgoing(State.PLAY, 0x4a, 0x4c);
- registerOutgoing(State.PLAY, 0x4b, 0x4d);
- // New packet at 0x4e
+ // New packet at 0x4c
+ registerOutgoing(State.PLAY, 0x4a, 0x4d);
+ registerOutgoing(State.PLAY, 0x4b, 0x4e);
// Incoming
// New packet at 0x01
@@ -188,10 +190,12 @@ public class ProtocolSnapshotTo1_11_1 extends Protocol {
registerIncoming(State.PLAY, 0x09, 0x0a);
registerIncoming(State.PLAY, 0x0a, 0x0b);
registerIncoming(State.PLAY, 0x0b, 0x0c);
- registerIncoming(State.PLAY, 0x0c, 0x0d);
- registerIncoming(State.PLAY, 0x0d, 0x0e);
- registerIncoming(State.PLAY, 0x0e, 0x0f);
- registerIncoming(State.PLAY, 0x0f, 0x10);
+ // Mojang swapped 0x0F to 0x0D
+ registerIncoming(State.PLAY, 0x0f, 0x0d);
+ registerIncoming(State.PLAY, 0x0c, 0x0e);
+ // Mojang swapped 0x0F to 0x0D
+ registerIncoming(State.PLAY, 0x0d, 0x0f);
+ registerIncoming(State.PLAY, 0x0e, 0x10);
registerIncoming(State.PLAY, 0x10, 0x11);
registerIncoming(State.PLAY, 0x11, 0x12);
registerIncoming(State.PLAY, 0x12, 0x13);
@@ -212,15 +216,8 @@ public class ProtocolSnapshotTo1_11_1 extends Protocol {
}
});
registerIncoming(State.PLAY, 0x16, 0x18);
- registerIncoming(State.PLAY, 0x17, 0x19);
- registerIncoming(State.PLAY, 0x18, 0x1a);
- registerIncoming(State.PLAY, 0x19, 0x1b);
- registerIncoming(State.PLAY, 0x1a, 0x1c);
- registerIncoming(State.PLAY, 0x1b, 0x1d);
- registerIncoming(State.PLAY, 0x1c, 0x1e);
- registerIncoming(State.PLAY, 0x1d, 0x1f);
- // New packet at 0x20
- registerIncoming(State.PLAY, 0x20, 0x20, new PacketRemapper() {
+ // New packet 0x19
+ registerIncoming(State.PLAY, 0x19, 0x19, new PacketRemapper() {
@Override
public void registerMap() {
handler(new PacketHandler() {
@@ -232,6 +229,13 @@ public class ProtocolSnapshotTo1_11_1 extends Protocol {
});
}
});
+ registerIncoming(State.PLAY, 0x17, 0x1a);
+ registerIncoming(State.PLAY, 0x18, 0x1b);
+ registerIncoming(State.PLAY, 0x19, 0x1c);
+ registerIncoming(State.PLAY, 0x1a, 0x1d);
+ registerIncoming(State.PLAY, 0x1b, 0x1e);
+ registerIncoming(State.PLAY, 0x1c, 0x1f);
+ registerIncoming(State.PLAY, 0x1d, 0x20);
}
private int getNewSoundId(int id) { //TODO Make it better, suggestions are welcome. It's ugly and hardcoded now.
@@ -257,6 +261,7 @@ public class ProtocolSnapshotTo1_11_1 extends Protocol {
@Override
public void init(UserConnection userConnection) {
-
+ if (!userConnection.has(ClientWorld.class))
+ userConnection.put(new ClientWorld(userConnection));
}
}
diff --git a/jar/pom.xml b/jar/pom.xml
index bee33f9ea..ad8e15873 100644
--- a/jar/pom.xml
+++ b/jar/pom.xml
@@ -5,7 +5,7 @@
viaversion-parent
us.myles
- 1.0.5-1_12pre4
+ 1.0.5-1_12pre5
4.0.0
viaversion-jar
diff --git a/pom.xml b/pom.xml
index fc98a860f..79a79905f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
us.myles
viaversion-parent
- 1.0.5-1_12pre4
+ 1.0.5-1_12pre5
pom
viaversion-parent
diff --git a/sponge-legacy/pom.xml b/sponge-legacy/pom.xml
index 2f8d08e44..64f994be9 100644
--- a/sponge-legacy/pom.xml
+++ b/sponge-legacy/pom.xml
@@ -5,7 +5,7 @@
viaversion-parent
us.myles
- 1.0.5-1_12pre4
+ 1.0.5-1_12pre5
4.0.0
diff --git a/sponge/pom.xml b/sponge/pom.xml
index a078b7283..7230b6939 100644
--- a/sponge/pom.xml
+++ b/sponge/pom.xml
@@ -5,7 +5,7 @@
viaversion-parent
us.myles
- 1.0.5-1_12pre4
+ 1.0.5-1_12pre5
4.0.0
diff --git a/sponge/src/main/java/us/myles/ViaVersion/sponge/platform/SpongeViaInjector.java b/sponge/src/main/java/us/myles/ViaVersion/sponge/platform/SpongeViaInjector.java
index a6ee44359..530eefadf 100644
--- a/sponge/src/main/java/us/myles/ViaVersion/sponge/platform/SpongeViaInjector.java
+++ b/sponge/src/main/java/us/myles/ViaVersion/sponge/platform/SpongeViaInjector.java
@@ -36,14 +36,12 @@ public class SpongeViaInjector implements ViaInjector {
// Inject the list
List wrapper = new ListWrapper((List) value) {
@Override
- public synchronized void handleAdd(Object o) {
- synchronized (this) {
- if (o instanceof ChannelFuture) {
- try {
- injectChannelFuture((ChannelFuture) o);
- } catch (Exception e) {
- e.printStackTrace();
- }
+ public void handleAdd(Object o) {
+ if (o instanceof ChannelFuture) {
+ try {
+ injectChannelFuture((ChannelFuture) o);
+ } catch (Exception e) {
+ e.printStackTrace();
}
}
}