From 27993ba4366cc909d658fca4be69b76957588a46 Mon Sep 17 00:00:00 2001 From: Brokkonaut Date: Mon, 14 Aug 2023 06:46:18 +0200 Subject: [PATCH] add new methods to the interface --- .../de/cubeside/nmsutils/EntityUtils.java | 37 +++++++++++++++++++ .../nmsutils/v1_20_R1/EntityUtilsImpl.java | 3 ++ 2 files changed, 40 insertions(+) diff --git a/nmsutils-core/src/main/java/de/cubeside/nmsutils/EntityUtils.java b/nmsutils-core/src/main/java/de/cubeside/nmsutils/EntityUtils.java index fd0da35..f77b224 100644 --- a/nmsutils-core/src/main/java/de/cubeside/nmsutils/EntityUtils.java +++ b/nmsutils-core/src/main/java/de/cubeside/nmsutils/EntityUtils.java @@ -1,5 +1,6 @@ package de.cubeside.nmsutils; +import de.cubeside.nmsutils.nbt.CompoundTag; import java.util.function.Function; import java.util.logging.Level; import org.bukkit.Chunk; @@ -214,4 +215,40 @@ default public boolean isCamelSitting(Camel camel) { getNMSUtils().getPlugin().getLogger().log(Level.SEVERE, "Call to unimplemented method", new RuntimeException()); return false; } + + /** + * Gets a copy of the current nbt data of an entity + * + * @param entity + * the entity + * @return the entities nbt data + */ + default public CompoundTag getNbt(Entity entity) { + getNMSUtils().getPlugin().getLogger().log(Level.SEVERE, "Call to unimplemented method", new RuntimeException()); + return new CompoundTag(); + } + + /** + * Overwrites the nbt data of an entity, deleting all values that are not in the new nbt + * + * @param entity + * the entity + * @param nbt + * the new nbt data for the entity + */ + default public void setNbt(Entity entity, CompoundTag nbt) { + getNMSUtils().getPlugin().getLogger().log(Level.SEVERE, "Call to unimplemented method", new RuntimeException()); + } + + /** + * Merges the new nbt data to the entities nbt. All values that are not specified are kept unchanged + * + * @param entity + * the entity + * @param nbt + * the nbt data to merge in + */ + default public void mergeNbt(Entity entity, CompoundTag nbt) { + getNMSUtils().getPlugin().getLogger().log(Level.SEVERE, "Call to unimplemented method", new RuntimeException()); + } } diff --git a/nmsutils-v1_20_R1/src/main/java/de/cubeside/nmsutils/v1_20_R1/EntityUtilsImpl.java b/nmsutils-v1_20_R1/src/main/java/de/cubeside/nmsutils/v1_20_R1/EntityUtilsImpl.java index 41b1b42..f230fd4 100644 --- a/nmsutils-v1_20_R1/src/main/java/de/cubeside/nmsutils/v1_20_R1/EntityUtilsImpl.java +++ b/nmsutils-v1_20_R1/src/main/java/de/cubeside/nmsutils/v1_20_R1/EntityUtilsImpl.java @@ -351,12 +351,14 @@ public boolean isCamelSitting(org.bukkit.entity.Camel entity) { return nmsEntity.isCamelSitting(); } + @Override public CompoundTag getNbt(org.bukkit.entity.Entity entity) { Entity nmsEntity = ((CraftEntity) entity).getHandle(); net.minecraft.nbt.CompoundTag compoundTag = nmsEntity.saveWithoutId(new net.minecraft.nbt.CompoundTag()); return nmsUtils.getNbtUtils().fromNativeCompound(compoundTag); } + @Override public void setNbt(org.bukkit.entity.Entity entity, CompoundTag nbt) { net.minecraft.nbt.CompoundTag nativeNbt = nmsUtils.getNbtUtils().toNativeCompound(nbt); Entity nmsEntity = ((CraftEntity) entity).getHandle(); @@ -366,6 +368,7 @@ public void setNbt(org.bukkit.entity.Entity entity, CompoundTag nbt) { nmsEntity.setUUID(uuid); } + @Override public void mergeNbt(org.bukkit.entity.Entity entity, CompoundTag nbt) { net.minecraft.nbt.CompoundTag nativeNbt = nmsUtils.getNbtUtils().toNativeCompound(nbt); Entity nmsEntity = ((CraftEntity) entity).getHandle();