From a314b86f576cb45fcf2476a644ce4b82a67c75f8 Mon Sep 17 00:00:00 2001 From: Mats Date: Sun, 6 Mar 2016 12:18:18 +0100 Subject: [PATCH] Fix commandblock minecarts --- .../myles/ViaVersion/metadata/MetaIndex.java | 9 +++---- .../ViaVersion/metadata/MetadataRewriter.java | 26 ++++++++++--------- .../transformers/IncomingTransformer.java | 5 ++++ 3 files changed, 23 insertions(+), 17 deletions(-) diff --git a/src/main/java/us/myles/ViaVersion/metadata/MetaIndex.java b/src/main/java/us/myles/ViaVersion/metadata/MetaIndex.java index 336afcfd5..dd4e29e64 100644 --- a/src/main/java/us/myles/ViaVersion/metadata/MetaIndex.java +++ b/src/main/java/us/myles/ViaVersion/metadata/MetaIndex.java @@ -1,7 +1,6 @@ package us.myles.ViaVersion.metadata; import org.bukkit.entity.*; -import org.bukkit.entity.minecart.CommandMinecart; public enum MetaIndex { @@ -107,8 +106,8 @@ public enum MetaIndex { MINECART_BLOCK_Y(Minecart.class, 21, Type.Int, 9, NewType.VarInt), MINECART_SHOWBLOCK(Minecart.class, 22, Type.Byte, 10, NewType.Boolean), // Command minecart (they are still broken) - MINECART_COMMANDBLOCK_COMMAND(CommandMinecart.class,23,Type.String,11,NewType.String), - MINECART_COMMANDBLOCK_OUTPUT(CommandMinecart.class,24,Type.String,12,NewType.Chat), + MINECART_COMMANDBLOCK_COMMAND(Minecart.class, 23, Type.String, 11, NewType.String), + MINECART_COMMANDBLOCK_OUTPUT(Minecart.class, 24, Type.String, 12, NewType.Chat), // furnace cart FURNACECART_ISPOWERED(org.bukkit.entity.minecart.PoweredMinecart.class, 16, Type.Byte, 11, NewType.Boolean), // item drop @@ -167,14 +166,14 @@ public enum MetaIndex { public static MetaIndex getIndex(EntityType type, int index) { Class entityClass = type.getEntityClass(); - if(entityClass == null){ + if (entityClass == null) { System.out.println("Could not get entity class for " + type); return null; } for (MetaIndex mi : MetaIndex.values()) { if (mi.getIndex() == index) { // To fix issue with armour stands colliding with new values - if(mi.getApplicableClass().equals(LivingEntity.class)) continue; + if (mi.getApplicableClass().equals(LivingEntity.class)) continue; if ((mi.getApplicableClass().isAssignableFrom(entityClass) || mi.getApplicableClass().equals(entityClass))) { diff --git a/src/main/java/us/myles/ViaVersion/metadata/MetadataRewriter.java b/src/main/java/us/myles/ViaVersion/metadata/MetadataRewriter.java index e2758d29b..95d902318 100644 --- a/src/main/java/us/myles/ViaVersion/metadata/MetadataRewriter.java +++ b/src/main/java/us/myles/ViaVersion/metadata/MetadataRewriter.java @@ -1,20 +1,19 @@ package us.myles.ViaVersion.metadata; +import io.netty.buffer.ByteBuf; +import org.bukkit.entity.EntityType; +import org.bukkit.util.EulerAngle; +import org.bukkit.util.Vector; +import us.myles.ViaVersion.slot.ItemSlotRewriter; +import us.myles.ViaVersion.slot.ItemSlotRewriter.ItemStack; +import us.myles.ViaVersion.transformers.OutgoingTransformer; +import us.myles.ViaVersion.util.PacketUtil; + import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.UUID; -import org.bukkit.entity.EntityType; -import org.bukkit.util.EulerAngle; -import org.bukkit.util.Vector; - -import io.netty.buffer.ByteBuf; - -import us.myles.ViaVersion.slot.ItemSlotRewriter; -import us.myles.ViaVersion.slot.ItemSlotRewriter.ItemStack; -import us.myles.ViaVersion.util.PacketUtil; - public class MetadataRewriter { public static void writeMetadata1_9(EntityType type, List list, ByteBuf output) { @@ -88,7 +87,7 @@ public class MetadataRewriter { PacketUtil.writeString((String) value, output); break; case Boolean: - if(metaIndex == MetaIndex.AGEABLE_AGE) + if (metaIndex == MetaIndex.AGEABLE_AGE) output.writeBoolean(((Byte) value).byteValue() < 0); else output.writeBoolean(((Byte) value).byteValue() != 0); @@ -110,6 +109,9 @@ public class MetadataRewriter { output.writeFloat((float) angle.getY()); output.writeFloat((float) angle.getZ()); break; + case Chat: + PacketUtil.writeString(OutgoingTransformer.fixJson((String) value), output); + break; default: System.out.println("[Out] Unhandled MetaDataType: " + metaIndex.getNewType()); break; @@ -159,7 +161,7 @@ public class MetadataRewriter { e.printStackTrace(); } } - break; + break; case Position: { int x = buf.readInt(); int y = buf.readInt(); diff --git a/src/main/java/us/myles/ViaVersion/transformers/IncomingTransformer.java b/src/main/java/us/myles/ViaVersion/transformers/IncomingTransformer.java index 05e0d91e2..ae39f2b8d 100644 --- a/src/main/java/us/myles/ViaVersion/transformers/IncomingTransformer.java +++ b/src/main/java/us/myles/ViaVersion/transformers/IncomingTransformer.java @@ -216,6 +216,11 @@ public class IncomingTransformer { PacketUtil.writeString(command, output); output.writeBoolean(flag); return; + } else if (name.equals("MC|AdvCmd")) { + output.clear(); + PacketUtil.writeVarInt(PacketType.PLAY_PLUGIN_MESSAGE_REQUEST.getPacketID(), output); + PacketUtil.writeString("MC|AdvCdm", output); + output.writeBytes(b); } output.writeBytes(b); }