From 02db1afa9c97fdfe8d0a36c79cf5614d0576621b Mon Sep 17 00:00:00 2001 From: Morphan1 Date: Sat, 15 Oct 2016 17:28:23 -0400 Subject: [PATCH] Temp fix for villager trades --- .../packets/DenizenPacketHandler.java | 3 +++ .../packets/PacketOutTradeList_v1_10_R1.java | 25 ++++++------------- .../packets/PacketOutTradeList_v1_8_R3.java | 23 +++++------------ .../packets/PacketOutTradeList_v1_9_R2.java | 23 +++++------------ 4 files changed, 23 insertions(+), 51 deletions(-) diff --git a/plugin/src/main/java/net/aufdemrand/denizen/utilities/packets/DenizenPacketHandler.java b/plugin/src/main/java/net/aufdemrand/denizen/utilities/packets/DenizenPacketHandler.java index 10dcaaac5a..608380768f 100644 --- a/plugin/src/main/java/net/aufdemrand/denizen/utilities/packets/DenizenPacketHandler.java +++ b/plugin/src/main/java/net/aufdemrand/denizen/utilities/packets/DenizenPacketHandler.java @@ -146,6 +146,9 @@ public boolean sendPacket(Player player, PacketOutWindowItems windowItems) { @Override public boolean sendPacket(Player player, PacketOutTradeList tradeList) { List tradeOffers = tradeList.getTradeOffers(); + if (tradeOffers == null) { + return false; + } for (TradeOffer tradeOffer : tradeOffers) { tradeOffer.setFirstCost(removeItemScriptLore(tradeOffer.getFirstCost())); tradeOffer.setSecondCost(removeItemScriptLore(tradeOffer.getSecondCost())); diff --git a/v1_10_R1/src/main/java/net/aufdemrand/denizen/nms/impl/packets/PacketOutTradeList_v1_10_R1.java b/v1_10_R1/src/main/java/net/aufdemrand/denizen/nms/impl/packets/PacketOutTradeList_v1_10_R1.java index 2148166119..e9c9f1ada5 100644 --- a/v1_10_R1/src/main/java/net/aufdemrand/denizen/nms/impl/packets/PacketOutTradeList_v1_10_R1.java +++ b/v1_10_R1/src/main/java/net/aufdemrand/denizen/nms/impl/packets/PacketOutTradeList_v1_10_R1.java @@ -2,17 +2,12 @@ import io.netty.buffer.Unpooled; import net.aufdemrand.denizen.nms.interfaces.packets.PacketOutTradeList; -import net.aufdemrand.denizen.nms.util.ReflectionHelper; import net.aufdemrand.denizen.nms.util.TradeOffer; import net.minecraft.server.v1_10_R1.PacketDataSerializer; import net.minecraft.server.v1_10_R1.PacketPlayOutCustomPayload; import org.bukkit.craftbukkit.v1_10_R1.inventory.CraftItemStack; -import org.bukkit.inventory.ItemStack; -import java.lang.reflect.Field; -import java.util.ArrayList; import java.util.List; -import java.util.Map; public class PacketOutTradeList_v1_10_R1 implements PacketOutTradeList { @@ -22,9 +17,12 @@ public class PacketOutTradeList_v1_10_R1 implements PacketOutTradeList { public PacketOutTradeList_v1_10_R1(PacketPlayOutCustomPayload internal) { this.internal = internal; - try { - PacketDataSerializer serializer = (PacketDataSerializer) SERIALIZER.get(internal); + /*try { + PacketDataSerializer serializer = new PacketDataSerializer(Unpooled.buffer()); + internal.b(serializer); container = serializer.readInt(); + int bytes = serializer.readableBytes(); + serializer = new PacketDataSerializer(serializer.readBytes(bytes)); tradeOffers = new ArrayList(); byte tradeCount = serializer.readByte(); for (byte i = 0; i < tradeCount; i++) { @@ -40,7 +38,7 @@ public PacketOutTradeList_v1_10_R1(PacketPlayOutCustomPayload internal) { } catch (Exception e) { e.printStackTrace(); - } + }*/ } @Override @@ -53,7 +51,7 @@ public void setTradeOffers(List tradeOffers) { try { PacketDataSerializer serializer = new PacketDataSerializer(Unpooled.buffer()); serializer.writeInt(container); - serializer.writeByte(tradeOffers.size()); + serializer.writeByte((byte)(tradeOffers.size() & 255)); for (TradeOffer tradeOffer : tradeOffers) { serializer.a(CraftItemStack.asNMSCopy(tradeOffer.getFirstCost())); serializer.a(CraftItemStack.asNMSCopy(tradeOffer.getProduct())); @@ -66,17 +64,10 @@ public void setTradeOffers(List tradeOffers) { serializer.writeInt(tradeOffer.getCurrentUses()); serializer.writeInt(tradeOffer.getMaxUses()); } - SERIALIZER.set(internal, serializer); + internal.a(serializer); } catch (Exception e) { e.printStackTrace(); } } - - private static final Field SERIALIZER; - - static { - Map fields = ReflectionHelper.getFields(PacketPlayOutCustomPayload.class); - SERIALIZER = fields.get("b"); - } } diff --git a/v1_8_R3/src/main/java/net/aufdemrand/denizen/nms/impl/packets/PacketOutTradeList_v1_8_R3.java b/v1_8_R3/src/main/java/net/aufdemrand/denizen/nms/impl/packets/PacketOutTradeList_v1_8_R3.java index 7532305579..839dc8df2a 100644 --- a/v1_8_R3/src/main/java/net/aufdemrand/denizen/nms/impl/packets/PacketOutTradeList_v1_8_R3.java +++ b/v1_8_R3/src/main/java/net/aufdemrand/denizen/nms/impl/packets/PacketOutTradeList_v1_8_R3.java @@ -2,17 +2,12 @@ import io.netty.buffer.Unpooled; import net.aufdemrand.denizen.nms.interfaces.packets.PacketOutTradeList; -import net.aufdemrand.denizen.nms.util.ReflectionHelper; import net.aufdemrand.denizen.nms.util.TradeOffer; import net.minecraft.server.v1_8_R3.PacketDataSerializer; import net.minecraft.server.v1_8_R3.PacketPlayOutCustomPayload; import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftItemStack; -import org.bukkit.inventory.ItemStack; -import java.lang.reflect.Field; -import java.util.ArrayList; import java.util.List; -import java.util.Map; public class PacketOutTradeList_v1_8_R3 implements PacketOutTradeList { @@ -21,9 +16,10 @@ public class PacketOutTradeList_v1_8_R3 implements PacketOutTradeList { private List tradeOffers; public PacketOutTradeList_v1_8_R3(PacketPlayOutCustomPayload internal) { - this.internal = internal; + /*this.internal = internal; try { - PacketDataSerializer serializer = (PacketDataSerializer) SERIALIZER.get(internal); + PacketDataSerializer serializer = new PacketDataSerializer(Unpooled.buffer()); + internal.b(serializer); container = serializer.readInt(); tradeOffers = new ArrayList(); byte tradeCount = serializer.readByte(); @@ -40,7 +36,7 @@ public PacketOutTradeList_v1_8_R3(PacketPlayOutCustomPayload internal) { } catch (Exception e) { e.printStackTrace(); - } + }*/ } @Override @@ -53,7 +49,7 @@ public void setTradeOffers(List tradeOffers) { try { PacketDataSerializer serializer = new PacketDataSerializer(Unpooled.buffer()); serializer.writeInt(container); - serializer.writeByte(tradeOffers.size()); + serializer.writeByte((byte)(tradeOffers.size() & 255)); for (TradeOffer tradeOffer : tradeOffers) { serializer.a(CraftItemStack.asNMSCopy(tradeOffer.getFirstCost())); serializer.a(CraftItemStack.asNMSCopy(tradeOffer.getProduct())); @@ -66,17 +62,10 @@ public void setTradeOffers(List tradeOffers) { serializer.writeInt(tradeOffer.getCurrentUses()); serializer.writeInt(tradeOffer.getMaxUses()); } - SERIALIZER.set(internal, serializer); + internal.a(serializer); } catch (Exception e) { e.printStackTrace(); } } - - private static final Field SERIALIZER; - - static { - Map fields = ReflectionHelper.getFields(PacketPlayOutCustomPayload.class); - SERIALIZER = fields.get("b"); - } } diff --git a/v1_9_R2/src/main/java/net/aufdemrand/denizen/nms/impl/packets/PacketOutTradeList_v1_9_R2.java b/v1_9_R2/src/main/java/net/aufdemrand/denizen/nms/impl/packets/PacketOutTradeList_v1_9_R2.java index a708649477..f8af580451 100644 --- a/v1_9_R2/src/main/java/net/aufdemrand/denizen/nms/impl/packets/PacketOutTradeList_v1_9_R2.java +++ b/v1_9_R2/src/main/java/net/aufdemrand/denizen/nms/impl/packets/PacketOutTradeList_v1_9_R2.java @@ -2,17 +2,12 @@ import io.netty.buffer.Unpooled; import net.aufdemrand.denizen.nms.interfaces.packets.PacketOutTradeList; -import net.aufdemrand.denizen.nms.util.ReflectionHelper; import net.aufdemrand.denizen.nms.util.TradeOffer; import net.minecraft.server.v1_9_R2.PacketDataSerializer; import net.minecraft.server.v1_9_R2.PacketPlayOutCustomPayload; import org.bukkit.craftbukkit.v1_9_R2.inventory.CraftItemStack; -import org.bukkit.inventory.ItemStack; -import java.lang.reflect.Field; -import java.util.ArrayList; import java.util.List; -import java.util.Map; public class PacketOutTradeList_v1_9_R2 implements PacketOutTradeList { @@ -21,9 +16,10 @@ public class PacketOutTradeList_v1_9_R2 implements PacketOutTradeList { private List tradeOffers; public PacketOutTradeList_v1_9_R2(PacketPlayOutCustomPayload internal) { - this.internal = internal; + /*this.internal = internal; try { - PacketDataSerializer serializer = (PacketDataSerializer) SERIALIZER.get(internal); + PacketDataSerializer serializer = new PacketDataSerializer(Unpooled.buffer()); + internal.b(serializer); container = serializer.readInt(); tradeOffers = new ArrayList(); byte tradeCount = serializer.readByte(); @@ -40,7 +36,7 @@ public PacketOutTradeList_v1_9_R2(PacketPlayOutCustomPayload internal) { } catch (Exception e) { e.printStackTrace(); - } + }*/ } @Override @@ -53,7 +49,7 @@ public void setTradeOffers(List tradeOffers) { try { PacketDataSerializer serializer = new PacketDataSerializer(Unpooled.buffer()); serializer.writeInt(container); - serializer.writeByte(tradeOffers.size()); + serializer.writeByte((byte)(tradeOffers.size() & 255)); for (TradeOffer tradeOffer : tradeOffers) { serializer.a(CraftItemStack.asNMSCopy(tradeOffer.getFirstCost())); serializer.a(CraftItemStack.asNMSCopy(tradeOffer.getProduct())); @@ -66,17 +62,10 @@ public void setTradeOffers(List tradeOffers) { serializer.writeInt(tradeOffer.getCurrentUses()); serializer.writeInt(tradeOffer.getMaxUses()); } - SERIALIZER.set(internal, serializer); + internal.a(serializer); } catch (Exception e) { e.printStackTrace(); } } - - private static final Field SERIALIZER; - - static { - Map fields = ReflectionHelper.getFields(PacketPlayOutCustomPayload.class); - SERIALIZER = fields.get("b"); - } }