0

add GhastTools

This commit is contained in:
2020-12-26 05:35:26 +03:00
parent 07b22bbb06
commit 46aa8eb0e6
3 changed files with 70 additions and 29 deletions

View File

@@ -1,6 +1,7 @@
package ghast; package ghast;
import lombok.experimental.UtilityClass; import lombok.experimental.UtilityClass;
import org.bukkit.plugin.Plugin;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@@ -35,10 +36,11 @@ public class AssetsManager {
saveTo(resourceName, targetPath.toPath()); 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; InputStream inputStream;
Path pathToResource = pluginFolder.resolve(resourceName); Path pathToResource = plugin.getDataFolder().toPath().resolve(resourceName);
if (Files.exists(pathToResource)) { if (Files.exists(pathToResource)) {
inputStream = openResource(pathToResource); inputStream = openResource(pathToResource);
} else if (defaultResourceName != null) { } else if (defaultResourceName != null) {
@@ -57,32 +59,16 @@ public class AssetsManager {
return inputStream; return inputStream;
} }
public InputStream loadResource(Path pluginFolder, String resourceName, String defaultResourceName) { public InputStream loadResource(String resourceName, String defaultResourceName) {
return loadResource(pluginFolder, resourceName, defaultResourceName, true); return loadResource(resourceName, defaultResourceName, true);
} }
public InputStream loadResource(Path pluginFolder, String resourceName, boolean saveDefault) { public InputStream loadResource(String resourceName, boolean saveDefault) {
return loadResource(pluginFolder, resourceName, resourceName, saveDefault); return loadResource(resourceName, resourceName, saveDefault);
} }
public InputStream loadResource(Path pluginFolder, String resourceName) { public InputStream loadResource(String resourceName) {
return loadResource(pluginFolder, resourceName, true); return loadResource(resourceName, 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);
} }
private URL getResourceUrl(String resourceName) { private URL getResourceUrl(String resourceName) {

View File

@@ -9,7 +9,6 @@ import org.bukkit.Bukkit;
import org.bukkit.event.Event; import org.bukkit.event.Event;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.plugin.Plugin;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@@ -20,8 +19,8 @@ import java.util.function.Consumer;
@SuppressWarnings("unused") @SuppressWarnings("unused")
public class EventManager { public class EventManager {
public Builder createContext(Plugin plugin) { public Builder createContext() {
return new Builder(plugin); return new Builder();
} }
@RequiredArgsConstructor(access = AccessLevel.PRIVATE) @RequiredArgsConstructor(access = AccessLevel.PRIVATE)
@@ -30,7 +29,6 @@ public class EventManager {
private static final BooleanSupplier EMPTY_FILTER = () -> true; private static final BooleanSupplier EMPTY_FILTER = () -> true;
private final EventContext eventContext = new EventContext(); private final EventContext eventContext = new EventContext();
private final Plugin plugin;
public Builder filter(BooleanSupplier filter) { public Builder filter(BooleanSupplier filter) {
eventContext.setFilter(filter != null ? filter : EMPTY_FILTER); eventContext.setFilter(filter != null ? filter : EMPTY_FILTER);
@@ -40,7 +38,7 @@ public class EventManager {
public <T extends Event> Builder onEvent(Class<T> eventType, EventPriority eventPriority, Consumer<T> consumer) { public <T extends Event> Builder onEvent(Class<T> eventType, EventPriority eventPriority, Consumer<T> consumer) {
eventContext.getEventMap().put(eventType, consumer); eventContext.getEventMap().put(eventType, consumer);
Bukkit.getPluginManager().registerEvent(eventType, eventContext, eventPriority, Bukkit.getPluginManager().registerEvent(eventType, eventContext, eventPriority,
eventContext::eventExecute, plugin); eventContext::eventExecute, GhastTools.getPlugin());
return this; return this;
} }

View File

@@ -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<Plugin> 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;
}
}