From 5d80173f442c83161644973df5f170ddab2771d4 Mon Sep 17 00:00:00 2001 From: Dan Mulloy Date: Fri, 3 Apr 2015 14:00:56 -0400 Subject: [PATCH] Fix block data, don't shade netty --- ProtocolLib/pom.xml | 1 + .../protocol/wrappers/WrappedBlockData.java | 22 ++++++++++++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/ProtocolLib/pom.xml b/ProtocolLib/pom.xml index c075ec34..b3b03f18 100644 --- a/ProtocolLib/pom.xml +++ b/ProtocolLib/pom.xml @@ -77,6 +77,7 @@ org.spigotmc:spigot-api junit:junit com.google* + io.netty* diff --git a/ProtocolLib/src/main/java/com/comphenix/protocol/wrappers/WrappedBlockData.java b/ProtocolLib/src/main/java/com/comphenix/protocol/wrappers/WrappedBlockData.java index 768642cd..1e1a4a2a 100644 --- a/ProtocolLib/src/main/java/com/comphenix/protocol/wrappers/WrappedBlockData.java +++ b/ProtocolLib/src/main/java/com/comphenix/protocol/wrappers/WrappedBlockData.java @@ -16,11 +16,14 @@ */ package com.comphenix.protocol.wrappers; +import java.lang.reflect.Modifier; + import org.bukkit.Material; import com.comphenix.protocol.reflect.FuzzyReflection; import com.comphenix.protocol.reflect.accessors.Accessors; import com.comphenix.protocol.reflect.accessors.MethodAccessor; +import com.comphenix.protocol.reflect.fuzzy.FuzzyMethodContract; import com.comphenix.protocol.utility.MinecraftReflection; /** @@ -40,12 +43,16 @@ public class WrappedBlockData extends AbstractWrapper { static { FuzzyReflection fuzzy = FuzzyReflection.fromClass(BLOCK); - FROM_LEGACY_DATA = Accessors.getMethodAccessor(fuzzy.getMethodByParameters("fromLegacyData", IBLOCK_DATA, - new Class[] { int.class })); + FuzzyMethodContract contract = FuzzyMethodContract.newBuilder() + .banModifier(Modifier.STATIC) + .parameterExactType(int.class) + .returnTypeExact(IBLOCK_DATA) + .build(); + FROM_LEGACY_DATA = Accessors.getMethodAccessor(fuzzy.getMethod(contract)); fuzzy = FuzzyReflection.fromClass(MAGIC_NUMBERS); GET_NMS_BLOCK = Accessors.getMethodAccessor(fuzzy.getMethodByParameters("getBlock", BLOCK, - new Class[] { int.class })); + new Class[] { Material.class })); fuzzy = FuzzyReflection.fromClass(IBLOCK_DATA); GET_BLOCK = Accessors.getMethodAccessor(fuzzy.getMethodByParameters("getBlock", BLOCK, @@ -80,7 +87,7 @@ public class WrappedBlockData extends AbstractWrapper { * @param data New data */ public void setTypeAndData(Material type, int data) { - Object nmsBlock = GET_NMS_BLOCK.invoke(null, type.getId()); + Object nmsBlock = GET_NMS_BLOCK.invoke(null, type); Object blockData = FROM_LEGACY_DATA.invoke(nmsBlock, data); setHandle(blockData); } @@ -101,8 +108,13 @@ public class WrappedBlockData extends AbstractWrapper { * @return New BlockData */ public static WrappedBlockData createData(Material type, int data) { - Object nmsBlock = GET_NMS_BLOCK.invoke(null, type.getId()); + Object nmsBlock = GET_NMS_BLOCK.invoke(null, type); Object blockData = FROM_LEGACY_DATA.invoke(nmsBlock, data); return new WrappedBlockData(blockData); } + + @Override + public String toString() { + return "WrappedBlockData[handle=" + handle + "]"; + } } \ No newline at end of file