From 99ceb9ae79d6acf796fd6280d931985e13e74260 Mon Sep 17 00:00:00 2001 From: HugoDaBosss Date: Sun, 6 Mar 2016 14:30:19 +0100 Subject: [PATCH 1/5] Fix mob spawners when no EntityId is given --- .../transformers/OutgoingTransformer.java | 27 ++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/src/main/java/us/myles/ViaVersion/transformers/OutgoingTransformer.java b/src/main/java/us/myles/ViaVersion/transformers/OutgoingTransformer.java index 99be058f2..497b93552 100644 --- a/src/main/java/us/myles/ViaVersion/transformers/OutgoingTransformer.java +++ b/src/main/java/us/myles/ViaVersion/transformers/OutgoingTransformer.java @@ -624,14 +624,29 @@ public class OutgoingTransformer { output.writeByte(action); if (action == 1) { // update spawner try { + int index = input.readerIndex(); DataInputStream stream = new DataInputStream(new ByteBufInputStream(input)); CompoundTag tag = (CompoundTag) NBTIO.readTag(stream); - String entity = (String) tag.get("EntityId").getValue(); - CompoundTag spawn = new CompoundTag("SpawnData"); - spawn.put(new StringTag("id", entity)); - tag.put(spawn); - DataOutputStream out = new DataOutputStream(new ByteBufOutputStream(output)); - NBTIO.writeTag(out, tag); + if(tag != null && tag.contains("EntityId")) { + String entity = (String) tag.get("EntityId").getValue(); + System.out.println("EntityID: " + entity); + CompoundTag spawn = new CompoundTag("SpawnData"); + spawn.put(new StringTag("id", entity)); + tag.put(spawn); + DataOutputStream out = new DataOutputStream(new ByteBufOutputStream(output)); + NBTIO.writeTag(out, tag); + } + else if(tag != null) { // EntityID does not exist + CompoundTag spawn = new CompoundTag("SpawnData"); + spawn.put(new StringTag("id", "AreaEffectCloud")); //Make spawners show up as empty when no EntityId is given. + tag.put(spawn); + DataOutputStream out = new DataOutputStream(new ByteBufOutputStream(output)); + NBTIO.writeTag(out, tag); + } + else { //There doesn't exist any NBT tag + input.readerIndex(index); + output.writeBytes(input, input.readableBytes()); + } } catch (IOException e) { e.printStackTrace(); } From 4f8aff9c017a98ae1a9cd1eca4570a7eb99d5a2e Mon Sep 17 00:00:00 2001 From: HugoDaBosss Date: Sun, 6 Mar 2016 14:37:51 +0100 Subject: [PATCH 2/5] Forgot to remove debug message --- .../us/myles/ViaVersion/transformers/OutgoingTransformer.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/us/myles/ViaVersion/transformers/OutgoingTransformer.java b/src/main/java/us/myles/ViaVersion/transformers/OutgoingTransformer.java index 497b93552..7718633c6 100644 --- a/src/main/java/us/myles/ViaVersion/transformers/OutgoingTransformer.java +++ b/src/main/java/us/myles/ViaVersion/transformers/OutgoingTransformer.java @@ -629,7 +629,6 @@ public class OutgoingTransformer { CompoundTag tag = (CompoundTag) NBTIO.readTag(stream); if(tag != null && tag.contains("EntityId")) { String entity = (String) tag.get("EntityId").getValue(); - System.out.println("EntityID: " + entity); CompoundTag spawn = new CompoundTag("SpawnData"); spawn.put(new StringTag("id", entity)); tag.put(spawn); From 923f3088c037a7c25c6353c7fb82b8673d00c9e6 Mon Sep 17 00:00:00 2001 From: HugoDaBosss Date: Sun, 6 Mar 2016 14:40:52 +0100 Subject: [PATCH 3/5] Formatting --- .../us/myles/ViaVersion/transformers/OutgoingTransformer.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/us/myles/ViaVersion/transformers/OutgoingTransformer.java b/src/main/java/us/myles/ViaVersion/transformers/OutgoingTransformer.java index 7718633c6..30b3de341 100644 --- a/src/main/java/us/myles/ViaVersion/transformers/OutgoingTransformer.java +++ b/src/main/java/us/myles/ViaVersion/transformers/OutgoingTransformer.java @@ -624,11 +624,11 @@ public class OutgoingTransformer { output.writeByte(action); if (action == 1) { // update spawner try { - int index = input.readerIndex(); + int index = input.readerIndex(); DataInputStream stream = new DataInputStream(new ByteBufInputStream(input)); CompoundTag tag = (CompoundTag) NBTIO.readTag(stream); if(tag != null && tag.contains("EntityId")) { - String entity = (String) tag.get("EntityId").getValue(); + String entity = (String) tag.get("EntityId").getValue(); CompoundTag spawn = new CompoundTag("SpawnData"); spawn.put(new StringTag("id", entity)); tag.put(spawn); From 59d637e0f56cb8ceafcfe78e4b50d77de3743709 Mon Sep 17 00:00:00 2001 From: HugoDaBosss Date: Sun, 6 Mar 2016 14:42:22 +0100 Subject: [PATCH 4/5] More formatting (stupid eclipse) --- .../us/myles/ViaVersion/transformers/OutgoingTransformer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/us/myles/ViaVersion/transformers/OutgoingTransformer.java b/src/main/java/us/myles/ViaVersion/transformers/OutgoingTransformer.java index 30b3de341..cd6da577e 100644 --- a/src/main/java/us/myles/ViaVersion/transformers/OutgoingTransformer.java +++ b/src/main/java/us/myles/ViaVersion/transformers/OutgoingTransformer.java @@ -636,7 +636,7 @@ public class OutgoingTransformer { NBTIO.writeTag(out, tag); } else if(tag != null) { // EntityID does not exist - CompoundTag spawn = new CompoundTag("SpawnData"); + CompoundTag spawn = new CompoundTag("SpawnData"); spawn.put(new StringTag("id", "AreaEffectCloud")); //Make spawners show up as empty when no EntityId is given. tag.put(spawn); DataOutputStream out = new DataOutputStream(new ByteBufOutputStream(output)); From 3c6dcfe5bf8819ccea5b967a9bcb610c2165272c Mon Sep 17 00:00:00 2001 From: HugoDaBosss Date: Sun, 6 Mar 2016 14:42:50 +0100 Subject: [PATCH 5/5] Update OutgoingTransformer.java --- .../us/myles/ViaVersion/transformers/OutgoingTransformer.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/us/myles/ViaVersion/transformers/OutgoingTransformer.java b/src/main/java/us/myles/ViaVersion/transformers/OutgoingTransformer.java index cd6da577e..099c695a6 100644 --- a/src/main/java/us/myles/ViaVersion/transformers/OutgoingTransformer.java +++ b/src/main/java/us/myles/ViaVersion/transformers/OutgoingTransformer.java @@ -643,8 +643,8 @@ public class OutgoingTransformer { NBTIO.writeTag(out, tag); } else { //There doesn't exist any NBT tag - input.readerIndex(index); - output.writeBytes(input, input.readableBytes()); + input.readerIndex(index); + output.writeBytes(input, input.readableBytes()); } } catch (IOException e) { e.printStackTrace();