From 44ef8396519e434f19c9e8a4842ce60848b9778e Mon Sep 17 00:00:00 2001 From: Ryder Belserion Date: Tue, 5 Mar 2024 18:56:50 -0500 Subject: [PATCH] Create service classes --- .../crazyauctions/CrazyAuctions.java | 53 +++++++++++++++++++ .../crazyauctions/CrazyProvider.java | 26 +++++++++ .../crazyauctions/CrazyAuctionsPaper.java | 25 +++++++++ 3 files changed, 104 insertions(+) create mode 100644 common/src/main/java/com/ryderbelserion/crazyauctions/CrazyAuctions.java create mode 100644 common/src/main/java/com/ryderbelserion/crazyauctions/CrazyProvider.java create mode 100644 paper/src/main/java/com/ryderbelserion/crazyauctions/CrazyAuctionsPaper.java diff --git a/common/src/main/java/com/ryderbelserion/crazyauctions/CrazyAuctions.java b/common/src/main/java/com/ryderbelserion/crazyauctions/CrazyAuctions.java new file mode 100644 index 0000000..ff3cc2e --- /dev/null +++ b/common/src/main/java/com/ryderbelserion/crazyauctions/CrazyAuctions.java @@ -0,0 +1,53 @@ +package com.ryderbelserion.crazyauctions; + +import ch.jalu.configme.SettingsManager; +import ch.jalu.configme.SettingsManagerBuilder; +import ch.jalu.configme.resource.YamlFileResourceOptions; +import com.ryderbelserion.crazyauctions.platform.impl.Config; +import com.ryderbelserion.crazyauctions.platform.Server; +import java.io.File; + +public class CrazyAuctions { + + private final Server server; + + private final SettingsManager config; + + public CrazyAuctions(Server server) { + this.server = server; + + + // Create config files + YamlFileResourceOptions builder = YamlFileResourceOptions.builder().indentationSize(2).build(); + + this.config = SettingsManagerBuilder + .withYamlFile(new File(server.getFolder(), "config.yml"), builder) + .useDefaultMigrationService() + .configurationData(Config.class) + .create(); + + // Register provider. + CrazyProvider.register(this); + } + + public void reload() { + // Reload the config. + this.config.reload(); + } + + public void disable() { + // Save the config. + this.config.save(); + + // Unregister provider. + CrazyProvider.unregister(); + } + + public Server getServer() { + return this.server; + } + + public SettingsManager getConfig() { + return this.config; + } +} \ No newline at end of file diff --git a/common/src/main/java/com/ryderbelserion/crazyauctions/CrazyProvider.java b/common/src/main/java/com/ryderbelserion/crazyauctions/CrazyProvider.java new file mode 100644 index 0000000..266c223 --- /dev/null +++ b/common/src/main/java/com/ryderbelserion/crazyauctions/CrazyProvider.java @@ -0,0 +1,26 @@ +package com.ryderbelserion.crazyauctions; + +public final class CrazyProvider { + + private static CrazyAuctions instance; + + private CrazyProvider() { + throw new UnsupportedOperationException("This class cannot be instantiated"); + } + + public static CrazyAuctions get() { + if (instance == null) { + throw new IllegalStateException("CrazyAuctions is not loaded."); + } + + return instance; + } + + static void register(final CrazyAuctions instance) { + CrazyProvider.instance = instance; + } + + static void unregister() { + CrazyProvider.instance = null; + } +} \ No newline at end of file diff --git a/paper/src/main/java/com/ryderbelserion/crazyauctions/CrazyAuctionsPaper.java b/paper/src/main/java/com/ryderbelserion/crazyauctions/CrazyAuctionsPaper.java new file mode 100644 index 0000000..3633a2c --- /dev/null +++ b/paper/src/main/java/com/ryderbelserion/crazyauctions/CrazyAuctionsPaper.java @@ -0,0 +1,25 @@ +package com.ryderbelserion.crazyauctions; + +import com.ryderbelserion.crazyauctions.platform.PaperServer; +import org.bukkit.plugin.java.JavaPlugin; + +public class CrazyAuctionsPaper extends JavaPlugin { + + private CrazyAuctions crazyAuctions; + + @Override + public void onEnable() { + this.crazyAuctions = new CrazyAuctions(new PaperServer()); + } + + @Override + public void onDisable() { + if (this.crazyAuctions != null) { + this.crazyAuctions.disable(); + } + } + + public CrazyAuctions getCrazyAuctions() { + return this.crazyAuctions; + } +} \ No newline at end of file