[WIP] Start breakout of mcmmo plugin

This commit starts work on the seperation of mcmmo and platform logic,
there is still a fair amount of work to go before this will compile,
down the line (potentially much further), bukkit logic will be stripped
out of -core
This commit is contained in:
Shane Freeder 2019-10-09 21:53:04 +01:00
parent 1fbcf698c6
commit eee09d8d76
No known key found for this signature in database
GPG Key ID: A3F61EA5A085289C
7 changed files with 104 additions and 11 deletions

View File

@ -0,0 +1,4 @@
package com.gmail.nossr50.mcmmo.api;
public interface McMMOApi {
}

View File

@ -0,0 +1,10 @@
package com.gmail.nossr50.mcmmo.api.platform;
import java.util.logging.Logger;
public interface PlatformProvider {
Logger getLogger();
void tearDown();
}

View File

@ -0,0 +1,44 @@
import org.apache.tools.ant.filters.ReplaceTokens
plugins {
`java-library`
id("com.github.johnrengelman.shadow") version "5.1.0"
}
tasks {
build {
dependsOn(shadowJar)
}
shadowJar {
dependencies {
include(dependency("org.bstats:bstats-bukkit"))
exclude(dependency("org.spigotmc:spigot"))
}
relocate("org.apache.commons.logging", "com.gmail.nossr50.commons.logging")
relocate("org.apache.juli", "com.gmail.nossr50.database.tomcat.juli")
relocate("org.apache.tomcat", "com.gmail.nossr50.database.tomcat")
relocate("org.bstats", "com.gmail.nossr50.metrics.bstat")
}
processResources {
filter<ReplaceTokens>("tokens" to mapOf("project.version" to project.version))
}
}
dependencies {
api(project(":mcmmo-api"))
implementation(project(":mcmmo-core"))
api("org.apache.tomcat:tomcat-jdbc:7.0.52")
implementation("org.jetbrains:annotations:17.0.0")
implementation("org.apache.maven.scm:maven-scm-provider-gitexe:1.8.1")
implementation("org.bstats:bstats-bukkit:1.4")
implementation("org.spigotmc:spigot:1.14.4-R0.1-SNAPSHOT")
implementation("com.sk89q.worldguard:worldguard-legacy:7.0.0-SNAPSHOT")
testImplementation("junit:junit:4.10")
}

View File

@ -0,0 +1,28 @@
package com.gmail.nossr50.mcmmo.bukkit;
import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.mcmmo.api.platform.PlatformProvider;
import org.bukkit.event.HandlerList;
import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull;
import java.util.logging.Logger;
public class BukkitBoostrap extends JavaPlugin implements PlatformProvider {
private mcMMO core = new mcMMO(this);
@Override
public @NotNull Logger getLogger() {
return super.getLogger();
}
@Override
public void tearDown() {
core.debug("Canceling all tasks...");
getServer().getScheduler().cancelTasks(this); // This removes our tasks
core.debug("Unregister all events...");
HandlerList.unregisterAll(this); // Cancel event registrations
}
}

View File

@ -16,6 +16,8 @@ import com.gmail.nossr50.database.DatabaseManagerFactory;
import com.gmail.nossr50.datatypes.skills.subskills.acrobatics.Roll; import com.gmail.nossr50.datatypes.skills.subskills.acrobatics.Roll;
import com.gmail.nossr50.listeners.*; import com.gmail.nossr50.listeners.*;
import com.gmail.nossr50.locale.LocaleManager; import com.gmail.nossr50.locale.LocaleManager;
import com.gmail.nossr50.mcmmo.api.McMMOApi;
import com.gmail.nossr50.mcmmo.api.platform.PlatformProvider;
import com.gmail.nossr50.party.PartyManager; import com.gmail.nossr50.party.PartyManager;
import com.gmail.nossr50.runnables.SaveTimerTask; import com.gmail.nossr50.runnables.SaveTimerTask;
import com.gmail.nossr50.runnables.backups.CleanBackupFilesTask; import com.gmail.nossr50.runnables.backups.CleanBackupFilesTask;
@ -65,8 +67,9 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.logging.Logger;
public class mcMMO extends JavaPlugin { public class mcMMO implements McMMOApi {
/* Managers */ /* Managers */
private ChunkManager placeStore; private ChunkManager placeStore;
private ConfigManager configManager; private ConfigManager configManager;
@ -123,18 +126,23 @@ public class mcMMO extends JavaPlugin {
// XP Event Check // XP Event Check
private boolean xpEventEnabled; private boolean xpEventEnabled;
private PlatformProvider platformProvider;
public mcMMO(PlatformProvider platformProvider) {
this.platformProvider = platformProvider;
}
/** /**
* Things to be run when the plugin is enabled. * Things to be run when the plugin is enabled.
*/ */
@Override
public void onEnable() { public void onEnable() {
try { try {
getLogger().setFilter(new LogFilter(this)); platformProvider.getLogger().setFilter(new LogFilter(this));
//TODO: Disgusting... //TODO: Disgusting...
MetadataConstants.metadataValue = new FixedMetadataValue(this, true); MetadataConstants.metadataValue = new FixedMetadataValue(this, true);
PluginManager pluginManager = getServer().getPluginManager(); PluginManager pluginManager = platformProvider.getServer().getPluginManager();
healthBarPluginEnabled = pluginManager.getPlugin("HealthBar") != null; healthBarPluginEnabled = pluginManager.getPlugin("HealthBar") != null;
//Init Permission Tools //Init Permission Tools
@ -299,7 +307,6 @@ public class mcMMO extends JavaPlugin {
perkUtils = new PerkUtils(this); perkUtils = new PerkUtils(this);
} }
@Override
public void onLoad() public void onLoad()
{ {
if(getServer().getPluginManager().getPlugin("WorldGuard") != null) { if(getServer().getPluginManager().getPlugin("WorldGuard") != null) {
@ -316,7 +323,6 @@ public class mcMMO extends JavaPlugin {
/** /**
* Things to be run when the plugin is disabled. * Things to be run when the plugin is disabled.
*/ */
@Override
public void onDisable() { public void onDisable() {
try { try {
userManager.saveAll(); // Make sure to save player information if the server shuts down userManager.saveAll(); // Make sure to save player information if the server shuts down
@ -333,10 +339,7 @@ public class mcMMO extends JavaPlugin {
e.printStackTrace(); e.printStackTrace();
} }
debug("Canceling all tasks..."); platformProvider.tearDown();
getServer().getScheduler().cancelTasks(this); // This removes our tasks
debug("Unregister all events...");
HandlerList.unregisterAll(this); // Cancel event registrations
if (getConfigManager().getConfigAutomatedBackups().isZipBackupsEnabled()) { if (getConfigManager().getConfigAutomatedBackups().isZipBackupsEnabled()) {
// Remove other tasks BEFORE starting the Backup, or we just cancel it straight away. // Remove other tasks BEFORE starting the Backup, or we just cancel it straight away.
@ -568,6 +571,10 @@ public class mcMMO extends JavaPlugin {
getLogger().info("[Debug] " + message); getLogger().info("[Debug] " + message);
} }
@Deprecated
public Logger getLogger() {
return platformProvider.getLogger();
}
/** /**
* Setup the various storage file paths * Setup the various storage file paths
*/ */

View File

@ -1,4 +1,4 @@
rootProject.name= 'mcMMO' rootProject.name= 'mcMMO'
include 'mcmmo-core' include 'mcmmo-core'
include 'mcmmo-api' include 'mcmmo-api'
include 'mcmmo-bukkit'