Basicly implemented Achievements support.

This commit is contained in:
Pascal Koenig
2011-09-03 03:51:33 +02:00
parent 4381237315
commit 5f8f96dcb6
6 changed files with 135 additions and 11 deletions

View File

@@ -11,7 +11,10 @@
<property name="author" value="sockenklaus" /> <property name="author" value="sockenklaus" />
<path id="classpath"> <path id="classpath">
<pathelement location="lib/" /> <pathelement location="lib/Achievements.jar" />
<pathelement location="lib/Stats.jar" />
<pathelement location="lib/iConomy.jar" />
<pathelement location="bukkit-0.0.1-SNAPSHOT.jar" />
</path> </path>
<buildnumber file=".build.number" /> <buildnumber file=".build.number" />

View File

@@ -3,10 +3,37 @@
*/ */
package de.sockenklaus.XmlStats.Datasource; package de.sockenklaus.XmlStats.Datasource;
import java.io.File;
import java.util.HashMap;
import com.nidefawl.Achievements.AchPropertiesFile;
import com.nidefawl.Achievements.AchievementListData;
import com.nidefawl.Achievements.Achievements;
import com.nidefawl.Achievements.AchievementsLoader;
import de.sockenklaus.XmlStats.XmlStats;
import de.sockenklaus.XmlStats.XmlStatsRegistry;
/** /**
* @author socrates * @author socrates
* *
*/ */
public class AchievementsDS extends Datasource { public class AchievementsDS extends Datasource {
public HashMap<String, AchievementListData> getAchievementsList(){
Achievements ach = (Achievements)XmlStatsRegistry.get("achievements");
if(XmlStats.checkAchievements()){
return ach.achievementList;
}
else return new HashMap<String, AchievementListData>();
//return AchievementsLoader.LoadAchievementsList(ach, ach.getDataFolder().getPath(), getListLocation(ach));
}
/*private String getListLocation(Achievements ach){
AchPropertiesFile props = new AchPropertiesFile(new File(ach.getDataFolder(), "achievements.properties"));
return props.getString("achievements-list", "achievements.txt", "");
}*/
} }

View File

