From f94221918f7d97c1bda32c25f4d627810e88d7e0 Mon Sep 17 00:00:00 2001 From: Player Name Date: Sun, 6 Oct 2024 09:32:57 +0000 Subject: [PATCH] Fixed the unlocking of region-wide music tracks --- .../node/entity/player/link/music/MusicPlayer.java | 7 ++----- .../main/core/game/system/config/MusicConfigLoader.kt | 2 +- Server/src/main/core/game/world/map/Region.java | 11 +++++------ .../main/core/game/world/map/zone/ZoneMonitor.java | 6 +++--- 4 files changed, 11 insertions(+), 15 deletions(-) diff --git a/Server/src/main/core/game/node/entity/player/link/music/MusicPlayer.java b/Server/src/main/core/game/node/entity/player/link/music/MusicPlayer.java index 1123fdfd1..163cdadc5 100644 --- a/Server/src/main/core/game/node/entity/player/link/music/MusicPlayer.java +++ b/Server/src/main/core/game/node/entity/player/link/music/MusicPlayer.java @@ -10,9 +10,7 @@ import core.net.packet.context.StringContext; import core.net.packet.out.MusicPacket; import core.net.packet.out.StringPacket; -import java.util.HashMap; -import java.util.Map; -import java.util.Random; +import java.util.*; import static core.api.ContentAPIKt.*; @@ -199,10 +197,9 @@ public final class MusicPlayer { public void unlock(int id, boolean play) { MusicEntry entry = MusicEntry.forId(id); if (entry == null) { - return; } - if (!unlocked.containsKey(entry.getIndex())) { + if (!entry.getName().equals(" ") && !unlocked.containsKey(entry.getIndex())) { unlocked.put(entry.getIndex(), entry); player.getPacketDispatch().sendMessage("You have unlocked a new music track: " + entry.getName() + "."); refreshList(); diff --git a/Server/src/main/core/game/system/config/MusicConfigLoader.kt b/Server/src/main/core/game/system/config/MusicConfigLoader.kt index d73fc597d..3f5cc60cf 100644 --- a/Server/src/main/core/game/system/config/MusicConfigLoader.kt +++ b/Server/src/main/core/game/system/config/MusicConfigLoader.kt @@ -40,7 +40,7 @@ class MusicConfigLoader { val e = config as JSONObject val region = Integer.parseInt(e["region"].toString()) val id = Integer.parseInt(e["id"].toString()) - RegionManager.forId(region).music = MusicEntry.forId(id) + RegionManager.forId(region).music = id count++ } log(this::class.java, Log.FINE, "Parsed $count region music configs.") diff --git a/Server/src/main/core/game/world/map/Region.java b/Server/src/main/core/game/world/map/Region.java index 93303b658..ff87d8e6b 100644 --- a/Server/src/main/core/game/world/map/Region.java +++ b/Server/src/main/core/game/world/map/Region.java @@ -3,7 +3,6 @@ package core.game.world.map; import core.cache.Cache; import core.game.node.entity.npc.NPC; import core.game.node.entity.player.Player; -import core.game.node.entity.player.link.music.MusicEntry; import core.game.node.entity.player.link.music.MusicZone; import core.game.system.communication.CommunicationInfo; import core.game.system.task.Pulse; @@ -62,9 +61,9 @@ public class Region { private final List regionZones = new ArrayList<>(20); /** - * The region-wide music track for this region. + * The region-wide music track ID for this region. */ - private MusicEntry music = null; + private int music = -1; /** * Any tile-specific music zones lying in this region. @@ -481,15 +480,15 @@ public class Region { /** * Sets the region-wide music track. */ - public void setMusic(MusicEntry music) { + public void setMusic(int music) { this.music = music; } /** * Gets the region-wide music track - * @return The music entry + * @return The music entry ID */ - public MusicEntry getMusic() { + public int getMusic() { return this.music; } diff --git a/Server/src/main/core/game/world/map/zone/ZoneMonitor.java b/Server/src/main/core/game/world/map/zone/ZoneMonitor.java index a992ed0ef..65b4a0322 100644 --- a/Server/src/main/core/game/world/map/zone/ZoneMonitor.java +++ b/Server/src/main/core/game/world/map/zone/ZoneMonitor.java @@ -410,13 +410,13 @@ public final class ZoneMonitor { return; } } - MusicEntry music = r.getMusic(); - if (music == null) { + int music = r.getMusic(); + if (music == -1) { if (!player.getMusicPlayer().isPlaying()) { player.getMusicPlayer().playDefault(); } } else { - player.getMusicPlayer().play(music); + player.getMusicPlayer().unlock(music, true); } }