diff --git a/build.xml b/build.xml
index 5326928..b5b06e9 100644
--- a/build.xml
+++ b/build.xml
@@ -14,7 +14,7 @@
-
+
diff --git a/src/de/sockenklaus/XmlStats/Webserver.java b/src/de/sockenklaus/XmlStats/Webserver.java
index 37e4a4f..825692c 100644
--- a/src/de/sockenklaus/XmlStats/Webserver.java
+++ b/src/de/sockenklaus/XmlStats/Webserver.java
@@ -77,29 +77,38 @@ public class Webserver {
this.server.createContext("/users.xml", new XmlWorkerUsers());
- if(XmlStats.checkStats()){
- server.createContext("/userstats.xml", new XmlWorkerUserstats());
- XmlStats.LogInfo("Stats seems to be loaded correctly. Enabling /userstats.xml");
- }
- else {
- XmlStats.LogWarn("Stats not loaded correctly. Disabling /userstats.xml");
- }
- if (XmlStats.checkiConomy()){
+
+ this.server.start();
+ }
+
+ protected void startiConomy(){
+ if (this.isRunning() && XmlStats.checkiConomy()){
server.createContext("/money.xml", new XmlWorkerMoney());
XmlStats.LogInfo("iConomy seems to be loaded correctly. Enabling /money.xml.");
}
else {
- XmlStats.LogWarn("iConomy not loaded correctly. Disabling /money.xml");
+ XmlStats.LogWarn("iConomy or webserver not loaded correctly. Disabling /money.xml");
}
-
- if(XmlStats.checkAchievements()){
+ }
+
+ protected void startAchievements(){
+ if(this.isRunning() && XmlStats.checkAchievements()){
server.createContext("/achievements.xml", new XmlWorkerAchievements());
+ XmlStats.LogInfo("Achievements seems to be loaded correctly. Enabling /achievements.xml");
}
else {
- XmlStats.LogWarn("Achievements not loaded correctly. Disabling /achievements.xml");
+ XmlStats.LogWarn("Achievements or webserver not loaded correctly. Disabling /achievements.xml");
+ }
+ }
+
+ protected void startStats(){
+ if(this.isRunning() && XmlStats.checkStats()){
+ server.createContext("/userstats.xml", new XmlWorkerUserstats());
+ XmlStats.LogInfo("Stats seems to be loaded correctly. Enabling /userstats.xml");
+ }
+ else {
+ XmlStats.LogWarn("Stats or webserver not loaded correctly. Disabling /userstats.xml");
}
-
- this.server.start();
}
}
diff --git a/src/de/sockenklaus/XmlStats/XmlStats.java b/src/de/sockenklaus/XmlStats/XmlStats.java
index 8ddc91a..09837c6 100644
--- a/src/de/sockenklaus/XmlStats/XmlStats.java
+++ b/src/de/sockenklaus/XmlStats/XmlStats.java
@@ -19,6 +19,8 @@ import java.util.logging.Logger;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
+import org.bukkit.event.Event.Priority;
+import org.bukkit.event.Event.Type;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
@@ -76,14 +78,15 @@ public class XmlStats extends JavaPlugin {
LogDebug("options.webserver-port: "+settingsTemp.getInt("options.webserver-port"));
LogDebug("options.verbose-enabled: "+settingsTemp.getBoolean("options.verbose-enabled"));
- this.hookPlugins();
-
if (settingsTemp.getBoolean("options.webserver-enabled")){
try {
XmlStatsRegistry.put("webserver", new Webserver());
this.enabled = true;
LogInfo("XmStats "+this.version+" enabled");
+ this.hookPlugins();
+
+ this.registerEvents();
}
catch (Exception ex){
LogError("Fehler beim Erstellen des Webservers:");
@@ -141,40 +144,53 @@ public class XmlStats extends JavaPlugin {
* Hook plugins.
*/
protected void hookPlugins(){
- Plugin StatsTemp = getServer().getPluginManager().getPlugin("Stats");
- Plugin iConomyTemp = getServer().getPluginManager().getPlugin("iConomy");
- Plugin AchievementsTemp = getServer().getPluginManager().getPlugin("Achievements");
+ this.hookAchievements();
+ this.hookiConomy();
+ this.hookStats();
- if(StatsTemp != null){
- if(StatsTemp.isEnabled() && StatsTemp.getClass().getName().equals("com.nidefawl.Stats.Stats")){
- XmlStatsRegistry.put("stats", (Stats)StatsTemp);
- LogInfo("Hooked into Stats!");
- }
- }
- else {
- LogWarn("Stats not found! Can't hook into it.");
- }
-
- if(AchievementsTemp != null){
- if(AchievementsTemp.isEnabled() && AchievementsTemp.getClass().getName().equals("com.nidefawl.Achievements.Achievements")){
- XmlStatsRegistry.put("achievements", (Achievements)AchievementsTemp);
- LogInfo("Hooked into Achievements!");
- }
- }
- else {
- LogWarn("Achievements not found! Can't hook into it.");
- }
-
- if (iConomyTemp != null) {
- if (iConomyTemp.isEnabled() && iConomyTemp.getClass().getName().equals("com.iConomy.iConomy")) {
- XmlStatsRegistry.put("iconomy", (iConomy)iConomyTemp);
- LogInfo("Hooked into iConomy");
- }
+ }
+
+ protected void hookiConomy(){
+ Plugin iConomyTemp = getServer().getPluginManager().getPlugin("iConomy");
+ Webserver webserver = (Webserver)XmlStatsRegistry.get("webserver");
+
+ if (iConomyTemp != null && iConomyTemp.isEnabled() && iConomyTemp.getClass().getName().equals("com.iConomy.iConomy")) {
+ XmlStatsRegistry.put("iconomy", (iConomy)iConomyTemp);
+ LogInfo("Hooked into iConomy");
+ webserver.startiConomy();
}
else {
LogWarn("iConomy not found! Can't hook into it.");
}
- }
+ }
+
+ protected void hookAchievements(){
+ Plugin AchievementsTemp = getServer().getPluginManager().getPlugin("Achievements");
+ Webserver webserver = (Webserver)XmlStatsRegistry.get("webserver");
+
+ if(AchievementsTemp != null && AchievementsTemp.isEnabled() && AchievementsTemp.getClass().getName().equals("com.nidefawl.Achievements.Achievements")){
+ XmlStatsRegistry.put("achievements", (Achievements)AchievementsTemp);
+ LogInfo("Hooked into Achievements!");
+ webserver.startAchievements();
+ }
+ else {
+ LogWarn("Achievements not found! Can't hook into it.");
+ }
+ }
+
+ protected void hookStats(){
+ Plugin StatsTemp = getServer().getPluginManager().getPlugin("Stats");
+ Webserver webserver = (Webserver)XmlStatsRegistry.get("webserver");
+
+ if(StatsTemp != null && StatsTemp.isEnabled() && StatsTemp.getClass().getName().equals("com.nidefawl.Stats.Stats")){
+ XmlStatsRegistry.put("stats", (Stats)StatsTemp);
+ LogInfo("Hooked into Stats!");
+ webserver.startStats();
+ }
+ else {
+ LogWarn("Stats not found! Can't hook into it.");
+ }
+ }
/**
* Checks if is stats hooked.
@@ -184,9 +200,7 @@ public class XmlStats extends JavaPlugin {
public static boolean checkStats(){
Stats StatsTemp = (Stats)XmlStatsRegistry.get("stats");
- if (StatsTemp != null){
- if(StatsTemp.getClass().getName().equals("com.nidefawl.Stats.Stats") && StatsTemp.isEnabled()) return true;
- }
+ if(StatsTemp != null && StatsTemp.getClass().getName().equals("com.nidefawl.Stats.Stats") && StatsTemp.isEnabled()) return true;
return false;
}
@@ -198,9 +212,7 @@ public class XmlStats extends JavaPlugin {
public static boolean checkiConomy(){
iConomy iConomyTemp = (iConomy)XmlStatsRegistry.get("iconomy");
- if (iConomyTemp != null){
- if (iConomyTemp.getClass().getName().equals("com.iConomy.iConomy") && iConomyTemp.isEnabled()) return true;
- }
+ if (iConomyTemp != null && iConomyTemp.getClass().getName().equals("com.iConomy.iConomy") && iConomyTemp.isEnabled()) return true;
return false;
}
@@ -212,9 +224,7 @@ public class XmlStats extends JavaPlugin {
public static boolean checkAchievements(){
Achievements AchievementsTemp = (Achievements)XmlStatsRegistry.get("achievements");
- if (AchievementsTemp != null){
- if(AchievementsTemp.getClass().getName().equals("com.nidefawl.Achievements.Achievements") && AchievementsTemp.isEnabled()) return true;
- }
+ if(AchievementsTemp != null && AchievementsTemp.getClass().getName().equals("com.nidefawl.Achievements.Achievements") && AchievementsTemp.isEnabled()) return true;
return false;
}
@@ -248,4 +258,10 @@ public class XmlStats extends JavaPlugin {
this.onEnable();
}
+ private void registerEvents(){
+ XmlStatsServerListener listener = new XmlStatsServerListener(this);
+
+ getServer().getPluginManager().registerEvent(Type.PLUGIN_ENABLE, listener, Priority.Monitor, this);
+ //getServer().getPluginManager().registerEvent(Type.PLUGIN_DISABLE, listener, Priority.Monitor, this);
+ }
}
diff --git a/src/de/sockenklaus/XmlStats/XmlStatsServerListener.java b/src/de/sockenklaus/XmlStats/XmlStatsServerListener.java
new file mode 100644
index 0000000..b552ff0
--- /dev/null
+++ b/src/de/sockenklaus/XmlStats/XmlStatsServerListener.java
@@ -0,0 +1,62 @@
+/**
+ *
+ */
+package de.sockenklaus.XmlStats;
+
+import org.bukkit.event.server.PluginDisableEvent;
+import org.bukkit.event.server.PluginEnableEvent;
+import org.bukkit.event.server.ServerListener;
+import org.bukkit.plugin.Plugin;
+
+import com.iConomy.iConomy;
+import com.nidefawl.Stats.Stats;
+
+/**
+ * @author socrates
+ *
+ */
+public class XmlStatsServerListener extends ServerListener {
+ private XmlStats plugin;
+
+ public XmlStatsServerListener(XmlStats plugin){
+ this.plugin = plugin;
+ }
+
+ public void onPluginDisable(PluginDisableEvent event){
+ /*
+ * TODO
+ * Not implemented yet!
+ */
+
+ /*Plugin iConomy = (Plugin)XmlStatsRegistry.get("iconomy");
+ Plugin Stats = (Plugin)XmlStatsRegistry.get("stats");
+ Plugin Achievements = (Plugin)XmlStatsRegistry.get("achievements");
+
+ if (!XmlStats.checkAchievements()){
+
+ }
+ if(!XmlStats.checkiConomy()){
+
+ }
+ if(!XmlStats.checkStats()){
+
+ }*/
+
+ }
+
+ public void onPluginEnable(PluginEnableEvent event){
+ if(this.identifyPlugin(event, "stats")){
+ this.plugin.hookStats();
+ }
+ if(this.identifyPlugin(event, "achievements")){
+ this.plugin.hookAchievements();
+ }
+ if(this.identifyPlugin(event, "iconomy")){
+ this.plugin.hookiConomy();
+ }
+ }
+
+ private boolean identifyPlugin(PluginEnableEvent event, String name){
+ return event.getPlugin().getDescription().getName().equalsIgnoreCase(name);
+ }
+}