mirror of
https://github.com/GeyserExtensionists/GeyserModelEngine.git
synced 2025-12-19 15:09:18 +00:00
Fix invisible entity
This commit is contained in:
@@ -22,10 +22,7 @@ import re.imc.geysermodelengine.listener.MountPacketListener;
|
||||
import re.imc.geysermodelengine.model.BedrockMountControl;
|
||||
import re.imc.geysermodelengine.model.ModelEntity;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Optional;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.*;
|
||||
|
||||
public final class GeyserModelEngine extends JavaPlugin {
|
||||
@@ -43,7 +40,7 @@ public final class GeyserModelEngine extends JavaPlugin {
|
||||
private int viewDistance;
|
||||
|
||||
@Getter
|
||||
private Cache<Player, Boolean> joinedPlayer;
|
||||
private Set<Player> joinedPlayers = new HashSet<>();
|
||||
|
||||
@Getter
|
||||
private int joinSendDelay;
|
||||
@@ -117,17 +114,14 @@ public final class GeyserModelEngine extends JavaPlugin {
|
||||
public void reload() {
|
||||
saveDefaultConfig();
|
||||
// alwaysSendSkin = getConfig().getBoolean("always-send-skin");
|
||||
sendDelay = getConfig().getInt("data-send-delay", 0);
|
||||
sendDelay = getConfig().getInt("data-send-delay", 5);
|
||||
scheduler = Executors.newScheduledThreadPool(getConfig().getInt("thread-pool-size", 4));
|
||||
viewDistance = getConfig().getInt("entity-view-distance", 60);
|
||||
debug = getConfig().getBoolean("debug", false);
|
||||
joinSendDelay = getConfig().getInt("join-send-delay", 20);
|
||||
entityPositionUpdatePeriod = getConfig().getLong("entity-position-update-period", 35);
|
||||
enablePartVisibilityModels.addAll(getConfig().getStringList("enable-part-visibility-models"));
|
||||
if (joinSendDelay > 0) {
|
||||
joinedPlayer = CacheBuilder.newBuilder()
|
||||
.expireAfterWrite(joinSendDelay * 50L, TimeUnit.MILLISECONDS).build();
|
||||
}
|
||||
|
||||
instance = this;
|
||||
if (updateTask != null) {
|
||||
updateTask.cancel(true);
|
||||
|
||||
@@ -6,11 +6,14 @@ import com.ticxo.modelengine.api.events.ModelMountEvent;
|
||||
import com.ticxo.modelengine.api.events.RemoveModelEvent;
|
||||
import com.ticxo.modelengine.api.model.ActiveModel;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerLoginEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import re.imc.geysermodelengine.GeyserModelEngine;
|
||||
import re.imc.geysermodelengine.model.ModelEntity;
|
||||
|
||||
@@ -115,8 +118,11 @@ public class ModelListener implements Listener {
|
||||
}
|
||||
*/
|
||||
@EventHandler
|
||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||
GeyserModelEngine.getInstance().getJoinedPlayer().put(event.getPlayer(), true);
|
||||
public void onPlayerLogin(PlayerJoinEvent event) {
|
||||
Bukkit.getScheduler().runTaskLater(GeyserModelEngine.getInstance(), () -> GeyserModelEngine.getInstance().getJoinedPlayers().add(event.getPlayer()), 10);
|
||||
}
|
||||
@EventHandler
|
||||
public void onPlayerQuit(PlayerQuitEvent event) {
|
||||
Bukkit.getScheduler().runTaskLater(GeyserModelEngine.getInstance(), () -> GeyserModelEngine.getInstance().getJoinedPlayers().remove(event.getPlayer()), 10);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -131,7 +131,7 @@ public class EntityTask {
|
||||
|
||||
private void sendSpawnPacket(Player onlinePlayer) {
|
||||
EntityTask task = model.getTask();
|
||||
boolean firstJoined = GeyserModelEngine.getInstance().getJoinedPlayer().getIfPresent(onlinePlayer) != null;
|
||||
boolean firstJoined = !GeyserModelEngine.getInstance().getJoinedPlayers().contains(onlinePlayer);
|
||||
|
||||
if (firstJoined) {
|
||||
task.sendEntityData(onlinePlayer, GeyserModelEngine.getInstance().getJoinSendDelay() / 50);
|
||||
@@ -333,7 +333,7 @@ public class EntityTask {
|
||||
if (!player.isOnline()) {
|
||||
return false;
|
||||
}
|
||||
if (GeyserModelEngine.getInstance().getJoinedPlayer() != null && GeyserModelEngine.getInstance().getJoinedPlayer().getIfPresent(player) != null) {
|
||||
if (!GeyserModelEngine.getInstance().getJoinedPlayers().contains(player)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user