This commit is contained in:
zimzaza4
2024-11-06 22:40:01 +08:00
parent 9a6aa2d369
commit eea387939f
3 changed files with 13 additions and 17 deletions

View File

@@ -69,13 +69,14 @@ public final class GeyserModelEngine extends JavaPlugin {
private List<String> enablePartVisibilityModels = new ArrayList<>(); private List<String> enablePartVisibilityModels = new ArrayList<>();
@Getter @Getter
private ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(4); private ScheduledExecutorService scheduler;
@Override @Override
public void onEnable() { public void onEnable() {
// Plugin startup logic // Plugin startup logic
saveDefaultConfig(); saveDefaultConfig();
// alwaysSendSkin = getConfig().getBoolean("always-send-skin"); // alwaysSendSkin = getConfig().getBoolean("always-send-skin");
sendDelay = getConfig().getInt("data-send-delay", 0); sendDelay = getConfig().getInt("data-send-delay", 0);
scheduler = Executors.newScheduledThreadPool(getConfig().getInt("thread-pool-size", 6));
viewDistance = getConfig().getInt("entity-view-distance", 60); viewDistance = getConfig().getInt("entity-view-distance", 60);
debug = getConfig().getBoolean("debug", false); debug = getConfig().getBoolean("debug", false);
modelEntityType = EntityType.valueOf(getConfig().getString("model-entity-type", "BAT")); modelEntityType = EntityType.valueOf(getConfig().getString("model-entity-type", "BAT"));

View File

@@ -24,6 +24,7 @@ import re.imc.geysermodelengine.util.BooleanPacker;
import java.awt.*; import java.awt.*;
import java.util.*; import java.util.*;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import static re.imc.geysermodelengine.model.ModelEntity.ENTITIES; import static re.imc.geysermodelengine.model.ModelEntity.ENTITIES;
@@ -45,10 +46,7 @@ public class EntityTask {
Cache<String, Boolean> lastPlayedAnim = CacheBuilder.newBuilder() Cache<String, Boolean> lastPlayedAnim = CacheBuilder.newBuilder()
.expireAfterWrite(30, TimeUnit.MILLISECONDS).build(); .expireAfterWrite(30, TimeUnit.MILLISECONDS).build();
private BukkitRunnable syncTask; private ScheduledFuture scheduledFuture;
private BukkitRunnable asyncTask;
public EntityTask(ModelEntity model) { public EntityTask(ModelEntity model) {
this.model = model; this.model = model;
@@ -69,7 +67,7 @@ public class EntityTask {
removed = true; removed = true;
entity.remove(); entity.remove();
} }
}.runTaskLater(GeyserModelEngine.getInstance(), 1); }.runTaskLaterAsynchronously(GeyserModelEngine.getInstance(), 1);
ENTITIES.remove(modeledEntity.getBase().getEntityId()); ENTITIES.remove(modeledEntity.getBase().getEntityId());
@@ -333,9 +331,6 @@ public class EntityTask {
if (!player.isOnline()) { if (!player.isOnline()) {
return false; return false;
} }
if (player.isDead()) {
return false;
}
if (GeyserModelEngine.getInstance().getJoinedPlayer() != null && GeyserModelEngine.getInstance().getJoinedPlayer().getIfPresent(player) != null) { if (GeyserModelEngine.getInstance().getJoinedPlayer() != null && GeyserModelEngine.getInstance().getJoinedPlayer().getIfPresent(player) != null) {
return false; return false;
} }
@@ -360,18 +355,19 @@ public class EntityTask {
public void cancel() { public void cancel() {
// syncTask.cancel(); // syncTask.cancel();
asyncTask.cancel(); scheduledFuture.cancel(true);
} }
public void run(GeyserModelEngine instance) { public void run(GeyserModelEngine instance) {
sendHitBoxToAll(); sendHitBoxToAll();
asyncTask = new BukkitRunnable() { Runnable asyncTask = () -> {
@Override checkViewers(model.getViewers());
public void run() { runAsync();
runAsync();
}
}; };
asyncTask.runTaskTimerAsynchronously(instance, 0, 0); scheduledFuture = GeyserModelEngine.getInstance().getScheduler().scheduleAtFixedRate(asyncTask, 0, 20, TimeUnit.MILLISECONDS);
//asyncTask.runTaskTimerAsynchronously(instance, 0, 0);
} }
} }

View File

@@ -68,7 +68,6 @@ public class ModelEntity {
public void runEntityTask() { public void runEntityTask() {
task = new EntityTask(this); task = new EntityTask(this);
task.checkViewers(viewers);
task.run(GeyserModelEngine.getInstance()); task.run(GeyserModelEngine.getInstance());
} }