Added in mysql hooks for coins/gems/ranks for database conversion preperation.
Added in failover database calls in CoreClient/DonationManager
This commit is contained in:
parent
bf11635616
commit
19afebe53d
@ -1,5 +1,7 @@
|
|||||||
package mineplex.core.account;
|
package mineplex.core.account;
|
||||||
|
|
||||||
|
import java.sql.Timestamp;
|
||||||
|
import java.util.Date;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -13,7 +15,6 @@ import mineplex.core.account.event.ClientUnloadEvent;
|
|||||||
import mineplex.core.account.event.ClientWebResponseEvent;
|
import mineplex.core.account.event.ClientWebResponseEvent;
|
||||||
import mineplex.core.account.event.RetrieveClientInformationEvent;
|
import mineplex.core.account.event.RetrieveClientInformationEvent;
|
||||||
import mineplex.core.account.repository.AccountRepository;
|
import mineplex.core.account.repository.AccountRepository;
|
||||||
import mineplex.core.account.repository.MysqlAccountRepository;
|
|
||||||
import mineplex.core.account.repository.token.ClientToken;
|
import mineplex.core.account.repository.token.ClientToken;
|
||||||
import mineplex.core.common.Rank;
|
import mineplex.core.common.Rank;
|
||||||
import mineplex.core.common.util.Callback;
|
import mineplex.core.common.util.Callback;
|
||||||
@ -42,7 +43,6 @@ public class CoreClientManager extends MiniPlugin
|
|||||||
{
|
{
|
||||||
private JavaPlugin _plugin;
|
private JavaPlugin _plugin;
|
||||||
private AccountRepository _repository;
|
private AccountRepository _repository;
|
||||||
private MysqlAccountRepository _mysqlRepository;
|
|
||||||
private NautHashMap<String, CoreClient> _clientList;
|
private NautHashMap<String, CoreClient> _clientList;
|
||||||
private HashSet<String> _duplicateLoginGlitchPreventionList;
|
private HashSet<String> _duplicateLoginGlitchPreventionList;
|
||||||
|
|
||||||
@ -53,8 +53,7 @@ public class CoreClientManager extends MiniPlugin
|
|||||||
super("Client Manager", plugin);
|
super("Client Manager", plugin);
|
||||||
|
|
||||||
_plugin = plugin;
|
_plugin = plugin;
|
||||||
_repository = new AccountRepository(webServer);
|
_repository = new AccountRepository(plugin, webServer);
|
||||||
_mysqlRepository = new MysqlAccountRepository(plugin);
|
|
||||||
_clientList = new NautHashMap<String, CoreClient>();
|
_clientList = new NautHashMap<String, CoreClient>();
|
||||||
_duplicateLoginGlitchPreventionList = new HashSet<String>();
|
_duplicateLoginGlitchPreventionList = new HashSet<String>();
|
||||||
}
|
}
|
||||||
@ -175,7 +174,7 @@ public class CoreClientManager extends MiniPlugin
|
|||||||
{
|
{
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
_mysqlRepository.login(uuid.toString(), client.GetPlayerName());
|
_repository.login(uuid.toString(), client.GetPlayerName());
|
||||||
|
|
||||||
Bukkit.getServer().getPluginManager().callEvent(clientInformationEvent);
|
Bukkit.getServer().getPluginManager().callEvent(clientInformationEvent);
|
||||||
clientInformationEvent.decreaseProcessingCount();
|
clientInformationEvent.decreaseProcessingCount();
|
||||||
@ -225,7 +224,7 @@ public class CoreClientManager extends MiniPlugin
|
|||||||
{
|
{
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
_mysqlRepository.login(uuid.toString(), client.GetPlayerName());
|
_repository.login(uuid.toString(), client.GetPlayerName());
|
||||||
|
|
||||||
Bukkit.getServer().getPluginManager().callEvent(clientInformationEvent);
|
Bukkit.getServer().getPluginManager().callEvent(clientInformationEvent);
|
||||||
}
|
}
|
||||||
@ -237,6 +236,8 @@ public class CoreClientManager extends MiniPlugin
|
|||||||
client.SetAccountId(token.AccountId);
|
client.SetAccountId(token.AccountId);
|
||||||
client.SetRank(Rank.valueOf(token.Rank));
|
client.SetRank(Rank.valueOf(token.Rank));
|
||||||
|
|
||||||
|
_repository.updateMysqlRank(token.Name, token.Rank, token.RankPerm, new Timestamp(Date.parse(token.RankExpire)).toString());
|
||||||
|
|
||||||
// JSON sql response
|
// JSON sql response
|
||||||
Bukkit.getServer().getPluginManager().callEvent(new ClientWebResponseEvent(response));
|
Bukkit.getServer().getPluginManager().callEvent(new ClientWebResponseEvent(response));
|
||||||
|
|
||||||
@ -322,7 +323,7 @@ public class CoreClientManager extends MiniPlugin
|
|||||||
|
|
||||||
public void SaveRank(final String name, Rank rank, boolean perm)
|
public void SaveRank(final String name, Rank rank, boolean perm)
|
||||||
{
|
{
|
||||||
_repository.SaveRank(new Callback<Rank>()
|
_repository.saveRank(new Callback<Rank>()
|
||||||
{
|
{
|
||||||
public void run(Rank newRank)
|
public void run(Rank newRank)
|
||||||
{
|
{
|
||||||
|
@ -86,7 +86,7 @@ public class UpdateRank extends CommandBase<CoreClientManager>
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Plugin.getRepository().SaveRank(new Callback<Rank>()
|
Plugin.getRepository().saveRank(new Callback<Rank>()
|
||||||
{
|
{
|
||||||
public void run(Rank rank)
|
public void run(Rank rank)
|
||||||
{
|
{
|
||||||
|
@ -1,26 +1,58 @@
|
|||||||
package mineplex.core.account.repository;
|
package mineplex.core.account.repository;
|
||||||
|
|
||||||
|
import java.sql.Timestamp;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import org.bukkit.craftbukkit.libs.com.google.gson.reflect.TypeToken;
|
import org.bukkit.craftbukkit.libs.com.google.gson.reflect.TypeToken;
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
import mineplex.core.account.repository.token.LoginToken;
|
import mineplex.core.account.repository.token.LoginToken;
|
||||||
import mineplex.core.account.repository.token.RankUpdateToken;
|
import mineplex.core.account.repository.token.RankUpdateToken;
|
||||||
import mineplex.core.common.Rank;
|
import mineplex.core.common.Rank;
|
||||||
import mineplex.core.common.util.Callback;
|
import mineplex.core.common.util.Callback;
|
||||||
import mineplex.core.server.remotecall.AsyncJsonWebCall;
|
import mineplex.core.common.util.UUIDFetcher;
|
||||||
|
import mineplex.core.database.DatabaseRunnable;
|
||||||
|
import mineplex.core.database.RepositoryBase;
|
||||||
|
import mineplex.core.database.column.ColumnBoolean;
|
||||||
|
import mineplex.core.database.column.ColumnTimestamp;
|
||||||
|
import mineplex.core.database.column.ColumnVarChar;
|
||||||
import mineplex.core.server.remotecall.JsonWebCall;
|
import mineplex.core.server.remotecall.JsonWebCall;
|
||||||
|
|
||||||
public class AccountRepository
|
public class AccountRepository extends RepositoryBase
|
||||||
{
|
{
|
||||||
|
private static String CREATE_ACCOUNT_TABLE = "CREATE TABLE IF NOT EXISTS accounts (id INT NOT NULL AUTO_INCREMENT, uuid VARCHAR(100), name VARCHAR(40), gems INT, rank VARCHAR(40), rankPerm BOOL, rankExpire LONG, lastLogin LONG, totalPlayTime LONG, PRIMARY KEY (id), UNIQUE INDEX uuidIndex (uuid), UNIQUE INDEX nameIndex (name), INDEX rankIndex (rank));";
|
||||||
|
private static String ACCOUNT_LOGIN_NEW = "INSERT INTO accounts (uuid, name, lastLogin) values(?, ?, now()) ON DUPLICATE KEY UPDATE name=VALUES(name), lastLogin=VALUES(lastLogin);";
|
||||||
|
private static String ACCOUNT_LOGIN_UPDATE = "UPDATE accounts SET uuid=?, name=?, lastLogin=now() WHERE uuid = ?;";
|
||||||
|
private static String UPDATE_ACCOUNT_RANK = "UPDATE accounts SET rank=?, rankPerm=false, rankExpire=now() + INTERVAL 1 MONTH WHERE uuid = ?;";
|
||||||
|
private static String UPDATE_ACCOUNT_RANK_DONOR = "UPDATE accounts SET rank=?, donorRank=?, rankPerm=false, rankExpire=now() + INTERVAL 1 MONTH WHERE uuid = ?;";
|
||||||
|
private static String UPDATE_ACCOUNT_RANK_PERM = "UPDATE accounts SET rank=?, rankPerm=true WHERE uuid = ?;";
|
||||||
|
private static String UPDATE_ACCOUNT_RANK_DONOR_PERM = "UPDATE accounts SET rank=?, donorRank=?, rankPerm=true WHERE uuid = ?;";
|
||||||
|
private static String UPDATE_ACCOUNT_NULL_RANK = "UPDATE accounts SET rank=?, donorRank=?, rankPerm=?, rankExpire=? WHERE uuid = ? AND rank IS NULL;";
|
||||||
|
|
||||||
private String _webAddress;
|
private String _webAddress;
|
||||||
|
|
||||||
public AccountRepository(String webAddress)
|
public AccountRepository(JavaPlugin plugin, String webAddress)
|
||||||
{
|
{
|
||||||
|
super(plugin, "jdbc:mysql://db.mineplex.com:3306/Account?autoReconnect=true&failOverReadOnly=false&maxReconnects=10", "root", "tAbechAk3wR7tuTh");
|
||||||
|
|
||||||
_webAddress = webAddress;
|
_webAddress = webAddress;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void initialize()
|
||||||
|
{
|
||||||
|
executeUpdate(CREATE_ACCOUNT_TABLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void login(String uuid, String name)
|
||||||
|
{
|
||||||
|
int affectedRows = executeUpdate(ACCOUNT_LOGIN_UPDATE, new ColumnVarChar("uuid", 100, uuid), new ColumnVarChar("name", 40, name), new ColumnVarChar("uuid", 100, uuid));
|
||||||
|
|
||||||
|
if (affectedRows == 0)
|
||||||
|
executeUpdate(ACCOUNT_LOGIN_NEW, new ColumnVarChar("uuid", 100, uuid), new ColumnVarChar("name", 40, name));
|
||||||
|
}
|
||||||
|
|
||||||
public String GetClient(String name, UUID uuid, String ipAddress)
|
public String GetClient(String name, UUID uuid, String ipAddress)
|
||||||
{
|
{
|
||||||
LoginToken token = new LoginToken();
|
LoginToken token = new LoginToken();
|
||||||
@ -36,14 +68,44 @@ public class AccountRepository
|
|||||||
return new JsonWebCall(_webAddress + "PlayerAccount/GetAccountByUUID").ExecuteReturnStream(uuid.toString());
|
return new JsonWebCall(_webAddress + "PlayerAccount/GetAccountByUUID").ExecuteReturnStream(uuid.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SaveRank(Callback<Rank> callback, String name, Rank rank, boolean perm)
|
public void saveRank(final Callback<Rank> callback, final String name, Rank rank, final boolean perm)
|
||||||
{
|
{
|
||||||
RankUpdateToken token = new RankUpdateToken();
|
final RankUpdateToken token = new RankUpdateToken();
|
||||||
token.Name = name;
|
token.Name = name;
|
||||||
token.Rank = rank.toString();
|
token.Rank = rank.toString();
|
||||||
token.Perm = perm;
|
token.Perm = perm;
|
||||||
|
|
||||||
new AsyncJsonWebCall(_webAddress + "PlayerAccount/RankUpdate").Execute(Rank.class, callback, token);
|
final Callback<Rank> extraCallback = new Callback<Rank>()
|
||||||
|
{
|
||||||
|
public void run(Rank response)
|
||||||
|
{
|
||||||
|
if (response == Rank.ULTRA || response == Rank.HERO)
|
||||||
|
{
|
||||||
|
if (perm)
|
||||||
|
executeUpdate(UPDATE_ACCOUNT_RANK_DONOR_PERM, new ColumnVarChar("rank", 100, response.toString()), new ColumnVarChar("donorRank", 100, response.toString()), new ColumnVarChar("uuid", 100, UUIDFetcher.getUUIDOf(name).toString()));
|
||||||
|
else
|
||||||
|
executeUpdate(UPDATE_ACCOUNT_RANK_DONOR, new ColumnVarChar("rank", 100, response.toString()), new ColumnVarChar("donorRank", 100, response.toString()), new ColumnVarChar("uuid", 100, UUIDFetcher.getUUIDOf(name).toString()));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (perm)
|
||||||
|
executeUpdate(UPDATE_ACCOUNT_RANK_PERM, new ColumnVarChar("rank", 100, response.toString()), new ColumnVarChar("uuid", 100, UUIDFetcher.getUUIDOf(name).toString()));
|
||||||
|
else
|
||||||
|
executeUpdate(UPDATE_ACCOUNT_RANK, new ColumnVarChar("rank", 100, response.toString()), new ColumnVarChar("uuid", 100, UUIDFetcher.getUUIDOf(name).toString()));
|
||||||
|
}
|
||||||
|
|
||||||
|
callback.run(response);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
handleDatabaseCall(new DatabaseRunnable(new Runnable()
|
||||||
|
{
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
new JsonWebCall(_webAddress + "PlayerAccount/RankUpdate").Execute(Rank.class, extraCallback, token);
|
||||||
|
}
|
||||||
|
}), "Error saving player " + token.Name + "'s rank in AccountRepository : ");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void MatchPlayerName(final Callback<List<String>> callback, final String userName)
|
public void MatchPlayerName(final Callback<List<String>> callback, final String userName)
|
||||||
@ -59,4 +121,20 @@ public class AccountRepository
|
|||||||
|
|
||||||
asyncThread.start();
|
asyncThread.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void update()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateMysqlRank(final String uuid, final String rank, final boolean perm, final String rankExpire)
|
||||||
|
{
|
||||||
|
handleDatabaseCall(new DatabaseRunnable(new Runnable()
|
||||||
|
{
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
executeUpdate(UPDATE_ACCOUNT_NULL_RANK, new ColumnVarChar("rank", 100, rank), new ColumnVarChar("donorRank", 100, rank), new ColumnBoolean("rankPerm", perm), new ColumnTimestamp("rankExpire", Timestamp.valueOf(rankExpire)), new ColumnVarChar("uuid", 100, uuid));
|
||||||
|
}
|
||||||
|
}), "Error updating player's mysql rank AccountRepository : ");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,35 +0,0 @@
|
|||||||
package mineplex.core.account.repository;
|
|
||||||
|
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
|
||||||
|
|
||||||
import mineplex.core.database.RepositoryBase;
|
|
||||||
import mineplex.core.database.column.ColumnVarChar;
|
|
||||||
|
|
||||||
public class MysqlAccountRepository extends RepositoryBase
|
|
||||||
{
|
|
||||||
private static String CREATE_ACCOUNT_TABLE = "CREATE TABLE IF NOT EXISTS accounts (id INT NOT NULL AUTO_INCREMENT, uuid VARCHAR(100), name VARCHAR(40), gems INT, rank VARCHAR(40), rankPerm BOOL, rankExpire LONG, lastLogin LONG, totalPlayTime LONG, PRIMARY KEY (id), UNIQUE INDEX uuidIndex (uuid), UNIQUE INDEX nameIndex (name), INDEX rankIndex (rank));";
|
|
||||||
private static String ACCOUNT_LOGIN_NEW = "INSERT INTO accounts (uuid, name, lastLogin) values(?, ?, now()) ON DUPLICATE KEY UPDATE name=VALUES(name), lastLogin=VALUES(lastLogin);";
|
|
||||||
private static String ACCOUNT_LOGIN_UPDATE = "UPDATE accounts SET uuid=?, name=?, lastLogin=now() WHERE uuid = ?;";
|
|
||||||
|
|
||||||
public MysqlAccountRepository(JavaPlugin plugin)
|
|
||||||
{
|
|
||||||
super(plugin, "jdbc:mysql://db.mineplex.com:3306/Account?autoReconnect=true&failOverReadOnly=false&maxReconnects=10", "root", "tAbechAk3wR7tuTh");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void initialize()
|
|
||||||
{
|
|
||||||
executeUpdate(CREATE_ACCOUNT_TABLE);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void update() { }
|
|
||||||
|
|
||||||
public void login(String uuid, String name)
|
|
||||||
{
|
|
||||||
int affectedRows = executeUpdate(ACCOUNT_LOGIN_UPDATE, new ColumnVarChar("uuid", 100, uuid), new ColumnVarChar("name", 40, name), new ColumnVarChar("uuid", 100, uuid));
|
|
||||||
|
|
||||||
if (affectedRows == 0)
|
|
||||||
executeUpdate(ACCOUNT_LOGIN_NEW, new ColumnVarChar("uuid", 100, uuid), new ColumnVarChar("name", 40, name));
|
|
||||||
}
|
|
||||||
}
|
|
@ -5,6 +5,8 @@ public class ClientToken
|
|||||||
public int AccountId;
|
public int AccountId;
|
||||||
public String Name;
|
public String Name;
|
||||||
public String Rank;
|
public String Rank;
|
||||||
|
public boolean RankPerm;
|
||||||
|
public String RankExpire;
|
||||||
public int EconomyBalance;
|
public int EconomyBalance;
|
||||||
|
|
||||||
public AccountToken AccountToken;
|
public AccountToken AccountToken;
|
||||||
|
@ -0,0 +1,27 @@
|
|||||||
|
package mineplex.core.database;
|
||||||
|
|
||||||
|
public class DatabaseRunnable
|
||||||
|
{
|
||||||
|
private Runnable _runnable;
|
||||||
|
private int _failedAttempts = 0;
|
||||||
|
|
||||||
|
public DatabaseRunnable(Runnable runnable)
|
||||||
|
{
|
||||||
|
_runnable = runnable;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
_runnable.run();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void incrementFailCount()
|
||||||
|
{
|
||||||
|
_failedAttempts++;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getFailedCounts()
|
||||||
|
{
|
||||||
|
return _failedAttempts;
|
||||||
|
}
|
||||||
|
}
|
@ -5,24 +5,39 @@ import java.sql.DriverManager;
|
|||||||
import java.sql.PreparedStatement;
|
import java.sql.PreparedStatement;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
import mineplex.core.common.util.NautHashMap;
|
||||||
import mineplex.core.database.column.Column;
|
import mineplex.core.database.column.Column;
|
||||||
|
import mineplex.core.logger.Logger;
|
||||||
|
import mineplex.core.updater.UpdateType;
|
||||||
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
public abstract class RepositoryBase
|
public abstract class RepositoryBase implements Listener
|
||||||
{
|
{
|
||||||
protected static Object _connectionLock = new Object();
|
protected static Object _connectionLock = new Object();
|
||||||
|
|
||||||
private Connection _connection = null;
|
private Connection _connection = null;
|
||||||
|
|
||||||
|
private static Object _queueLock = new Object();
|
||||||
|
|
||||||
|
private NautHashMap<DatabaseRunnable, String> _failedQueue = new NautHashMap<DatabaseRunnable, String>();
|
||||||
|
|
||||||
private String _connectionString;
|
private String _connectionString;
|
||||||
private String _userName;
|
private String _userName;
|
||||||
private String _password;
|
private String _password;
|
||||||
|
|
||||||
|
protected JavaPlugin Plugin;
|
||||||
|
|
||||||
public RepositoryBase(JavaPlugin plugin, String connectionString, String username, String password)
|
public RepositoryBase(JavaPlugin plugin, String connectionString, String username, String password)
|
||||||
{
|
{
|
||||||
|
Plugin = plugin;
|
||||||
|
|
||||||
_connectionString = connectionString;
|
_connectionString = connectionString;
|
||||||
_userName = username;
|
_userName = username;
|
||||||
_password = password;
|
_password = password;
|
||||||
@ -38,6 +53,8 @@ public abstract class RepositoryBase
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
plugin.getServer().getPluginManager().registerEvents(this, plugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract void initialize();
|
protected abstract void initialize();
|
||||||
@ -189,4 +206,81 @@ public abstract class RepositoryBase
|
|||||||
|
|
||||||
return affectedRows;
|
return affectedRows;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void handleDatabaseCall(final DatabaseRunnable databaseRunnable, final String errorMessage)
|
||||||
|
{
|
||||||
|
Thread asyncThread = new Thread(new Runnable()
|
||||||
|
{
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
databaseRunnable.run();
|
||||||
|
}
|
||||||
|
catch (Exception exception)
|
||||||
|
{
|
||||||
|
Logger.Instance.log(errorMessage + exception.getMessage());
|
||||||
|
|
||||||
|
databaseRunnable.incrementFailCount();
|
||||||
|
|
||||||
|
synchronized (_queueLock)
|
||||||
|
{
|
||||||
|
_failedQueue.put(databaseRunnable, errorMessage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
asyncThread.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void processDatabaseQueue(UpdateEvent event)
|
||||||
|
{
|
||||||
|
if (event.getType() != UpdateType.MIN_01)
|
||||||
|
return;
|
||||||
|
|
||||||
|
processFailedQueue();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void processFailedQueue()
|
||||||
|
{
|
||||||
|
synchronized (_queueLock)
|
||||||
|
{
|
||||||
|
for (Iterator<DatabaseRunnable> runnablesIterator = _failedQueue.keySet().iterator(); runnablesIterator.hasNext();)
|
||||||
|
{
|
||||||
|
final DatabaseRunnable databaseRunnable = runnablesIterator.next();
|
||||||
|
|
||||||
|
Thread asyncThread = new Thread(new Runnable()
|
||||||
|
{
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
databaseRunnable.run();
|
||||||
|
}
|
||||||
|
catch (Exception exception)
|
||||||
|
{
|
||||||
|
Logger.Instance.log(_failedQueue.get(databaseRunnable) + exception.getMessage());
|
||||||
|
|
||||||
|
if (databaseRunnable.getFailedCounts() < 4)
|
||||||
|
{
|
||||||
|
synchronized (_queueLock)
|
||||||
|
{
|
||||||
|
_failedQueue.put(databaseRunnable, _failedQueue.get(databaseRunnable));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Logger.Instance.log("Abandoning database call : " + _failedQueue.get(databaseRunnable));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
runnablesIterator.remove();
|
||||||
|
asyncThread.start();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,42 @@
|
|||||||
|
package mineplex.core.database.column;
|
||||||
|
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
|
||||||
|
public class ColumnBoolean extends Column<Boolean>
|
||||||
|
{
|
||||||
|
public ColumnBoolean(String name)
|
||||||
|
{
|
||||||
|
super(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ColumnBoolean(String name, boolean value)
|
||||||
|
{
|
||||||
|
super(name, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getCreateString()
|
||||||
|
{
|
||||||
|
return Name + " BOOLEAN";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Boolean getValue(ResultSet resultSet) throws SQLException
|
||||||
|
{
|
||||||
|
return resultSet.getBoolean(Name);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setValue(PreparedStatement preparedStatement, int columnNumber) throws SQLException
|
||||||
|
{
|
||||||
|
preparedStatement.setBoolean(columnNumber, Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ColumnBoolean clone()
|
||||||
|
{
|
||||||
|
return new ColumnBoolean(Name, Value);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,43 @@
|
|||||||
|
package mineplex.core.database.column;
|
||||||
|
|
||||||
|
import java.sql.PreparedStatement;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.sql.Timestamp;
|
||||||
|
|
||||||
|
public class ColumnTimestamp extends Column<Timestamp>
|
||||||
|
{
|
||||||
|
public ColumnTimestamp(String name)
|
||||||
|
{
|
||||||
|
super(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ColumnTimestamp(String name, Timestamp value)
|
||||||
|
{
|
||||||
|
super(name, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getCreateString()
|
||||||
|
{
|
||||||
|
return Name + " TIMESTAMP";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Timestamp getValue(ResultSet resultSet) throws SQLException
|
||||||
|
{
|
||||||
|
return resultSet.getTimestamp(Name);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setValue(PreparedStatement preparedStatement, int columnNumber) throws SQLException
|
||||||
|
{
|
||||||
|
preparedStatement.setTimestamp(columnNumber, Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ColumnTimestamp clone()
|
||||||
|
{
|
||||||
|
return new ColumnTimestamp(Name, Value);
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,7 @@
|
|||||||
package mineplex.core.donation;
|
package mineplex.core.donation;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
import mineplex.core.MiniPlugin;
|
import mineplex.core.MiniPlugin;
|
||||||
import mineplex.core.account.event.ClientUnloadEvent;
|
import mineplex.core.account.event.ClientUnloadEvent;
|
||||||
import mineplex.core.account.event.ClientWebResponseEvent;
|
import mineplex.core.account.event.ClientWebResponseEvent;
|
||||||
@ -13,6 +15,7 @@ import mineplex.core.updater.UpdateType;
|
|||||||
import mineplex.core.updater.event.UpdateEvent;
|
import mineplex.core.updater.event.UpdateEvent;
|
||||||
|
|
||||||
import org.bukkit.craftbukkit.libs.com.google.gson.Gson;
|
import org.bukkit.craftbukkit.libs.com.google.gson.Gson;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
@ -24,13 +27,13 @@ public class DonationManager extends MiniPlugin
|
|||||||
|
|
||||||
private Object _donorLock = new Object();
|
private Object _donorLock = new Object();
|
||||||
|
|
||||||
private NautHashMap<String, NautHashMap<String, Integer>> _gemQueue = new NautHashMap<String, NautHashMap<String, Integer>>();
|
private NautHashMap<Player, NautHashMap<String, Integer>> _gemQueue = new NautHashMap<Player, NautHashMap<String, Integer>>();
|
||||||
|
|
||||||
public DonationManager(JavaPlugin plugin, String webAddress)
|
public DonationManager(JavaPlugin plugin, String webAddress)
|
||||||
{
|
{
|
||||||
super("Donation", plugin);
|
super("Donation", plugin);
|
||||||
|
|
||||||
_repository = new DonationRepository(webAddress);
|
_repository = new DonationRepository(plugin, webAddress);
|
||||||
|
|
||||||
_donors = new NautHashMap<String, Donor>();
|
_donors = new NautHashMap<String, Donor>();
|
||||||
}
|
}
|
||||||
@ -62,6 +65,7 @@ public class DonationManager extends MiniPlugin
|
|||||||
synchronized (_donorLock)
|
synchronized (_donorLock)
|
||||||
{
|
{
|
||||||
_donors.put(token.Name, new Donor(token.DonorToken));
|
_donors.put(token.Name, new Donor(token.DonorToken));
|
||||||
|
_repository.updateGemsAndCoins(token.Name, Get(token.Name).GetGems(), Get(token.Name).getCoins());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -73,7 +77,7 @@ public class DonationManager extends MiniPlugin
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PurchaseUnknownSalesPackage(final Callback<TransactionResponse> callback, final String name, final String packageName, final boolean coinPurchase, final int cost, boolean oneTimePurchase)
|
public void PurchaseUnknownSalesPackage(final Callback<TransactionResponse> callback, final String name, final UUID uuid, final String packageName, final boolean coinPurchase, final int cost, boolean oneTimePurchase)
|
||||||
{
|
{
|
||||||
Donor donor = Get(name);
|
Donor donor = Get(name);
|
||||||
|
|
||||||
@ -106,10 +110,10 @@ public class DonationManager extends MiniPlugin
|
|||||||
if (callback != null)
|
if (callback != null)
|
||||||
callback.run(response);
|
callback.run(response);
|
||||||
}
|
}
|
||||||
}, name, packageName, coinPurchase, cost);
|
}, name, uuid.toString(), packageName, coinPurchase, cost);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PurchaseKnownSalesPackage(final Callback<TransactionResponse> callback, final String name, final int salesPackageId)
|
public void PurchaseKnownSalesPackage(final Callback<TransactionResponse> callback, final String name, final UUID uuid, final int cost, final int salesPackageId)
|
||||||
{
|
{
|
||||||
_repository.PurchaseKnownSalesPackage(new Callback<TransactionResponse>()
|
_repository.PurchaseKnownSalesPackage(new Callback<TransactionResponse>()
|
||||||
{
|
{
|
||||||
@ -128,17 +132,17 @@ public class DonationManager extends MiniPlugin
|
|||||||
if (callback != null)
|
if (callback != null)
|
||||||
callback.run(response);
|
callback.run(response);
|
||||||
}
|
}
|
||||||
}, name, salesPackageId);
|
}, name, uuid.toString(), cost, salesPackageId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RewardGems(final Callback<Boolean> callback, final String caller, final String name, final int amount)
|
public void RewardGems(Callback<Boolean> callback, String caller, String name, UUID uuid, int amount)
|
||||||
{
|
{
|
||||||
RewardGems(callback, caller, name, amount, true);
|
RewardGems(callback, caller, name, uuid, amount, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RewardGems(final Callback<Boolean> callback, final String caller, final String name, final int amount, final boolean updateTotal)
|
public void RewardGems(final Callback<Boolean> callback, final String caller, final String name, final UUID uuid, final int amount, final boolean updateTotal)
|
||||||
{
|
{
|
||||||
_repository.PlayerUpdate(new Callback<Boolean>()
|
_repository.gemReward(new Callback<Boolean>()
|
||||||
{
|
{
|
||||||
public void run(Boolean success)
|
public void run(Boolean success)
|
||||||
{
|
{
|
||||||
@ -158,23 +162,23 @@ public class DonationManager extends MiniPlugin
|
|||||||
callback.run(true);
|
callback.run(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, caller, name, amount);
|
}, caller, name, uuid.toString(), amount);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RewardGemsLater(final String caller, final String name, final int amount)
|
public void RewardGemsLater(final String caller, final Player player, final int amount)
|
||||||
{
|
{
|
||||||
if (!_gemQueue.containsKey(name))
|
if (!_gemQueue.containsKey(player))
|
||||||
_gemQueue.put(name, new NautHashMap<String, Integer>());
|
_gemQueue.put(player, new NautHashMap<String, Integer>());
|
||||||
|
|
||||||
int totalAmount = amount;
|
int totalAmount = amount;
|
||||||
|
|
||||||
if (_gemQueue.get(name).containsKey(caller))
|
if (_gemQueue.get(player).containsKey(caller))
|
||||||
totalAmount += _gemQueue.get(name).get(caller);
|
totalAmount += _gemQueue.get(player).get(caller);
|
||||||
|
|
||||||
_gemQueue.get(name).put(caller, totalAmount);
|
_gemQueue.get(player).put(caller, totalAmount);
|
||||||
|
|
||||||
//Do Temp Change
|
//Do Temp Change
|
||||||
Donor donor = Get(name);
|
Donor donor = Get(player.getName());
|
||||||
|
|
||||||
if (donor != null)
|
if (donor != null)
|
||||||
donor.AddGems(amount);
|
donor.AddGems(amount);
|
||||||
@ -186,39 +190,39 @@ public class DonationManager extends MiniPlugin
|
|||||||
if (event.getType() != UpdateType.SLOWER)
|
if (event.getType() != UpdateType.SLOWER)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (String name : _gemQueue.keySet())
|
for (Player player : _gemQueue.keySet())
|
||||||
{
|
{
|
||||||
String caller = null;
|
String caller = null;
|
||||||
int total = 0;
|
int total = 0;
|
||||||
|
|
||||||
for (String curCaller : _gemQueue.get(name).keySet())
|
for (String curCaller : _gemQueue.get(player).keySet())
|
||||||
{
|
{
|
||||||
caller = curCaller;
|
caller = curCaller;
|
||||||
total += _gemQueue.get(name).get(curCaller);
|
total += _gemQueue.get(player).get(curCaller);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (caller == null)
|
if (caller == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
//Actually Add Gems
|
//Actually Add Gems
|
||||||
RewardGems(null, caller, name, total, false);
|
RewardGems(null, caller, player.getName(), player.getUniqueId(), total, false);
|
||||||
|
|
||||||
System.out.println("Queue Added [" + name + "] with Gems [" + total + "] for [" + caller + "]");
|
System.out.println("Queue Added [" + player + "] with Gems [" + total + "] for [" + caller + "]");
|
||||||
|
|
||||||
//Clean
|
//Clean
|
||||||
_gemQueue.get(name).clear();
|
_gemQueue.get(player).clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
//Clean
|
//Clean
|
||||||
_gemQueue.clear();
|
_gemQueue.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RewardCoins(final Callback<Boolean> callback, final String caller, final String name, final int amount)
|
public void RewardCoins(Callback<Boolean> callback, String caller, String name, UUID uuid, int amount)
|
||||||
{
|
{
|
||||||
RewardCoins(callback, caller, name, amount, true);
|
RewardCoins(callback, caller, name, uuid, amount, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RewardCoins(final Callback<Boolean> callback, final String caller, final String name, final int amount, final boolean updateTotal)
|
public void RewardCoins(final Callback<Boolean> callback, final String caller, final String name, final UUID uuid, final int amount, final boolean updateTotal)
|
||||||
{
|
{
|
||||||
_repository.rewardCoins(new Callback<Boolean>()
|
_repository.rewardCoins(new Callback<Boolean>()
|
||||||
{
|
{
|
||||||
@ -240,6 +244,6 @@ public class DonationManager extends MiniPlugin
|
|||||||
callback.run(true);
|
callback.run(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, caller, name, amount);
|
}, caller, name, uuid.toString(), amount);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ public class GemCommand extends CommandBase<DonationManager>
|
|||||||
UtilPlayer.message(caller, F.main("Gem", "You gave " + F.elem(gems + " Gems") + " to " + F.name(target.getName()) + "."));
|
UtilPlayer.message(caller, F.main("Gem", "You gave " + F.elem(gems + " Gems") + " to " + F.name(target.getName()) + "."));
|
||||||
UtilPlayer.message(target, F.main("Gem", F.name(caller.getName()) + " gave you " + F.elem(gems + " Gems") + "."));
|
UtilPlayer.message(target, F.main("Gem", F.name(caller.getName()) + " gave you " + F.elem(gems + " Gems") + "."));
|
||||||
}
|
}
|
||||||
}, caller.getName(), target.getName(), gems);
|
}, caller.getName(), target.getName(), target.getUniqueId(), gems);
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
|
@ -1,58 +1,185 @@
|
|||||||
package mineplex.core.donation.repository;
|
package mineplex.core.donation.repository;
|
||||||
|
|
||||||
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
import mineplex.core.common.util.Callback;
|
import mineplex.core.common.util.Callback;
|
||||||
|
import mineplex.core.common.util.UUIDFetcher;
|
||||||
|
import mineplex.core.database.DatabaseRunnable;
|
||||||
|
import mineplex.core.database.RepositoryBase;
|
||||||
|
import mineplex.core.database.column.ColumnInt;
|
||||||
|
import mineplex.core.database.column.ColumnVarChar;
|
||||||
import mineplex.core.donation.repository.token.GemRewardToken;
|
import mineplex.core.donation.repository.token.GemRewardToken;
|
||||||
import mineplex.core.donation.repository.token.PurchaseToken;
|
import mineplex.core.donation.repository.token.PurchaseToken;
|
||||||
import mineplex.core.donation.repository.token.UnknownPurchaseToken;
|
import mineplex.core.donation.repository.token.UnknownPurchaseToken;
|
||||||
import mineplex.core.server.remotecall.AsyncJsonWebCall;
|
import mineplex.core.server.remotecall.JsonWebCall;
|
||||||
import mineplex.core.server.util.TransactionResponse;
|
import mineplex.core.server.util.TransactionResponse;
|
||||||
|
|
||||||
public class DonationRepository
|
public class DonationRepository extends RepositoryBase
|
||||||
{
|
{
|
||||||
|
private static String CREATE_COIN_TRANSACTION_TABLE = "CREATE TABLE IF NOT EXISTS accountCoinTransactions (id INT NOT NULL AUTO_INCREMENT, accounts_uuid VARCHAR(100), reason VARCHAR(100), coins INT, PRIMARY KEY (id), FOREIGN KEY (accounts_uuid) REFERENCES accounts(uuid), INDEX coinUuidIndex (accounts_uuid));";
|
||||||
|
private static String CREATE_GEM_TRANSACTION_TABLE = "CREATE TABLE IF NOT EXISTS accountGemTransactions (id INT NOT NULL AUTO_INCREMENT, accounts_uuid VARCHAR(100), reason VARCHAR(100), gems INT, PRIMARY KEY (id), FOREIGN KEY (accounts_uuid) REFERENCES accounts(uuid), INDEX gemUuidIndex (accounts_uuid));";
|
||||||
|
private static String INSERT_COIN_TRANSACTION = "INSERT INTO accountCoinTransactions(accounts_uuid, reason, coins) VALUES(?, ?, ?);";
|
||||||
|
private static String INSERT_GEM_TRANSACTION = "INSERT INTO accountGemTransactions(accounts_uuid, reason, gems) VALUES(?, ?, ?);";
|
||||||
|
private static String UPDATE_ACCOUNT_COINS = "UPDATE accounts SET coins = coins + ? WHERE uuid = ?;";
|
||||||
|
private static String UPDATE_ACCOUNT_GEMS = "UPDATE accounts SET gems = gems + ? WHERE uuid = ?;";
|
||||||
|
private static String UPDATE_NULL_ACCOUNT_GEMS_AND_COINS_ = "UPDATE accounts SET gems = ?, coins = ? WHERE uuid = ? AND gems IS NULL AND coins IS NULL;";
|
||||||
|
|
||||||
private String _webAddress;
|
private String _webAddress;
|
||||||
|
|
||||||
public DonationRepository(String webAddress)
|
public DonationRepository(JavaPlugin plugin, String webAddress)
|
||||||
{
|
{
|
||||||
|
super(plugin, "jdbc:mysql://db.mineplex.com:3306/Account?autoReconnect=true&failOverReadOnly=false&maxReconnects=10", "root", "tAbechAk3wR7tuTh");
|
||||||
|
|
||||||
_webAddress = webAddress;
|
_webAddress = webAddress;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PurchaseKnownSalesPackage(Callback<TransactionResponse> callback, String name, int salesPackageId)
|
public void PurchaseKnownSalesPackage(final Callback<TransactionResponse> callback, String name, final String uuid, final int cost, final int salesPackageId)
|
||||||
{
|
{
|
||||||
PurchaseToken token = new PurchaseToken();
|
final PurchaseToken token = new PurchaseToken();
|
||||||
token.AccountName = name;
|
token.AccountName = name;
|
||||||
token.UsingCredits = false;
|
token.UsingCredits = false;
|
||||||
token.SalesPackageId = salesPackageId;
|
token.SalesPackageId = salesPackageId;
|
||||||
|
|
||||||
new AsyncJsonWebCall(_webAddress + "PlayerAccount/PurchaseKnownSalesPackage").Execute(TransactionResponse.class, callback, token);
|
final Callback<TransactionResponse> extraCallback = new Callback<TransactionResponse>()
|
||||||
|
{
|
||||||
|
public void run(TransactionResponse response)
|
||||||
|
{
|
||||||
|
if (response == TransactionResponse.Success)
|
||||||
|
executeUpdate(UPDATE_ACCOUNT_GEMS, new ColumnInt("gems", cost), new ColumnVarChar("uuid", 100, uuid));
|
||||||
|
|
||||||
|
callback.run(response);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
handleDatabaseCall(new DatabaseRunnable(new Runnable()
|
||||||
|
{
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
new JsonWebCall(_webAddress + "PlayerAccount/PurchaseKnownSalesPackage").Execute(TransactionResponse.class, extraCallback, token);
|
||||||
|
}
|
||||||
|
}), "Error purchasing known sales package in DonationRepository : ");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PurchaseUnknownSalesPackage(Callback<TransactionResponse> callback, String name, String packageName, boolean coinPurchase, int cost)
|
public void PurchaseUnknownSalesPackage(final Callback<TransactionResponse> callback, final String name, final String uuid, final String packageName, final boolean coinPurchase, final int cost)
|
||||||
{
|
{
|
||||||
UnknownPurchaseToken token = new UnknownPurchaseToken();
|
final UnknownPurchaseToken token = new UnknownPurchaseToken();
|
||||||
token.AccountName = name;
|
token.AccountName = name;
|
||||||
token.SalesPackageName = packageName;
|
token.SalesPackageName = packageName;
|
||||||
token.CoinPurchase = coinPurchase;
|
token.CoinPurchase = coinPurchase;
|
||||||
token.Cost = cost;
|
token.Cost = cost;
|
||||||
token.Premium = false;
|
token.Premium = false;
|
||||||
|
|
||||||
new AsyncJsonWebCall(_webAddress + "PlayerAccount/PurchaseUnknownSalesPackage").Execute(TransactionResponse.class, callback, token);
|
final Callback<TransactionResponse> extraCallback = new Callback<TransactionResponse>()
|
||||||
|
{
|
||||||
|
public void run(TransactionResponse response)
|
||||||
|
{
|
||||||
|
if (response == TransactionResponse.Success)
|
||||||
|
{
|
||||||
|
if (coinPurchase)
|
||||||
|
{
|
||||||
|
executeUpdate(UPDATE_ACCOUNT_COINS, new ColumnInt("coins", -cost), new ColumnVarChar("uuid", 100, uuid));
|
||||||
|
executeUpdate(INSERT_COIN_TRANSACTION, new ColumnVarChar("uuid", 100, uuid), new ColumnVarChar("reason", 100, "Purchased " + packageName), new ColumnInt("coins", -cost));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
executeUpdate(UPDATE_ACCOUNT_GEMS, new ColumnInt("gems", -cost), new ColumnVarChar("uuid", 100, uuid));
|
||||||
|
executeUpdate(INSERT_GEM_TRANSACTION, new ColumnVarChar("uuid", 100, uuid), new ColumnVarChar("reason", 100, "Purchased " + packageName), new ColumnInt("gems", -cost));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
callback.run(response);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
handleDatabaseCall(new DatabaseRunnable(new Runnable()
|
||||||
|
{
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
new JsonWebCall(_webAddress + "PlayerAccount/PurchaseUnknownSalesPackage").Execute(TransactionResponse.class, extraCallback, token);
|
||||||
|
}
|
||||||
|
}), "Error purchasing unknown sales package in DonationRepository : ");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void PlayerUpdate(Callback<Boolean> callback, String giver, String name, int greenGems)
|
public void gemReward(final Callback<Boolean> callback, final String giver, String name, final String uuid, final int greenGems)
|
||||||
{
|
{
|
||||||
GemRewardToken token = new GemRewardToken();
|
final GemRewardToken token = new GemRewardToken();
|
||||||
token.Source = giver;
|
token.Source = giver;
|
||||||
token.Name = name;
|
token.Name = name;
|
||||||
token.Amount = greenGems;
|
token.Amount = greenGems;
|
||||||
new AsyncJsonWebCall(_webAddress + "PlayerAccount/GemReward").Execute(Boolean.class, callback, token);
|
|
||||||
|
final Callback<Boolean> extraCallback = new Callback<Boolean>()
|
||||||
|
{
|
||||||
|
public void run(Boolean response)
|
||||||
|
{
|
||||||
|
if (response)
|
||||||
|
{
|
||||||
|
executeUpdate(UPDATE_ACCOUNT_GEMS, new ColumnInt("gems", greenGems), new ColumnVarChar("uuid", 100, uuid));
|
||||||
|
executeUpdate(INSERT_GEM_TRANSACTION, new ColumnVarChar("uuid", 100, uuid), new ColumnVarChar("reason", 100, "Given by " + giver), new ColumnInt("gems", greenGems));
|
||||||
|
}
|
||||||
|
|
||||||
|
callback.run(response);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
handleDatabaseCall(new DatabaseRunnable(new Runnable()
|
||||||
|
{
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
new JsonWebCall(_webAddress + "PlayerAccount/GemReward").Execute(Boolean.class, extraCallback, token);
|
||||||
|
}
|
||||||
|
}), "Error updating player gem amount in DonationRepository : ");
|
||||||
}
|
}
|
||||||
|
|
||||||
public void rewardCoins(Callback<Boolean> callback, String giver, String name, int coins)
|
public void rewardCoins(final Callback<Boolean> callback, final String giver, String name, final String uuid, final int coins)
|
||||||
{
|
{
|
||||||
GemRewardToken token = new GemRewardToken();
|
final GemRewardToken token = new GemRewardToken();
|
||||||
token.Source = giver;
|
token.Source = giver;
|
||||||
token.Name = name;
|
token.Name = name;
|
||||||
token.Amount = coins;
|
token.Amount = coins;
|
||||||
new AsyncJsonWebCall(_webAddress + "PlayerAccount/CoinReward").Execute(Boolean.class, callback, token);
|
|
||||||
|
final Callback<Boolean> extraCallback = new Callback<Boolean>()
|
||||||
|
{
|
||||||
|
public void run(Boolean response)
|
||||||
|
{
|
||||||
|
if (response)
|
||||||
|
{
|
||||||
|
executeUpdate(UPDATE_ACCOUNT_COINS, new ColumnInt("coins", coins), new ColumnVarChar("uuid", 100, uuid));
|
||||||
|
executeUpdate(INSERT_COIN_TRANSACTION, new ColumnVarChar("uuid", 100, uuid), new ColumnVarChar("reason", 100, "Rewarded by " + giver), new ColumnInt("coins", coins));
|
||||||
|
}
|
||||||
|
|
||||||
|
callback.run(response);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
handleDatabaseCall(new DatabaseRunnable(new Runnable()
|
||||||
|
{
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
new JsonWebCall(_webAddress + "PlayerAccount/CoinReward").Execute(Boolean.class, extraCallback, token);
|
||||||
|
}
|
||||||
|
}), "Error updating player coin amount in DonationRepository : ");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void initialize()
|
||||||
|
{
|
||||||
|
executeUpdate(CREATE_COIN_TRANSACTION_TABLE);
|
||||||
|
executeUpdate(CREATE_GEM_TRANSACTION_TABLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void update()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateGemsAndCoins(final String name, final int gems, final int coins)
|
||||||
|
{
|
||||||
|
handleDatabaseCall(new DatabaseRunnable(new Runnable()
|
||||||
|
{
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
executeUpdate(UPDATE_NULL_ACCOUNT_GEMS_AND_COINS_, new ColumnInt("gems", gems), new ColumnInt("coins", coins), new ColumnVarChar("uuid", 100, UUIDFetcher.getUUIDOf(name).toString()));
|
||||||
|
}
|
||||||
|
}), "Error updating player's null gems and coins DonationRepository : ");
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -108,7 +108,7 @@ public class ItemCoinBomb extends ItemGadget
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
event.getItem().remove();
|
event.getItem().remove();
|
||||||
|
|
||||||
Manager.getDonationManager().RewardCoins(null, this.GetName() + " Pickup", event.getPlayer().getName(), 4);
|
Manager.getDonationManager().RewardCoins(null, this.GetName() + " Pickup", event.getPlayer().getName(), event.getPlayer().getUniqueId(), 4);
|
||||||
|
|
||||||
event.getPlayer().getWorld().playSound(event.getPlayer().getLocation(), Sound.ORB_PICKUP, 1f, 2f);
|
event.getPlayer().getWorld().playSound(event.getPlayer().getLocation(), Sound.ORB_PICKUP, 1f, 2f);
|
||||||
|
|
||||||
|
@ -108,7 +108,7 @@ public class ItemGemBomb extends ItemGadget
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
event.getItem().remove();
|
event.getItem().remove();
|
||||||
|
|
||||||
Manager.getDonationManager().RewardGems(null, this.GetName() + " Pickup", event.getPlayer().getName(), 4);
|
Manager.getDonationManager().RewardGems(null, this.GetName() + " Pickup", event.getPlayer().getName(), event.getPlayer().getUniqueId(), 4);
|
||||||
|
|
||||||
event.getPlayer().getWorld().playSound(event.getPlayer().getLocation(), Sound.ORB_PICKUP, 1f, 2f);
|
event.getPlayer().getWorld().playSound(event.getPlayer().getLocation(), Sound.ORB_PICKUP, 1f, 2f);
|
||||||
|
|
||||||
|
@ -52,6 +52,8 @@ public class Logger
|
|||||||
|
|
||||||
public void log(final String message)
|
public void log(final String message)
|
||||||
{
|
{
|
||||||
|
System.out.println(message);
|
||||||
|
|
||||||
Bukkit.getServer().getScheduler().runTaskAsynchronously(_plugin, new Runnable()
|
Bukkit.getServer().getScheduler().runTaskAsynchronously(_plugin, new Runnable()
|
||||||
{
|
{
|
||||||
public void run()
|
public void run()
|
||||||
|
@ -53,7 +53,7 @@ public class CoinReward extends Reward
|
|||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
}, "Treasure Chest", player.getName(), gemsToReward);
|
}, "Treasure Chest", player.getName(), player.getUniqueId(), gemsToReward);
|
||||||
|
|
||||||
return new RewardData(getRarity().getColor() + gemsToReward + " Coins", new ItemStack(175));
|
return new RewardData(getRarity().getColor() + gemsToReward + " Coins", new ItemStack(175));
|
||||||
}
|
}
|
||||||
|
@ -31,7 +31,7 @@ public class UnknownPackageReward extends Reward
|
|||||||
@Override
|
@Override
|
||||||
protected RewardData giveRewardCustom(Player player)
|
protected RewardData giveRewardCustom(Player player)
|
||||||
{
|
{
|
||||||
_donationManager.PurchaseUnknownSalesPackage(null, player.getName(), _packageName, true, 0, true);
|
_donationManager.PurchaseUnknownSalesPackage(null, player.getName(), player.getUniqueId(), _packageName, true, 0, true);
|
||||||
|
|
||||||
return new RewardData(getRarity().getColor() + _name, _itemStack);
|
return new RewardData(getRarity().getColor() + _name, _itemStack);
|
||||||
}
|
}
|
||||||
|
@ -146,7 +146,7 @@ public class ConfirmationPage<PluginType extends MiniPlugin, ShopType extends Sh
|
|||||||
{
|
{
|
||||||
ShowResultsPage(response);
|
ShowResultsPage(response);
|
||||||
}
|
}
|
||||||
}, Player.getName(), _salesItem.GetSalesPackageId());
|
}, Player.getName(), Player.getUniqueId(), _salesItem.GetCost(SelectedCurrency), _salesItem.GetSalesPackageId());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -156,7 +156,7 @@ public class ConfirmationPage<PluginType extends MiniPlugin, ShopType extends Sh
|
|||||||
{
|
{
|
||||||
ShowResultsPage(response);
|
ShowResultsPage(response);
|
||||||
}
|
}
|
||||||
}, Player.getName(), _salesItem.GetName(), SelectedCurrency == CurrencyType.Coins, _salesItem.GetCost(SelectedCurrency), _salesItem.OneTimePurchase());
|
}, Player.getName(), Player.getUniqueId(), _salesItem.GetName(), SelectedCurrency == CurrencyType.Coins, _salesItem.GetCost(SelectedCurrency), _salesItem.OneTimePurchase());
|
||||||
}
|
}
|
||||||
|
|
||||||
_taskId = Plugin.GetScheduler().scheduleSyncRepeatingTask(Plugin.GetPlugin(), this, 2L, 2L);
|
_taskId = Plugin.GetScheduler().scheduleSyncRepeatingTask(Plugin.GetPlugin(), this, 2L, 2L);
|
||||||
|
@ -14,6 +14,7 @@ import org.bukkit.plugin.java.JavaPlugin;
|
|||||||
|
|
||||||
import mineplex.core.MiniPlugin;
|
import mineplex.core.MiniPlugin;
|
||||||
import mineplex.core.account.CoreClientManager;
|
import mineplex.core.account.CoreClientManager;
|
||||||
|
import mineplex.core.common.util.UUIDFetcher;
|
||||||
import mineplex.core.donation.DonationManager;
|
import mineplex.core.donation.DonationManager;
|
||||||
import mineplex.core.inventory.InventoryManager;
|
import mineplex.core.inventory.InventoryManager;
|
||||||
import mineplex.core.punish.Category;
|
import mineplex.core.punish.Category;
|
||||||
@ -72,7 +73,8 @@ public class Enjin extends MiniPlugin implements CommandExecutor
|
|||||||
String name = args[1];
|
String name = args[1];
|
||||||
int amount = Integer.parseInt(args[2]);
|
int amount = Integer.parseInt(args[2]);
|
||||||
|
|
||||||
_donationManager.RewardGems(null, "purchase", name, amount);
|
;
|
||||||
|
_donationManager.RewardGems(null, "purchase", name, UUIDFetcher.getUUIDOf(name), amount);
|
||||||
System.out.println("[" + _dateFormat.format(new Date()) + "] " + name + " received " + amount + " gems.");
|
System.out.println("[" + _dateFormat.format(new Date()) + "] " + name + " received " + amount + " gems.");
|
||||||
}
|
}
|
||||||
else if (args.length == 3 && args[0].equalsIgnoreCase("coin"))
|
else if (args.length == 3 && args[0].equalsIgnoreCase("coin"))
|
||||||
@ -80,7 +82,7 @@ public class Enjin extends MiniPlugin implements CommandExecutor
|
|||||||
String name = args[1];
|
String name = args[1];
|
||||||
int amount = Integer.parseInt(args[2]);
|
int amount = Integer.parseInt(args[2]);
|
||||||
|
|
||||||
_donationManager.RewardCoins(null, "purchase", name, amount);
|
_donationManager.RewardCoins(null, "purchase", name, UUIDFetcher.getUUIDOf(name), amount);
|
||||||
System.out.println("[" + _dateFormat.format(new Date()) + "] " + name + " received " + amount + " coins.");
|
System.out.println("[" + _dateFormat.format(new Date()) + "] " + name + " received " + amount + " coins.");
|
||||||
}
|
}
|
||||||
else if (args.length == 3 && args[0].equalsIgnoreCase("booster"))
|
else if (args.length == 3 && args[0].equalsIgnoreCase("booster"))
|
||||||
@ -88,7 +90,7 @@ public class Enjin extends MiniPlugin implements CommandExecutor
|
|||||||
String name = args[1];
|
String name = args[1];
|
||||||
int amount = Integer.parseInt(args[2]);
|
int amount = Integer.parseInt(args[2]);
|
||||||
|
|
||||||
_donationManager.PurchaseUnknownSalesPackage(null, name, "Gem Booster " + amount, false, 0, false);
|
_donationManager.PurchaseUnknownSalesPackage(null, name, UUIDFetcher.getUUIDOf(name), "Gem Booster " + amount, false, 0, false);
|
||||||
_repository.addGemBooster(name, amount);
|
_repository.addGemBooster(name, amount);
|
||||||
System.out.println("[" + _dateFormat.format(new Date()) + "] " + name + " received " + amount + " Gem Boosters" + ".");
|
System.out.println("[" + _dateFormat.format(new Date()) + "] " + name + " received " + amount + " Gem Boosters" + ".");
|
||||||
}
|
}
|
||||||
@ -112,7 +114,7 @@ public class Enjin extends MiniPlugin implements CommandExecutor
|
|||||||
packageName += " " + args[i];
|
packageName += " " + args[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
_donationManager.PurchaseUnknownSalesPackage(null, name, packageName, false, 0, false);
|
_donationManager.PurchaseUnknownSalesPackage(null, name, UUIDFetcher.getUUIDOf(name), packageName, false, 0, false);
|
||||||
System.out.println("[" + _dateFormat.format(new Date()) + "] " + name + " received " + packageName + ".");
|
System.out.println("[" + _dateFormat.format(new Date()) + "] " + name + " received " + packageName + ".");
|
||||||
}
|
}
|
||||||
else if (args.length >= 3 && args[0].equalsIgnoreCase("unban"))
|
else if (args.length >= 3 && args[0].equalsIgnoreCase("unban"))
|
||||||
|
@ -389,7 +389,7 @@ public class ParkourManager extends MiniPlugin
|
|||||||
//Sound
|
//Sound
|
||||||
player.playSound(player.getLocation(), Sound.LEVEL_UP, 2f, 1.5f);
|
player.playSound(player.getLocation(), Sound.LEVEL_UP, 2f, 1.5f);
|
||||||
}
|
}
|
||||||
}, "Parkour " + data.Name, player.getName(), data.Gems);
|
}, "Parkour " + data.Name, player.getName(), player.getUniqueId(), data.Gems);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -191,7 +191,7 @@ public class PollManager extends MiniClientPlugin<PlayerPollData>
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}, "Poll", name, poll.getCoinReward());
|
}, "Poll", name, uuid, poll.getCoinReward());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -263,12 +263,12 @@ public class ServerNpcPage extends ShopPageBase<ServerManager, ServerNpcShop> im
|
|||||||
|
|
||||||
private boolean isStarting(ServerInfo serverInfo)
|
private boolean isStarting(ServerInfo serverInfo)
|
||||||
{
|
{
|
||||||
return (serverInfo.MOTD.contains("Starting") || serverInfo.MOTD.contains("Recruiting") || serverInfo.MOTD.contains("Waiting") || serverInfo.MOTD.contains("Cup"));
|
return (serverInfo.MOTD.contains("Starting") || serverInfo.MOTD.contains("Recruiting") || serverInfo.MOTD.contains("Waiting") || serverInfo.MOTD.contains("Open"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isInProgress(ServerInfo serverInfo)
|
private boolean isInProgress(ServerInfo serverInfo)
|
||||||
{
|
{
|
||||||
return serverInfo.MOTD.contains("In") || serverInfo.MOTD.contains("Restarting");
|
return serverInfo.MOTD.contains("Progress") || serverInfo.MOTD.contains("Restarting");
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean hasEnoughSlots(ServerInfo serverInfo, int slotsNeeded)
|
private boolean hasEnoughSlots(ServerInfo serverInfo, int slotsNeeded)
|
||||||
|
@ -138,7 +138,7 @@ public class TutorialManager extends MiniPlugin
|
|||||||
//Sound
|
//Sound
|
||||||
player.playSound(player.getLocation(), Sound.LEVEL_UP, 2f, 1.5f);
|
player.playSound(player.getLocation(), Sound.LEVEL_UP, 2f, 1.5f);
|
||||||
}
|
}
|
||||||
}, "Tutorial " + tut.GetTutName(), player.getName(), tut.GetGems());
|
}, "Tutorial " + tut.GetTutName(), player.getName(), player.getUniqueId(), tut.GetGems());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package mineplex.staffServer.salespackage.command;
|
package mineplex.staffServer.salespackage.command;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import mineplex.core.command.CommandBase;
|
import mineplex.core.command.CommandBase;
|
||||||
@ -24,8 +26,10 @@ public class BoosterCommand extends CommandBase<SalesPackageManager>
|
|||||||
String playerName = args[0];
|
String playerName = args[0];
|
||||||
int amount = Integer.parseInt(args[1]);
|
int amount = Integer.parseInt(args[1]);
|
||||||
|
|
||||||
Plugin.getDonationManager().PurchaseUnknownSalesPackage(null, playerName, "Gem Booster " + amount, false, 0, false);
|
UUID uuid = UUIDFetcher.getUUIDOf(playerName);
|
||||||
Plugin.getInventoryManager().addItemToInventoryForOffline(UUIDFetcher.getUUIDOf(playerName).toString(), "Utility", "Gem Booster", amount);
|
|
||||||
|
Plugin.getDonationManager().PurchaseUnknownSalesPackage(null, playerName, uuid, "Gem Booster " + amount, false, 0, false);
|
||||||
|
Plugin.getInventoryManager().addItemToInventoryForOffline(uuid.toString(), "Utility", "Gem Booster", amount);
|
||||||
caller.sendMessage(F.main(Plugin.GetName(), "Added " + amount + " boosters to " + playerName + "'s account!"));
|
caller.sendMessage(F.main(Plugin.GetName(), "Added " + amount + " boosters to " + playerName + "'s account!"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,10 +1,13 @@
|
|||||||
package mineplex.staffServer.salespackage.command;
|
package mineplex.staffServer.salespackage.command;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import mineplex.core.command.CommandBase;
|
import mineplex.core.command.CommandBase;
|
||||||
import mineplex.core.common.Rank;
|
import mineplex.core.common.Rank;
|
||||||
import mineplex.core.common.util.F;
|
import mineplex.core.common.util.F;
|
||||||
|
import mineplex.core.common.util.UUIDFetcher;
|
||||||
import mineplex.staffServer.salespackage.SalesPackageManager;
|
import mineplex.staffServer.salespackage.SalesPackageManager;
|
||||||
|
|
||||||
public class CoinCommand extends CommandBase<SalesPackageManager>
|
public class CoinCommand extends CommandBase<SalesPackageManager>
|
||||||
@ -23,7 +26,9 @@ public class CoinCommand extends CommandBase<SalesPackageManager>
|
|||||||
String playerName = args[0];
|
String playerName = args[0];
|
||||||
int amount = Integer.parseInt(args[1]);
|
int amount = Integer.parseInt(args[1]);
|
||||||
|
|
||||||
Plugin.getDonationManager().RewardCoins(null, caller.getName(), playerName, amount);
|
UUID uuid = UUIDFetcher.getUUIDOf(playerName);
|
||||||
|
|
||||||
|
Plugin.getDonationManager().RewardCoins(null, caller.getName(), playerName, uuid, amount);
|
||||||
caller.sendMessage(F.main(Plugin.GetName(), "Added " + amount + " coins to " + playerName + "'s account!"));
|
caller.sendMessage(F.main(Plugin.GetName(), "Added " + amount + " coins to " + playerName + "'s account!"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package mineplex.staffServer.salespackage.command;
|
package mineplex.staffServer.salespackage.command;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import mineplex.core.command.CommandBase;
|
import mineplex.core.command.CommandBase;
|
||||||
@ -24,8 +26,10 @@ public class GemHunterCommand extends CommandBase<SalesPackageManager>
|
|||||||
String playerName = args[0];
|
String playerName = args[0];
|
||||||
int amount = Integer.parseInt(args[1]);
|
int amount = Integer.parseInt(args[1]);
|
||||||
|
|
||||||
Plugin.getDonationManager().PurchaseUnknownSalesPackage(null, playerName, "Gem Hunter Level " + amount, false, 0, false);
|
UUID uuid = UUIDFetcher.getUUIDOf(playerName);
|
||||||
Plugin.getStatsManager().incrementStat(UUIDFetcher.getUUIDOf(playerName).toString(), "Global.GemsEarned", 5000 + (amount * 5000));
|
|
||||||
|
Plugin.getDonationManager().PurchaseUnknownSalesPackage(null, playerName, uuid, "Gem Hunter Level " + amount, false, 0, false);
|
||||||
|
Plugin.getStatsManager().incrementStat(uuid.toString(), "Global.GemsEarned", 5000 + (amount * 5000));
|
||||||
caller.sendMessage(F.main(Plugin.GetName(), "Added Level " + amount + " Gem Hunter to " + playerName + "'s account!"));
|
caller.sendMessage(F.main(Plugin.GetName(), "Added Level " + amount + " Gem Hunter to " + playerName + "'s account!"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package mineplex.staffServer.salespackage.command;
|
package mineplex.staffServer.salespackage.command;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import mineplex.core.command.CommandBase;
|
import mineplex.core.command.CommandBase;
|
||||||
@ -24,8 +26,10 @@ public class TreasureChestCommand extends CommandBase<SalesPackageManager>
|
|||||||
String playerName = args[0];
|
String playerName = args[0];
|
||||||
int amount = Integer.parseInt(args[1]);
|
int amount = Integer.parseInt(args[1]);
|
||||||
|
|
||||||
Plugin.getDonationManager().PurchaseUnknownSalesPackage(null, playerName, "Treasure Chest " + amount, false, 0, false);
|
UUID uuid = UUIDFetcher.getUUIDOf(playerName);
|
||||||
Plugin.getInventoryManager().addItemToInventoryForOffline(UUIDFetcher.getUUIDOf(playerName).toString(), "Utility", "Treasure Chest", amount);
|
|
||||||
|
Plugin.getDonationManager().PurchaseUnknownSalesPackage(null, playerName, uuid, "Treasure Chest " + amount, false, 0, false);
|
||||||
|
Plugin.getInventoryManager().addItemToInventoryForOffline(uuid.toString(), "Utility", "Treasure Chest", amount);
|
||||||
caller.sendMessage(F.main(Plugin.GetName(), "Added " + amount + " treasure chests to " + playerName + "'s account!"));
|
caller.sendMessage(F.main(Plugin.GetName(), "Added " + amount + " treasure chests to " + playerName + "'s account!"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
package mineplex.staffServer.salespackage.command;
|
package mineplex.staffServer.salespackage.command;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
import mineplex.core.command.CommandBase;
|
import mineplex.core.command.CommandBase;
|
||||||
@ -24,8 +26,10 @@ public class TreasureKeyCommand extends CommandBase<SalesPackageManager>
|
|||||||
String playerName = args[0];
|
String playerName = args[0];
|
||||||
int amount = Integer.parseInt(args[1]);
|
int amount = Integer.parseInt(args[1]);
|
||||||
|
|
||||||
Plugin.getDonationManager().PurchaseUnknownSalesPackage(null, playerName, "Treasure Key " + amount, false, 0, false);
|
UUID uuid = UUIDFetcher.getUUIDOf(playerName);
|
||||||
Plugin.getInventoryManager().addItemToInventoryForOffline(UUIDFetcher.getUUIDOf(playerName).toString(), "Treasure", "Treasure Key", amount);
|
|
||||||
|
Plugin.getDonationManager().PurchaseUnknownSalesPackage(null, playerName, uuid, "Treasure Key " + amount, false, 0, false);
|
||||||
|
Plugin.getInventoryManager().addItemToInventoryForOffline(uuid.toString(), "Treasure", "Treasure Key", amount);
|
||||||
caller.sendMessage(F.main(Plugin.GetName(), "Added " + amount + " treasure Keys to " + playerName + "'s account!"));
|
caller.sendMessage(F.main(Plugin.GetName(), "Added " + amount + " treasure Keys to " + playerName + "'s account!"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -335,7 +335,7 @@ public class Christmas extends SoloGame
|
|||||||
{
|
{
|
||||||
for (Player player : GetPlayers(false))
|
for (Player player : GetPlayers(false))
|
||||||
{
|
{
|
||||||
Manager.GetDonation().PurchaseUnknownSalesPackage(null, player.getName(), "Snowmans Head", false, 0, true);
|
Manager.GetDonation().PurchaseUnknownSalesPackage(null, player.getName(), player.getUniqueId(), "Snowmans Head", false, 0, true);
|
||||||
Manager.GetGame().AddGems(player, 30, "Slaying the Pumpkin King", false);
|
Manager.GetGame().AddGems(player, 30, "Slaying the Pumpkin King", false);
|
||||||
Manager.GetGame().AddGems(player, 10, "Participation", false);
|
Manager.GetGame().AddGems(player, 10, "Participation", false);
|
||||||
}
|
}
|
||||||
|
@ -316,7 +316,7 @@ public class Halloween extends SoloGame
|
|||||||
{
|
{
|
||||||
for (Player player : GetPlayers(false))
|
for (Player player : GetPlayers(false))
|
||||||
{
|
{
|
||||||
Manager.GetDonation().PurchaseUnknownSalesPackage(null, player.getName(), "Pumpkin Kings Head", false, 0, true);
|
Manager.GetDonation().PurchaseUnknownSalesPackage(null, player.getName(), player.getUniqueId(), "Pumpkin Kings Head", false, 0, true);
|
||||||
Manager.GetGame().AddGems(player, 30, "Killing the Pumpkin King", false);
|
Manager.GetGame().AddGems(player, 30, "Killing the Pumpkin King", false);
|
||||||
Manager.GetGame().AddGems(player, 10, "Participation", false);
|
Manager.GetGame().AddGems(player, 10, "Participation", false);
|
||||||
}
|
}
|
||||||
|
@ -113,7 +113,7 @@ public class GameAchievementManager implements Listener
|
|||||||
{
|
{
|
||||||
Manager.GetTaskManager().completedTask(player, type.getName());
|
Manager.GetTaskManager().completedTask(player, type.getName());
|
||||||
}
|
}
|
||||||
}, type.getName(), player.getName(), type.getGemReward());
|
}, type.getName(), player.getName(), player.getUniqueId(), type.getGemReward());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -174,7 +174,7 @@ public class GameGemManager implements Listener
|
|||||||
if (DoubleGem)
|
if (DoubleGem)
|
||||||
total += earned;
|
total += earned;
|
||||||
|
|
||||||
Manager.GetDonation().RewardGems(null, "Earned " + game.GetName(), player.getName(), total);
|
Manager.GetDonation().RewardGems(null, "Earned " + game.GetName(), player.getName(), player.getUniqueId(), total);
|
||||||
|
|
||||||
//Stats
|
//Stats
|
||||||
Manager.GetStatsManager().incrementStat(player, "Global.GemsEarned", total);
|
Manager.GetStatsManager().incrementStat(player, "Global.GemsEarned", total);
|
||||||
|
@ -20,6 +20,9 @@
|
|||||||
Name = account.Name;
|
Name = account.Name;
|
||||||
Uuid = account.Uuid;
|
Uuid = account.Uuid;
|
||||||
Rank = account.Rank.Name;
|
Rank = account.Rank.Name;
|
||||||
|
RankPerm = account.RankPerm;
|
||||||
|
RankExpire = account.RankExpire.ToShortDateString();
|
||||||
|
|
||||||
Time = (long)TimeUtil.GetCurrentMilliseconds();
|
Time = (long)TimeUtil.GetCurrentMilliseconds();
|
||||||
|
|
||||||
EconomyBalance = account.EconomyBalance;
|
EconomyBalance = account.EconomyBalance;
|
||||||
@ -123,6 +126,10 @@
|
|||||||
|
|
||||||
public string Rank { get; set; }
|
public string Rank { get; set; }
|
||||||
|
|
||||||
|
public bool RankPerm { get; set; }
|
||||||
|
|
||||||
|
public string RankExpire { get; set; }
|
||||||
|
|
||||||
public long Time { get; set; }
|
public long Time { get; set; }
|
||||||
|
|
||||||
public int EconomyBalance { get; set; }
|
public int EconomyBalance { get; set; }
|
||||||
|
@ -566,75 +566,6 @@
|
|||||||
account.RankPerm = token.Perm;
|
account.RankPerm = token.Perm;
|
||||||
|
|
||||||
repository.Edit(account);
|
repository.Edit(account);
|
||||||
|
|
||||||
if ((rank.Name == "HERO" || rank.Name == "ULTRA") && token.Perm)
|
|
||||||
{
|
|
||||||
addAccountTransaction(repository, account, "Bacon Brawl Bebe Piggles", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Bacon Brawl `Pig`", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "A Barbarians Life Barbarian Archer", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "A Barbarians Life Bomber", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "The Bridges Archer", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "The Bridges Bomber", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "The Bridges Brawler", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "The Bridges Miner", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Castle Siege Castle Assassin", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Castle Siege Castle Brawler", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Castle Siege Castle Knight", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Castle Siege Undead Archer", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Castle Siege Undead Zombie", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Death Tag Runner Archer", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Death Tag Runner Traitor", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Dragon Escape Disruptor", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Dragon Escape Warper", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Dragons Marksman", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Dragons Pyrotechnic", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Block Hunt Instant Hider", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Block Hunt Shocking Hider", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Block Hunt Radar Hunter", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Block Hunt TNT Hunter", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Super Paintball Machine Gun", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Super Paintball Shotgun", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "One in the Quiver Brawler", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "One in the Quiver Enchanter", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Runner Archer", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Runner Frosty", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Sheep Quest Archer", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Sheep Quest Brute", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Super Smash Mobs Blaze", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Super Smash Mobs Chicken", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Super Smash Mobs Mad Cow", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Super Smash Mobs Creeper", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Super Smash Mobs Enderman", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Super Smash Mobs Undead Knight", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Super Smash Mobs Magma Cube", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Super Smash Mobs Pig", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Super Smash Mobs Skeletal Horse", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Super Smash Mobs Sky Squid", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Super Smash Mobs Snowman", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Super Smash Mobs Witch", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Super Smash Mobs Wither", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Super Smash Mobs Wither Skeleton", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Super Smash Mobs Wolf", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Snake Super Snake", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Snake Other Snake", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Sneaky Assassins Ranged Assassin", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Sneaky Assassins Revealer", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Super Spleef Archer", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Super Spleef Brawler", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Squid Shooter Squid Blaster", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Squid Shooter Squid Sniper", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Survival Games Archer", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Survival Games Assassin", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Survival Games Beastmaster", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Survival Games Bomber", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Survival Games Brawler", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Survival Games Necromancer", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Turf Wars Infiltrator", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Turf Wars Shredder", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Zombie Survival Survivor Archer", 0, 0);
|
|
||||||
addAccountTransaction(repository, account, "Zombie Survival Survivor Rogue", 0, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
repository.CommitChanges();
|
repository.CommitChanges();
|
||||||
|
|
||||||
_logger.Log("INFO", "TOKEN " + token.Name + "'s rank has been updated to " + token.Rank + " " + (token.Perm ? "Permanently" : "Monthly") + "." + " Rank expire : " + account.RankExpire.ToString());
|
_logger.Log("INFO", "TOKEN " + token.Name + "'s rank has been updated to " + token.Rank + " " + (token.Perm ? "Permanently" : "Monthly") + "." + " Rank expire : " + account.RankExpire.ToString());
|
||||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user