mirror of
https://github.com/GeyserExtensionists/GeyserModelEngine.git
synced 2025-12-19 15:09:18 +00:00
optimize
This commit is contained in:
@@ -76,7 +76,7 @@ public final class GeyserModelEngine extends JavaPlugin {
|
|||||||
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));
|
scheduler = Executors.newScheduledThreadPool(getConfig().getInt("thread-pool-size", 4));
|
||||||
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"));
|
||||||
|
|||||||
@@ -46,11 +46,7 @@ public class ModelListener implements Listener {
|
|||||||
if (!GeyserModelEngine.getInstance().isInitialized()) {
|
if (!GeyserModelEngine.getInstance().isInitialized()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
ModelEntity.create(event.getTarget(), event.getModel());
|
||||||
Bukkit.getScheduler().runTask(GeyserModelEngine.getInstance(), () -> {
|
|
||||||
ModelEntity.create(event.getTarget(), event.getModel());
|
|
||||||
});
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import lombok.Getter;
|
|||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
import me.zimzaza4.geyserutils.spigot.api.EntityUtils;
|
import me.zimzaza4.geyserutils.spigot.api.EntityUtils;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Location;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
import org.geysermc.floodgate.api.FloodgateApi;
|
import org.geysermc.floodgate.api.FloodgateApi;
|
||||||
@@ -61,14 +62,8 @@ public class EntityTask {
|
|||||||
ActiveModel activeModel = model.getActiveModel();
|
ActiveModel activeModel = model.getActiveModel();
|
||||||
ModeledEntity modeledEntity = model.getModeledEntity();
|
ModeledEntity modeledEntity = model.getModeledEntity();
|
||||||
if (activeModel.isDestroyed() || activeModel.isRemoved()) {
|
if (activeModel.isDestroyed() || activeModel.isRemoved()) {
|
||||||
new BukkitRunnable() {
|
removed = true;
|
||||||
@Override
|
entity.remove();
|
||||||
public void run() {
|
|
||||||
removed = true;
|
|
||||||
entity.remove();
|
|
||||||
}
|
|
||||||
}.runTaskLaterAsynchronously(GeyserModelEngine.getInstance(), 1);
|
|
||||||
|
|
||||||
|
|
||||||
ENTITIES.remove(modeledEntity.getBase().getEntityId());
|
ENTITIES.remove(modeledEntity.getBase().getEntityId());
|
||||||
MODEL_ENTITIES.remove(entity.getEntityId());
|
MODEL_ENTITIES.remove(entity.getEntityId());
|
||||||
@@ -142,9 +137,9 @@ public class EntityTask {
|
|||||||
delay = GeyserModelEngine.getInstance().getJoinSendDelay();
|
delay = GeyserModelEngine.getInstance().getJoinSendDelay();
|
||||||
}
|
}
|
||||||
if (task == null || firstJoined) {
|
if (task == null || firstJoined) {
|
||||||
Bukkit.getScheduler().runTaskLaterAsynchronously(GeyserModelEngine.getInstance(), () -> {
|
GeyserModelEngine.getInstance().getScheduler().schedule(() -> {
|
||||||
model.getTask().sendEntityData(onlinePlayer, 1);
|
model.getTask().sendEntityData(onlinePlayer, 1);
|
||||||
}, delay);
|
}, delay, TimeUnit.MILLISECONDS);
|
||||||
} else {
|
} else {
|
||||||
task.sendEntityData(onlinePlayer, 1);
|
task.sendEntityData(onlinePlayer, 1);
|
||||||
}
|
}
|
||||||
@@ -152,15 +147,15 @@ public class EntityTask {
|
|||||||
|
|
||||||
public void sendEntityData(Player player, int delay) {
|
public void sendEntityData(Player player, int delay) {
|
||||||
EntityUtils.setCustomEntity(player, model.getEntity().getEntityId(), "modelengine:" + model.getActiveModel().getBlueprint().getName().toLowerCase());
|
EntityUtils.setCustomEntity(player, model.getEntity().getEntityId(), "modelengine:" + model.getActiveModel().getBlueprint().getName().toLowerCase());
|
||||||
Bukkit.getScheduler().runTaskLaterAsynchronously(GeyserModelEngine.getInstance(), () -> {
|
GeyserModelEngine.getInstance().getScheduler().schedule(() -> {
|
||||||
model.getEntity().sendSpawnPacket(Collections.singletonList(player));
|
model.getEntity().sendSpawnPacket(Collections.singletonList(player));
|
||||||
Bukkit.getScheduler().runTaskLaterAsynchronously(GeyserModelEngine.getInstance(), () -> {
|
GeyserModelEngine.getInstance().getScheduler().schedule(() -> {
|
||||||
sendHitBox(player);
|
sendHitBox(player);
|
||||||
sendScale(Collections.singleton(player), true);
|
sendScale(Collections.singleton(player), true);
|
||||||
sendColor(Collections.singleton(player), true);
|
sendColor(Collections.singleton(player), true);
|
||||||
updateEntityProperties(Collections.singleton(player), true);
|
updateEntityProperties(Collections.singleton(player), true);
|
||||||
}, 1);
|
}, 20, TimeUnit.MILLISECONDS);
|
||||||
}, delay);
|
}, delay * 20L, TimeUnit.MILLISECONDS);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void sendScale(Collection<Player> players, boolean firstSend) {
|
public void sendScale(Collection<Player> players, boolean firstSend) {
|
||||||
@@ -334,6 +329,13 @@ public class EntityTask {
|
|||||||
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;
|
||||||
}
|
}
|
||||||
|
Location playerLocation = player.getLocation();
|
||||||
|
Location entityLocation = entity.getLocation();
|
||||||
|
playerLocation.setY(0);
|
||||||
|
entityLocation.setY(0);
|
||||||
|
if (playerLocation.distanceSquared(entityLocation) > player.getSendViewDistance() * player.getSendViewDistance()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
CullType type = model.getActiveModel().getModeledEntity().getBase().getData().getTracking().get(player);
|
CullType type = model.getActiveModel().getModeledEntity().getBase().getData().getTracking().get(player);
|
||||||
return type != null;
|
return type != null;
|
||||||
/*
|
/*
|
||||||
|
|||||||
Reference in New Issue
Block a user