Skip to content

Commit

Permalink
Merge pull request #5 from ManaCube/pr
Browse files Browse the repository at this point in the history
Combined PR for Improvement and NPE fix
  • Loading branch information
JNNGL authored Feb 14, 2024
2 parents c510e26 + 95bfcdf commit 62b65cc
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 26 deletions.
4 changes: 2 additions & 2 deletions src/main/java/com/jnngl/vanillaminimaps/VanillaMinimaps.java
Original file line number Diff line number Diff line change
Expand Up @@ -197,12 +197,12 @@ public MinimapPlayerDatabase playerDataStorage() {

@Override
public Minimap getPlayerMinimap(Player player) {
return minimapListener.getPlayerMinimaps().get(player);
return minimapListener.getPlayerMinimaps().get(player.getUniqueId());
}

@Override
public FullscreenMinimap getFullscreenMinimap(Player player) {
return minimapListener.getFullscreenMinimaps().get(player);
return minimapListener.getFullscreenMinimaps().get(player.getUniqueId());
}

public PassengerRewriter getPassengerRewriter(Player player) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,15 +48,16 @@
import org.bukkit.event.player.PlayerQuitEvent;

import java.util.*;
import org.jetbrains.annotations.Nullable;

public class MinimapListener implements Listener {

@Getter
private final Map<Player, Minimap> playerMinimaps = new HashMap<>();
private final Map<UUID, Minimap> playerMinimaps = new HashMap<>();
@Getter
private final Map<Player, FullscreenMinimap> fullscreenMinimaps = new HashMap<>();
private final Map<Player, SteerableLockedView> lockedViews = new HashMap<>();
private final Map<Player, IntIntImmutablePair> playerSections = new HashMap<>();
private final Map<UUID, FullscreenMinimap> fullscreenMinimaps = new HashMap<>();
private final Map<UUID, SteerableLockedView> lockedViews = new HashMap<>();
private final Map<UUID, IntIntImmutablePair> playerSections = new HashMap<>();
private final Set<UUID> requestedUpdates = new HashSet<>();
private final VanillaMinimaps plugin;

Expand All @@ -76,8 +77,8 @@ public void onJoin(PlayerJoinEvent event) {
}

public Minimap enableMinimap(Player player) {
if (playerMinimaps.containsKey(player)) {
return playerMinimaps.get(player);
if (playerMinimaps.containsKey(player.getUniqueId())) {
return playerMinimaps.get(player.getUniqueId());
}

ClientsideMinimapFactory minimapFactory = plugin.clientsideMinimapFactory();
Expand All @@ -87,7 +88,7 @@ public Minimap enableMinimap(Player player) {
Minimap minimap = minimapFactory.createMinimap(player, Config.instance().defaultPosition, worldRenderer);
packetSender.spawnMinimap(minimap);

playerMinimaps.put(player, minimap);
playerMinimaps.put(player.getUniqueId(), minimap);

MinimapIcon playerIcon = plugin.iconProvider().getIcon("player");
MinimapIcon offscreenPlayerIcon = plugin.iconProvider().getIcon("offscreen_player");
Expand Down Expand Up @@ -118,9 +119,10 @@ public Minimap enableMinimap(Player player) {
return minimap;
}

public void disableMinimap(Player player) {
playerSections.remove(player);
Minimap minimap = playerMinimaps.remove(player);
@Nullable
public Minimap disableMinimap(Player player) {
playerSections.remove(player.getUniqueId());
Minimap minimap = playerMinimaps.remove(player.getUniqueId());
if (minimap != null) {
MinimapLayerRenderer primaryRenderer = minimap.primaryLayer().renderer();
if (primaryRenderer instanceof CacheableWorldMinimapRenderer cacheableRenderer) {
Expand All @@ -130,25 +132,26 @@ public void disableMinimap(Player player) {
}

closeFullscreen(player);
return minimap;
}

public SteerableLockedView openFullscreen(FullscreenMinimap minimap) {
SteerableLockedView view = plugin.steerableViewFactory().lockedView(minimap.getHolder());
minimap.spawn(plugin);

fullscreenMinimaps.put(minimap.getHolder(), minimap);
lockedViews.put(minimap.getHolder(), view);
fullscreenMinimaps.put(minimap.getHolder().getUniqueId(), minimap);
lockedViews.put(minimap.getHolder().getUniqueId(), view);

return view;
}

public void closeFullscreen(Player player) {
SteerableLockedView view = lockedViews.remove(player);
SteerableLockedView view = lockedViews.remove(player.getUniqueId());
if (view != null) {
view.destroy();
}

FullscreenMinimap fullscreenMinimap = fullscreenMinimaps.remove(player);
FullscreenMinimap fullscreenMinimap = fullscreenMinimaps.remove(player.getUniqueId());
if (fullscreenMinimap != null) {
fullscreenMinimap.despawn(plugin, null);
}
Expand All @@ -160,7 +163,7 @@ public void onDeath(PlayerDeathEvent event) {
return;
}

Minimap minimap = playerMinimaps.get(event.getPlayer());
Minimap minimap = playerMinimaps.get(event.getPlayer().getUniqueId());
if (minimap == null) {
return;
}
Expand All @@ -182,25 +185,25 @@ public void onMove(PlayerMoveEvent event) {
return;
}

Minimap minimap = playerMinimaps.get(event.getPlayer());
Minimap minimap = playerMinimaps.get(event.getPlayer().getUniqueId());
if (minimap == null) {
return;
}

IntIntImmutablePair previous = playerSections.get(event.getPlayer());
IntIntImmutablePair previous = playerSections.get(event.getPlayer().getUniqueId());
int currentX = event.getTo().getBlockX() >> 7;
int currentZ = event.getTo().getBlockZ() >> 7;
boolean changedSection = previous == null || currentZ != previous.rightInt() || currentX != previous.leftInt();
minimap.update(plugin, event.getTo().getX(), event.getTo().getZ(), changedSection);
requestedUpdates.remove(event.getPlayer().getUniqueId());
if (changedSection) {
playerSections.put(event.getPlayer(), IntIntImmutablePair.of(currentX, currentZ));
playerSections.put(event.getPlayer().getUniqueId(), IntIntImmutablePair.of(currentX, currentZ));
}
}

@EventHandler
public void onRespawn(PlayerPostRespawnEvent event) {
Minimap minimap = playerMinimaps.get(event.getPlayer());
Minimap minimap = playerMinimaps.get(event.getPlayer().getUniqueId());
if (minimap == null) {
return;
}
Expand All @@ -210,7 +213,7 @@ public void onRespawn(PlayerPostRespawnEvent event) {

@EventHandler
public void onWorldChange(PlayerChangedWorldEvent event) {
Minimap minimap = playerMinimaps.get(event.getPlayer());
Minimap minimap = playerMinimaps.get(event.getPlayer().getUniqueId());
if (minimap == null) {
return;
}
Expand All @@ -221,9 +224,11 @@ public void onWorldChange(PlayerChangedWorldEvent event) {
@SneakyThrows
@EventHandler
public void onQuit(PlayerQuitEvent event) {
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, () ->
disableMinimap(event.getPlayer()));
Minimap minimap = playerMinimaps.get(event.getPlayer());
plugin.playerDataStorage().save(minimap);
Minimap minimap = disableMinimap(event.getPlayer());

// minimap can be null if player has it disabled
if (minimap != null) {
plugin.playerDataStorage().save(minimap);
}
}
}

0 comments on commit 62b65cc

Please sign in to comment.