Skip to content

Commit 015099b

Browse files
committed
Clone NBT tags
Fixes #366
1 parent 7e8356f commit 015099b

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

modules/API/src/main/java/com/comphenix/protocol/reflect/cloning/BukkitCloner.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232
import com.comphenix.protocol.wrappers.WrappedBlockData;
3333
import com.comphenix.protocol.wrappers.WrappedDataWatcher;
3434
import com.comphenix.protocol.wrappers.WrappedServerPing;
35+
import com.comphenix.protocol.wrappers.nbt.NbtFactory;
36+
import com.comphenix.protocol.wrappers.nbt.NbtWrapper;
3537
import com.google.common.collect.Maps;
3638

3739
/**
@@ -76,6 +78,10 @@ public BukkitCloner() {
7678
addClass(8, MinecraftReflection.getNonNullListClass());
7779
} catch (Throwable ex) {
7880
}
81+
82+
try {
83+
addClass(9, MinecraftReflection.getNBTBaseClass());
84+
} catch (Throwable ex) { }
7985
}
8086

8187
private void addClass(int id, Class<?> clazz) {
@@ -133,6 +139,9 @@ public Object clone(Object source) {
133139
return blockDataConverter.getGeneric(blockDataConverter.getSpecific(source).deepClone());
134140
case 8:
135141
return nonNullListCloner().clone(source);
142+
case 9:
143+
NbtWrapper<?> clone = (NbtWrapper<?>) NbtFactory.fromNMS(source).deepClone();
144+
return clone.getHandle();
136145
default:
137146
throw new IllegalArgumentException("Cannot clone objects of type " + source.getClass());
138147
}

0 commit comments

Comments
 (0)