|
25 | 25 | import com.comphenix.protocol.wrappers.BukkitConverters;
|
26 | 26 | import com.comphenix.protocol.wrappers.ChunkPosition;
|
27 | 27 | import com.comphenix.protocol.wrappers.MinecraftKey;
|
| 28 | +import com.comphenix.protocol.wrappers.WrappedBlockData; |
28 | 29 | import com.comphenix.protocol.wrappers.WrappedDataWatcher;
|
29 | 30 | import com.comphenix.protocol.wrappers.WrappedServerPing;
|
30 | 31 | import com.google.common.collect.Maps;
|
@@ -61,6 +62,11 @@ public BukkitCloner() {
|
61 | 62 | addClass(5, MinecraftReflection.getDataWatcherSerializerClass());
|
62 | 63 | addClass(6, MinecraftReflection.getMinecraftKeyClass());
|
63 | 64 | }
|
| 65 | + |
| 66 | + try { |
| 67 | + addClass(7, MinecraftReflection.getIBlockDataClass()); |
| 68 | + } catch (Throwable ex) { |
| 69 | + } |
64 | 70 | }
|
65 | 71 |
|
66 | 72 | private void addClass(int id, Class<?> clazz) {
|
@@ -112,7 +118,10 @@ public Object clone(Object source) {
|
112 | 118 | return source;
|
113 | 119 | case 6:
|
114 | 120 | EquivalentConverter<MinecraftKey> keyConverter = MinecraftKey.getConverter();
|
115 |
| - return keyConverter.getGeneric(clonableClasses.get(5), keyConverter.getSpecific(source)); |
| 121 | + return keyConverter.getGeneric(clonableClasses.get(6), keyConverter.getSpecific(source)); |
| 122 | + case 7: |
| 123 | + EquivalentConverter<WrappedBlockData> blockDataConverter = BukkitConverters.getWrappedBlockDataConverter(); |
| 124 | + return blockDataConverter.getGeneric(clonableClasses.get(7), blockDataConverter.getSpecific(source).deepClone()); |
116 | 125 | default:
|
117 | 126 | throw new IllegalArgumentException("Cannot clone objects of type " + source.getClass());
|
118 | 127 | }
|
|
0 commit comments