Skip to content

Commit 0706b54

Browse files
committed
optimize
1 parent eea3879 commit 0706b54

File tree

3 files changed

+18
-20
lines changed

3 files changed

+18
-20
lines changed

src/main/java/re/imc/geysermodelengine/GeyserModelEngine.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public void onEnable() {
7676
saveDefaultConfig();
7777
// alwaysSendSkin = getConfig().getBoolean("always-send-skin");
7878
sendDelay = getConfig().getInt("data-send-delay", 0);
79-
scheduler = Executors.newScheduledThreadPool(getConfig().getInt("thread-pool-size", 6));
79+
scheduler = Executors.newScheduledThreadPool(getConfig().getInt("thread-pool-size", 4));
8080
viewDistance = getConfig().getInt("entity-view-distance", 60);
8181
debug = getConfig().getBoolean("debug", false);
8282
modelEntityType = EntityType.valueOf(getConfig().getString("model-entity-type", "BAT"));

src/main/java/re/imc/geysermodelengine/listener/ModelListener.java

+1-5
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,7 @@ public void onAddModel(AddModelEvent event) {
4646
if (!GeyserModelEngine.getInstance().isInitialized()) {
4747
return;
4848
}
49-
50-
Bukkit.getScheduler().runTask(GeyserModelEngine.getInstance(), () -> {
51-
ModelEntity.create(event.getTarget(), event.getModel());
52-
});
53-
49+
ModelEntity.create(event.getTarget(), event.getModel());
5450
}
5551

5652

src/main/java/re/imc/geysermodelengine/model/EntityTask.java

+16-14
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import lombok.Setter;
1414
import me.zimzaza4.geyserutils.spigot.api.EntityUtils;
1515
import org.bukkit.Bukkit;
16+
import org.bukkit.Location;
1617
import org.bukkit.entity.Player;
1718
import org.bukkit.scheduler.BukkitRunnable;
1819
import org.geysermc.floodgate.api.FloodgateApi;
@@ -61,14 +62,8 @@ public void runAsync() {
6162
ActiveModel activeModel = model.getActiveModel();
6263
ModeledEntity modeledEntity = model.getModeledEntity();
6364
if (activeModel.isDestroyed() || activeModel.isRemoved()) {
64-
new BukkitRunnable() {
65-
@Override
66-
public void run() {
67-
removed = true;
68-
entity.remove();
69-
}
70-
}.runTaskLaterAsynchronously(GeyserModelEngine.getInstance(), 1);
71-
65+
removed = true;
66+
entity.remove();
7267

7368
ENTITIES.remove(modeledEntity.getBase().getEntityId());
7469
MODEL_ENTITIES.remove(entity.getEntityId());
@@ -142,25 +137,25 @@ private void sendSpawnPacket(Player onlinePlayer) {
142137
delay = GeyserModelEngine.getInstance().getJoinSendDelay();
143138
}
144139
if (task == null || firstJoined) {
145-
Bukkit.getScheduler().runTaskLaterAsynchronously(GeyserModelEngine.getInstance(), () -> {
140+
GeyserModelEngine.getInstance().getScheduler().schedule(() -> {
146141
model.getTask().sendEntityData(onlinePlayer, 1);
147-
}, delay);
142+
}, delay, TimeUnit.MILLISECONDS);
148143
} else {
149144
task.sendEntityData(onlinePlayer, 1);
150145
}
151146
}
152147

153148
public void sendEntityData(Player player, int delay) {
154149
EntityUtils.setCustomEntity(player, model.getEntity().getEntityId(), "modelengine:" + model.getActiveModel().getBlueprint().getName().toLowerCase());
155-
Bukkit.getScheduler().runTaskLaterAsynchronously(GeyserModelEngine.getInstance(), () -> {
150+
GeyserModelEngine.getInstance().getScheduler().schedule(() -> {
156151
model.getEntity().sendSpawnPacket(Collections.singletonList(player));
157-
Bukkit.getScheduler().runTaskLaterAsynchronously(GeyserModelEngine.getInstance(), () -> {
152+
GeyserModelEngine.getInstance().getScheduler().schedule(() -> {
158153
sendHitBox(player);
159154
sendScale(Collections.singleton(player), true);
160155
sendColor(Collections.singleton(player), true);
161156
updateEntityProperties(Collections.singleton(player), true);
162-
}, 1);
163-
}, delay);
157+
}, 20, TimeUnit.MILLISECONDS);
158+
}, delay * 20L, TimeUnit.MILLISECONDS);
164159
}
165160

166161
public void sendScale(Collection<Player> players, boolean firstSend) {
@@ -334,6 +329,13 @@ private boolean canSee(Player player, PacketEntity entity) {
334329
if (GeyserModelEngine.getInstance().getJoinedPlayer() != null && GeyserModelEngine.getInstance().getJoinedPlayer().getIfPresent(player) != null) {
335330
return false;
336331
}
332+
Location playerLocation = player.getLocation();
333+
Location entityLocation = entity.getLocation();
334+
playerLocation.setY(0);
335+
entityLocation.setY(0);
336+
if (playerLocation.distanceSquared(entityLocation) > player.getSendViewDistance() * player.getSendViewDistance()) {
337+
return false;
338+
}
337339
CullType type = model.getActiveModel().getModeledEntity().getBase().getData().getTracking().get(player);
338340
return type != null;
339341
/*

0 commit comments

Comments
 (0)