|
@@ -20,6 +20,7 @@ import com.gmail.nossr50.datatypes.skills.subskills.acrobatics.Roll;
|
|
import com.gmail.nossr50.listeners.*;
|
|
import com.gmail.nossr50.listeners.*;
|
|
import com.gmail.nossr50.metadata.MetadataService;
|
|
import com.gmail.nossr50.metadata.MetadataService;
|
|
import com.gmail.nossr50.party.PartyManager;
|
|
import com.gmail.nossr50.party.PartyManager;
|
|
|
|
+import com.gmail.nossr50.placeholders.PapiExpansion;
|
|
import com.gmail.nossr50.runnables.SaveTimerTask;
|
|
import com.gmail.nossr50.runnables.SaveTimerTask;
|
|
import com.gmail.nossr50.runnables.backups.CleanBackupsTask;
|
|
import com.gmail.nossr50.runnables.backups.CleanBackupsTask;
|
|
import com.gmail.nossr50.runnables.commands.NotifySquelchReminderTask;
|
|
import com.gmail.nossr50.runnables.commands.NotifySquelchReminderTask;
|
|
@@ -52,6 +53,8 @@ import com.gmail.nossr50.util.skills.SkillTools;
|
|
import com.gmail.nossr50.util.skills.SmeltingTracker;
|
|
import com.gmail.nossr50.util.skills.SmeltingTracker;
|
|
import com.gmail.nossr50.util.upgrade.UpgradeManager;
|
|
import com.gmail.nossr50.util.upgrade.UpgradeManager;
|
|
import com.gmail.nossr50.worldguard.WorldGuardManager;
|
|
import com.gmail.nossr50.worldguard.WorldGuardManager;
|
|
|
|
+import com.tcoded.folialib.FoliaLib;
|
|
|
|
+import com.tcoded.folialib.util.InvalidTickDelayNotifier;
|
|
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
|
|
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
|
|
import net.shatteredlands.shatt.backup.ZipLibrary;
|
|
import net.shatteredlands.shatt.backup.ZipLibrary;
|
|
import org.bstats.bukkit.Metrics;
|
|
import org.bstats.bukkit.Metrics;
|
|
@@ -136,6 +139,9 @@ public class mcMMO extends JavaPlugin {
|
|
|
|
|
|
private GeneralConfig generalConfig;
|
|
private GeneralConfig generalConfig;
|
|
private AdvancedConfig advancedConfig;
|
|
private AdvancedConfig advancedConfig;
|
|
|
|
+
|
|
|
|
+ private FoliaLib foliaLib;
|
|
|
|
+
|
|
// private RepairConfig repairConfig;
|
|
// private RepairConfig repairConfig;
|
|
// private SalvageConfig salvageConfig;
|
|
// private SalvageConfig salvageConfig;
|
|
// private PersistentDataConfig persistentDataConfig;
|
|
// private PersistentDataConfig persistentDataConfig;
|
|
@@ -163,6 +169,13 @@ public class mcMMO extends JavaPlugin {
|
|
@Override
|
|
@Override
|
|
public void onEnable() {
|
|
public void onEnable() {
|
|
try {
|
|
try {
|
|
|
|
+ //Filter out any debug messages (if debug/verbose logging is not enabled)
|
|
|
|
+ getLogger().setFilter(new LogFilter(this));
|
|
|
|
+
|
|
|
|
+ //Folia lib plugin instance
|
|
|
|
+ foliaLib = new FoliaLib(this);
|
|
|
|
+ InvalidTickDelayNotifier.disableNotifications = true;
|
|
|
|
+
|
|
setupFilePaths();
|
|
setupFilePaths();
|
|
generalConfig = new GeneralConfig(getDataFolder()); //Load before skillTools
|
|
generalConfig = new GeneralConfig(getDataFolder()); //Load before skillTools
|
|
skillTools = new SkillTools(this); //Load after general config
|
|
skillTools = new SkillTools(this); //Load after general config
|
|
@@ -179,9 +192,6 @@ public class mcMMO extends JavaPlugin {
|
|
//metadata service
|
|
//metadata service
|
|
metadataService = new MetadataService(this);
|
|
metadataService = new MetadataService(this);
|
|
|
|
|
|
- //Filter out any debug messages (if debug/verbose logging is not enabled)
|
|
|
|
- getLogger().setFilter(new LogFilter(this));
|
|
|
|
-
|
|
|
|
MetadataConstants.MCMMO_METADATA_VALUE = new FixedMetadataValue(this, true);
|
|
MetadataConstants.MCMMO_METADATA_VALUE = new FixedMetadataValue(this, true);
|
|
|
|
|
|
PluginManager pluginManager = getServer().getPluginManager();
|
|
PluginManager pluginManager = getServer().getPluginManager();
|
|
@@ -190,7 +200,6 @@ public class mcMMO extends JavaPlugin {
|
|
|
|
|
|
upgradeManager = new UpgradeManager();
|
|
upgradeManager = new UpgradeManager();
|
|
|
|
|
|
-
|
|
|
|
modManager = new ModManager();
|
|
modManager = new ModManager();
|
|
|
|
|
|
//Init Material Maps
|
|
//Init Material Maps
|
|
@@ -229,18 +238,21 @@ public class mcMMO extends JavaPlugin {
|
|
|
|
|
|
if(serverAPIOutdated)
|
|
if(serverAPIOutdated)
|
|
{
|
|
{
|
|
- Bukkit
|
|
|
|
- .getScheduler()
|
|
|
|
- .scheduleSyncRepeatingTask(this,
|
|
|
|
|
|
+ foliaLib
|
|
|
|
+ .getImpl()
|
|
|
|
+ .runTimer(
|
|
() -> getLogger().severe("You are running an outdated version of "+platformManager.getServerSoftware()+", mcMMO will not work unless you update to a newer version!"),
|
|
() -> getLogger().severe("You are running an outdated version of "+platformManager.getServerSoftware()+", mcMMO will not work unless you update to a newer version!"),
|
|
- 20, 20*60*30);
|
|
|
|
|
|
+ 20, 20*60*30
|
|
|
|
+ );
|
|
|
|
|
|
if(platformManager.getServerSoftware() == ServerSoftwareType.CRAFT_BUKKIT)
|
|
if(platformManager.getServerSoftware() == ServerSoftwareType.CRAFT_BUKKIT)
|
|
{
|
|
{
|
|
- Bukkit.getScheduler()
|
|
|
|
- .scheduleSyncRepeatingTask(this,
|
|
|
|
|
|
+ foliaLib
|
|
|
|
+ .getImpl()
|
|
|
|
+ .runTimer(
|
|
() -> getLogger().severe("We have detected you are using incompatible server software, our best guess is that you are using CraftBukkit. mcMMO requires Spigot or Paper, if you are not using CraftBukkit, you will still need to update your custom server software before mcMMO will work."),
|
|
() -> getLogger().severe("We have detected you are using incompatible server software, our best guess is that you are using CraftBukkit. mcMMO requires Spigot or Paper, if you are not using CraftBukkit, you will still need to update your custom server software before mcMMO will work."),
|
|
- 20, 20*60*30);
|
|
|
|
|
|
+ 20, 20*60*30
|
|
|
|
+ );
|
|
}
|
|
}
|
|
} else {
|
|
} else {
|
|
registerEvents();
|
|
registerEvents();
|
|
@@ -252,10 +264,10 @@ public class mcMMO extends JavaPlugin {
|
|
formulaManager = new FormulaManager();
|
|
formulaManager = new FormulaManager();
|
|
|
|
|
|
for (Player player : getServer().getOnlinePlayers()) {
|
|
for (Player player : getServer().getOnlinePlayers()) {
|
|
- new PlayerProfileLoadingTask(player).runTaskLaterAsynchronously(mcMMO.p, 1); // 1 Tick delay to ensure the player is marked as online before we begin loading
|
|
|
|
|
|
+ getFoliaLib().getImpl().runLaterAsync(new PlayerProfileLoadingTask(player), 1); // 1 Tick delay to ensure the player is marked as online before we begin loading
|
|
}
|
|
}
|
|
|
|
|
|
- debug("Version " + getDescription().getVersion() + " is enabled!");
|
|
|
|
|
|
+ LogUtils.debug(mcMMO.p.getLogger(), "Version " + getDescription().getVersion() + " is enabled!");
|
|
|
|
|
|
scheduleTasks();
|
|
scheduleTasks();
|
|
CommandRegistrationManager.registerCommands();
|
|
CommandRegistrationManager.registerCommands();
|
|
@@ -282,9 +294,7 @@ public class mcMMO extends JavaPlugin {
|
|
else
|
|
else
|
|
metrics.addCustomChart(new SimplePie("leveling_system", () -> "Standard"));
|
|
metrics.addCustomChart(new SimplePie("leveling_system", () -> "Standard"));
|
|
}
|
|
}
|
|
- }
|
|
|
|
-
|
|
|
|
- catch (Throwable t) {
|
|
|
|
|
|
+ } catch (Throwable t) {
|
|
getLogger().severe("There was an error while enabling mcMMO!");
|
|
getLogger().severe("There was an error while enabling mcMMO!");
|
|
|
|
|
|
if (!(t instanceof ExceptionInInitializerError)) {
|
|
if (!(t instanceof ExceptionInInitializerError)) {
|
|
@@ -320,6 +330,10 @@ public class mcMMO extends JavaPlugin {
|
|
|
|
|
|
transientEntityTracker = new TransientEntityTracker();
|
|
transientEntityTracker = new TransientEntityTracker();
|
|
setServerShutdown(false); //Reset flag, used to make decisions about async saves
|
|
setServerShutdown(false); //Reset flag, used to make decisions about async saves
|
|
|
|
+
|
|
|
|
+ if(Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) {
|
|
|
|
+ new PapiExpansion().register();
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
public static PlayerLevelUtils getPlayerLevelUtils() {
|
|
public static PlayerLevelUtils getPlayerLevelUtils() {
|
|
@@ -388,13 +402,13 @@ public class mcMMO extends JavaPlugin {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
- debug("Canceling all tasks...");
|
|
|
|
- getServer().getScheduler().cancelTasks(this); // This removes our tasks
|
|
|
|
- debug("Unregister all events...");
|
|
|
|
|
|
+ LogUtils.debug(mcMMO.p.getLogger(), "Canceling all tasks...");
|
|
|
|
+ getFoliaLib().getImpl().cancelAllTasks(); // This removes our tasks
|
|
|
|
+ LogUtils.debug(mcMMO.p.getLogger(), "Unregister all events...");
|
|
HandlerList.unregisterAll(this); // Cancel event registrations
|
|
HandlerList.unregisterAll(this); // Cancel event registrations
|
|
|
|
|
|
databaseManager.onDisable();
|
|
databaseManager.onDisable();
|
|
- debug("Was disabled."); // How informative!
|
|
|
|
|
|
+ LogUtils.debug(mcMMO.p.getLogger(), "Was disabled."); // How informative!
|
|
}
|
|
}
|
|
|
|
|
|
public static String getMainDirectory() {
|
|
public static String getMainDirectory() {
|
|
@@ -429,10 +443,6 @@ public class mcMMO extends JavaPlugin {
|
|
xpEventEnabled = !xpEventEnabled;
|
|
xpEventEnabled = !xpEventEnabled;
|
|
}
|
|
}
|
|
|
|
|
|
- public void debug(String message) {
|
|
|
|
- getLogger().info("[Debug] " + message);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
public static FormulaManager getFormulaManager() {
|
|
public static FormulaManager getFormulaManager() {
|
|
return formulaManager;
|
|
return formulaManager;
|
|
}
|
|
}
|
|
@@ -613,7 +623,7 @@ public class mcMMO extends JavaPlugin {
|
|
|
|
|
|
if(CoreSkillsConfig.getInstance().isPrimarySkillEnabled(PrimarySkillType.ACROBATICS))
|
|
if(CoreSkillsConfig.getInstance().isPrimarySkillEnabled(PrimarySkillType.ACROBATICS))
|
|
{
|
|
{
|
|
- getLogger().info("Enabling Acrobatics Skills");
|
|
|
|
|
|
+ LogUtils.debug(mcMMO.p.getLogger(), "Enabling Acrobatics Skills");
|
|
|
|
|
|
//TODO: Should do this differently
|
|
//TODO: Should do this differently
|
|
Roll roll = new Roll();
|
|
Roll roll = new Roll();
|
|
@@ -623,7 +633,7 @@ public class mcMMO extends JavaPlugin {
|
|
}
|
|
}
|
|
|
|
|
|
private void registerCustomRecipes() {
|
|
private void registerCustomRecipes() {
|
|
- getServer().getScheduler().scheduleSyncDelayedTask(this, () -> {
|
|
|
|
|
|
+ getFoliaLib().getImpl().runLater(() -> {
|
|
if (generalConfig.getChimaeraEnabled()) {
|
|
if (generalConfig.getChimaeraEnabled()) {
|
|
getServer().addRecipe(ChimaeraWing.getChimaeraWingRecipe());
|
|
getServer().addRecipe(ChimaeraWing.getChimaeraWingRecipe());
|
|
}
|
|
}
|
|
@@ -637,42 +647,42 @@ public class mcMMO extends JavaPlugin {
|
|
|
|
|
|
long saveIntervalTicks = Math.max(minute, generalConfig.getSaveInterval() * minute);
|
|
long saveIntervalTicks = Math.max(minute, generalConfig.getSaveInterval() * minute);
|
|
|
|
|
|
- new SaveTimerTask().runTaskTimer(this, saveIntervalTicks, saveIntervalTicks);
|
|
|
|
|
|
+ getFoliaLib().getImpl().runTimer(new SaveTimerTask(), saveIntervalTicks, saveIntervalTicks);
|
|
|
|
|
|
// Cleanup the backups folder
|
|
// Cleanup the backups folder
|
|
- new CleanBackupsTask().runTaskAsynchronously(mcMMO.p);
|
|
|
|
|
|
+ getFoliaLib().getImpl().runAsync(new CleanBackupsTask());
|
|
|
|
|
|
// Old & Powerless User remover
|
|
// Old & Powerless User remover
|
|
long purgeIntervalTicks = generalConfig.getPurgeInterval() * 60L * 60L * Misc.TICK_CONVERSION_FACTOR;
|
|
long purgeIntervalTicks = generalConfig.getPurgeInterval() * 60L * 60L * Misc.TICK_CONVERSION_FACTOR;
|
|
|
|
|
|
if (purgeIntervalTicks == 0) {
|
|
if (purgeIntervalTicks == 0) {
|
|
- new UserPurgeTask().runTaskLaterAsynchronously(this, 2 * Misc.TICK_CONVERSION_FACTOR); // Start 2 seconds after startup.
|
|
|
|
|
|
+ getFoliaLib().getImpl().runLaterAsync(new UserPurgeTask(), 2 * Misc.TICK_CONVERSION_FACTOR); // Start 2 seconds after startup.
|
|
}
|
|
}
|
|
else if (purgeIntervalTicks > 0) {
|
|
else if (purgeIntervalTicks > 0) {
|
|
- new UserPurgeTask().runTaskTimerAsynchronously(this, purgeIntervalTicks, purgeIntervalTicks);
|
|
|
|
|
|
+ getFoliaLib().getImpl().runTimerAsync(new UserPurgeTask(), purgeIntervalTicks, purgeIntervalTicks);
|
|
}
|
|
}
|
|
|
|
|
|
// Automatically remove old members from parties
|
|
// Automatically remove old members from parties
|
|
long kickIntervalTicks = generalConfig.getAutoPartyKickInterval() * 60L * 60L * Misc.TICK_CONVERSION_FACTOR;
|
|
long kickIntervalTicks = generalConfig.getAutoPartyKickInterval() * 60L * 60L * Misc.TICK_CONVERSION_FACTOR;
|
|
|
|
|
|
if (kickIntervalTicks == 0) {
|
|
if (kickIntervalTicks == 0) {
|
|
- new PartyAutoKickTask().runTaskLater(this, 2 * Misc.TICK_CONVERSION_FACTOR); // Start 2 seconds after startup.
|
|
|
|
|
|
+ getFoliaLib().getImpl().runLater(new PartyAutoKickTask(), 2 * Misc.TICK_CONVERSION_FACTOR); // Start 2 seconds after startup.
|
|
}
|
|
}
|
|
else if (kickIntervalTicks > 0) {
|
|
else if (kickIntervalTicks > 0) {
|
|
- new PartyAutoKickTask().runTaskTimer(this, kickIntervalTicks, kickIntervalTicks);
|
|
|
|
|
|
+ getFoliaLib().getImpl().runTimer(new PartyAutoKickTask(), kickIntervalTicks, kickIntervalTicks);
|
|
}
|
|
}
|
|
|
|
|
|
// Update power level tag scoreboards
|
|
// Update power level tag scoreboards
|
|
- new PowerLevelUpdatingTask().runTaskTimer(this, 2 * Misc.TICK_CONVERSION_FACTOR, 2 * Misc.TICK_CONVERSION_FACTOR);
|
|
|
|
|
|
+ getFoliaLib().getImpl().runTimer(new PowerLevelUpdatingTask(), 2 * Misc.TICK_CONVERSION_FACTOR, 2 * Misc.TICK_CONVERSION_FACTOR);
|
|
|
|
|
|
// Clear the registered XP data so players can earn XP again
|
|
// Clear the registered XP data so players can earn XP again
|
|
if (ExperienceConfig.getInstance().getDiminishedReturnsEnabled()) {
|
|
if (ExperienceConfig.getInstance().getDiminishedReturnsEnabled()) {
|
|
- new ClearRegisteredXPGainTask().runTaskTimer(this, 60, 60);
|
|
|
|
|
|
+ getFoliaLib().getImpl().runTimer(new ClearRegisteredXPGainTask(), 60, 60);
|
|
}
|
|
}
|
|
|
|
|
|
if(mcMMO.p.getAdvancedConfig().allowPlayerTips())
|
|
if(mcMMO.p.getAdvancedConfig().allowPlayerTips())
|
|
{
|
|
{
|
|
- new NotifySquelchReminderTask().runTaskTimer(this, 60, ((20 * 60) * 60));
|
|
|
|
|
|
+ getFoliaLib().getImpl().runTimer(new NotifySquelchReminderTask(), 60, ((20 * 60) * 60));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -772,4 +782,8 @@ public class mcMMO extends JavaPlugin {
|
|
public @NotNull AdvancedConfig getAdvancedConfig() {
|
|
public @NotNull AdvancedConfig getAdvancedConfig() {
|
|
return advancedConfig;
|
|
return advancedConfig;
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ public @NotNull FoliaLib getFoliaLib() {
|
|
|
|
+ return foliaLib;
|
|
|
|
+ }
|
|
}
|
|
}
|