From 73af8a824309d6bbcb6a9013d68d172e862df8cf Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Wed, 27 Sep 2023 21:36:05 +0200 Subject: [PATCH] Fixed setting multiple locations per villager --- .../fishingevent/config/NPCLocationConfig.java | 5 +++-- .../java/com/alttd/fishingevent/npc/LibNPC.java | 4 ++-- src/main/java/com/alttd/fishingevent/npc/NPC.java | 2 +- .../java/com/alttd/fishingevent/npc/NPCManager.java | 13 +++++++------ .../com/alttd/fishingevent/npc/types/PrizeNPC.java | 4 ++-- .../com/alttd/fishingevent/npc/types/SellNPC.java | 4 ++-- .../alttd/fishingevent/npc/types/TutorialNPC.java | 4 ++-- .../alttd/fishingevent/npc/types/UpgradeNPC.java | 5 ++--- .../fishingevent/objects/VillagerLocation.java | 6 ++++++ 9 files changed, 27 insertions(+), 20 deletions(-) create mode 100644 src/main/java/com/alttd/fishingevent/objects/VillagerLocation.java diff --git a/src/main/java/com/alttd/fishingevent/config/NPCLocationConfig.java b/src/main/java/com/alttd/fishingevent/config/NPCLocationConfig.java index 074f577..9fad4de 100644 --- a/src/main/java/com/alttd/fishingevent/config/NPCLocationConfig.java +++ b/src/main/java/com/alttd/fishingevent/config/NPCLocationConfig.java @@ -1,6 +1,7 @@ package com.alttd.fishingevent.config; import com.alttd.fishingevent.FishingEvent; +import com.alttd.fishingevent.objects.VillagerLocation; import com.alttd.fishingevent.util.Logger; import org.bukkit.Bukkit; import org.bukkit.Location; @@ -27,7 +28,7 @@ public class NPCLocationConfig extends AbstractConfig{ public static class NPC_LOCATION { private static final String prefix = "npc."; - public static Map> ALL = new HashMap<>(); + public static Map> ALL = new HashMap<>(); @SuppressWarnings("unused") private static void load() { @@ -42,7 +43,7 @@ public class NPCLocationConfig extends AbstractConfig{ continue; } String villagerId = config.getString(prefix + key + ".", "villager-id", "villager1"); - ALL.computeIfAbsent(villagerId, list -> new ArrayList<>()).add(location.get()); + ALL.computeIfAbsent(villagerId, list -> new ArrayList<>()).add(new VillagerLocation(key, location.get())); } } diff --git a/src/main/java/com/alttd/fishingevent/npc/LibNPC.java b/src/main/java/com/alttd/fishingevent/npc/LibNPC.java index 9b641a6..58506d4 100644 --- a/src/main/java/com/alttd/fishingevent/npc/LibNPC.java +++ b/src/main/java/com/alttd/fishingevent/npc/LibNPC.java @@ -30,11 +30,11 @@ public abstract class LibNPC { return Optional.of(globalNPC); } - public void defaultSpawnNPC(FishingEvent fishingEvent, Location location, NPCCreateData npcCreateData, Logger logger, NPC npc) { + public void defaultSpawnNPC(FishingEvent fishingEvent, Location location, String id, NPCCreateData npcCreateData, Logger logger, NPC npc) { dev.sergiferry.playernpc.api.NPC.NameTag nameTag = new dev.sergiferry.playernpc.api.NPC.NameTag("&6[Quest NPC] ", "&2" + npcCreateData.name(), ""); logger.info(nameTag.getName()); Optional tmp = spawn( - fishingEvent, npcCreateData.simpleId(), location, npcCreateData.skin(), nameTag, + fishingEvent, id, location, npcCreateData.skin(), nameTag, (a, player) -> npc.rightClick(player), (a, player) -> npc.leftClick(player), dev.sergiferry.playernpc.api.NPC.Global.Visibility.EVERYONE); if (tmp.isEmpty()) { diff --git a/src/main/java/com/alttd/fishingevent/npc/NPC.java b/src/main/java/com/alttd/fishingevent/npc/NPC.java index b4851b4..14f3a95 100644 --- a/src/main/java/com/alttd/fishingevent/npc/NPC.java +++ b/src/main/java/com/alttd/fishingevent/npc/NPC.java @@ -6,7 +6,7 @@ import org.bukkit.entity.Player; public interface NPC { - void spawnNPC(FishingEvent fishingEvent, Location location); + void spawnNPC(FishingEvent fishingEvent, Location location, String id); void leftClick(Player player); diff --git a/src/main/java/com/alttd/fishingevent/npc/NPCManager.java b/src/main/java/com/alttd/fishingevent/npc/NPCManager.java index 4816008..e61e7a6 100644 --- a/src/main/java/com/alttd/fishingevent/npc/NPCManager.java +++ b/src/main/java/com/alttd/fishingevent/npc/NPCManager.java @@ -6,21 +6,22 @@ import com.alttd.fishingevent.config.NPCLocationConfig; import com.alttd.fishingevent.util.Logger; import dev.sergiferry.playernpc.api.NPCLib; -import java.util.*; +import java.util.HashSet; +import java.util.Set; public class NPCManager { private static Set loaded = new HashSet<>(); public static void spawnNPCs(FishingEvent fishingEvent, Logger logger) { - NPCLocationConfig.NPC_LOCATION.ALL.forEach((name, locations) -> { - NPC npc = Config.NPC_DATA.NPC_MAP.getOrDefault(name, null); + NPCLocationConfig.NPC_LOCATION.ALL.forEach((id, villagerLocation) -> { + NPC npc = Config.NPC_DATA.NPC_MAP.getOrDefault(id, null); if (npc == null) { - logger.warning("Found npc location entry without matching npc for [%]", name); + logger.warning("Found npc location entry without matching npc for [%]", id); return; } - logger.info("Spawning daily NPC " + name); - locations.forEach(location -> npc.spawnNPC(fishingEvent, location)); + logger.info("Spawning daily NPC " + id); + villagerLocation.forEach(entry -> npc.spawnNPC(fishingEvent, entry.location(), entry.villagerSpawnId())); loaded.add(npc); }); diff --git a/src/main/java/com/alttd/fishingevent/npc/types/PrizeNPC.java b/src/main/java/com/alttd/fishingevent/npc/types/PrizeNPC.java index 53b491f..f6d006e 100644 --- a/src/main/java/com/alttd/fishingevent/npc/types/PrizeNPC.java +++ b/src/main/java/com/alttd/fishingevent/npc/types/PrizeNPC.java @@ -35,8 +35,8 @@ public class PrizeNPC extends LibNPC implements NPC { } @Override - public void spawnNPC(FishingEvent fishingEvent, Location location) { - defaultSpawnNPC(fishingEvent, location, npcCreateData, logger, this); + public void spawnNPC(FishingEvent fishingEvent, Location location, String id) { + defaultSpawnNPC(fishingEvent, location, id, npcCreateData, logger, this); isSpawned = true; } diff --git a/src/main/java/com/alttd/fishingevent/npc/types/SellNPC.java b/src/main/java/com/alttd/fishingevent/npc/types/SellNPC.java index e5d5c39..95f4ad7 100644 --- a/src/main/java/com/alttd/fishingevent/npc/types/SellNPC.java +++ b/src/main/java/com/alttd/fishingevent/npc/types/SellNPC.java @@ -30,8 +30,8 @@ public class SellNPC extends LibNPC implements NPC { } @Override - public void spawnNPC(FishingEvent fishingEvent, Location location) { - defaultSpawnNPC(fishingEvent, location, npcCreateData, logger, this); + public void spawnNPC(FishingEvent fishingEvent, Location location, String id) { + defaultSpawnNPC(fishingEvent, location, id, npcCreateData, logger, this); isSpawned = true; } diff --git a/src/main/java/com/alttd/fishingevent/npc/types/TutorialNPC.java b/src/main/java/com/alttd/fishingevent/npc/types/TutorialNPC.java index d85736a..398fd3d 100644 --- a/src/main/java/com/alttd/fishingevent/npc/types/TutorialNPC.java +++ b/src/main/java/com/alttd/fishingevent/npc/types/TutorialNPC.java @@ -35,8 +35,8 @@ public class TutorialNPC extends LibNPC implements NPC { } @Override - public void spawnNPC(FishingEvent fishingEvent, Location location) { - defaultSpawnNPC(fishingEvent, location, npcCreateData, logger, this); + public void spawnNPC(FishingEvent fishingEvent, Location location, String id) { + defaultSpawnNPC(fishingEvent, location, id, npcCreateData, logger, this); isSpawned = true; getGlobalNPC().addOpenBookClickAction(dev.sergiferry.playernpc.api.NPC.Interact.ClickType.RIGHT_CLICK, book); } diff --git a/src/main/java/com/alttd/fishingevent/npc/types/UpgradeNPC.java b/src/main/java/com/alttd/fishingevent/npc/types/UpgradeNPC.java index e1f848b..4c486b6 100644 --- a/src/main/java/com/alttd/fishingevent/npc/types/UpgradeNPC.java +++ b/src/main/java/com/alttd/fishingevent/npc/types/UpgradeNPC.java @@ -11,7 +11,6 @@ import com.alttd.fishingevent.util.NPCCreateData; import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.bukkit.Location; import org.bukkit.entity.Player; -import org.bukkit.scheduler.BukkitRunnable; import java.util.List; @@ -36,8 +35,8 @@ public class UpgradeNPC extends LibNPC implements NPC { } @Override - public void spawnNPC(FishingEvent fishingEvent, Location location) { - defaultSpawnNPC(fishingEvent, location, npcCreateData, logger, this); + public void spawnNPC(FishingEvent fishingEvent, Location location, String id) { + defaultSpawnNPC(fishingEvent, location, id, npcCreateData, logger, this); isSpawned = true; } diff --git a/src/main/java/com/alttd/fishingevent/objects/VillagerLocation.java b/src/main/java/com/alttd/fishingevent/objects/VillagerLocation.java new file mode 100644 index 0000000..ca08dbc --- /dev/null +++ b/src/main/java/com/alttd/fishingevent/objects/VillagerLocation.java @@ -0,0 +1,6 @@ +package com.alttd.fishingevent.objects; + +import org.bukkit.Location; + +public record VillagerLocation (String villagerSpawnId, Location location) { +}