Money API

This commit is contained in:
kaenganxt
2014-10-27 15:51:08 +01:00
parent ba421aa4bc
commit 36645c4071
4 changed files with 75 additions and 50 deletions

View File

@@ -272,6 +272,9 @@ public class AnuraCore extends JavaPlugin implements PluginMessageListener {
{ {
return; return;
} }
for (Player P : getServer().getOnlinePlayers()) {
Money.saveMoney(P);
}
File configFile = new File("plugins/Core/","config.yml"); File configFile = new File("plugins/Core/","config.yml");
File dbFile = new File("plugins/Core","database.yml"); File dbFile = new File("plugins/Core","database.yml");
try try
@@ -981,7 +984,6 @@ public class AnuraCore extends JavaPlugin implements PluginMessageListener {
} }
else if(cmd.getName().equalsIgnoreCase("money")) else if(cmd.getName().equalsIgnoreCase("money"))
{ {
try {
if(args.length == 0) if(args.length == 0)
{ {
if(P == null) if(P == null)
@@ -989,17 +991,8 @@ public class AnuraCore extends JavaPlugin implements PluginMessageListener {
tools.sendStatusMsg(sender,"only_player_cmd",false); tools.sendStatusMsg(sender,"only_player_cmd",false);
return true; return true;
} }
ResultSet rs = sql.querySelect("SELECT * FROM coreStats WHERE player = (SELECT id FROM players WHERE uuid = '"+P.getUniqueId().toString()+"')"); Integer money = Money.getMoney(P);
rs.last();
if(rs.getRow() == 1)
{
Integer money = rs.getInt("money");
tools.sendStatusMsg(P,API.getl("you_have", P)+" "+money+" "+ API.getl("coins", P),true); tools.sendStatusMsg(P,API.getl("you_have", P)+" "+money+" "+ API.getl("coins", P),true);
}
else
{
API.statusMsg(P,"unknown_error",true);
}
return true; return true;
} }
else if((args[0].equalsIgnoreCase("pay")) && (args.length == 3)) else if((args[0].equalsIgnoreCase("pay")) && (args.length == 3))
@@ -1035,27 +1028,18 @@ public class AnuraCore extends JavaPlugin implements PluginMessageListener {
API.statusMsg(P,"number_must_positive",false); API.statusMsg(P,"number_must_positive",false);
return true; return true;
} }
ResultSet rs = sql.querySelect("SELECT * FROM coreStats WHERE player = (SELECT id FROM players WHERE uuid LIKE '"+P.getUniqueId().toString()+"')"); int currentMoney = Money.getMoney(P);
rs.last(); if(currentMoney < money)
if(rs.getRow() == 1)
{
if(rs.getInt("money") < money)
{ {
API.statusMsg(P,"not_enough_money",false); API.statusMsg(P,"not_enough_money",false);
canPay = false; canPay = false;
} }
else else
{ {
geld = rs.getInt("money"); geld = currentMoney;
canPay = true; canPay = true;
} }
} }
else
{
API.statusMsg(P,"unknown_error",false);
return true;
}
}
if(canPay) if(canPay)
{ {
OfflinePlayer oP = this.getServer().getOfflinePlayer(args[1]); OfflinePlayer oP = this.getServer().getOfflinePlayer(args[1]);
@@ -1064,15 +1048,14 @@ public class AnuraCore extends JavaPlugin implements PluginMessageListener {
API.statusMsg(P, "never_seen_player", false); API.statusMsg(P, "never_seen_player", false);
return true; return true;
} }
ResultSet rs = sql.querySelect("SELECT * FROM coreStats WHERE player = (SELECT id FROM players WHERE uuid LIKE '"+oP.getUniqueId().toString()+"')"); int currentMoney2 = Money.getMoney(oP);
rs.last(); if(currentMoney2 != -1)
if(rs.getRow() == 1)
{ {
sql.queryUpdate("UPDATE coreStats SET money = '"+(rs.getInt("money")+money)+"' WHERE player = (SELECT id FROM players WHERE uuid = '"+oP.getUniqueId().toString()+"')"); Money.payMoney(oP, money);
if(P == null){} if(P == null){}
else if(!P.hasPermission("core.money.endless")) else if(!P.hasPermission("core.money.endless"))
{ {
sql.queryUpdate("UPDATE coreStats SET money = '"+(geld-rs.getInt("money"))+"' WHERE player = (SELECT id FROM players WHERE uuid = '"+P.getUniqueId().toString()+"')"); Money.payMoney(P, -money);
} }
tools.sendStatusMsg(sender,API.getl("money_payed_1", sender)+" "+args[1]+" "+API.getl("money_payed_2", sender)+" "+args[2]+" "+API.getl("money_payed_3", sender),true); tools.sendStatusMsg(sender,API.getl("money_payed_1", sender)+" "+args[1]+" "+API.getl("money_payed_2", sender)+" "+args[2]+" "+API.getl("money_payed_3", sender),true);
if(oP.isOnline()) if(oP.isOnline())
@@ -1093,11 +1076,6 @@ public class AnuraCore extends JavaPlugin implements PluginMessageListener {
} }
} }
} catch(SQLException e)
{
API.statusMsg(sender,"unknown_error",true);
System.out.println("SQL-Exception!");
}
} }
return false; return false;
} }

