diff --git a/src/main/java/net/minestom/server/entity/Entity.java b/src/main/java/net/minestom/server/entity/Entity.java index eb8f0049c..7e6ea1c66 100644 --- a/src/main/java/net/minestom/server/entity/Entity.java +++ b/src/main/java/net/minestom/server/entity/Entity.java @@ -291,6 +291,21 @@ public class Entity implements Viewable, Tickable, Schedulable, Snapshotable, Ev return this.entityMeta; } + /** + * Do a batch edit of this entity's metadata. + */ + public void editEntityMeta(Class metaClass, Consumer editor) { + entityMeta.setNotifyAboutChanges(false); + try { + TMeta casted = metaClass.cast(entityMeta); + editor.accept(casted); + } catch (Throwable t) { + throw new RuntimeException("Error editing entity " + id + " " + entityType.name() + " meta", t); + } finally { + entityMeta.setNotifyAboutChanges(true); + } + } + /** * Teleports the entity only if the chunk at {@code position} is loaded or if * {@link Instance#hasEnabledAutoChunkLoad()} returns true.