Skip to content

Commit d7fdbc3

Browse files
committed
Fix invisible entity
1 parent 2ef0ea9 commit d7fdbc3

File tree

3 files changed

+15
-15
lines changed

3 files changed

+15
-15
lines changed

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

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,7 @@
2222
import re.imc.geysermodelengine.model.BedrockMountControl;
2323
import re.imc.geysermodelengine.model.ModelEntity;
2424

25-
import java.util.ArrayList;
26-
import java.util.List;
27-
import java.util.Map;
28-
import java.util.Optional;
25+
import java.util.*;
2926
import java.util.concurrent.*;
3027

3128
public final class GeyserModelEngine extends JavaPlugin {
@@ -43,7 +40,7 @@ public final class GeyserModelEngine extends JavaPlugin {
4340
private int viewDistance;
4441

4542
@Getter
46-
private Cache<Player, Boolean> joinedPlayer;
43+
private Set<Player> joinedPlayers = new HashSet<>();
4744

4845
@Getter
4946
private int joinSendDelay;
@@ -117,17 +114,14 @@ public void onEnable() {
117114
public void reload() {
118115
saveDefaultConfig();
119116
// alwaysSendSkin = getConfig().getBoolean("always-send-skin");
120-
sendDelay = getConfig().getInt("data-send-delay", 0);
117+
sendDelay = getConfig().getInt("data-send-delay", 5);
121118
scheduler = Executors.newScheduledThreadPool(getConfig().getInt("thread-pool-size", 4));
122119
viewDistance = getConfig().getInt("entity-view-distance", 60);
123120
debug = getConfig().getBoolean("debug", false);
124121
joinSendDelay = getConfig().getInt("join-send-delay", 20);
125122
entityPositionUpdatePeriod = getConfig().getLong("entity-position-update-period", 35);
126123
enablePartVisibilityModels.addAll(getConfig().getStringList("enable-part-visibility-models"));
127-
if (joinSendDelay > 0) {
128-
joinedPlayer = CacheBuilder.newBuilder()
129-
.expireAfterWrite(joinSendDelay * 50L, TimeUnit.MILLISECONDS).build();
130-
}
124+
131125
instance = this;
132126
if (updateTask != null) {
133127
updateTask.cancel(true);

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

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,14 @@
66
import com.ticxo.modelengine.api.events.RemoveModelEvent;
77
import com.ticxo.modelengine.api.model.ActiveModel;
88
import org.apache.commons.lang3.tuple.Pair;
9+
import org.bukkit.Bukkit;
910
import org.bukkit.entity.Player;
1011
import org.bukkit.event.EventHandler;
1112
import org.bukkit.event.EventPriority;
1213
import org.bukkit.event.Listener;
1314
import org.bukkit.event.player.PlayerJoinEvent;
15+
import org.bukkit.event.player.PlayerLoginEvent;
16+
import org.bukkit.event.player.PlayerQuitEvent;
1417
import re.imc.geysermodelengine.GeyserModelEngine;
1518
import re.imc.geysermodelengine.model.ModelEntity;
1619

@@ -115,8 +118,11 @@ public void onAnimationEnd(AnimationEndEvent event) {
115118
}
116119
*/
117120
@EventHandler
118-
public void onPlayerJoin(PlayerJoinEvent event) {
119-
GeyserModelEngine.getInstance().getJoinedPlayer().put(event.getPlayer(), true);
121+
public void onPlayerLogin(PlayerJoinEvent event) {
122+
Bukkit.getScheduler().runTaskLater(GeyserModelEngine.getInstance(), () -> GeyserModelEngine.getInstance().getJoinedPlayers().add(event.getPlayer()), 10);
123+
}
124+
@EventHandler
125+
public void onPlayerQuit(PlayerQuitEvent event) {
126+
Bukkit.getScheduler().runTaskLater(GeyserModelEngine.getInstance(), () -> GeyserModelEngine.getInstance().getJoinedPlayers().remove(event.getPlayer()), 10);
120127
}
121-
122128
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ public void checkViewers(Set<Player> viewers) {
131131

132132
private void sendSpawnPacket(Player onlinePlayer) {
133133
EntityTask task = model.getTask();
134-
boolean firstJoined = GeyserModelEngine.getInstance().getJoinedPlayer().getIfPresent(onlinePlayer) != null;
134+
boolean firstJoined = !GeyserModelEngine.getInstance().getJoinedPlayers().contains(onlinePlayer);
135135

136136
if (firstJoined) {
137137
task.sendEntityData(onlinePlayer, GeyserModelEngine.getInstance().getJoinSendDelay() / 50);
@@ -333,7 +333,7 @@ private boolean canSee(Player player, PacketEntity entity) {
333333
if (!player.isOnline()) {
334334
return false;
335335
}
336-
if (GeyserModelEngine.getInstance().getJoinedPlayer() != null && GeyserModelEngine.getInstance().getJoinedPlayer().getIfPresent(player) != null) {
336+
if (!GeyserModelEngine.getInstance().getJoinedPlayers().contains(player)) {
337337
return false;
338338
}
339339

0 commit comments

Comments
 (0)