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 ;
import com.gmail.nossr50.config.WorldBlacklist ;
2019-02-17 08:59:09 -08:00
import com.gmail.nossr50.config.experience.ExperienceConfig ;
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 ;
2013-10-07 10:23:04 -04: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 ;
2014-07-22 20:01:26 -04:00
import com.gmail.nossr50.util.upgrade.UpgradeManager ;
2019-01-23 13:55:35 -08:00
import com.gmail.nossr50.worldguard.WorldGuardManager ;
2017-05-14 16:36:31 +01:00
import com.google.common.base.Charsets ;
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 ;
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 ;
import java.io.InputStream ;
import java.io.InputStreamReader ;
2013-09-10 15:28:07 +02:00
2013-03-01 00:52:01 -05:00
public class mcMMO extends JavaPlugin {
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 ;
2013-12-14 14:27:50 +01:00
private static ModManager modManager ;
private static DatabaseManager databaseManager ;
private static FormulaManager formulaManager ;
private static HolidayManager holidayManager ;
2014-07-22 20:01:26 -04:00
private static UpgradeManager upgradeManager ;
2013-03-01 00:52:01 -05:00
2019-01-22 09:16:02 -08:00
/* Blacklist */
private static WorldBlacklist worldBlacklist ;
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
2013-08-10 19:33:21 +02:00
// Config Validation Check
public boolean noErrorsInConfigFiles = true ;
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
2019-01-20 00:46:33 -08:00
private static boolean isRetroModeEnabled ;
2018-12-29 05:24:55 -08: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-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 ) ) ;
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
2014-07-22 20:01:26 -04:00
upgradeManager = new UpgradeManager ( ) ;
2013-03-01 00:52:01 -05:00
setupFilePaths ( ) ;
2013-10-04 09:41:01 -04:00
2014-02-03 14:48:43 -05:00
modManager = new ModManager ( ) ;
2013-03-01 00:52:01 -05:00
loadConfigFiles ( ) ;
2013-08-10 19:33:21 +02:00
if ( ! noErrorsInConfigFiles ) {
return ;
}
2019-01-14 22:48:37 -08:00
//Store this value so other plugins can check it
2019-02-16 16:09:48 -08:00
isRetroModeEnabled = MainConfig . getInstance ( ) . getIsRetroMode ( ) ;
2019-01-14 22:48:37 -08:00
2019-02-18 12:16:10 -08:00
/ * if ( getServer ( ) . getName ( ) . equals ( " Cauldron " ) | | getServer ( ) . getName ( ) . equals ( " MCPC+ " ) ) {
2013-10-04 09:41:01 -04:00
checkModConfigs ( ) ;
2019-02-18 12:16:10 -08:00
} * /
2013-09-22 14:39:20 +02:00
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
2013-04-02 13:47:52 -04:00
PartyManager . loadParties ( ) ;
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-02-16 16:09:48 -08:00
if ( MainConfig . getInstance ( ) . getPTPCommandWorldPermissions ( ) ) {
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
Metrics metrics ;
2019-02-16 16:09:48 -08:00
if ( MainConfig . getInstance ( ) . getIsMetricsEnabled ( ) ) {
2019-01-16 11:05:43 -08:00
metrics = new Metrics ( this ) ;
metrics . addCustomChart ( new Metrics . SimplePie ( " version " , ( ) - > getDescription ( ) . getVersion ( ) ) ) ;
2019-02-16 16:09:48 -08:00
if ( MainConfig . getInstance ( ) . getIsRetroMode ( ) )
2019-01-16 11:05:43 -08:00
metrics . addCustomChart ( new Metrics . SimplePie ( " scaling " , ( ) - > " Standard " ) ) ;
else
metrics . addCustomChart ( new Metrics . SimplePie ( " scaling " , ( ) - > " Retro " ) ) ;
}
2013-03-01 00:52:01 -05:00
}
catch ( Throwable t ) {
getLogger ( ) . severe ( " There was an error while enabling mcMMO! " ) ;
if ( ! ( t instanceof ExceptionInInitializerError ) ) {
t . printStackTrace ( ) ;
}
else {
getLogger ( ) . info ( " Please do not replace the mcMMO jar while the server is running. " ) ;
}
2013-03-10 15:07:07 -04:00
getServer ( ) . getPluginManager ( ) . disablePlugin ( this ) ;
2013-03-01 00:52:01 -05:00
}
2019-01-22 09:16:02 -08:00
//Init the blacklist
2019-02-17 08:59:09 -08:00
worldBlacklist = new WorldBlacklist ( ) ;
2013-03-01 00:52:01 -05:00
}
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-02-16 16:09:48 -08:00
if ( MainConfig . getInstance ( ) . 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-02-16 16:09:48 -08:00
if ( MainConfig . getInstance ( ) . getBackupsEnabled ( ) ) {
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 ;
}
2013-06-04 12:14:43 -04:00
public static RepairableManager getRepairableManager ( ) {
2019-02-17 11:32:53 -08:00
return configManager . getSimpleRepairableManager ( ) ;
2013-06-04 12:14:43 -04:00
}
2013-12-14 14:27:50 +01:00
public static SalvageableManager getSalvageableManager ( ) {
2019-02-17 11:32:53 -08:00
return configManager . getSimpleSalvageableManager ( ) ;
2013-12-14 14:27:50 +01:00
}
2013-04-25 09:16:42 -04:00
public static DatabaseManager getDatabaseManager ( ) {
return databaseManager ;
}
2014-02-03 14:48:43 -05:00
public static ModManager getModManager ( ) {
return modManager ;
}
2014-07-22 20:01:26 -04:00
public static UpgradeManager getUpgradeManager ( ) {
return upgradeManager ;
}
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 ( ) ;
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-02-16 16:09:48 -08:00
long saveIntervalTicks = MainConfig . getInstance ( ) . getSaveInterval ( ) * 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-02-16 16:09:48 -08:00
long purgeIntervalTicks = MainConfig . getInstance ( ) . getPurgeInterval ( ) * 60L * 60L * Misc . TICK_CONVERSION_FACTOR ;
2013-03-01 00:52:01 -05:00
2013-04-30 15:19:41 -04:00
if ( purgeIntervalTicks = = 0 ) {
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
}
// Automatically remove old members from parties
2019-02-16 16:09:48 -08:00
long kickIntervalTicks = MainConfig . getInstance ( ) . getAutoPartyKickInterval ( ) * 60L * 60L * Misc . TICK_CONVERSION_FACTOR ;
2013-03-01 00:52:01 -05:00
2013-04-30 15:19:41 -04:00
if ( kickIntervalTicks = = 0 ) {
2013-06-12 19:26:09 -04:00
new PartyAutoKickTask ( ) . runTaskLater ( 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 ( kickIntervalTicks > 0 ) {
new PartyAutoKickTask ( ) . runTaskTimer ( this , kickIntervalTicks , kickIntervalTicks ) ;
2013-03-01 00:52:01 -05: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
public InputStreamReader getResourceAsReader ( String fileName ) {
InputStream in = getResource ( fileName ) ;
return in = = null ? null : new InputStreamReader ( in , Charsets . UTF_8 ) ;
}
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-01-14 22:48:37 -08:00
return isRetroModeEnabled ;
}
2019-01-22 09:16:02 -08:00
public static WorldBlacklist getWorldBlacklist ( ) {
return worldBlacklist ;
}
2019-02-17 11:32:53 -08:00
public static ConfigManager getConfigManager ( ) {
return configManager ;
}
2013-03-01 00:52:01 -05:00
}