From 7174ce2b21d67fb7eeb974a69efc2fb781fc7eba Mon Sep 17 00:00:00 2001 From: Samuel Date: Tue, 26 Sep 2023 09:40:52 -0400 Subject: [PATCH] hollow-cube/editentitymeta_function (#62) * Add editEntityMeta * Log entityType instead * finally (cherry picked from commit 30699ec3fd33520bb7e97d0e97c964fa56818f23) --- .../java/net/minestom/server/entity/Entity.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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.