package re.imc.geysermodelengine.runnables; import io.papermc.paper.threadedregions.scheduler.ScheduledTask; import re.imc.geysermodelengine.GeyserModelEngine; import re.imc.geysermodelengine.managers.model.entity.EntityData; import re.imc.geysermodelengine.managers.model.model.Model; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.function.Consumer; public class UpdateTaskRunnable implements Runnable { private final GeyserModelEngine plugin; public UpdateTaskRunnable(GeyserModelEngine plugin) { this.plugin = plugin; } @Override public void run() { ConcurrentHashMap> entitiesCache = plugin.getModelManager().getEntitiesCache(); if (entitiesCache.isEmpty()) return; try { for (Map models : entitiesCache.values()) { models.values().forEach(entityData -> { if (entityData.getViewers().isEmpty()) return; plugin.getEntityTaskManager().getPropertyHandler().updateEntityProperties(entityData, entityData.getViewers(), false); }); } } catch (Throwable err) { throw new RuntimeException(err); } } }