mirror of
https://github.com/xSquishyLiam/mc-GeyserModelEngine-plugin.git
synced 2025-12-19 14:59:19 +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.BedrockMountControl;
|
||||||
import re.imc.geysermodelengine.model.ModelEntity;
|
import re.imc.geysermodelengine.model.ModelEntity;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.concurrent.*;
|
import java.util.concurrent.*;
|
||||||
|
|
||||||
public final class GeyserModelEngine extends JavaPlugin {
|
public final class GeyserModelEngine extends JavaPlugin {
|
||||||
@@ -43,7 +40,7 @@ public final class GeyserModelEngine extends JavaPlugin {
|
|||||||
private int viewDistance;
|
private int viewDistance;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private Cache<Player, Boolean> joinedPlayer;
|
private Set<Player> joinedPlayers = new HashSet<>();
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private int joinSendDelay;
|
private int joinSendDelay;
|
||||||
@@ -117,17 +114,14 @@ public final class GeyserModelEngine extends JavaPlugin {
|
|||||||
public void reload() {
|
public void reload() {
|
||||||
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", 5);
|
||||||
scheduler = Executors.newScheduledThreadPool(getConfig().getInt("thread-pool-size", 4));
|
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);
|
||||||
joinSendDelay = getConfig().getInt("join-send-delay", 20);
|
joinSendDelay = getConfig().getInt("join-send-delay", 20);
|
||||||
entityPositionUpdatePeriod = getConfig().getLong("entity-position-update-period", 35);
|
entityPositionUpdatePeriod = getConfig().getLong("entity-position-update-period", 35);
|
||||||
enablePartVisibilityModels.addAll(getConfig().getStringList("enable-part-visibility-models"));
|
enablePartVisibilityModels.addAll(getConfig().getStringList("enable-part-visibility-models"));
|
||||||
if (joinSendDelay > 0) {
|
|
||||||
joinedPlayer = CacheBuilder.newBuilder()
|
|
||||||
.expireAfterWrite(joinSendDelay * 50L, TimeUnit.MILLISECONDS).build();
|
|
||||||
}
|
|
||||||
instance = this;
|
instance = this;
|
||||||
if (updateTask != null) {
|
if (updateTask != null) {
|
||||||
updateTask.cancel(true);
|
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.events.RemoveModelEvent;
|
||||||
import com.ticxo.modelengine.api.model.ActiveModel;
|
import com.ticxo.modelengine.api.model.ActiveModel;
|
||||||
import org.apache.commons.lang3.tuple.Pair;
|
import org.apache.commons.lang3.tuple.Pair;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.player.PlayerJoinEvent;
|
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.GeyserModelEngine;
|
||||||
import re.imc.geysermodelengine.model.ModelEntity;
|
import re.imc.geysermodelengine.model.ModelEntity;
|
||||||
|
|
||||||
@@ -115,8 +118,11 @@ public class ModelListener implements Listener {
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
public void onPlayerLogin(PlayerJoinEvent event) {
|
||||||
GeyserModelEngine.getInstance().getJoinedPlayer().put(event.getPlayer(), true);
|
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) {
|
private void sendSpawnPacket(Player onlinePlayer) {
|
||||||
EntityTask task = model.getTask();
|
EntityTask task = model.getTask();
|
||||||
boolean firstJoined = GeyserModelEngine.getInstance().getJoinedPlayer().getIfPresent(onlinePlayer) != null;
|
boolean firstJoined = !GeyserModelEngine.getInstance().getJoinedPlayers().contains(onlinePlayer);
|
||||||
|
|
||||||
if (firstJoined) {
|
if (firstJoined) {
|
||||||
task.sendEntityData(onlinePlayer, GeyserModelEngine.getInstance().getJoinSendDelay() / 50);
|
task.sendEntityData(onlinePlayer, GeyserModelEngine.getInstance().getJoinSendDelay() / 50);
|
||||||
@@ -333,7 +333,7 @@ public class EntityTask {
|
|||||||
if (!player.isOnline()) {
|
if (!player.isOnline()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
if (GeyserModelEngine.getInstance().getJoinedPlayer() != null && GeyserModelEngine.getInstance().getJoinedPlayer().getIfPresent(player) != null) {
|
if (!GeyserModelEngine.getInstance().getJoinedPlayers().contains(player)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user