From 99ceb9ae79d6acf796fd6280d931985e13e74260 Mon Sep 17 00:00:00 2001 From: HugoDaBosss Date: Sun, 6 Mar 2016 14:30:19 +0100 Subject: [PATCH] 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(); }