This commit is contained in:
zimzaza4
2024-11-07 22:29:44 +08:00
parent eea387939f
commit 0706b54bd4
3 changed files with 18 additions and 20 deletions

View File

@@ -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"));

View File

@@ -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());
});
} }

View File

@@ -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;
/* /*