mirror of
				https://github.com/mcMMO-Dev/mcMMO.git
				synced 2025-10-31 01:03:44 +01:00 
			
		
		
		
	Setting mcMMO to disable itself if it errors on load. Fixes most reloading errors.
This commit is contained in:
		| @@ -8,6 +8,7 @@ import java.util.List; | |||||||
|  |  | ||||||
| import net.shatteredlands.shatt.backup.ZipLibrary; | import net.shatteredlands.shatt.backup.ZipLibrary; | ||||||
|  |  | ||||||
|  | import org.bukkit.Bukkit; | ||||||
| import org.bukkit.OfflinePlayer; | import org.bukkit.OfflinePlayer; | ||||||
| import org.bukkit.block.Block; | import org.bukkit.block.Block; | ||||||
| import org.bukkit.entity.Player; | import org.bukkit.entity.Player; | ||||||
| @@ -98,46 +99,52 @@ public class mcMMO extends JavaPlugin { | |||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public void onEnable() { |     public void onEnable() { | ||||||
|         p = this; |         try { | ||||||
|         getLogger().setFilter(new LogFilter(this)); |             p = this; | ||||||
|         entityMetadata = new FixedMetadataValue(mcMMO.p, true); |             getLogger().setFilter(new LogFilter(this)); | ||||||
|         setupFilePaths(); |             entityMetadata = new FixedMetadataValue(mcMMO.p, true); | ||||||
|         setupSpout(); |             setupFilePaths(); | ||||||
|         loadConfigFiles(); |             setupSpout(); | ||||||
|  |             loadConfigFiles(); | ||||||
|  |  | ||||||
|         if (!Config.getInstance().getUseMySQL()) { |             if (!Config.getInstance().getUseMySQL()) { | ||||||
|             Users.loadUsers(); |                 Users.loadUsers(); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             registerEvents(); | ||||||
|  |  | ||||||
|  |             // Setup the leader boards | ||||||
|  |             if (Config.getInstance().getUseMySQL()) { | ||||||
|  |                 // TODO: Why do we have to check for a connection that hasn't be made yet?  | ||||||
|  |                 Database.checkConnected(); | ||||||
|  |                 Database.createStructure(); | ||||||
|  |             } | ||||||
|  |             else { | ||||||
|  |                 Leaderboard.updateLeaderboards(); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             for (Player player : getServer().getOnlinePlayers()) { | ||||||
|  |                 Users.addUser(player); // In case of reload add all users back into PlayerProfile | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             getLogger().info("Version " + getDescription().getVersion() + " is enabled!"); | ||||||
|  |  | ||||||
|  |             scheduleTasks(); | ||||||
|  |             registerCommands(); | ||||||
|  |  | ||||||
|  |             MetricsManager.setup(); | ||||||
|  |  | ||||||
|  |             placeStore = ChunkManagerFactory.getChunkManager(); // Get our ChunkletManager | ||||||
|  |  | ||||||
|  |             checkForUpdates(); | ||||||
|  |  | ||||||
|  |             if (Config.getInstance().getPTPCommandWorldPermissions()) { | ||||||
|  |                 Permissions.generateWorldTeleportPermissions(); | ||||||
|  |             } | ||||||
|         } |         } | ||||||
|  |         catch (Throwable t) { | ||||||
|         registerEvents(); |             getLogger().severe("There was an error while enabling mcMMO! Disabling now"); | ||||||
|  |             Bukkit.getPluginManager().disablePlugin(this); | ||||||
|         // Setup the leader boards |  | ||||||
|         if (Config.getInstance().getUseMySQL()) { |  | ||||||
|             // TODO: Why do we have to check for a connection that hasn't be made yet?  |  | ||||||
|             Database.checkConnected(); |  | ||||||
|             Database.createStructure(); |  | ||||||
|         } |  | ||||||
|         else { |  | ||||||
|             Leaderboard.updateLeaderboards(); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         for (Player player : getServer().getOnlinePlayers()) { |  | ||||||
|             Users.addUser(player); // In case of reload add all users back into PlayerProfile |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         getLogger().info("Version " + getDescription().getVersion() + " is enabled!"); |  | ||||||
|  |  | ||||||
|         scheduleTasks(); |  | ||||||
|         registerCommands(); |  | ||||||
|  |  | ||||||
|         MetricsManager.setup(); |  | ||||||
|  |  | ||||||
|         placeStore = ChunkManagerFactory.getChunkManager(); // Get our ChunkletManager |  | ||||||
|  |  | ||||||
|         checkForUpdates(); |  | ||||||
|  |  | ||||||
|         if (Config.getInstance().getPTPCommandWorldPermissions()) { |  | ||||||
|             Permissions.generateWorldTeleportPermissions(); |  | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -210,11 +217,15 @@ public class mcMMO extends JavaPlugin { | |||||||
|      */ |      */ | ||||||
|     @Override |     @Override | ||||||
|     public void onDisable() { |     public void onDisable() { | ||||||
|         Users.saveAll(); // Make sure to save player information if the server shuts down |         try { | ||||||
|         PartyManager.saveParties(); |             Users.saveAll(); // Make sure to save player information if the server shuts down | ||||||
|  |             PartyManager.saveParties(); | ||||||
|  |             placeStore.saveAll(); // Save our metadata | ||||||
|  |             placeStore.cleanUp(); // Cleanup empty metadata stores | ||||||
|  |         } | ||||||
|  |         catch (NullPointerException e) {} | ||||||
|  |  | ||||||
|         getServer().getScheduler().cancelTasks(this); // This removes our tasks |         getServer().getScheduler().cancelTasks(this); // This removes our tasks | ||||||
|         placeStore.saveAll(); // Save our metadata |  | ||||||
|         placeStore.cleanUp(); // Cleanup empty metadata stores |  | ||||||
|         HandlerList.unregisterAll(this); // Cancel event registrations |         HandlerList.unregisterAll(this); // Cancel event registrations | ||||||
|  |  | ||||||
|         if (Config.getInstance().getBackupsEnabled()) { |         if (Config.getInstance().getBackupsEnabled()) { | ||||||
| @@ -225,6 +236,14 @@ public class mcMMO extends JavaPlugin { | |||||||
|             catch (IOException e) { |             catch (IOException e) { | ||||||
|                 getLogger().severe(e.toString()); |                 getLogger().severe(e.toString()); | ||||||
|             } |             } | ||||||
|  |             catch (Throwable e) { | ||||||
|  |                 if (e instanceof NoClassDefFoundError) { | ||||||
|  |                     getLogger().severe("Backup class not found. Do not replace the mcMMO jar during runtime."); | ||||||
|  |                 } | ||||||
|  |                 else { | ||||||
|  |                     getLogger().severe(e.toString()); | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         getLogger().info("Was disabled."); //How informative! |         getLogger().info("Was disabled."); //How informative! | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 U-YUE\Sean
					U-YUE\Sean