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" />
<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>
<buildnumber file=".build.number" />

View File

@@ -3,10 +3,37 @@
*/
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
*
*/
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){
Double result = 0.0;
if (XmlStats.isiConomyHooked()){
if (XmlStats.checkiConomy()){
if(this.iConomy.hasAccount(playerName)){
Account account = this.iConomy.getAccount(playerName);

View File

@@ -77,7 +77,7 @@ public class Webserver {
this.server.createContext("/users.xml", new XmlWorkerUsers());
if(XmlStats.isStatsHooked()){
if(XmlStats.checkStats()){
server.createContext("/userstats.xml", new XmlWorkerUserstats());
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");
}
if (XmlStats.isiConomyHooked()){
if (XmlStats.checkiConomy()){
server.createContext("/money.xml", new XmlWorkerMoney());
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");
}
if(XmlStats.isAchievementsHooked()){
if(XmlStats.checkAchievements()){
server.createContext("/achievements.xml", new XmlWorkerAchievements());
}
else {

View File

@@ -181,7 +181,7 @@ public class XmlStats extends JavaPlugin {
*
* @return true, if is stats hooked
*/
public static boolean isStatsHooked(){
public static boolean checkStats(){
Stats StatsTemp = (Stats)XmlStatsRegistry.get("stats");
if (StatsTemp != null){
@@ -195,7 +195,7 @@ public class XmlStats extends JavaPlugin {
*
* @return true, if is i conomy hooked
*/
public static boolean isiConomyHooked(){
public static boolean checkiConomy(){
iConomy iConomyTemp = (iConomy)XmlStatsRegistry.get("iconomy");
if (iConomyTemp != null){
@@ -209,8 +209,8 @@ public class XmlStats extends JavaPlugin {
*
* @return true, if is Achievements hooked
*/
public static boolean isAchievementsHooked(){
Achievements AchievementsTemp = (Achievements)XmlStatsRegistry.get("achievments");
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;

View File

@@ -3,8 +3,26 @@
*/
package de.sockenklaus.XmlStats.XmlWorkers;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.List;
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
@@ -12,13 +30,89 @@ import java.util.Map;
*/
public class XmlWorkerAchievements extends XmlWorker {
AchievementsDS achDS;
public XmlWorkerAchievements(){
this.achDS = new AchievementsDS();
}
/* (non-Javadoc)
* @see de.sockenklaus.XmlStats.XmlWorkers.XmlWorker#getXML(java.util.Map)
*/
@Override
String getXML(Map<String, List<String>> parameters) {
// TODO Auto-generated method stub
return null;
try {
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;
}
}