View File

@@ -139,7 +139,7 @@ public class FlowerPots {
ResultSet rs = AnuraCore.getSql().querySelect("SELECT url, name, money FROM corePots WHERE id = '"+pot+"'"); ResultSet rs = AnuraCore.getSql().querySelect("SELECT url, name, money FROM corePots WHERE id = '"+pot+"'");
try { try {
rs.first(); rs.first();
AnuraCore.getSql().queryUpdate("UPDATE players SET money = money + '"+rs.getInt("money")+"' WHERE uuid = '"+P.getUniqueId().toString()+"'"); Money.payMoney(P, rs.getInt("money"));
P.sendMessage(ChatColor.RED + "---------- "+ChatColor.YELLOW + "Achievement"+ChatColor.RED+ " ----------"); P.sendMessage(ChatColor.RED + "---------- "+ChatColor.YELLOW + "Achievement"+ChatColor.RED+ " ----------");
P.sendMessage(ChatColor.BLUE + rs.getString("name")); P.sendMessage(ChatColor.BLUE + rs.getString("name"));
P.sendMessage("" + ChatColor.GOLD + ChatColor.UNDERLINE + rs.getString("url")); P.sendMessage("" + ChatColor.GOLD + ChatColor.UNDERLINE + rs.getString("url"));

View File

@@ -0,0 +1,46 @@
package de.anura.core;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import org.bukkit.OfflinePlayer;
public class Money {
private static final HashMap<OfflinePlayer, Integer> playerMoney = new HashMap<>();
public static void payMoney(OfflinePlayer P, int count) {
if (!playerMoney.containsKey(P)) {
if (!loadMoney(P)) {
return;
}
}
playerMoney.put(P, playerMoney.get(P) + count);
}
public static void saveMoney(OfflinePlayer P) {
if (!playerMoney.containsKey(P)) return;
API.getMySql().queryUpdate("UPDATE coreStats SET money = '" + playerMoney.get(P) + "' WHERE player = (SELECT id FROM players WHERE uuid = '"+P.getUniqueId().toString()+"')");
playerMoney.remove(P);
}
public static boolean loadMoney(OfflinePlayer P) {
ResultSet rs = API.getMySql().querySelect("SELECT money FROM coreStats WHERE player = (SELECT id FROM players WHERE uuid = '"+P.getUniqueId().toString()+"')");
try {
rs.first();
playerMoney.put(P, rs.getInt("money"));
return true;
} catch (SQLException ex) {
System.err.println("Could not load money for player "+P.getName());
}
return false;
}
public static int getMoney(OfflinePlayer P) {
if (!playerMoney.containsKey(P)) {
if (!loadMoney(P)) {
return -1;
}
}
return playerMoney.get(P);
}
}

View File

@@ -17,5 +17,6 @@ public class PlayerQuit implements Listener
event.setQuitMessage(null); event.setQuitMessage(null);
AnuraCore.getInstance().endSitting(event.getPlayer()); AnuraCore.getInstance().endSitting(event.getPlayer());
AnuraCore.getInstance().disableCommandsAdventure.remove(event.getPlayer()); AnuraCore.getInstance().disableCommandsAdventure.remove(event.getPlayer());
Money.saveMoney(event.getPlayer());
} }
} }