9
0
mirror of https://github.com/HibiscusMC/HMCCosmetics.git synced 2025-12-30 20:39:13 +00:00
Files
HMCCosmetics/src/main/java/com/hibiscusmc/hmccosmetics/HMCCosmeticsPlugin.java
2022-11-06 10:21:01 -06:00

92 lines
3.1 KiB
Java

package com.hibiscusmc.hmccosmetics;
import com.hibiscusmc.hmccosmetics.command.CosmeticCommand;
import com.hibiscusmc.hmccosmetics.command.CosmeticCommandTabComplete;
import com.hibiscusmc.hmccosmetics.config.Settings;
import com.hibiscusmc.hmccosmetics.config.WardrobeSettings;
import com.hibiscusmc.hmccosmetics.config.serializer.ItemSerializer;
import com.hibiscusmc.hmccosmetics.config.serializer.LocationSerializer;
import com.hibiscusmc.hmccosmetics.cosmetic.Cosmetics;
import com.hibiscusmc.hmccosmetics.database.Database;
import com.hibiscusmc.hmccosmetics.gui.Menus;
import com.hibiscusmc.hmccosmetics.listener.PlayerConnectionListener;
import com.hibiscusmc.hmccosmetics.listener.PlayerGameListener;
import org.bukkit.Location;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;
import org.spongepowered.configurate.ConfigurateException;
import org.spongepowered.configurate.yaml.YamlConfigurationLoader;
import java.io.File;
import java.nio.file.Path;
public final class HMCCosmeticsPlugin extends JavaPlugin {
private static HMCCosmeticsPlugin instance;
@Override
public void onEnable() {
// Plugin startup logic
instance = this;
// File setup
if (!getDataFolder().exists()) {
saveDefaultConfig();
saveResource("translations.yml", false);
saveResource("messages.yml", false);
saveResource("cosmetics/examplecosmetics.yml", false);
saveResource("menus/examplemenu.yml", false);
}
setup();
// Commands
getServer().getPluginCommand("cosmetic").setExecutor(new CosmeticCommand());
getServer().getPluginCommand("cosmetic").setTabCompleter(new CosmeticCommandTabComplete());
// Listener
getServer().getPluginManager().registerEvents(new PlayerConnectionListener(), this);
getServer().getPluginManager().registerEvents(new PlayerGameListener(), this);
// Database
new Database();
}
@Override
public void onDisable() {
// Plugin shutdown logic
}
public static HMCCosmeticsPlugin getInstance() {
return instance;
}
public static void setup() {
getInstance().reloadConfig();
// Configuration setup
final File file = Path.of(getInstance().getDataFolder().getPath(), "config.yml").toFile();
final YamlConfigurationLoader loader = YamlConfigurationLoader.
builder().
path(file.toPath()).
defaultOptions(opts ->
opts.serializers(build -> {
build.register(Location.class, LocationSerializer.INSTANCE);
build.register(ItemStack.class, ItemSerializer.INSTANCE);
}))
.build();
try {
Settings.load(loader.load().node(""));
WardrobeSettings.load(loader.load().node("wardrobe"));
} catch (ConfigurateException e) {
throw new RuntimeException(e);
}
// Cosmetics setup
Cosmetics.setup();
// Menus setup
Menus.setup();
}
}