diff --git a/src/main/java/ghast/AssetsManager.java b/src/main/java/ghast/AssetsManager.java index 499408d..c048303 100644 --- a/src/main/java/ghast/AssetsManager.java +++ b/src/main/java/ghast/AssetsManager.java @@ -1,6 +1,7 @@ package ghast; import lombok.experimental.UtilityClass; +import org.bukkit.plugin.Plugin; import java.io.File; import java.io.IOException; @@ -35,10 +36,11 @@ public class AssetsManager { saveTo(resourceName, targetPath.toPath()); } - public InputStream loadResource(Path pluginFolder, String resourceName, String defaultResourceName, boolean saveDefault) { + public InputStream loadResource(String resourceName, String defaultResourceName, boolean saveDefault) { + Plugin plugin = GhastTools.getPlugin(); InputStream inputStream; - Path pathToResource = pluginFolder.resolve(resourceName); + Path pathToResource = plugin.getDataFolder().toPath().resolve(resourceName); if (Files.exists(pathToResource)) { inputStream = openResource(pathToResource); } else if (defaultResourceName != null) { @@ -57,32 +59,16 @@ public class AssetsManager { return inputStream; } - public InputStream loadResource(Path pluginFolder, String resourceName, String defaultResourceName) { - return loadResource(pluginFolder, resourceName, defaultResourceName, true); + public InputStream loadResource(String resourceName, String defaultResourceName) { + return loadResource(resourceName, defaultResourceName, true); } - public InputStream loadResource(Path pluginFolder, String resourceName, boolean saveDefault) { - return loadResource(pluginFolder, resourceName, resourceName, saveDefault); + public InputStream loadResource(String resourceName, boolean saveDefault) { + return loadResource(resourceName, resourceName, saveDefault); } - public InputStream loadResource(Path pluginFolder, String resourceName) { - return loadResource(pluginFolder, resourceName, true); - } - - public InputStream loadResource(File pluginFolder, String resourceName, String defaultResourceName, boolean saveDefault) { - return loadResource(pluginFolder.toPath(), resourceName, defaultResourceName, saveDefault); - } - - public InputStream loadResource(File pluginFolder, String resourceName, String defaultResourceName) { - return loadResource(pluginFolder, resourceName, defaultResourceName, true); - } - - public InputStream loadResource(File pluginFolder, String resourceName, boolean saveDefault) { - return loadResource(pluginFolder.toPath(), resourceName, saveDefault); - } - - public InputStream loadResource(File pluginFolder, String resourceName) { - return loadResource(pluginFolder, resourceName, true); + public InputStream loadResource(String resourceName) { + return loadResource(resourceName, resourceName, true); } private URL getResourceUrl(String resourceName) { diff --git a/src/main/java/ghast/EventManager.java b/src/main/java/ghast/EventManager.java index 417e527..4b47403 100644 --- a/src/main/java/ghast/EventManager.java +++ b/src/main/java/ghast/EventManager.java @@ -9,7 +9,6 @@ import org.bukkit.Bukkit; import org.bukkit.event.Event; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; -import org.bukkit.plugin.Plugin; import java.util.HashMap; import java.util.Map; @@ -20,8 +19,8 @@ import java.util.function.Consumer; @SuppressWarnings("unused") public class EventManager { - public Builder createContext(Plugin plugin) { - return new Builder(plugin); + public Builder createContext() { + return new Builder(); } @RequiredArgsConstructor(access = AccessLevel.PRIVATE) @@ -30,7 +29,6 @@ public class EventManager { private static final BooleanSupplier EMPTY_FILTER = () -> true; private final EventContext eventContext = new EventContext(); - private final Plugin plugin; public Builder filter(BooleanSupplier filter) { eventContext.setFilter(filter != null ? filter : EMPTY_FILTER); @@ -40,7 +38,7 @@ public class EventManager { public Builder onEvent(Class eventType, EventPriority eventPriority, Consumer consumer) { eventContext.getEventMap().put(eventType, consumer); Bukkit.getPluginManager().registerEvent(eventType, eventContext, eventPriority, - eventContext::eventExecute, plugin); + eventContext::eventExecute, GhastTools.getPlugin()); return this; } diff --git a/src/main/java/ghast/GhastTools.java b/src/main/java/ghast/GhastTools.java new file mode 100644 index 0000000..3f3877d --- /dev/null +++ b/src/main/java/ghast/GhastTools.java @@ -0,0 +1,57 @@ +package ghast; + +import lombok.experimental.UtilityClass; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.plugin.Plugin; + +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.lang.ref.WeakReference; + +@UtilityClass +@SuppressWarnings("unused") +public class GhastTools { + + private static WeakReference refPlugin; + + @SuppressWarnings("java:S2696") + public void setPlugin(Plugin plugin) { + if (plugin == null) { + refPlugin = null; + } else { + refPlugin = new WeakReference<>(plugin); + } + } + + @SuppressWarnings("java:S112") + public YamlConfiguration loadConfig(boolean saveDefault) { + if (saveDefault) { + getPlugin().saveDefaultConfig(); + } + + try (InputStream inputStream = AssetsManager.loadResource("config.yml", saveDefault)) { + return YamlConfiguration.loadConfiguration(new InputStreamReader(inputStream)); + } catch (IOException e) { + throw new RuntimeException("Error load config: " + e.getMessage(), e); + } + } + + public YamlConfiguration loadConfig() { + return loadConfig(true); + } + + @SuppressWarnings("java:S112") + Plugin getPlugin() { + if (refPlugin == null) { + throw new RuntimeException("Plugin not set."); + } + + Plugin plugin = refPlugin.get(); + if (plugin == null) { + throw new RuntimeException("Plugin not set."); + } + + return plugin; + } +}