diff --git a/nmsutils-core/src/main/java/de/cubeside/nmsutils/nbt/CompoundTag.java b/nmsutils-core/src/main/java/de/cubeside/nmsutils/nbt/CompoundTag.java index 9c2f00f..e6aadb3 100644 --- a/nmsutils-core/src/main/java/de/cubeside/nmsutils/nbt/CompoundTag.java +++ b/nmsutils-core/src/main/java/de/cubeside/nmsutils/nbt/CompoundTag.java @@ -3,7 +3,7 @@ import java.util.Set; import java.util.UUID; -public interface CompoundTag { +public interface CompoundTag extends Cloneable { boolean containsKey(String name); @@ -17,6 +17,8 @@ public interface CompoundTag { void size(); + void merge(CompoundTag source); + CompoundTag getCompound(String name); CompoundTag getCompound(String name, boolean createIfMissing); @@ -96,4 +98,6 @@ public interface CompoundTag { @Override boolean equals(Object obj); + + public CompoundTag clone(); } \ No newline at end of file diff --git a/nmsutils-core/src/main/java/de/cubeside/nmsutils/nbt/ListTag.java b/nmsutils-core/src/main/java/de/cubeside/nmsutils/nbt/ListTag.java index dc14dd9..160b4ed 100644 --- a/nmsutils-core/src/main/java/de/cubeside/nmsutils/nbt/ListTag.java +++ b/nmsutils-core/src/main/java/de/cubeside/nmsutils/nbt/ListTag.java @@ -2,7 +2,7 @@ import java.util.UUID; -public interface ListTag { +public interface ListTag extends Cloneable { int size(); boolean isEmpty(); @@ -134,4 +134,6 @@ public interface ListTag { boolean addUUID(int index, UUID v); boolean setUUID(int index, UUID v); + + public ListTag clone(); } diff --git a/nmsutils-v1_19_R3/src/main/java/de/cubeside/nmsutils/v1_19_R3/CompoundTagImpl.java b/nmsutils-v1_19_R3/src/main/java/de/cubeside/nmsutils/v1_19_R3/CompoundTagImpl.java index cc2128f..08c7060 100644 --- a/nmsutils-v1_19_R3/src/main/java/de/cubeside/nmsutils/v1_19_R3/CompoundTagImpl.java +++ b/nmsutils-v1_19_R3/src/main/java/de/cubeside/nmsutils/v1_19_R3/CompoundTagImpl.java @@ -51,6 +51,11 @@ public void size() { handle.size(); } + @Override + public void merge(de.cubeside.nmsutils.nbt.CompoundTag source) { + handle.merge(((CompoundTagImpl) source).handle); + } + @Override public CompoundTagImpl getCompound(String name) { return getCompound(name, false); @@ -309,4 +314,9 @@ public int hashCode() { public boolean equals(Object obj) { return obj instanceof CompoundTagImpl o && handle.equals(o.handle); } + + @Override + public CompoundTagImpl clone() { + return new CompoundTagImpl(handle.copy()); + } } diff --git a/nmsutils-v1_19_R3/src/main/java/de/cubeside/nmsutils/v1_19_R3/ListTagImpl.java b/nmsutils-v1_19_R3/src/main/java/de/cubeside/nmsutils/v1_19_R3/ListTagImpl.java index 9e1dfaa..2fba9b0 100644 --- a/nmsutils-v1_19_R3/src/main/java/de/cubeside/nmsutils/v1_19_R3/ListTagImpl.java +++ b/nmsutils-v1_19_R3/src/main/java/de/cubeside/nmsutils/v1_19_R3/ListTagImpl.java @@ -414,4 +414,9 @@ public int hashCode() { public boolean equals(Object obj) { return obj instanceof ListTagImpl o && handle.equals(o.handle); } + + @Override + public ListTagImpl clone() { + return new ListTagImpl(handle.copy()); + } } diff --git a/nmsutils-v1_20_R1/src/main/java/de/cubeside/nmsutils/v1_20_R1/CompoundTagImpl.java b/nmsutils-v1_20_R1/src/main/java/de/cubeside/nmsutils/v1_20_R1/CompoundTagImpl.java index 67f0958..7cdcb8f 100644 --- a/nmsutils-v1_20_R1/src/main/java/de/cubeside/nmsutils/v1_20_R1/CompoundTagImpl.java +++ b/nmsutils-v1_20_R1/src/main/java/de/cubeside/nmsutils/v1_20_R1/CompoundTagImpl.java @@ -51,6 +51,11 @@ public void size() { handle.size(); } + @Override + public void merge(de.cubeside.nmsutils.nbt.CompoundTag source) { + handle.merge(((CompoundTagImpl) source).handle); + } + @Override public CompoundTagImpl getCompound(String name) { return getCompound(name, false); @@ -309,4 +314,9 @@ public int hashCode() { public boolean equals(Object obj) { return obj instanceof CompoundTagImpl o && handle.equals(o.handle); } + + @Override + public CompoundTagImpl clone() { + return new CompoundTagImpl(handle.copy()); + } } diff --git a/nmsutils-v1_20_R1/src/main/java/de/cubeside/nmsutils/v1_20_R1/ListTagImpl.java b/nmsutils-v1_20_R1/src/main/java/de/cubeside/nmsutils/v1_20_R1/ListTagImpl.java index 69cec13..1f35579 100644 --- a/nmsutils-v1_20_R1/src/main/java/de/cubeside/nmsutils/v1_20_R1/ListTagImpl.java +++ b/nmsutils-v1_20_R1/src/main/java/de/cubeside/nmsutils/v1_20_R1/ListTagImpl.java @@ -414,4 +414,9 @@ public int hashCode() { public boolean equals(Object obj) { return obj instanceof ListTagImpl o && handle.equals(o.handle); } + + @Override + public ListTagImpl clone() { + return new ListTagImpl(handle.copy()); + } }