@@ -51,7 +51,7 @@ public class MoneyDS extends Datasource {
private Double getBalance(String playerName){ private Double getBalance(String playerName){
Double result = 0.0; Double result = 0.0;
if (XmlStats.isiConomyHooked()){ if (XmlStats.checkiConomy()){
if(this.iConomy.hasAccount(playerName)){ if(this.iConomy.hasAccount(playerName)){
Account account = this.iConomy.getAccount(playerName); Account account = this.iConomy.getAccount(playerName);

View File

@@ -77,7 +77,7 @@ public class Webserver {
this.server.createContext("/users.xml", new XmlWorkerUsers()); this.server.createContext("/users.xml", new XmlWorkerUsers());
if(XmlStats.isStatsHooked()){ if(XmlStats.checkStats()){
server.createContext("/userstats.xml", new XmlWorkerUserstats()); server.createContext("/userstats.xml", new XmlWorkerUserstats());
XmlStats.LogInfo("Stats seems to be loaded correctly. Enabling /userstats.xml"); XmlStats.LogInfo("Stats seems to be loaded correctly. Enabling /userstats.xml");
} }
@@ -85,7 +85,7 @@ public class Webserver {
XmlStats.LogWarn("Stats not loaded correctly. Disabling /userstats.xml"); XmlStats.LogWarn("Stats not loaded correctly. Disabling /userstats.xml");
} }
if (XmlStats.isiConomyHooked()){ if (XmlStats.checkiConomy()){
server.createContext("/money.xml", new XmlWorkerMoney()); server.createContext("/money.xml", new XmlWorkerMoney());
XmlStats.LogInfo("iConomy seems to be loaded correctly. Enabling /money.xml."); XmlStats.LogInfo("iConomy seems to be loaded correctly. Enabling /money.xml.");
} }
@@ -93,7 +93,7 @@ public class Webserver {
XmlStats.LogWarn("iConomy not loaded correctly. Disabling /money.xml"); XmlStats.LogWarn("iConomy not loaded correctly. Disabling /money.xml");
} }
if(XmlStats.isAchievementsHooked()){ if(XmlStats.checkAchievements()){
server.createContext("/achievements.xml", new XmlWorkerAchievements()); server.createContext("/achievements.xml", new XmlWorkerAchievements());
} }
else { else {

View File

@@ -181,7 +181,7 @@ public class XmlStats extends JavaPlugin {
* *
* @return true, if is stats hooked * @return true, if is stats hooked
*/ */
public static boolean isStatsHooked(){ public static boolean checkStats(){
Stats StatsTemp = (Stats)XmlStatsRegistry.get("stats"); Stats StatsTemp = (Stats)XmlStatsRegistry.get("stats");
if (StatsTemp != null){ if (StatsTemp != null){
@@ -195,7 +195,7 @@ public class XmlStats extends JavaPlugin {
* *
* @return true, if is i conomy hooked * @return true, if is i conomy hooked
*/ */
public static boolean isiConomyHooked(){ public static boolean checkiConomy(){
iConomy iConomyTemp = (iConomy)XmlStatsRegistry.get("iconomy"); iConomy iConomyTemp = (iConomy)XmlStatsRegistry.get("iconomy");
if (iConomyTemp != null){ if (iConomyTemp != null){
@@ -209,8 +209,8 @@ public class XmlStats extends JavaPlugin {
* *
* @return true, if is Achievements hooked * @return true, if is Achievements hooked
*/ */
public static boolean isAchievementsHooked(){ public static boolean checkAchievements(){
Achievements AchievementsTemp = (Achievements)XmlStatsRegistry.get("achievments"); Achievements AchievementsTemp = (Achievements)XmlStatsRegistry.get("achievements");
if (AchievementsTemp != null){ if (AchievementsTemp != null){
if(AchievementsTemp.getClass().getName().equals("com.nidefawl.Achievements.Achievements") && AchievementsTemp.isEnabled()) return true; if(AchievementsTemp.getClass().getName().equals("com.nidefawl.Achievements.Achievements") && AchievementsTemp.isEnabled()) return true;

View File

@@ -3,8 +3,26 @@
*/ */
package de.sockenklaus.XmlStats.XmlWorkers; package de.sockenklaus.XmlStats.XmlWorkers;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.logging.Level;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import com.nidefawl.Achievements.AchievementListData;
import com.nidefawl.Stats.Stats;
import de.sockenklaus.XmlStats.Datasource.AchievementsDS;
/** /**
* @author socrates * @author socrates
@@ -12,13 +30,89 @@ import java.util.Map;
*/ */
public class XmlWorkerAchievements extends XmlWorker { public class XmlWorkerAchievements extends XmlWorker {
AchievementsDS achDS;
public XmlWorkerAchievements(){
this.achDS = new AchievementsDS();
}
/* (non-Javadoc) /* (non-Javadoc)
* @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getXML(java.util.Map) * @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getXML(java.util.Map)
*/ */
@Override @Override
String getXML(Map<String, List<String>> parameters) { String getXML(Map<String, List<String>> parameters) {
// TODO Auto-generated method stub try {
return null; DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.newDocument();
DOMSource source = new DOMSource(doc);
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
HashMap<String, AchievementListData> achList = achDS.getAchievementsList();
Element root = doc.createElement("achievements");
doc.appendChild(root);
/*
* Hier wird das XML aufgebaut
*/
for(String achName : achList.keySet()){
root.appendChild(getAchievement(doc, achList.get(achName)));
}
/*
* Hier endet der XML-Aufbau
*/
transformer.transform(source, result);
return writer.toString();
}
catch (Exception e){
Stats.log.log(Level.SEVERE, "Something went terribly wrong!");
Stats.log.log(Level.SEVERE, e.getMessage());
}
return "";
}
private Element getAchievement(Document doc, AchievementListData data){
Element elem_ach = doc.createElement("achievement");
elem_ach.setAttribute("enabled", String.valueOf(data.isEnabled()));
Element elem_name = doc.createElement("name");
elem_name.setTextContent(data.getName());
elem_ach.appendChild(elem_name);
Element elem_description = doc.createElement("description");
elem_description.setTextContent(data.getDescription());
elem_ach.appendChild(elem_description);
Element elem_category = doc.createElement("category");
elem_category.setTextContent(data.getCategory());
elem_ach.appendChild(elem_category);
Element elem_stat = doc.createElement("stat");
elem_stat.setTextContent(data.getKey());
elem_ach.appendChild(elem_stat);
Element elem_value = doc.createElement("value");
elem_value.setTextContent(String.valueOf(data.getValue()));
elem_ach.appendChild(elem_value);
Element elem_maxawards = doc.createElement("maxawards");
elem_maxawards.setTextContent(String.valueOf(data.getMaxawards()));
elem_ach.appendChild(elem_maxawards);
Element elem_commands = doc.createElement("commands");
elem_commands.setTextContent(data.commands.toString());
elem_ach.appendChild(elem_commands);
return elem_ach;
} }
} }