This commit is contained in:
zimzaza4
2024-12-06 22:48:03 +08:00
parent a378e474a6
commit abb9bfcaea

View File

@@ -77,13 +77,8 @@ public class EntityTask {
if (tick % 5 == 0) { if (tick % 5 == 0) {
checkViewers(viewers);
if (tick % 40 == 0) { if (tick % 40 == 0) {
for (Player viewer : Set.copyOf(viewers)) { for (Player viewer : Set.copyOf(viewers)) {
if (!canSee(viewer, model.getEntity())) { if (!canSee(viewer, model.getEntity())) {
viewers.remove(viewer); viewers.remove(viewer);
} }
@@ -135,17 +130,12 @@ public class EntityTask {
private void sendSpawnPacket(Player onlinePlayer) { private void sendSpawnPacket(Player onlinePlayer) {
EntityTask task = model.getTask(); EntityTask task = model.getTask();
int delay = 50;
boolean firstJoined = GeyserModelEngine.getInstance().getJoinedPlayer().getIfPresent(onlinePlayer) != null; boolean firstJoined = GeyserModelEngine.getInstance().getJoinedPlayer().getIfPresent(onlinePlayer) != null;
if (firstJoined) { if (firstJoined) {
delay = GeyserModelEngine.getInstance().getJoinSendDelay(); task.sendEntityData(onlinePlayer, GeyserModelEngine.getInstance().getJoinSendDelay() / 50);
}
if (task == null || firstJoined) {
GeyserModelEngine.getInstance().getScheduler().schedule(() -> {
model.getTask().sendEntityData(onlinePlayer, 1);
}, delay, TimeUnit.MILLISECONDS);
} else { } else {
task.sendEntityData(onlinePlayer, 1); task.sendEntityData(onlinePlayer, 2);
} }
} }
@@ -195,7 +185,7 @@ public class EntityTask {
} }
public void updateEntityProperties(Collection<Player> players, boolean ignore, String... forceAnims) { public void updateEntityProperties(Collection<Player> players, boolean firstSend, String... forceAnims) {
int entity = model.getEntity().getEntityId(); int entity = model.getEntity().getEntityId();
Set<String> forceAnimSet = Set.of(forceAnims); Set<String> forceAnimSet = Set.of(forceAnims);
@@ -266,7 +256,7 @@ public class EntityTask {
intUpdates.put("modelengine:anim" + i, integer); intUpdates.put("modelengine:anim" + i, integer);
i++; i++;
} }
if (!ignore) { if (!firstSend) {
if (intUpdates.equals(lastIntSet)) { if (intUpdates.equals(lastIntSet)) {
return; return;
} else { } else {