Skip to content

Commit 0d3867c

Browse files
committed
Add WrappedBlockData.getData(), improve block data test
1 parent 4e16792 commit 0d3867c

File tree

2 files changed

+29
-4
lines changed

2 files changed

+29
-4
lines changed

ProtocolLib/src/main/java/com/comphenix/protocol/wrappers/WrappedBlockData.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ public class WrappedBlockData extends AbstractWrapper {
3838
private static final Class<?> BLOCK = MinecraftReflection.getBlockClass();
3939

4040
private static MethodAccessor FROM_LEGACY_DATA = null;
41+
private static MethodAccessor TO_LEGACY_DATA = null;
4142
private static MethodAccessor GET_NMS_BLOCK = null;
4243
private static MethodAccessor GET_BLOCK = null;
4344

@@ -50,6 +51,13 @@ public class WrappedBlockData extends AbstractWrapper {
5051
.build();
5152
FROM_LEGACY_DATA = Accessors.getMethodAccessor(fuzzy.getMethod(contract));
5253

54+
contract = FuzzyMethodContract.newBuilder()
55+
.banModifier(Modifier.STATIC)
56+
.parameterExactArray(IBLOCK_DATA)
57+
.returnTypeExact(int.class)
58+
.build();
59+
TO_LEGACY_DATA = Accessors.getMethodAccessor(fuzzy.getMethod(contract));
60+
5361
fuzzy = FuzzyReflection.fromClass(MAGIC_NUMBERS);
5462
GET_NMS_BLOCK = Accessors.getMethodAccessor(fuzzy.getMethodByParameters("getBlock", BLOCK,
5563
new Class<?>[] { Material.class }));
@@ -73,6 +81,15 @@ public Material getType() {
7381
return BukkitConverters.getBlockConverter().getSpecific(block);
7482
}
7583

84+
/**
85+
* Retrieves the data of this BlockData.
86+
* @return The data of this BlockData.
87+
*/
88+
public int getData() {
89+
Object block = GET_BLOCK.invoke(handle);
90+
return (Integer) TO_LEGACY_DATA.invoke(block, handle);
91+
}
92+
7693
/**
7794
* Sets the type of this BlockData.
7895
* @param type New type

ProtocolLib/src/test/java/com/comphenix/protocol/wrappers/WrappedBlockDataTest.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import static org.junit.Assert.assertEquals;
2020

21+
import org.bukkit.DyeColor;
2122
import org.bukkit.Material;
2223
import org.junit.BeforeClass;
2324
import org.junit.Test;
@@ -38,11 +39,18 @@ public static void initializeBukkit() {
3839

3940
@Test
4041
public void test() {
41-
Material type = Material.STONE;
42-
WrappedBlockData data = WrappedBlockData.createData(type);
43-
Object generic = BukkitConverters.getWrappedBlockDataConverter().getGeneric(MinecraftReflection.getIBlockDataClass(), data);
42+
Material type = Material.WOOL;
43+
int data = DyeColor.BLUE.getWoolData();
44+
45+
WrappedBlockData wrapper = WrappedBlockData.createData(type, data);
46+
47+
assertEquals(wrapper.getType(), type);
48+
assertEquals(wrapper.getData(), data);
49+
50+
Object generic = BukkitConverters.getWrappedBlockDataConverter().getGeneric(MinecraftReflection.getIBlockDataClass(), wrapper);
4451
WrappedBlockData back = BukkitConverters.getWrappedBlockDataConverter().getSpecific(generic);
4552

46-
assertEquals(data.getType(), back.getType());
53+
assertEquals(wrapper.getType(), back.getType());
54+
assertEquals(wrapper.getData(), back.getData());
4755
}
4856
}

0 commit comments

Comments
 (0)