2013-03-01 00:52:01 -05:00
package com.gmail.nossr50 ;
2019-02-17 11:32:53 -08:00
import com.gmail.nossr50.config.ConfigManager ;
2019-02-18 12:16:10 -08:00
import com.gmail.nossr50.config.CoreSkillsConfig ;
import com.gmail.nossr50.config.MainConfig ;
2019-02-17 08:59:09 -08:00
import com.gmail.nossr50.config.experience.ExperienceConfig ;
2019-03-13 13:09:27 -07:00
import com.gmail.nossr50.config.hocon.database.ConfigSectionCleaning ;
2019-03-13 07:10:57 -07:00
import com.gmail.nossr50.config.hocon.database.ConfigSectionMySQL ;
2019-03-16 22:46:30 -07:00
import com.gmail.nossr50.config.hocon.party.ConfigSectionPartyExperienceSharing ;
2019-03-16 23:52:50 -07:00
import com.gmail.nossr50.config.hocon.party.ConfigSectionPartyLevel ;
2019-03-13 18:09:33 -07:00
import com.gmail.nossr50.config.hocon.playerleveling.ConfigLeveling ;
2019-03-13 09:42:57 -07:00
import com.gmail.nossr50.config.hocon.scoreboard.ConfigScoreboard ;
2013-03-01 00:52:01 -05:00
import com.gmail.nossr50.database.DatabaseManager ;
2013-06-04 12:14:43 -04:00
import com.gmail.nossr50.database.DatabaseManagerFactory ;
2019-01-12 23:54:53 -08:00
import com.gmail.nossr50.datatypes.skills.PrimarySkillType ;
2019-01-08 19:52:52 -08:00
import com.gmail.nossr50.datatypes.skills.subskills.acrobatics.Roll ;
2018-07-23 22:13:57 -04:00
import com.gmail.nossr50.listeners.* ;
2013-03-01 00:52:01 -05:00
import com.gmail.nossr50.party.PartyManager ;
2014-03-28 23:07:48 +01:00
import com.gmail.nossr50.runnables.CheckDateTask ;
2013-03-01 00:52:01 -05:00
import com.gmail.nossr50.runnables.SaveTimerTask ;
2013-11-01 16:07:56 +01:00
import com.gmail.nossr50.runnables.backups.CleanBackupsTask ;
2013-03-01 00:52:01 -05:00
import com.gmail.nossr50.runnables.database.UserPurgeTask ;
import com.gmail.nossr50.runnables.party.PartyAutoKickTask ;
2013-05-03 21:26:20 +02:00
import com.gmail.nossr50.runnables.player.ClearRegisteredXPGainTask ;
2014-08-01 13:35:36 -04:00
import com.gmail.nossr50.runnables.player.PlayerProfileLoadingTask ;
2013-09-11 19:42:27 -07:00
import com.gmail.nossr50.runnables.player.PowerLevelUpdatingTask ;
2013-03-01 00:52:01 -05:00
import com.gmail.nossr50.runnables.skills.BleedTimerTask ;
2013-11-15 18:21:00 -05:00
import com.gmail.nossr50.skills.alchemy.Alchemy ;
2019-04-02 17:42:35 -07:00
import com.gmail.nossr50.skills.repair.repairables.RepairableManager ;
2013-12-14 14:27:50 +01:00
import com.gmail.nossr50.skills.salvage.salvageables.SalvageableManager ;
2018-07-23 22:13:57 -04:00
import com.gmail.nossr50.util.* ;
2013-03-01 00:52:01 -05:00
import com.gmail.nossr50.util.blockmeta.chunkmeta.ChunkManager ;
import com.gmail.nossr50.util.blockmeta.chunkmeta.ChunkManagerFactory ;
import com.gmail.nossr50.util.commands.CommandRegistrationManager ;
2013-09-10 15:28:07 +02:00
import com.gmail.nossr50.util.experience.FormulaManager ;
2013-03-01 00:52:01 -05:00
import com.gmail.nossr50.util.player.UserManager ;
2013-09-11 19:42:27 -07:00
import com.gmail.nossr50.util.scoreboards.ScoreboardManager ;
2019-01-19 18:51:18 -08:00
import com.gmail.nossr50.util.skills.RankUtils ;
2019-01-23 13:55:35 -08:00
import com.gmail.nossr50.worldguard.WorldGuardManager ;
2013-09-10 15:28:07 +02:00
import net.shatteredlands.shatt.backup.ZipLibrary ;
2019-01-16 11:05:43 -08:00
import org.bstats.bukkit.Metrics ;
2019-03-20 15:53:12 -07:00
import org.bukkit.Bukkit ;
2018-07-23 22:13:57 -04:00
import org.bukkit.entity.Player ;
import org.bukkit.event.HandlerList ;
import org.bukkit.metadata.FixedMetadataValue ;
import org.bukkit.plugin.PluginManager ;
import org.bukkit.plugin.java.JavaPlugin ;
import java.io.File ;
import java.io.IOException ;
2013-09-10 15:28:07 +02:00
2013-03-01 00:52:01 -05:00
public class mcMMO extends JavaPlugin {
2019-03-20 20:03:11 -07:00
public static final String COMPATIBLE_SERVER_SOFTWARE = " Spigot, Paper " ;
public static final String INCOMPATIBLE_SERVER_SOFTWARE = " CraftBukkit " ;
public static final String COMPATIBLE_MINECRAFT_VERSIONS = " 1.13.2 " ;
2013-04-25 09:27:48 -04:00
/* Managers */
2013-12-14 14:27:50 +01:00
private static ChunkManager placeStore ;
2019-02-17 08:59:09 -08:00
private static ConfigManager configManager ;
2019-02-18 14:29:29 -08:00
//private static ModManager modManager;
2013-12-14 14:27:50 +01:00
private static DatabaseManager databaseManager ;
private static FormulaManager formulaManager ;
private static HolidayManager holidayManager ;
2019-02-21 19:06:59 -08:00
//private static UpgradeManager upgradeManager;
2013-03-01 00:52:01 -05:00
2013-04-25 09:27:48 -04:00
/* File Paths */
2013-03-01 00:52:01 -05:00
private static String mainDirectory ;
private static String flatFileDirectory ;
private static String usersFile ;
private static String modDirectory ;
2013-04-25 09:27:48 -04:00
public static mcMMO p ;
// Jar Stuff
public static File mcmmo ;
2013-04-30 15:07:29 -04:00
/* Plugin Checks */
2013-09-29 23:57:13 +02:00
private static boolean healthBarPluginEnabled ;
2013-03-01 00:52:01 -05:00
// XP Event Check
2013-04-25 09:27:48 -04:00
private boolean xpEventEnabled ;
2013-03-01 00:52:01 -05:00
2013-04-30 15:07:29 -04:00
/* Metadata Values */
2019-03-18 02:40:19 -07:00
public static final String FISH_HOOK_REF_METAKEY = " mcMMO: Fish Hook Tracker " ;
2019-03-23 22:57:44 -07:00
public static final String CUSTOM_DAMAGE_METAKEY = " mcMMO: Custom Damage " ;
2013-04-02 08:41:51 -04:00
public final static String entityMetadataKey = " mcMMO: Spawned Entity " ;
public final static String blockMetadataKey = " mcMMO: Piston Tracking " ;
2013-03-08 10:23:21 -05:00
public final static String furnaceMetadataKey = " mcMMO: Tracked Furnace " ;
2013-04-02 08:41:51 -04:00
public final static String tntMetadataKey = " mcMMO: Tracked TNT " ;
2017-02-22 00:00:27 -05:00
public final static String funfettiMetadataKey = " mcMMO: Funfetti " ;
2013-10-12 03:30:10 +02:00
public final static String tntsafeMetadataKey = " mcMMO: Safe TNT " ;
2013-04-04 22:11:11 -04:00
public final static String customNameKey = " mcMMO: Custom Name " ;
public final static String customVisibleKey = " mcMMO: Name Visibility " ;
2013-04-17 15:19:50 +02:00
public final static String droppedItemKey = " mcMMO: Tracked Item " ;
2013-05-14 22:43:13 -04:00
public final static String infiniteArrowKey = " mcMMO: Infinite Arrow " ;
2013-05-15 01:19:14 -04:00
public final static String bowForceKey = " mcMMO: Bow Force " ;
2013-05-15 08:35:12 -04:00
public final static String arrowDistanceKey = " mcMMO: Arrow Distance " ;
2019-03-29 17:44:54 -07:00
public final static String doubleDrops = " mcMMO: Double Drops " ;
public final static String tripleDrops = " mcMMO: Triple Drops " ;
2019-01-08 19:52:52 -08:00
//public final static String customDamageKey = "mcMMO: Custom Damage";
2013-12-01 18:43:17 -05:00
public final static String disarmedItemKey = " mcMMO: Disarmed Item " ;
2014-02-07 12:50:04 -05:00
public final static String playerDataKey = " mcMMO: Player Data " ;
2014-04-06 14:41:40 +02:00
public final static String greenThumbDataKey = " mcMMO: Green Thumb " ;
2019-03-23 16:21:25 -07:00
public final static String doubleDropKey = " mcMMO: Double Drop " ;
public final static String tripleDropKey = " mcMMO: Triple Drop " ;
2014-08-19 18:11:56 -04:00
public final static String databaseCommandKey = " mcMMO: Processing Database Command " ;
2015-01-10 12:31:13 +01:00
public final static String bredMetadataKey = " mcMMO: Bred Animal " ;
2013-04-02 08:41:51 -04:00
public static FixedMetadataValue metadataValue ;
2013-03-01 00:52:01 -05:00
/ * *
* Things to be run when the plugin is enabled .
* /
@Override
public void onEnable ( ) {
try {
p = this ;
getLogger ( ) . setFilter ( new LogFilter ( this ) ) ;
2019-03-20 20:03:11 -07:00
//DEBUG
/ * getLogger ( ) . info ( Bukkit . getBukkitVersion ( ) ) ;
getLogger ( ) . info ( Bukkit . getVersion ( ) ) ; * /
2013-03-01 00:52:01 -05:00
metadataValue = new FixedMetadataValue ( this , true ) ;
2014-02-27 10:56:21 -05:00
PluginManager pluginManager = getServer ( ) . getPluginManager ( ) ;
healthBarPluginEnabled = pluginManager . getPlugin ( " HealthBar " ) ! = null ;
2013-10-31 08:15:19 -04:00
2019-02-19 07:40:29 -08:00
//upgradeManager = new UpgradeManager();
2014-07-22 20:01:26 -04:00
2013-03-01 00:52:01 -05:00
setupFilePaths ( ) ;
2013-10-04 09:41:01 -04:00
2019-02-18 14:29:29 -08:00
//modManager = new ModManager();
2014-02-03 14:48:43 -05:00
2013-03-01 00:52:01 -05:00
loadConfigFiles ( ) ;
2013-09-29 23:57:13 +02:00
if ( healthBarPluginEnabled ) {
2013-09-22 14:39:20 +02:00
getLogger ( ) . info ( " HealthBar plugin found, mcMMO's healthbars are automatically disabled. " ) ;
}
2013-04-29 00:29:38 -04:00
2014-02-27 10:56:21 -05:00
if ( pluginManager . getPlugin ( " NoCheatPlus " ) ! = null & & pluginManager . getPlugin ( " CompatNoCheatPlus " ) = = null ) {
2013-10-19 00:27:07 +02:00
getLogger ( ) . warning ( " NoCheatPlus plugin found, but CompatNoCheatPlus was not found! " ) ;
getLogger ( ) . warning ( " mcMMO will not work properly alongside NoCheatPlus without CompatNoCheatPlus " ) ;
}
2013-06-04 12:14:43 -04:00
databaseManager = DatabaseManagerFactory . getDatabaseManager ( ) ;
2013-03-01 00:52:01 -05:00
registerEvents ( ) ;
2019-01-08 19:52:52 -08:00
registerCoreSkills ( ) ;
2013-03-08 21:46:05 +01:00
registerCustomRecipes ( ) ;
2013-03-01 00:52:01 -05:00
2019-03-18 07:46:33 -07:00
if ( getConfigManager ( ) . getConfigParty ( ) . isPartySystemEnabled ( ) )
PartyManager . loadParties ( ) ;
2013-04-02 13:47:52 -04:00
2013-08-21 13:18:50 -04:00
formulaManager = new FormulaManager ( ) ;
2014-01-12 12:08:47 +01:00
holidayManager = new HolidayManager ( ) ;
2013-05-20 15:38:30 +02:00
2013-03-01 00:52:01 -05:00
for ( Player player : getServer ( ) . getOnlinePlayers ( ) ) {
2014-08-05 23:02:41 -04:00
new PlayerProfileLoadingTask ( player ) . runTaskLaterAsynchronously ( mcMMO . p , 1 ) ; // 1 Tick delay to ensure the player is marked as online before we begin loading
2013-03-01 00:52:01 -05:00
}
2013-04-13 21:53:00 +02:00
debug ( " Version " + getDescription ( ) . getVersion ( ) + " is enabled! " ) ;
2013-03-01 00:52:01 -05:00
scheduleTasks ( ) ;
2013-04-30 15:07:29 -04:00
CommandRegistrationManager . registerCommands ( ) ;
2013-03-01 00:52:01 -05:00
placeStore = ChunkManagerFactory . getChunkManager ( ) ; // Get our ChunkletManager
2019-03-17 04:24:32 -07:00
if ( mcMMO . getConfigManager ( ) . getConfigParty ( ) . getPTP ( ) . isPtpWorldBasedPermissions ( ) ) {
2013-03-01 00:52:01 -05:00
Permissions . generateWorldTeleportPermissions ( ) ;
}
2019-01-16 11:05:43 -08:00
2019-01-19 18:51:18 -08:00
//Populate Ranked Skill Maps (DO THIS LAST)
RankUtils . populateRanks ( ) ;
2019-01-16 11:05:43 -08:00
//If anonymous statistics are enabled then use them
2019-03-14 21:28:23 -07:00
if ( getConfigManager ( ) . getConfigMetrics ( ) . isAllowAnonymousUsageStatistics ( ) ) {
Metrics metrics ;
2019-01-16 11:05:43 -08:00
metrics = new Metrics ( this ) ;
metrics . addCustomChart ( new Metrics . SimplePie ( " version " , ( ) - > getDescription ( ) . getVersion ( ) ) ) ;
2019-03-13 18:09:33 -07:00
if ( ! configManager . getConfigLeveling ( ) . getConfigSectionLevelingGeneral ( ) . getConfigSectionLevelScaling ( ) . isRetroModeEnabled ( ) )
2019-01-16 11:05:43 -08:00
metrics . addCustomChart ( new Metrics . SimplePie ( " scaling " , ( ) - > " Standard " ) ) ;
else
metrics . addCustomChart ( new Metrics . SimplePie ( " scaling " , ( ) - > " Retro " ) ) ;
2019-03-20 15:53:12 -07:00
//Simplified Server Software Tracking
2019-03-20 20:03:11 -07:00
if ( Bukkit . getServer ( ) . getVersion ( ) . contains ( " paper " ) )
2019-03-20 15:53:12 -07:00
metrics . addCustomChart ( new Metrics . SimplePie ( " Server_software " , ( ) - > " Paper " ) ) ;
2019-03-20 20:03:11 -07:00
else if ( Bukkit . getServer ( ) . getVersion ( ) . contains ( " spigot " ) & & ! Bukkit . getServer ( ) . getVersion ( ) . contains ( " paper " ) )
2019-03-20 15:53:12 -07:00
metrics . addCustomChart ( new Metrics . SimplePie ( " Server_software " , ( ) - > " Spigot " ) ) ;
2019-03-20 20:03:11 -07:00
else if ( Bukkit . getServer ( ) . getVersion ( ) . contains ( " bukkit " ) )
2019-03-20 15:53:12 -07:00
metrics . addCustomChart ( new Metrics . SimplePie ( " Server_software " , ( ) - > " CraftBukkit " ) ) ;
else
metrics . addCustomChart ( new Metrics . SimplePie ( " Server_software " , ( ) - > " Unknown " ) ) ;
2019-01-16 11:05:43 -08:00
}
2013-03-01 00:52:01 -05:00
}
catch ( Throwable t ) {
getLogger ( ) . severe ( " There was an error while enabling mcMMO! " ) ;
2019-02-26 16:33:04 -08:00
t . printStackTrace ( ) ;
getLogger ( ) . severe ( " End of error report for mcMMO " ) ;
getLogger ( ) . info ( " Please do not replace the mcMMO jar while the server is running. " ) ;
2013-03-01 00:52:01 -05:00
2019-03-20 20:03:11 -07:00
//getServer().getPluginManager().disablePlugin(this);
}
2019-03-22 15:32:53 -07:00
/ * if ( isIncompatibleVersion ( Bukkit . getVersion ( ) , Bukkit . getBukkitVersion ( ) ) )
2019-03-20 20:03:11 -07:00
{
getLogger ( ) . severe ( " mcMMO is not supported for your current server software and or Minecraft version " ) ;
if ( isServerSoftwareIncompatible ( Bukkit . getVersion ( ) ) )
{
getLogger ( ) . severe ( " mcMMO does not recognize your server software as being compatible! " ) ;
getLogger ( ) . severe ( " Compatible Server Software: " + COMPATIBLE_SERVER_SOFTWARE ) ;
getLogger ( ) . severe ( " Incompatible Server Software: " + INCOMPATIBLE_SERVER_SOFTWARE ) ;
}
if ( isServerMinecraftVersionIncompatible ( Bukkit . getBukkitVersion ( ) ) )
{
getLogger ( ) . severe ( " mcMMO does not recognize your Minecraft Version as being compatible! " ) ;
getLogger ( ) . severe ( " Compatible Minecraft Versions: " + COMPATIBLE_MINECRAFT_VERSIONS ) ;
getLogger ( ) . info ( " TIP: Paper and Spigot are extensions of CraftBukkit and are completely safe to upgrade to from CraftBukkit, please consider upgrading. " ) ;
}
2019-03-22 15:32:53 -07:00
} * /
2013-03-01 00:52:01 -05:00
}
2019-03-20 20:03:11 -07:00
private boolean isIncompatibleVersion ( String serverSoftwareString , String serverVersionString )
{
if ( isServerSoftwareIncompatible ( serverSoftwareString ) )
return true ;
if ( isServerMinecraftVersionIncompatible ( serverVersionString ) )
return true ;
return false ;
}
private boolean isServerMinecraftVersionIncompatible ( String serverVersionString ) {
if ( ! serverVersionString . contains ( " 1.13.2 " ) )
return true ;
return false ;
}
private boolean isServerSoftwareIncompatible ( String serverSoftwareString ) {
if ( ! serverSoftwareString . contains ( " paper " ) & & ! serverSoftwareString . contains ( " spigot " ) )
return true ;
return false ;
}
2019-01-22 17:59:45 -08:00
@Override
public void onLoad ( )
{
if ( getServer ( ) . getPluginManager ( ) . getPlugin ( " WorldGuard " ) ! = null )
WorldGuardManager . getInstance ( ) . registerFlags ( ) ;
}
2013-03-01 00:52:01 -05:00
/ * *
* Things to be run when the plugin is disabled .
* /
@Override
public void onDisable ( ) {
try {
2013-11-15 18:21:00 -05:00
Alchemy . finishAllBrews ( ) ; // Finish all partially complete AlchemyBrewTasks to prevent vanilla brewing continuation on restart
2013-04-02 08:29:38 -04:00
UserManager . saveAll ( ) ; // Make sure to save player information if the server shuts down
2014-06-03 20:52:22 -07:00
UserManager . clearAll ( ) ;
2013-04-02 08:29:38 -04:00
PartyManager . saveParties ( ) ; // Save our parties
2019-01-18 14:20:31 -08:00
//TODO: Needed?
2019-03-13 09:42:57 -07:00
if ( mcMMO . getScoreboardSettings ( ) . getScoreboardsEnabled ( ) )
2019-01-18 14:20:31 -08:00
ScoreboardManager . teardownAll ( ) ;
2013-05-20 15:38:30 +02:00
formulaManager . saveFormula ( ) ;
2014-01-12 12:08:47 +01:00
holidayManager . saveAnniversaryFiles ( ) ;
2013-04-02 08:29:38 -04:00
placeStore . saveAll ( ) ; // Save our metadata
placeStore . cleanUp ( ) ; // Cleanup empty metadata stores
2013-03-01 00:52:01 -05:00
}
2019-01-15 02:43:44 -08:00
catch ( NullPointerException e ) { e . printStackTrace ( ) ; }
2013-03-01 00:52:01 -05:00
2014-01-18 16:58:49 +01:00
debug ( " Canceling all tasks... " ) ;
2013-03-01 00:52:01 -05:00
getServer ( ) . getScheduler ( ) . cancelTasks ( this ) ; // This removes our tasks
2014-01-18 16:58:49 +01:00
debug ( " Unregister all events... " ) ;
2013-03-01 00:52:01 -05:00
HandlerList . unregisterAll ( this ) ; // Cancel event registrations
2019-03-19 08:39:37 -07:00
if ( mcMMO . getConfigManager ( ) . getConfigAutomatedBackups ( ) . isZipBackupsEnabled ( ) ) {
2013-03-01 00:52:01 -05:00
// Remove other tasks BEFORE starting the Backup, or we just cancel it straight away.
try {
2013-11-01 16:28:42 +01:00
ZipLibrary . mcMMOBackup ( ) ;
2013-03-01 00:52:01 -05:00
}
catch ( IOException e ) {
getLogger ( ) . severe ( e . toString ( ) ) ;
}
catch ( Throwable e ) {
if ( e instanceof NoClassDefFoundError ) {
getLogger ( ) . severe ( " Backup class not found! " ) ;
getLogger ( ) . info ( " Please do not replace the mcMMO jar while the server is running. " ) ;
}
else {
getLogger ( ) . severe ( e . toString ( ) ) ;
}
}
}
2014-08-01 13:35:36 -04:00
databaseManager . onDisable ( ) ;
2019-02-17 08:59:09 -08:00
//Unload configs last
configManager . unloadAllConfigsAndRegisters ( ) ;
2013-04-13 21:53:00 +02:00
debug ( " Was disabled. " ) ; // How informative!
2013-03-01 00:52:01 -05:00
}
public static String getMainDirectory ( ) {
return mainDirectory ;
}
public static String getFlatFileDirectory ( ) {
return flatFileDirectory ;
}
public static String getUsersFilePath ( ) {
return usersFile ;
}
public static String getModDirectory ( ) {
return modDirectory ;
}
public boolean isXPEventEnabled ( ) {
return xpEventEnabled ;
}
public void setXPEventEnabled ( boolean enabled ) {
this . xpEventEnabled = enabled ;
}
public void toggleXpEventEnabled ( ) {
xpEventEnabled = ! xpEventEnabled ;
}
public void debug ( String message ) {
getLogger ( ) . info ( " [Debug] " + message ) ;
}
2013-05-20 15:38:30 +02:00
public static FormulaManager getFormulaManager ( ) {
return formulaManager ;
}
2014-01-12 12:08:47 +01:00
public static HolidayManager getHolidayManager ( ) {
return holidayManager ;
}
2013-04-25 09:16:42 -04:00
public static ChunkManager getPlaceStore ( ) {
return placeStore ;
}
2019-04-02 17:42:35 -07:00
public static RepairableManager getRepairableManager ( ) {
return configManager . getRepairableManager ( ) ;
2013-06-04 12:14:43 -04:00
}
2013-12-14 14:27:50 +01:00
public static SalvageableManager getSalvageableManager ( ) {
2019-04-02 17:42:35 -07:00
return configManager . getSalvageableManager ( ) ;
2013-12-14 14:27:50 +01:00
}
2013-04-25 09:16:42 -04:00
public static DatabaseManager getDatabaseManager ( ) {
return databaseManager ;
}
2019-03-12 00:09:51 -07:00
/ * *
* Returns settings for MySQL from the users config
2019-03-13 09:42:57 -07:00
* @return settings for MySQL from the users config
2019-03-12 00:09:51 -07:00
* /
2019-03-13 07:10:57 -07:00
public static ConfigSectionMySQL getMySQLConfigSettings ( )
2019-03-12 00:09:51 -07:00
{
2019-03-13 07:10:57 -07:00
return configManager . getConfigDatabase ( ) . getConfigSectionMySQL ( ) ;
2019-03-12 00:09:51 -07:00
}
2019-03-13 15:44:35 -07:00
/ * *
* Returns settings for Player Leveling from the users config
* @return settings for Player Leveling from the users config
* /
2019-03-13 13:09:27 -07:00
public static ConfigLeveling getPlayerLevelingSettings ( )
{
return configManager . getConfigLeveling ( ) ;
}
/ * *
* Returns settings for Database cleaning from the users config
* @return settings for Database cleaning from the users config
* /
public static ConfigSectionCleaning getDatabaseCleaningSettings ( )
{
return configManager . getConfigDatabase ( ) . getConfigSectionCleaning ( ) ;
}
2019-03-16 22:46:30 -07:00
/ * *
* Returns settings for Party XP sharing from the users config
* @return settings for the Party XP sharing from the users config
* /
public static ConfigSectionPartyExperienceSharing getPartyXPShareSettings ( )
{
return configManager . getConfigParty ( ) . getPartyXP ( ) . getPartyExperienceSharing ( ) ;
}
2019-03-16 23:52:50 -07:00
/ * *
* Returns settings for Party Leveling from the users config
* @return settings for the Party Leveling from the users config
* /
public static ConfigSectionPartyLevel getPartyLevelSettings ( )
{
return configManager . getConfigParty ( ) . getPartyXP ( ) . getPartyLevel ( ) ;
}
2019-03-13 09:42:57 -07:00
/ * *
* Returns settings for Scoreboards from the users config
* @return settings for Scoreboards from the users config
* /
public static ConfigScoreboard getScoreboardSettings ( )
{
return configManager . getConfigScoreboard ( ) ;
}
2019-02-18 14:29:29 -08:00
/ * public static ModManager getModManager ( ) {
2014-02-03 14:48:43 -05:00
return modManager ;
2019-02-18 14:29:29 -08:00
} * /
2014-02-03 14:48:43 -05:00
2019-02-21 19:06:59 -08:00
/ * public static UpgradeManager getUpgradeManager ( ) {
2014-07-22 20:01:26 -04:00
return upgradeManager ;
2019-02-21 19:06:59 -08:00
} * /
2014-07-22 20:01:26 -04:00
2013-06-04 12:14:43 -04:00
@Deprecated
public static void setDatabaseManager ( DatabaseManager databaseManager ) {
mcMMO . databaseManager = databaseManager ;
2013-04-25 09:16:42 -04:00
}
2013-09-29 23:57:13 +02:00
public static boolean isHealthBarPluginEnabled ( ) {
return healthBarPluginEnabled ;
2013-09-22 14:39:20 +02:00
}
2013-03-01 00:52:01 -05:00
/ * *
* Setup the various storage file paths
* /
private void setupFilePaths ( ) {
mcmmo = getFile ( ) ;
mainDirectory = getDataFolder ( ) . getPath ( ) + File . separator ;
2013-10-07 10:33:14 -04:00
flatFileDirectory = mainDirectory + " flatfile " + File . separator ;
2013-03-01 00:52:01 -05:00
usersFile = flatFileDirectory + " mcmmo.users " ;
2013-10-07 10:32:40 -04:00
modDirectory = mainDirectory + " mods " + File . separator ;
2013-10-07 10:43:22 -04:00
fixFilePaths ( ) ;
}
private void fixFilePaths ( ) {
File oldFlatfilePath = new File ( mainDirectory + " FlatFileStuff " + File . separator ) ;
File oldModPath = new File ( mainDirectory + " ModConfigs " + File . separator ) ;
if ( oldFlatfilePath . exists ( ) ) {
2014-01-19 11:49:30 +01:00
if ( ! oldFlatfilePath . renameTo ( new File ( flatFileDirectory ) ) ) {
2014-02-03 14:48:43 -05:00
getLogger ( ) . warning ( " Failed to rename FlatFileStuff to flatfile! " ) ;
2014-01-19 11:49:30 +01:00
}
2013-10-07 10:43:22 -04:00
}
if ( oldModPath . exists ( ) ) {
2014-01-19 11:49:30 +01:00
if ( ! oldModPath . renameTo ( new File ( modDirectory ) ) ) {
2014-02-03 14:48:43 -05:00
getLogger ( ) . warning ( " Failed to rename ModConfigs to mods! " ) ;
}
}
File oldArmorFile = new File ( modDirectory + " armor.yml " ) ;
File oldBlocksFile = new File ( modDirectory + " blocks.yml " ) ;
File oldEntitiesFile = new File ( modDirectory + " entities.yml " ) ;
File oldToolsFile = new File ( modDirectory + " tools.yml " ) ;
if ( oldArmorFile . exists ( ) ) {
if ( ! oldArmorFile . renameTo ( new File ( modDirectory + " armor.default.yml " ) ) ) {
getLogger ( ) . warning ( " Failed to rename armor.yml to armor.default.yml! " ) ;
}
}
if ( oldBlocksFile . exists ( ) ) {
if ( ! oldBlocksFile . renameTo ( new File ( modDirectory + " blocks.default.yml " ) ) ) {
getLogger ( ) . warning ( " Failed to rename blocks.yml to blocks.default.yml! " ) ;
}
}
if ( oldEntitiesFile . exists ( ) ) {
if ( ! oldEntitiesFile . renameTo ( new File ( modDirectory + " entities.default.yml " ) ) ) {
getLogger ( ) . warning ( " Failed to rename entities.yml to entities.default.yml! " ) ;
}
}
if ( oldToolsFile . exists ( ) ) {
if ( ! oldToolsFile . renameTo ( new File ( modDirectory + " tools.default.yml " ) ) ) {
getLogger ( ) . warning ( " Failed to rename tools.yml to tools.default.yml! " ) ;
2014-01-19 11:49:30 +01:00
}
2013-10-07 10:43:22 -04:00
}
2014-02-09 02:28:59 -08:00
File currentFlatfilePath = new File ( flatFileDirectory ) ;
currentFlatfilePath . mkdirs ( ) ;
2013-03-01 00:52:01 -05:00
}
private void loadConfigFiles ( ) {
2019-02-17 08:59:09 -08:00
configManager = new ConfigManager ( ) ;
2019-02-26 11:26:06 -08:00
configManager . loadConfigs ( ) ;
2013-03-01 00:52:01 -05:00
}
private void registerEvents ( ) {
PluginManager pluginManager = getServer ( ) . getPluginManager ( ) ;
// Register events
2013-05-15 15:39:40 -04:00
pluginManager . registerEvents ( new PlayerListener ( this ) , this ) ;
pluginManager . registerEvents ( new BlockListener ( this ) , this ) ;
pluginManager . registerEvents ( new EntityListener ( this ) , this ) ;
pluginManager . registerEvents ( new InventoryListener ( this ) , this ) ;
2019-01-18 12:42:05 -08:00
pluginManager . registerEvents ( new SelfListener ( this ) , this ) ;
2013-05-15 15:39:40 -04:00
pluginManager . registerEvents ( new WorldListener ( this ) , this ) ;
2013-03-01 00:52:01 -05:00
}
2019-01-08 19:52:52 -08:00
/ * *
* Registers core skills
* This enables the skills in the new skill system
* /
private void registerCoreSkills ( ) {
/ *
* Acrobatics skills
* /
2019-02-17 08:59:09 -08:00
if ( CoreSkillsConfig . getInstance ( ) . isPrimarySkillEnabled ( PrimarySkillType . ACROBATICS ) )
2019-01-08 19:52:52 -08:00
{
System . out . println ( " [mcMMO] " + " enabling Acrobatics Skills " ) ;
//TODO: Should do this differently
Roll roll = new Roll ( ) ;
2019-02-17 08:59:09 -08:00
CoreSkillsConfig . getInstance ( ) . isSkillEnabled ( roll ) ;
2019-01-08 19:52:52 -08:00
InteractionManager . registerSubSkill ( new Roll ( ) ) ;
}
}
2013-03-08 21:46:05 +01:00
private void registerCustomRecipes ( ) {
2018-08-30 23:57:29 -04:00
getServer ( ) . getScheduler ( ) . scheduleSyncDelayedTask ( this , ( ) - > {
2019-02-16 16:09:48 -08:00
if ( MainConfig . getInstance ( ) . getChimaeraEnabled ( ) ) {
2018-08-30 23:57:29 -04:00
getServer ( ) . addRecipe ( ChimaeraWing . getChimaeraWingRecipe ( ) ) ;
}
} , 40 ) ;
2013-03-08 21:46:05 +01:00
}
2013-03-01 00:52:01 -05:00
private void scheduleTasks ( ) {
// Periodic save timer (Saves every 10 minutes by default)
2019-03-19 08:39:37 -07:00
long saveIntervalTicks = Math . max ( 1200 , ( getConfigManager ( ) . getConfigAutomatedBackups ( ) . getSaveIntervalMinutes ( ) * 1200 ) ) ;
2013-03-20 03:11:16 -04:00
new SaveTimerTask ( ) . runTaskTimer ( this , saveIntervalTicks , saveIntervalTicks ) ;
2013-11-01 17:38:54 +01:00
// Cleanup the backups folder
new CleanBackupsTask ( ) . runTaskAsynchronously ( mcMMO . p ) ;
2019-01-23 15:22:16 -08:00
// Bleed timer (Runs every 0.5 seconds)
2019-01-21 15:14:01 -08:00
new BleedTimerTask ( ) . runTaskTimer ( this , 1 * Misc . TICK_CONVERSION_FACTOR , 1 * ( Misc . TICK_CONVERSION_FACTOR / 2 ) ) ;
2013-03-01 00:52:01 -05:00
// Old & Powerless User remover
2019-03-13 13:09:27 -07:00
long purgeIntervalTicks = getConfigManager ( ) . getConfigDatabase ( ) . getConfigSectionCleaning ( ) . getPurgeInterval ( ) * 60L * 60L * Misc . TICK_CONVERSION_FACTOR ;
2013-03-01 00:52:01 -05:00
2019-03-13 13:09:27 -07:00
if ( mcMMO . getDatabaseCleaningSettings ( ) . isOnlyPurgeAtStartup ( ) ) {
2014-08-03 21:12:41 -04:00
new UserPurgeTask ( ) . runTaskLaterAsynchronously ( this , 2 * Misc . TICK_CONVERSION_FACTOR ) ; // Start 2 seconds after startup.
2013-03-01 00:52:01 -05:00
}
2013-04-30 15:19:41 -04:00
else if ( purgeIntervalTicks > 0 ) {
2014-08-03 21:12:41 -04:00
new UserPurgeTask ( ) . runTaskTimerAsynchronously ( this , purgeIntervalTicks , purgeIntervalTicks ) ;
2013-03-01 00:52:01 -05:00
}
2019-03-18 07:46:33 -07:00
//Party System Stuff
if ( mcMMO . configManager . getConfigParty ( ) . isPartySystemEnabled ( ) )
{
// Automatically remove old members from parties
long kickIntervalTicks = getConfigManager ( ) . getConfigParty ( ) . getPartyCleanup ( ) . getPartyAutoKickHoursInterval ( ) * 60L * 60L * Misc . TICK_CONVERSION_FACTOR ;
2013-03-01 00:52:01 -05:00
2019-03-18 07:46:33 -07:00
if ( kickIntervalTicks = = 0 ) {
new PartyAutoKickTask ( ) . runTaskLater ( this , 2 * Misc . TICK_CONVERSION_FACTOR ) ; // Start 2 seconds after startup.
}
else if ( kickIntervalTicks > 0 ) {
new PartyAutoKickTask ( ) . runTaskTimer ( this , kickIntervalTicks , kickIntervalTicks ) ;
}
2013-03-01 00:52:01 -05:00
}
2013-09-11 19:42:27 -07:00
2019-03-18 07:46:33 -07:00
2013-09-11 19:42:27 -07:00
// Update power level tag scoreboards
new PowerLevelUpdatingTask ( ) . runTaskTimer ( this , 2 * Misc . TICK_CONVERSION_FACTOR , 2 * Misc . TICK_CONVERSION_FACTOR ) ;
2014-03-28 23:07:48 +01:00
if ( getHolidayManager ( ) . nearingAprilFirst ( ) ) {
new CheckDateTask ( ) . runTaskTimer ( this , 10L * Misc . TICK_CONVERSION_FACTOR , 1L * 60L * 60L * Misc . TICK_CONVERSION_FACTOR ) ;
}
2013-05-03 21:26:20 +02:00
// Clear the registered XP data so players can earn XP again
2014-08-13 09:25:19 -06:00
if ( ExperienceConfig . getInstance ( ) . getDiminishedReturnsEnabled ( ) ) {
2013-10-26 22:44:03 -07:00
new ClearRegisteredXPGainTask ( ) . runTaskTimer ( this , 60 , 60 ) ;
2013-05-03 21:26:20 +02:00
}
2013-03-01 00:52:01 -05:00
}
2013-10-04 09:41:01 -04:00
2019-02-18 12:16:10 -08:00
/ * private void checkModConfigs ( ) {
2019-02-16 16:09:48 -08:00
if ( ! MainConfig . getInstance ( ) . getToolModsEnabled ( ) ) {
2014-06-14 11:34:35 -07:00
getLogger ( ) . warning ( " Cauldron implementation found, but the custom tool config for mcMMO is disabled! " ) ;
2013-10-04 09:41:01 -04:00
getLogger ( ) . info ( " To enable, set Mods.Tool_Mods_Enabled to TRUE in config.yml. " ) ;
}
2019-02-16 16:09:48 -08:00
if ( ! MainConfig . getInstance ( ) . getArmorModsEnabled ( ) ) {
2014-06-14 11:34:35 -07:00
getLogger ( ) . warning ( " Cauldron implementation found, but the custom armor config for mcMMO is disabled! " ) ;
2013-10-04 09:41:01 -04:00
getLogger ( ) . info ( " To enable, set Mods.Armor_Mods_Enabled to TRUE in config.yml. " ) ;
}
2019-02-16 16:09:48 -08:00
if ( ! MainConfig . getInstance ( ) . getBlockModsEnabled ( ) ) {
2014-06-14 11:34:35 -07:00
getLogger ( ) . warning ( " Cauldron implementation found, but the custom block config for mcMMO is disabled! " ) ;
2013-10-04 09:41:01 -04:00
getLogger ( ) . info ( " To enable, set Mods.Block_Mods_Enabled to TRUE in config.yml. " ) ;
}
2019-02-16 16:09:48 -08:00
if ( ! MainConfig . getInstance ( ) . getEntityModsEnabled ( ) ) {
2014-06-14 11:34:35 -07:00
getLogger ( ) . warning ( " Cauldron implementation found, but the custom entity config for mcMMO is disabled! " ) ;
2013-10-04 09:41:01 -04:00
getLogger ( ) . info ( " To enable, set Mods.Entity_Mods_Enabled to TRUE in config.yml. " ) ;
}
2019-02-18 12:16:10 -08:00
} * /
2017-05-14 16:36:31 +01:00
2019-01-14 22:48:37 -08:00
/ * *
* Checks if this plugin is using retro mode
* Retro mode is a 0 - 1000 skill system
* Standard mode is scaled for 1 - 100
* @return true if retro mode is enabled
* /
2019-01-20 00:46:33 -08:00
public static boolean isRetroModeEnabled ( ) {
2019-03-13 18:09:33 -07:00
return getPlayerLevelingSettings ( ) . getConfigSectionLevelingGeneral ( ) . getConfigSectionLevelScaling ( ) . isRetroModeEnabled ( ) ;
2019-01-14 22:48:37 -08:00
}
2019-01-22 09:16:02 -08:00
2019-02-17 11:32:53 -08:00
public static ConfigManager getConfigManager ( ) {
return configManager ;
}
2013-03-01 00:52:01 -05:00
}