Make use of paper's new bootstrap/library loader

This commit is contained in:
Ryder Belserion 2023-02-28 01:26:27 -05:00
parent cc10d4d653
commit a28521f105
No known key found for this signature in database
GPG Key ID: 8FC2E6C54BBF05FE
4 changed files with 186 additions and 0 deletions

View File

@ -0,0 +1,56 @@
package us.crazycrew.crazyauctions;
import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull;
import us.crazycrew.crazycore.CrazyLogger;
import us.crazycrew.crazycore.paper.PaperCore;
import java.io.File;
import java.nio.file.Path;
import java.util.logging.Logger;
public class CrazyAuctions extends JavaPlugin {
private static CrazyAuctions plugin;
private final PaperCore paperCore;
private final File users;
public CrazyAuctions(PaperCore paperCore) {
this.paperCore = paperCore;
plugin = this;
this.users = new File(paperCore.getDirectory() + "/userdata");
if (users.mkdir()) CrazyLogger.info("Created the folder " + users.getName() + ".");
}
@Override
public @NotNull Logger getLogger() {
return CrazyLogger.getLogger();
}
@Override
public void onEnable() {
// Enable the player registry.
getCrazyCore().createPlayerRegistry(this);
}
@Override
public void onDisable() {
super.onDisable();
}
public static CrazyAuctions getPlugin() {
return plugin;
}
public PaperCore getCrazyCore() {
return this.paperCore;
}
public Path getUsers() {
return users.toPath();
}
}

View File

@ -0,0 +1,34 @@
package us.crazycrew.crazyauctions;
import io.papermc.paper.plugin.loader.PluginClasspathBuilder;
import io.papermc.paper.plugin.loader.PluginLoader;
import io.papermc.paper.plugin.loader.library.impl.MavenLibraryResolver;
import org.eclipse.aether.artifact.DefaultArtifact;
import org.eclipse.aether.graph.Dependency;
import org.eclipse.aether.repository.RemoteRepository;
import org.jetbrains.annotations.NotNull;
@SuppressWarnings("UnstableApiUsage")
public class CrazyLoader implements PluginLoader {
@Override
public void classloader(@NotNull PluginClasspathBuilder classpathBuilder) {
MavenLibraryResolver resolver = new MavenLibraryResolver();
resolver.addDependency(new Dependency(new DefaultArtifact("us.crazycrew.crazycore:crazycore-paper:1.1.0.0"), null));
// Configs
resolver.addDependency(new Dependency(new DefaultArtifact("ch.jalu:configme:1.3.0"), null));
resolver.addRepository(new RemoteRepository.Builder("maven2", "default", "https://repo1.maven.org/maven2").build());
resolver.addRepository(new RemoteRepository.Builder("crazycrew-libraries", "default", "https://repo.crazycrew.us/libraries").build());
//resolver.addDependency(new Dependency(new DefaultArtifact("us.crazycrew.crazycore:crazycore-core:1.1.0.0"), null));
//resolver.addRepository(new RemoteRepository.Builder("triumphteam-snapshots", "default", "https://repo.triumphteam.dev/snapshots").build());
//resolver.addDependency(new Dependency(new DefaultArtifact("dev.triumphteam:triumph-gui:3.1.2"), null));
classpathBuilder.addLibrary(resolver);
}
}

View File

@ -0,0 +1,58 @@
package us.crazycrew.crazyauctions;
import ch.jalu.configme.SettingsManager;
import ch.jalu.configme.SettingsManagerBuilder;
import io.papermc.paper.plugin.bootstrap.PluginBootstrap;
import io.papermc.paper.plugin.bootstrap.PluginProviderContext;
import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull;
import us.crazycrew.crazyauctions.configs.PluginSettings;
import us.crazycrew.crazyauctions.configs.migrations.PluginMigrationService;
import us.crazycrew.crazycore.CrazyLogger;
import us.crazycrew.crazycore.paper.PaperConsole;
import us.crazycrew.crazycore.paper.PaperCore;
import us.crazycrew.crazycore.paper.player.PaperPlayerRegistry;
import java.io.File;
import java.util.logging.LogManager;
@SuppressWarnings("UnstableApiUsage")
public class Starter implements PluginBootstrap {
private PaperCore paperCore;
private SettingsManager pluginConfig;
@Override
public void bootstrap(@NotNull PluginProviderContext context) {
this.paperCore = new PaperCore(context.getConfiguration().getName(), context.getDataDirectory());
this.pluginConfig = SettingsManagerBuilder
.withYamlFile(new File(context.getDataDirectory().toFile(), "plugin-settings.yml"))
.configurationData(PluginSettings.class)
.migrationService(new PluginMigrationService()).create();
}
@Override
public @NotNull JavaPlugin createPlugin(@NotNull PluginProviderContext context) {
// Create the player registry.
this.paperCore.setPaperPlayerRegistry(new PaperPlayerRegistry());
// Create the console instance.
this.paperCore.setPaperConsole(new PaperConsole());
// Set the project prefix.
this.paperCore.setProjectPrefix(getPluginConfig().getProperty(PluginSettings.CONSOLE_PREFIX));
// Set the logger name and create it.
CrazyLogger.setName(this.paperCore.getProjectName());
// Add the logger manager.
LogManager.getLogManager().addLogger(CrazyLogger.getLogger());
return new CrazyAuctions(this.paperCore);
}
public SettingsManager getPluginConfig() {
return this.pluginConfig;
}
}

View File

@ -0,0 +1,38 @@
name: ${name}
main: ${group}.CrazyAuctions
version: ${version}
api-version: '1.19'
description: ${description}
bootstrapper: ${group}.Starter
loader: ${group}.CrazyLoader
dependencies:
- name: CMI
required: false
bootstrap: false
- name: HolographicDisplays
required: false
bootstrap: false
- name: DecentHolograms
required: false
bootstrap: false
- name: PlaceholderAPI
required: false
bootstrap: false
- name: Vault
required: false
bootstrap: false
load-after:
- name: CMI
bootstrap: false
- name: HolographicDisplays
bootstrap: false
- name: DecentHolograms
bootstrap: false
- name: PlaceholderAPI
bootstrap: false
- name: Vault
bootstrap: false