From e50bf5a4b292a76c2d9490b594c52fc7631661f8 Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Thu, 21 Sep 2023 00:18:35 +0200 Subject: [PATCH] Added NPC location config --- .../config/NPCLocationConfig.java | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 src/main/java/com/alttd/fishingevent/config/NPCLocationConfig.java diff --git a/src/main/java/com/alttd/fishingevent/config/NPCLocationConfig.java b/src/main/java/com/alttd/fishingevent/config/NPCLocationConfig.java new file mode 100644 index 0000000..3b5e748 --- /dev/null +++ b/src/main/java/com/alttd/fishingevent/config/NPCLocationConfig.java @@ -0,0 +1,60 @@ +package com.alttd.fishingevent.config; + +import com.alttd.fishingevent.FishingEvent; +import com.alttd.fishingevent.util.Logger; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.World; +import org.bukkit.configuration.ConfigurationSection; + +import java.util.*; + +public class NPCLocationConfig extends AbstractConfig{ + static NPCLocationConfig config; + private final Logger logger; + + NPCLocationConfig(FishingEvent fishingEvent, Logger logger) { + super(fishingEvent, "npc-location.yml", logger); + this.logger = logger; + } + + public static void reload(FishingEvent fishingEvent, Logger logger) { + config = new NPCLocationConfig(fishingEvent, logger); + config.readConfig(NPCLocationConfig.class, null); + } + + public static class NPC_LOCATION { + private static final String prefix = "npc."; + + public static Map ALL = new HashMap<>(); + + @SuppressWarnings("unused") + private static void load() { + ALL.clear(); + ConfigurationSection configurationSection = config.getConfigurationSection(prefix); + if (configurationSection == null) + return; + Set npcKeys = configurationSection.getKeys(false); + for (String key : npcKeys) { + Optional location = getLocation(prefix + key + ".location."); + if (location.isEmpty()) + continue; + ALL.put(key, location.get()); + } + } + + private static Optional getLocation(String prefix) { + World world = Bukkit.getWorld(config.getString(prefix, "world", "world")); + if (world == null) { + config.logger.warning("Unable to load world for [%]", prefix); + return Optional.empty(); + } + double x = config.getDouble(prefix, "x", 0); + double y = config.getDouble(prefix, "y", 0); + double z = config.getDouble(prefix, "z", 0); + float pitch = (float) config.getDouble(prefix, "pitch", 0); + float yaw = (float) config.getDouble(prefix, "yaw", 0); + return Optional.of(new Location(world, x, y, z, pitch, yaw)); + } + } +}