Clean up DonationManager

This commit is contained in:
samczsun 2016-10-27 22:35:27 -04:00 committed by cnr
parent f2fc70f400
commit d291521ad1
146 changed files with 1738 additions and 2323 deletions

View File

@ -35,18 +35,6 @@ public class PlayerStatsRepository extends RepositoryBase
super(DBPool.getPlayerStats());
}
@Override
public void initialize()
{
}
@Override
protected void update()
{
}
public PlayerInfo getPlayer(UUID uuid, String name, int version)
{
PlayerInfo playerInfo = null;

View File

@ -17,18 +17,6 @@ public class PlayerStatsRepository extends RepositoryBase
super(DBPool.getPlayerStats());
}
@Override
protected void initialize()
{
}
@Override
protected void update()
{
}
public List<IpInfo> getIpAddresses()
{
List<IpInfo> ipinfos = new ArrayList<IpInfo>(1000);

View File

@ -180,4 +180,9 @@ public class UtilServer
throwable.printStackTrace(System.out);
}
}
public static String getWebServerURL()
{
return getPlugin().getConfig().getString("webServer");
}
}

View File

@ -30,11 +30,14 @@ public class UtilTasks
public static <T> Consumer<T> onMainThread(Consumer<T> original)
{
return t ->
{
if (original != null)
{
onMainThread(() ->
{
original.accept(t);
});
}
};
}
}

View File

@ -22,6 +22,11 @@ public abstract class MiniClientPlugin<DataType extends Object> extends MiniPlug
super(moduleName, plugin);
}
public MiniClientPlugin(String moduleName)
{
super(moduleName);
}
@EventHandler
public void UnloadPlayer(ClientUnloadEvent event)
{

View File

@ -207,4 +207,11 @@ public class CoreClient
UtilPlayer.message(_player, C.cGold + "Your test rank has been reset!");
}
}
public String getRealOrDisguisedName()
{
if (getDisguisedAs() != null)
return getDisguisedAs();
return getName();
}
}

View File

@ -231,6 +231,14 @@ public class CoreClientManager extends MiniPlugin
_repository.getAccountId(uuid, callback);
}
public void getOrLoadClient(String playerName, Consumer<CoreClient> loadedClient)
{
CoreClient client = Get(playerName);
if (client != null)
loadedClient.accept(client);
loadClientByName(playerName, loadedClient);
}
public void loadClientByName(final String playerName, final Runnable runnable)
{
loadClientByName(playerName, client -> runnable.run());

View File

@ -8,6 +8,7 @@ import java.sql.Timestamp;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.function.Consumer;
import java.util.stream.Collectors;
import org.apache.commons.dbcp2.BasicDataSource;
@ -38,7 +39,6 @@ public class AccountRepository extends MinecraftRepository
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 static String SELECT_ACCOUNT_UUID_BY_NAME = "SELECT uuid FROM accounts WHERE name = ? ORDER BY lastLogin DESC;";
private static String SELECT_ACCOUNT_ID_BY_UUID = "SELECT id FROM accounts WHERE accounts.uuid = ? LIMIT 1";
@ -47,17 +47,11 @@ public class AccountRepository extends MinecraftRepository
public AccountRepository(JavaPlugin plugin, String webAddress)
{
super(plugin, DBPool.getAccount());
super(DBPool.getAccount());
_webAddress = webAddress;
}
@Override
protected void initialize()
{
//executeUpdate(CREATE_ACCOUNT_TABLE);
}
public int login(final List<ILoginProcessor> loginProcessors, final UUID uuid, final String name) throws SQLException
{
// First we try to grab the account id from cache - this saves an extra trip to database
@ -190,9 +184,9 @@ public class AccountRepository extends MinecraftRepository
token.Rank = rank.toString();
token.Perm = perm;
final Callback<Rank> extraCallback = new Callback<Rank>()
final Consumer<Rank> extraCallback = response ->
{
public void run(final Rank response)
if (rank == Rank.ULTRA || rank == Rank.HERO || rank == Rank.LEGEND || rank == Rank.TITAN)
{
if (rank.isDonor())
{
@ -201,6 +195,11 @@ public class AccountRepository extends MinecraftRepository
else
executeUpdate(UPDATE_ACCOUNT_RANK_DONOR, new ColumnVarChar("rank", 100, rank.toString()), new ColumnVarChar("donorRank", 100, rank.toString()), new ColumnVarChar("uuid", 100, uuid.toString()));
}
if (perm)
executeUpdate(UPDATE_ACCOUNT_RANK_DONOR_PERM, new ColumnVarChar("rank", 100, rank.toString()), new ColumnVarChar("donorRank", 100, rank.toString()), new ColumnVarChar("uuid", 100, uuid.toString()));
else
executeUpdate(UPDATE_ACCOUNT_RANK_DONOR, new ColumnVarChar("rank", 100, rank.toString()), new ColumnVarChar("donorRank", 100, rank.toString()), new ColumnVarChar("uuid", 100, uuid.toString()));
}
else
{
if (perm)
@ -218,17 +217,9 @@ public class AccountRepository extends MinecraftRepository
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 : ");
handleMSSQLCall("PlayerAccount/RankUpdate", String.format("Error saving %s's rank: ", token.Name), token, Rank.class, extraCallback);
}
public void matchPlayerName(final Callback<List<String>> callback, final String userName)
@ -245,22 +236,6 @@ public class AccountRepository extends MinecraftRepository
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 : ");
}
public String getClientByName(String playerName)
{
return new JsonWebCall(_webAddress + "PlayerAccount/GetAccount").ExecuteReturnStream(playerName);

View File

@ -37,17 +37,17 @@ public class AchievementShop extends ShopBase<AchievementManager>
public boolean attemptShopOpen(Player player, String targetName, PlayerStats targetStats)
{
if (!getOpenedShop().contains(player.getName()))
if (!getOpenedShop().contains(player.getUniqueId()))
{
if (!canOpenShop(player))
return false;
getOpenedShop().add(player.getName());
getOpenedShop().add(player.getUniqueId());
openShopForPlayer(player);
if (!getPlayerPageMap().containsKey(player.getName()))
if (!getPlayerPageMap().containsKey(player.getUniqueId()))
{
getPlayerPageMap().put(player.getName(), BuildPagesFor(player, targetName, targetStats));
getPlayerPageMap().put(player.getUniqueId(), BuildPagesFor(player, targetName, targetStats));
}
openPageForPlayer(player, getOpeningPageForPlayer(player));

View File

@ -1,7 +1,6 @@
package mineplex.core.antihack.banwave;
import mineplex.core.common.util.Callback;
import mineplex.core.common.util.UtilServer;
import mineplex.core.database.MinecraftRepository;
import mineplex.serverdata.database.DBPool;
import mineplex.serverdata.database.column.ColumnInt;
@ -38,19 +37,7 @@ public class BanWaveRepository extends MinecraftRepository
BanWaveRepository()
{
super(UtilServer.getPlugin(), DBPool.getAccount());
}
@Override
protected void initialize()
{
//executeUpdate(INITIALIZE_TABLE);
}
@Override
protected void update()
{
super(DBPool.getAccount());
}
void getPendingBanWaveInfo(int accountId, Callback<BanWaveInfo> callback)

View File

@ -5,7 +5,6 @@ import java.sql.SQLException;
import mineplex.core.database.MinecraftRepository;
import mineplex.serverdata.database.DBPool;
import mineplex.serverdata.database.RepositoryBase;
import mineplex.serverdata.database.column.ColumnInt;
import mineplex.serverdata.database.column.ColumnVarChar;
@ -20,18 +19,7 @@ public class BenefitManagerRepository extends MinecraftRepository
public BenefitManagerRepository(JavaPlugin plugin)
{
super(plugin, DBPool.getAccount());
}
@Override
protected void initialize()
{
//executeUpdate(CREATE_BENEFIT_TABLE);
}
@Override
protected void update()
{
super(DBPool.getAccount());
}
public boolean addBenefit(int accountId, String benefit)

View File

@ -47,6 +47,7 @@ import mineplex.core.bonuses.gui.BonusGui;
import mineplex.core.bonuses.gui.SpinGui;
import mineplex.core.bonuses.gui.buttons.PowerPlayClubButton;
import mineplex.core.common.Rank;
import mineplex.core.common.currency.GlobalCurrency;
import mineplex.core.common.util.C;
import mineplex.core.common.util.Callback;
import mineplex.core.common.util.F;
@ -56,7 +57,6 @@ import mineplex.core.common.util.UtilParticle.ViewDist;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.donation.DonationManager;
import mineplex.core.donation.GiveDonorData;
import mineplex.core.facebook.FacebookManager;
import mineplex.core.gadget.GadgetManager;
import mineplex.core.hologram.Hologram;
@ -138,10 +138,6 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
private AnimationCarl _animation;
private int _visualTick;
// Donor Queues
private Queue<GiveDonorData> _coinQueue;
private Queue<GiveDonorData> _gemQueue;
public BonusManager(JavaPlugin plugin, Location carlLocation, PlayWireManager playWireManager, CoreClientManager clientManager, DonationManager donationManager, PollManager pollManager, NpcManager npcManager, HologramManager hologramManager, StatsManager statsManager, InventoryManager inventoryManager, PetManager petManager, FacebookManager facebookManager, YoutubeManager youtubeManager, GadgetManager gadgetManager, ThankManager thankManager)
{
super("Bonus", plugin);
@ -169,10 +165,6 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
_powerPlayClubRepository = new PowerPlayClubRepository(plugin, _clientManager, _donationManager);
_coinQueue = new LinkedList<>();
_gemQueue = new LinkedList<>();
if (npcManager != null)
{
_carlNpc = _npcManager.getNpcByName("Carl the Creeper");
@ -595,7 +587,7 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
if (gems > 0)
{
UtilPlayer.message(player, F.main("Carl", "Rewarded " + F.elem(gems + " Gems")));
_gemQueue.add(new GiveDonorData(null, player.getName(), "Treasure", player.getUniqueId(), coreClient.getAccountId(), gems));
_donationManager.rewardCurrencyUntilSuccess(GlobalCurrency.GEM, player, "Earned", gems);
}
if (gold > 0)
@ -606,7 +598,7 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
if (coins > 0)
{
UtilPlayer.message(player, F.main("Carl", "Rewarded " + F.elem(coins + " Treasure Shards")));
_coinQueue.add(new GiveDonorData(null, player.getName(), "Treasure", player.getUniqueId(), coreClient.getAccountId(), coins));
_donationManager.rewardCurrencyUntilSuccess(GlobalCurrency.TREASURE_SHARD, player, "Earned", coins);
}
if (tickets > 0)
@ -871,51 +863,6 @@ public class BonusManager extends MiniClientPlugin<BonusClientData> implements I
}
}
@EventHandler
public void processQueue(UpdateEvent event)
{
if (event.getType() != UpdateType.FASTER)
return;
// Gems
final GiveDonorData gemData = _gemQueue.poll();
if (gemData != null && gemData.getAttempts() < 10)
{
_donationManager.RewardGems(data ->
{
if (data)
{
System.out.println("Successfully processed " + gemData.getGiveAmount() + " gems for " + gemData.getPlayerName());
}
else
{
gemData.incrementAttempts();
System.out.println("Failed to process gems for " + gemData.getPlayerName() + " adding to back of queue. Attempts: " + gemData.getAttempts());
_gemQueue.add(gemData);
}
}, "Earned", gemData.getPlayerName(), gemData.getUuid(), gemData.getGiveAmount());
}
// Coins
final GiveDonorData coinData = _coinQueue.poll();
if (coinData != null && coinData.getAttempts() < 10)
{
_donationManager.RewardCoins(data ->
{
if (data)
{
System.out.println("Successfully processed " + coinData.getGiveAmount() + " coins for " + coinData.getPlayerName());
}
else
{
coinData.incrementAttempts();
System.out.println("Failed to process coins for " + coinData.getPlayerName() + " adding to back of queue. Attempts: " + coinData.getAttempts());
_coinQueue.add(coinData);
}
}, "Earned", coinData.getPlayerName(), coinData.getAccountId(), coinData.getGiveAmount());
}
}
/**
* Used for disabling rank rewards during first month of release
* @return

View File

@ -12,7 +12,6 @@ import mineplex.core.common.Pair;
import mineplex.core.common.util.Callback;
import mineplex.core.database.MinecraftRepository;
import mineplex.serverdata.database.DBPool;
import mineplex.serverdata.database.RepositoryBase;
import mineplex.serverdata.database.ResultSetCallable;
import mineplex.core.donation.DonationManager;
import mineplex.core.recharge.Recharge;
@ -37,7 +36,7 @@ public class BonusRepository extends MinecraftRepository
public BonusRepository(JavaPlugin plugin, BonusManager bonusManager, DonationManager donationManager)
{
super(plugin, DBPool.getAccount());
super(DBPool.getAccount());
_manager = bonusManager;
_donationManager = donationManager;
}
@ -433,16 +432,4 @@ public class BonusRepository extends MinecraftRepository
.set(Tables.bonus.maxVoteStreak, clientData.getMaxVoteStreak())
.where(Tables.bonus.accountId.eq(accountId)).execute();
}
@Override
protected void initialize()
{
//executeUpdate(CREATE_BONUS_TABLE);
}
@Override
protected void update()
{
}
}

View File

@ -74,7 +74,7 @@ public class BoosterThankManager extends MiniPlugin
if (_repository.checkAmplifierThank(accountId, booster.getId()))
{
// We can thank that amplifier!
_thankManager.thankPlayer(booster.getPlayerName(), booster.getAccountId(), player.getName(), accountId,
_thankManager.thankPlayer(booster.getPlayerName(), booster.getAccountId(), player,
TIP_FOR_SPONSOR, TIP_FOR_TIPPER, "Amplifier", true, thankResult ->
runSync(() -> callback.run(fromThankResult(thankResult))));
}

View File

@ -1,13 +1,9 @@
package mineplex.core.boosters.tips;
import mineplex.core.database.MinecraftRepository;
import mineplex.database.routines.AddTip;
import mineplex.database.routines.CheckAmplifierThank;
import mineplex.database.routines.ClaimTips;
import mineplex.serverdata.database.DBPool;
import mineplex.serverdata.database.RepositoryBase;
import mineplex.serverdata.database.column.ColumnInt;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
/**
@ -17,7 +13,7 @@ public class BoosterThankRepository extends MinecraftRepository
{
public BoosterThankRepository(JavaPlugin plugin)
{
super(plugin, DBPool.getAccount());
super(DBPool.getAccount());
}
/**
@ -37,16 +33,4 @@ public class BoosterThankRepository extends MinecraftRepository
checkAmplifierThank.execute(jooq().configuration());
return checkAmplifierThank.getCanThank() == 1;
}
@Override
protected void initialize()
{
}
@Override
protected void update()
{
}
}

View File

@ -8,7 +8,6 @@ import mineplex.core.database.MinecraftRepository;
import org.bukkit.plugin.java.JavaPlugin;
import mineplex.serverdata.database.DBPool;
import mineplex.serverdata.database.RepositoryBase;
import mineplex.core.botspam.SpamText;
import mineplex.serverdata.database.ResultSetCallable;
import mineplex.serverdata.database.column.ColumnInt;
@ -25,7 +24,7 @@ public class BotSpamRepository extends MinecraftRepository
public BotSpamRepository(JavaPlugin plugin)
{
super(plugin, DBPool.getAccount());
super(DBPool.getAccount());
}
public ArrayList<SpamText> getSpamText()
@ -70,16 +69,4 @@ public class BotSpamRepository extends MinecraftRepository
{
executeInsert(ADD_SPAM_TEXT, null, new ColumnVarChar("text", 200, spamText), new ColumnVarChar("createdBy", 100, caller), new ColumnVarChar("enabledBy", 100, caller));
}
@Override
protected void initialize()
{
}
@Override
protected void update()
{
}
}

View File

@ -1,5 +1,7 @@
package mineplex.core.brawl.fountain.command;
import java.util.function.Consumer;
import mineplex.core.brawl.fountain.FountainManager;
import mineplex.core.command.CommandBase;
import mineplex.core.common.Rank;
@ -8,10 +10,12 @@ import mineplex.core.common.util.Callback;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.server.util.TransactionResponse;
import org.bukkit.entity.Player;
/**
* Command to add gems to the fountain
*
* @author Shaun Bennett
*/
public class AddCommand extends CommandBase<FountainManager>
@ -34,10 +38,8 @@ public class AddCommand extends CommandBase<FountainManager>
{
int amount = Integer.parseInt(args[0]);
Plugin.getDonationManager().purchaseUnknownSalesPackage(new Callback<TransactionResponse>()
{
@Override
public void run(TransactionResponse result)
Plugin.getDonationManager().purchaseUnknownSalesPackage(caller, "GemFountain.Add", GlobalCurrency.GEM, amount, false,
result ->
{
if (result == TransactionResponse.Success)
{
@ -52,8 +54,7 @@ public class AddCommand extends CommandBase<FountainManager>
{
UtilPlayer.message(caller, F.main("Fountain", "There was an error processing your request!"));
}
}
}, caller, "GemFountain.Add", GlobalCurrency.GEM, amount, false);
});
}
catch (NumberFormatException ex)
{

View File

@ -34,13 +34,13 @@ public class CosmeticShop extends ShopBase<CosmeticManager> implements PluginMes
if (!channel.equalsIgnoreCase("MC|ItemName"))
return;
if (getPlayerPageMap().containsKey(player.getName()) && getPlayerPageMap().get(player.getName()) instanceof PetTagPage)
if (getPlayerPageMap().containsKey(player.getUniqueId()) && getPlayerPageMap().get(player.getUniqueId()) instanceof PetTagPage)
{
if (message != null && message.length >= 1)
{
String tagName = new String(message);
((PetTagPage) getPlayerPageMap().get(player.getName())).SetTagName(tagName);
((PetTagPage) getPlayerPageMap().get(player.getUniqueId())).SetTagName(tagName);
}
}
}

View File

@ -439,16 +439,25 @@ public class GadgetPage extends ShopPageBase<CosmeticManager, CosmeticShop>
return;
}
if(getClientManager().Get(player).isDisguised())
{
UtilPlayer.message(player, F.main("Disguise", "You cant buy things while you are disguised!"));
return;
}
getShop().openPageForPlayer(getPlayer(), new ConfirmationPage<>(player, this, new SalesPackageProcessor(player, GlobalCurrency.TREASURE_SHARD, (gadget instanceof ItemGadget ? ((ItemGadget) gadget).getAmmo() : gadget), getDonationManager(), () ->
getShop().openPageForPlayer(
getPlayer(),
new ConfirmationPage<>(
player,
this,
new SalesPackageProcessor(
player,
GlobalCurrency.TREASURE_SHARD,
(gadget instanceof ItemGadget ? ((ItemGadget) gadget).getAmmo() : gadget),
getDonationManager(),
() ->
{
getPlugin().getInventoryManager().addItemToInventory(getPlayer(), gadget.getName(), (gadget instanceof ItemGadget ? ((ItemGadget) gadget).getAmmo().getQuantity() : gadget.getQuantity()));
refresh();
}), gadget.buildIcon()));
}
),
gadget.buildIcon()
)
);
}
public void activateGadget(Player player, Gadget gadget)

View File

@ -111,7 +111,7 @@ public class Menu extends ShopPageBase<CosmeticManager, CosmeticShop>
Mount<?> mountActive = getPlugin().getMountManager().getActive(getPlayer());
for (Mount<?> mount : getPlugin().getMountManager().getMounts())
{
if (getDonationManager().Get(getPlayer()).OwnsUnknownPackage(mount.getName()))
if (getDonationManager().Get(getPlayer()).ownsUnknownSalesPackage(mount.getName()))
{
mountOwned++;
}

View File

@ -66,7 +66,7 @@ public class MountPage extends ShopPageBase<CosmeticManager, CosmeticShop>
itemLore.add(C.cBlack);
itemLore.addAll(Arrays.asList(mount.getDescription()));
if (!getDonationManager().Get(getPlayer()).OwnsUnknownPackage(mount.getName()))
if (!getDonationManager().Get(getPlayer()).ownsUnknownSalesPackage(mount.getName()))
{
if (mount.getCost(GlobalCurrency.TREASURE_SHARD) == -1)
{
@ -153,7 +153,7 @@ public class MountPage extends ShopPageBase<CosmeticManager, CosmeticShop>
}
}
if (getDonationManager().Get(getPlayer()).OwnsUnknownPackage(mount.getName()))
if (getDonationManager().Get(getPlayer()).ownsUnknownSalesPackage(mount.getName()))
{
if (mount.getActive().containsKey(getPlayer()))
{

View File

@ -14,7 +14,6 @@ import mineplex.core.customdata.CustomData;
import mineplex.core.customdata.CustomDataManager;
import mineplex.core.customdata.PlayerCustomData;
import mineplex.serverdata.database.DBPool;
import mineplex.serverdata.database.RepositoryBase;
import mineplex.serverdata.database.ResultSetCallable;
import mineplex.serverdata.database.column.ColumnInt;
import mineplex.serverdata.database.column.ColumnVarChar;
@ -37,7 +36,7 @@ public class CustomDataRepository extends MinecraftRepository
public CustomDataRepository(JavaPlugin plugin, CoreClientManager clientManager, CustomDataManager customDataManager)
{
super(plugin, DBPool.getAccount());
super(DBPool.getAccount());
_clientManager = clientManager;
_customDataManager = customDataManager;
@ -49,9 +48,6 @@ public class CustomDataRepository extends MinecraftRepository
downloadDataKeys();
}
@Override
protected void update() {}
private void downloadDataKeys()
{
_dataKeys = new ArrayList<>();

View File

@ -1,49 +1,53 @@
package mineplex.core.database;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Iterator;
import java.util.HashSet;
import java.util.Set;
import java.util.function.Consumer;
import javax.rmi.CORBA.Util;
import javax.sql.DataSource;
import mineplex.core.common.util.NautHashMap;
import mineplex.core.common.util.UtilServer;
import mineplex.core.server.remotecall.AsyncJsonWebCall;
import mineplex.core.server.remotecall.JsonWebCall;
import mineplex.core.thread.ThreadPool;
import mineplex.core.utils.UtilScheduler;
import mineplex.serverdata.database.DBPool;
import mineplex.serverdata.database.DatabaseRunnable;
import mineplex.serverdata.database.RepositoryBase;
import mineplex.serverdata.database.column.Column;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import org.jooq.DSLContext;
import org.jooq.SQLDialect;
import org.jooq.impl.DSL;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;
public abstract class MinecraftRepository extends RepositoryBase implements Listener
{
// Queue for failed processes
private static Object _queueLock = new Object();
private NautHashMap<DatabaseRunnable, String> _failedQueue = new NautHashMap<DatabaseRunnable, String>();
private final Object QUEUE_LOCK = new Object();
private Set<DatabaseRunnable> _failedQueue = new HashSet<>();
protected JavaPlugin _plugin; // Plugin responsible for this repository
private final String _webAddress = UtilServer.getWebServerURL();
/**
* Constructor
* @param plugin - the {@link JavaPlugin} module responsible for this repository.
*
* @param dataSource - the {@link DataSource} responsible for providing the connection pool to this repository.
*/
public MinecraftRepository(JavaPlugin plugin, DataSource dataSource)
public MinecraftRepository(DataSource dataSource)
{
super(dataSource);
_plugin = plugin;
plugin.getServer().getPluginManager().registerEvents(this, plugin);
_plugin = UtilServer.getPlugin();
UtilServer.RegisterEvents(this);
UtilScheduler.runEvery(UpdateType.MIN_01, this::processDatabaseQueue);
}
protected DSLContext jooq()
@ -51,11 +55,39 @@ public abstract class MinecraftRepository extends RepositoryBase implements List
return DSL.using(DBPool.getAccount(), SQLDialect.MYSQL);
}
protected void handleDatabaseCall(final DatabaseRunnable databaseRunnable, final String errorMessage)
/**
* One day, the stars will align, and we can get rid of this
*/
@Deprecated
protected <T> void handleMSSQLCall(String uri, String error, Object param, Class<T> responseType, Consumer<T> consumer)
{
Thread asyncThread = new Thread(new Runnable()
handleDatabaseCall(new DatabaseRunnable(() ->
{
public void run()
new JsonWebCall(_webAddress + uri).Execute(responseType, consumer::accept, param);
}, error));
}
/**
* One day, the stars will align, and we can get rid of this
*/
@Deprecated
protected <T> void handleAsyncMSSQLCall(String uri, Object param, Class<T> responseType, Consumer<T> consumer)
{
new AsyncJsonWebCall(_webAddress + uri).Execute(responseType, consumer::accept, param);
}
/**
* One day, the stars will align, and we can get rid of this
*/
@Deprecated
protected <T> void handleAsyncMSSQLCall(String uri, Object param)
{
new AsyncJsonWebCall(_webAddress + uri).Execute(param);
}
private void handleDatabaseCall(DatabaseRunnable databaseRunnable)
{
ThreadPool.ASYNC.submit(() ->
{
try
{
@ -63,46 +95,38 @@ public abstract class MinecraftRepository extends RepositoryBase implements List
}
catch (Exception exception)
{
processFailedDatabaseCall(databaseRunnable, exception.getMessage(), errorMessage);
}
processFailedDatabaseCall(databaseRunnable, exception);
}
});
asyncThread.start();
}
protected void processFailedDatabaseCall(DatabaseRunnable databaseRunnable, String errorPreMessage, String runnableMessage)
private void processFailedDatabaseCall(DatabaseRunnable databaseRunnable, Exception exception)
{
System.err.println(databaseRunnable.getErrorMessage());
exception.printStackTrace();
if (databaseRunnable.getFailedCounts() < 4)
{
databaseRunnable.incrementFailCount();
synchronized (_queueLock)
synchronized (QUEUE_LOCK)
{
_failedQueue.put(databaseRunnable, runnableMessage);
_failedQueue.add(databaseRunnable);
}
}
}
@EventHandler
public void processDatabaseQueue(UpdateEvent event)
private void processDatabaseQueue()
{
if (event.getType() != UpdateType.MIN_01)
return;
Set<DatabaseRunnable> clone;
processFailedQueue();
synchronized (QUEUE_LOCK)
{
clone = new HashSet<>(_failedQueue);
_failedQueue.clear();
}
private void processFailedQueue()
{
synchronized (_queueLock)
{
for (Iterator<DatabaseRunnable> runnablesIterator = _failedQueue.keySet().iterator(); runnablesIterator.hasNext();)
{
DatabaseRunnable databaseRunnable = runnablesIterator.next();
handleDatabaseCall(databaseRunnable, _failedQueue.get(databaseRunnable));
}
}
clone.forEach(this::handleDatabaseCall);
}
public JavaPlugin getPlugin()

View File

@ -0,0 +1,58 @@
package mineplex.core.donation;
import java.util.UUID;
import java.util.function.Consumer;
class CurrencyRewardData
{
private final String _playerName;
private final UUID _playerUUID;
private final String _reason;
private final int _amount;
private final Consumer<Boolean> _callback;
private int _attempts;
CurrencyRewardData(String playerName, UUID playerUUID, String reason, int amount, Consumer<Boolean> callback)
{
_playerName = playerName;
_playerUUID = playerUUID;
_reason = reason;
_amount = amount;
_callback = callback;
}
int getAttempts()
{
return _attempts;
}
void incrementAttempts()
{
_attempts++;
}
String getPlayerName()
{
return _playerName;
}
UUID getPlayerUUID()
{
return _playerUUID;
}
String getReason()
{
return _reason;
}
int getAmount()
{
return _amount;
}
Consumer<Boolean> getCallback()
{
return _callback;
}
}

View File

@ -1,62 +1,61 @@
package mineplex.core.donation;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
import java.util.UUID;
import java.util.function.Consumer;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import com.google.gson.Gson;
import mineplex.cache.player.PlayerCache;
import mineplex.core.MiniClientPlugin;
import mineplex.core.ReflectivelyCreateMiniPlugin;
import mineplex.core.account.CoreClient;
import mineplex.core.account.CoreClientManager;
import mineplex.core.account.event.ClientWebResponseEvent;
import mineplex.core.common.currency.GlobalCurrency;
import mineplex.core.common.util.Callback;
import mineplex.core.common.util.NautHashMap;
import mineplex.core.donation.command.GemCommand;
import mineplex.core.donation.command.ShardCommand;
import mineplex.core.donation.repository.DonationRepository;
import mineplex.core.donation.repository.token.DonorTokenWrapper;
import mineplex.core.server.util.TransactionResponse;
import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.UpdateEvent;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.LinkedList;
import java.util.Queue;
import java.util.UUID;
import mineplex.core.utils.UtilScheduler;
/**
* This manager handles the rewarding of transactions in the form of sales packages and currency
*/
@ReflectivelyCreateMiniPlugin
public class DonationManager extends MiniClientPlugin<Donor>
{
private final int MAX_GIVE_ATTEMPTS = 10;
/**
* The maximum number of attempts that will be made to perform a transaction created by {@link DonationManager#rewardCurrencyUntilSuccess}
*/
public static final int MAX_GIVE_ATTEMPTS = 10;
private DonationRepository _repository;
private static final Gson GSON = new Gson();
private NautHashMap<Player, NautHashMap<String, Integer>> _gemQueue = new NautHashMap<Player, NautHashMap<String, Integer>>();
private NautHashMap<Player, NautHashMap<String, Integer>> _coinQueue = new NautHashMap<Player, NautHashMap<String, Integer>>();
private final Map<GlobalCurrency, LinkedList<CurrencyRewardData>> _attemptUntilSuccess = new HashMap<>();
private Queue<GiveDonorData> _coinAttemptQueue;
private final CoreClientManager _clientManager = require(CoreClientManager.class);
private final CoreClientManager _clientManager;
private final DonationRepository _repository;
public DonationManager(JavaPlugin plugin, CoreClientManager clientManager, String webAddress)
private DonationManager()
{
super("Donation", plugin);
super("Donation");
_repository = new DonationRepository(plugin, webAddress);
_repository = new DonationRepository();
_coinAttemptQueue = new LinkedList<>();
_clientManager = clientManager;
}
public CoreClientManager getClientManager()
{
return _clientManager;
UtilScheduler.runEvery(UpdateType.FAST, this::processCoinAttemptQueue);
}
@Override
public void addCommands()
{
// TODO: Re-add commands? Where are command implementations, seen as missing at the moment.
addCommand(new GemCommand(this));
addCommand(new ShardCommand(this));
}
@ -64,308 +63,248 @@ public class DonationManager extends MiniClientPlugin<Donor>
@EventHandler
public void OnClientWebResponse(ClientWebResponseEvent event)
{
DonorTokenWrapper token = new Gson().fromJson(event.GetResponse(), DonorTokenWrapper.class);
LoadDonor(token, event.getUniqueId());
DonorTokenWrapper token = GSON.fromJson(event.GetResponse(), DonorTokenWrapper.class);
Get(event.getUniqueId()).loadToken(token.DonorToken);
}
private void LoadDonor(DonorTokenWrapper token, UUID uuid)
/**
* Adds an unknown sales package to the specified {@link Player}
*
* @param callback The callback which will be called on the main thread. Possible responses are:
* {@link TransactionResponse#InsufficientFunds}, when the player does not have enough of the currency
* {@link TransactionResponse#Success}, when everything worked fine
* {@link TransactionResponse#Failed}, when an known exception occured
* {@link TransactionResponse#AlreadyOwns}, when the player already owns the package
*/
public void purchaseUnknownSalesPackage(Player player, String packageName, GlobalCurrency currencyType, int cost, boolean oneTimePurchase, Consumer<TransactionResponse> callback)
{
Get(uuid).loadToken(token.DonorToken);
//_repository.updateGemsAndCoins(uuid, Get(token.Name).GetGems(), Get(token.Name).getCoins());
purchaseUnknownSalesPackage(_clientManager.Get(player), packageName, currencyType, cost, oneTimePurchase, callback);
}
public void purchaseUnknownSalesPackage(Callback<TransactionResponse> callback, Player player, String packageName, GlobalCurrency currencyType, int cost, boolean oneTimePurchase)
/**
* Adds an unknown sales package to the specified {@link CoreClient}
*
* @param callback The callback which will be called on the main thread. Possible responses are:
* {@link TransactionResponse#InsufficientFunds}, when the player does not have enough of the currency
* {@link TransactionResponse#Success}, when everything worked fine
* {@link TransactionResponse#Failed}, when an known exception occured
* {@link TransactionResponse#AlreadyOwns}, when the player already owns the package
*/
public void purchaseUnknownSalesPackage(CoreClient client, String packageName, GlobalCurrency currencyType, int cost, boolean oneTimePurchase, Consumer<TransactionResponse> callback)
{
PurchaseUnknownSalesPackage(callback, player.getName(), _clientManager.getAccountId(player), packageName, currencyType, cost, oneTimePurchase);
}
public void PurchaseUnknownSalesPackage(final Callback<TransactionResponse> callback, final String name, final int accountId, final String packageName, final GlobalCurrency currencyType, final int cost, boolean oneTimePurchase)
{
final Donor donor = Bukkit.getPlayerExact(name) != null ? Get(Bukkit.getPlayerExact(name)) : null;
Donor donor = Get(client.getUniqueId());
if (donor != null)
{
if (oneTimePurchase && donor.OwnsUnknownPackage(packageName))
if (oneTimePurchase && donor.ownsUnknownSalesPackage(packageName))
{
if (callback != null)
callback.run(TransactionResponse.AlreadyOwns);
callback.accept(TransactionResponse.AlreadyOwns);
return;
}
}
_repository.PurchaseUnknownSalesPackage(new Callback<TransactionResponse>()
{
public void run(TransactionResponse response)
_repository.purchaseUnknownSalesPackage(client.getName(), packageName, currencyType, cost, response ->
{
if (response == TransactionResponse.Success)
{
if (donor != null)
{
donor.AddUnknownSalesPackagesOwned(packageName);
donor.DeductCost(cost, currencyType);
donor.addOwnedUnknownSalesPackage(packageName);
donor.addBalance(currencyType, -cost);
}
}
if (callback != null)
callback.run(response);
}
}, name, accountId, packageName, currencyType, cost);
callback.accept(response);
});
}
public void PurchaseKnownSalesPackage(final Callback<TransactionResponse> callback, final String name, final UUID uuid, final int cost, final int salesPackageId)
/**
* Adds a known sales package to the {@link Player}
*/
public void purchaseKnownSalesPackage(Player player, int salesPackageId)
{
_repository.PurchaseKnownSalesPackage(new Callback<TransactionResponse>()
purchaseKnownSalesPackage(player, salesPackageId, null);
}
/**
* Adds a known sales package to the {@link CoreClient}
*/
public void purchaseKnownSalesPackage(CoreClient client, int salesPackageId)
{
public void run(TransactionResponse response)
purchaseKnownSalesPackage(client, salesPackageId, null);
}
/**
* Adds a known sales package to the {@link Player}
*
* @param callback The callback which will be called on the main thread. Possible responses are:
* {@link TransactionResponse#InsufficientFunds}, when the player does not have enough of the currency
* {@link TransactionResponse#Success}, when everything worked fine
* {@link TransactionResponse#Failed}, when an known exception occured
* {@link TransactionResponse#AlreadyOwns}, when the player already owns the package
*/
public void purchaseKnownSalesPackage(Player player, int salesPackageId, Consumer<TransactionResponse> callback)
{
purchaseKnownSalesPackage(_clientManager.Get(player), salesPackageId, callback);
}
/**
* Adds a known sales package to the {@link CoreClient}
*
* @param callback The callback which will be called on the main thread. Possible responses are:
* {@link TransactionResponse#InsufficientFunds}, when the player does not have enough of the currency
* {@link TransactionResponse#Success}, when everything worked fine
* {@link TransactionResponse#Failed}, when an known exception occured
* {@link TransactionResponse#AlreadyOwns}, when the player already owns the package
*/
public void purchaseKnownSalesPackage(CoreClient client, int salesPackageId, Consumer<TransactionResponse> callback)
{
_repository.purchaseKnownSalesPackage(client.getName(), salesPackageId, response ->
{
if (response == TransactionResponse.Success)
{
Donor donor = Get(uuid);
Donor donor = Get(client.getUniqueId());
if (donor != null)
{
donor.AddSalesPackagesOwned(salesPackageId);
donor.addOwnedKnownSalesPackage(salesPackageId);
}
}
if (callback != null)
callback.run(response);
}
}, name, uuid.toString(), cost, salesPackageId);
callback.accept(response);
});
}
public void RewardGems(Callback<Boolean> callback, String caller, String name, UUID uuid, int amount)
/**
* Rewards the specified {@link Player} with {@code amount} of {@code currency} because of {@code reason}
* This method will not retry the query if it fails
*/
public void rewardCurrency(GlobalCurrency currency, Player player, String reason, int amount)
{
RewardGems(callback, caller, name, uuid, amount, true);
rewardCurrency(currency, player, reason, amount, true, null);
}
public void RewardGems(final Callback<Boolean> callback, final String caller, final String name, final UUID uuid, final int amount, final boolean updateTotal)
/**
* Rewards the specified {@link Player} with {@code amount} of {@code currency} because of {@code reason}
* This method will not retry the query if it fails
*
* @param callback The callback which will be called on the main thread. Possible responses are:
* {@link Boolean#TRUE} if the transaction succeeded
* {@link Boolean#FALSE} if the transaction failed, either during incrementation or sanity-checking
*/
public void rewardCurrency(GlobalCurrency currency, Player player, String reason, int amount, Consumer<Boolean> callback)
{
_repository.gemReward(new Callback<Boolean>()
rewardCurrency(currency, player, reason, amount, true, callback);
}
/**
* Rewards the specified {@link Player} with {@code amount} of {@code currency} because of {@code reason}
* This method will not retry the query if it fails
*
* @param updateTotal Whether to update the local value for {@code currency}
* @param callback The callback which will be called on the main thread. Possible responses are:
* {@link Boolean#TRUE} if the transaction succeeded
* {@link Boolean#FALSE} if the transaction failed, either during incrementation or sanity-checking
*/
public void rewardCurrency(GlobalCurrency currency, Player player, String reason, int amount, boolean updateTotal, Consumer<Boolean> callback)
{
public void run(Boolean success)
rewardCurrency(currency, _clientManager.Get(player), reason, amount, updateTotal, callback);
}
/**
* Rewards the specified {@link CoreClient} with {@code amount} of {@code currency} because of {@code reason}
* This method will not retry the query if it fails
*/
public void rewardCurrency(GlobalCurrency currency, CoreClient client, String reason, int amount)
{
rewardCurrency(currency, client.getName(), client.getUniqueId(), reason, amount, true, null);
}
/**
* Rewards the specified {@link CoreClient} with {@code amount} of {@code currency} because of {@code reason}
* This method will not retry the query if it fails
*
* @param callback The callback which will be called on the main thread. Possible responses are:
* {@link Boolean#TRUE} if the transaction succeeded
* {@link Boolean#FALSE} if the transaction failed, either during incrementation or sanity-checking
*/
public void rewardCurrency(GlobalCurrency currency, CoreClient client, String reason, int amount, Consumer<Boolean> callback)
{
rewardCurrency(currency, client.getName(), client.getUniqueId(), reason, amount, true, callback);
}
/**
* Rewards the specified {@link CoreClient} with {@code amount} of {@code currency} because of {@code reason}
* This method will not retry the query if it fails
*
* @param updateTotal Whether to update the local value for {@code currency}
* @param callback The callback which will be called on the main thread. Possible responses are:
* {@link Boolean#TRUE} if the transaction succeeded
* {@link Boolean#FALSE} if the transaction failed, either during incrementation or sanity-checking
*/
public void rewardCurrency(GlobalCurrency currency, CoreClient client, String reason, int amount, boolean updateTotal, Consumer<Boolean> callback)
{
rewardCurrency(currency, client.getName(), client.getUniqueId(), reason, amount, updateTotal, callback);
}
// Private because volatile with playerName and playerUUID
private void rewardCurrency(GlobalCurrency currency, String playerName, UUID playerUUID, String reason, int amount, boolean updateTotal, Consumer<Boolean> callback)
{
_repository.reward(currency, playerName, reason, amount, success ->
{
if (success)
{
if (updateTotal)
{
Donor donor = Get(uuid);
Donor donor = Get(playerUUID);
if (donor != null)
{
donor.addBalance(GlobalCurrency.GEM, amount);
donor.addBalance(currency, amount);
}
}
}
if (callback != null)
callback.run(success);
}
}, caller, name, uuid.toString(), amount);
}
public void RewardGemsLater(final String caller, final Player player, final int amount)
{
if (!_gemQueue.containsKey(player))
_gemQueue.put(player, new NautHashMap<String, Integer>());
int totalAmount = amount;
if (_gemQueue.get(player).containsKey(caller))
totalAmount += _gemQueue.get(player).get(caller);
_gemQueue.get(player).put(caller, totalAmount);
//Do Temp Change
Donor donor = Get(player.getUniqueId());
if (donor != null)
donor.addBalance(GlobalCurrency.GEM, amount);
}
@EventHandler
public void UpdateGemQueue(UpdateEvent event)
{
if (event.getType() != UpdateType.SLOWER)
return;
for (Player player : _gemQueue.keySet())
{
String caller = null;
int total = 0;
for (String curCaller : _gemQueue.get(player).keySet())
{
caller = curCaller;
total += _gemQueue.get(player).get(curCaller);
}
if (caller == null)
continue;
//Actually Add Gems
RewardGems(null, caller, player.getName(), player.getUniqueId(), total, false);
System.out.println("Queue Added [" + player + "] with Gems [" + total + "] for [" + caller + "]");
//Clean
_gemQueue.get(player).clear();
}
//Clean
_gemQueue.clear();
}
public void rewardCoinsUntilSuccess(Callback<Boolean> callback, String caller, String name, int accountId, int amount)
{
_coinAttemptQueue.add(new GiveDonorData(callback, name, caller, accountId, amount));
}
public void RewardCoins(Callback<Boolean> callback, String caller, String name, int accountId, int amount)
{
RewardCoins(callback, caller, name, accountId, amount, true);
}
public void RewardCoins(final Callback<Boolean> callback, final String caller, final String name, final int accountId, final int amount, final boolean updateTotal)
{
_repository.rewardCoins(new Callback<Boolean>()
{
public void run(Boolean success)
{
if (success)
{
if (updateTotal)
{
Donor donor = Get(name);
if (donor != null)
{
donor.addBalance(GlobalCurrency.TREASURE_SHARD, amount);
}
}
}
if (callback != null)
callback.run(success);
}
}, caller, name, accountId, amount);
}
public void RewardCoinsLater(final String caller, final Player player, final int amount)
{
if (!_coinQueue.containsKey(player))
_coinQueue.put(player, new NautHashMap<String, Integer>());
int totalAmount = amount;
if (_coinQueue.get(player).containsKey(caller))
totalAmount += _coinQueue.get(player).get(caller);
_coinQueue.get(player).put(caller, totalAmount);
//Do Temp Change
Donor donor = Get(player.getUniqueId());
if (donor != null)
donor.addBalance(GlobalCurrency.TREASURE_SHARD, amount);
}
@EventHandler
public void UpdateCoinQueue(UpdateEvent event)
{
if (event.getType() != UpdateType.SLOWER)
return;
for (final Player player : _coinQueue.keySet())
{
String tempCaller = null;
int tempTotal = 0;
for (String curCaller : _coinQueue.get(player).keySet())
{
tempCaller = curCaller;
tempTotal += _coinQueue.get(player).get(curCaller);
}
final int total = tempTotal;
final String caller = tempCaller;
if (caller == null)
continue;
if (player.isOnline() && player.isValid())
RewardCoins(null, caller, player.getName(), _clientManager.Get(player).getAccountId(), total, false);
else
{
Bukkit.getServer().getScheduler().runTaskAsynchronously(getPlugin(), new Runnable()
{
public void run()
{
RewardCoins(null, caller, player.getName(), PlayerCache.getInstance().getPlayer(player.getUniqueId()).getAccountId(), total, false);
callback.accept(success);
}
});
}
System.out.println("Queue Added [" + player + "] with Coins [" + total + "] for [" + caller + "]");
//Clean
_coinQueue.get(player).clear();
/**
* Rewards the {@link Player} with {@code amount} of {@code currency} because of {@code reason}
* This method will retry the transaction for up to {@link DonationManager#MAX_GIVE_ATTEMPTS} attempts
*/
public void rewardCurrencyUntilSuccess(GlobalCurrency currency, Player player, String reason, int amount)
{
CoreClient client = _clientManager.Get(player);
rewardCurrencyUntilSuccess(currency, client.getName(), client.getUniqueId(), reason, amount, null);
}
//Clean
_coinQueue.clear();
/**
* Rewards the {@link Player} with {@code amount} of {@code currency} because of {@code reason}
* This method will retry the transaction for up to {@link DonationManager#MAX_GIVE_ATTEMPTS} attempts
*
* @param callback The callback which will be called on the main thread. Possible responses are:
* {@link Boolean#TRUE} if the transaction succeeded
* {@link Boolean#FALSE} if the transaction failed, either during incrementation or sanity-checking
*/
public void rewardCurrencyUntilSuccess(GlobalCurrency currency, Player player, String reason, int amount, Consumer<Boolean> callback)
{
CoreClient client = _clientManager.Get(player);
rewardCurrencyUntilSuccess(currency, client.getName(), client.getUniqueId(), reason, amount, callback);
}
@EventHandler
public void processCoinAttemptQueue(UpdateEvent event)
// private because volatile with name and accountId
private void rewardCurrencyUntilSuccess(GlobalCurrency currency, String name, UUID playerUUID, String reason, int amount, Consumer<Boolean> callback)
{
if (event.getType() != UpdateType.FAST)
return;
GiveDonorData data = _coinAttemptQueue.poll();
if (data != null)
{
_repository.rewardCoins(new Callback<Boolean>()
{
@Override
public void run(Boolean success)
{
if (success)
{
Donor donor = Get(data.getUuid());
if (donor != null)
{
donor.addBalance(GlobalCurrency.TREASURE_SHARD, data.getGiveAmount());
}
if (data.getCallback() != null) data.getCallback().run(true);
System.out.println("Successfully rewarded shards to player " + data.getPlayerName());
}
else
{
data.incrementAttempts();
if (data.getAttempts() >= MAX_GIVE_ATTEMPTS)
{
// Admit Defeat!
if (data.getCallback() != null) data.getCallback().run(false);
System.out.println("Gave up giving shards to player " + data.getPlayerName());
}
else
{
// Add again to the back of queue
_coinAttemptQueue.add(data);
System.out.println("Failed to reward shards to player " + data.getPlayerName() + ". Attempts: " + data.getAttempts());
}
}
}
}, data.getCaller(), data.getPlayerName(), data.getAccountId(), data.getGiveAmount());
}
_attemptUntilSuccess.computeIfAbsent(currency, key -> new LinkedList<>())
.add(new CurrencyRewardData(name, playerUUID, reason, amount, callback));
}
public void applyKits(String playerName)
@ -378,4 +317,56 @@ public class DonationManager extends MiniClientPlugin<Donor>
{
return new Donor();
}
private void processCoinAttemptQueue()
{
_attemptUntilSuccess.forEach((currency, playerMap) ->
{
CurrencyRewardData data = playerMap.poll();
if (data != null)
{
_repository.reward(currency, data.getPlayerName(), data.getReason(), data.getAmount(), success ->
{
if (success)
{
Donor donor = Get(data.getPlayerUUID());
if (donor != null)
{
donor.addBalance(currency, data.getAmount());
}
if (data.getCallback() != null)
{
data.getCallback().accept(true);
}
System.out.println("Successfully rewarded " + currency.getPrefix() + " to player " + data.getPlayerName());
}
else
{
data.incrementAttempts();
if (data.getAttempts() >= MAX_GIVE_ATTEMPTS)
{
// Admit Defeat!
if (data.getCallback() != null) data.getCallback().accept(false);
System.out.println("Gave up giving " + currency.getPrefix() + " to player " + data.getPlayerName());
}
else
{
playerMap.add(data);
System.out.println("Failed to reward " + currency.getPrefix() + " to player " + data.getPlayerName() + ". Attempts: " + data.getAttempts());
}
}
});
}
});
}
public CoreClientManager getClientManager()
{
return _clientManager;
}
}

View File

@ -11,24 +11,21 @@ import mineplex.core.donation.repository.token.CoinTransactionToken;
import mineplex.core.donation.repository.token.DonorToken;
import mineplex.core.donation.repository.token.TransactionToken;
/**
* Represents a player's donation information
*/
public class Donor
{
private final Map<GlobalCurrency, Integer> _balances = new HashMap<>();
private boolean _donated;
private List<Integer> _salesPackagesOwned = new ArrayList<Integer>();
private List<String> _unknownSalesPackagesOwned = new ArrayList<String>();
private List<TransactionToken> _transactions = new ArrayList<TransactionToken>();
private List<CoinTransactionToken> _coinTransactions = new ArrayList<CoinTransactionToken>();
private List<Integer> _salesPackagesOwned = new ArrayList<>();
private List<String> _unknownSalesPackagesOwned = new ArrayList<>();
private List<TransactionToken> _transactions = new ArrayList<>();
private List<CoinTransactionToken> _coinTransactions = new ArrayList<>();
private boolean _update = true;
public Donor() { }
public void loadToken(DonorToken token)
void loadToken(DonorToken token)
{
_balances.put(GlobalCurrency.GEM, token.Gems);
_balances.put(GlobalCurrency.TREASURE_SHARD, token.Coins);
_donated = token.Donated;
_salesPackagesOwned = token.SalesPackages;
_unknownSalesPackagesOwned = token.UnknownSalesPackages;
@ -36,98 +33,119 @@ public class Donor
_coinTransactions = token.CoinRewards;
}
public List<Integer> GetSalesPackagesOwned()
/**
* Get the known sales packages that this donor owns, local to this server
*/
public List<Integer> getOwnedKnownSalesPackages()
{
return _salesPackagesOwned;
}
public List<String> GetUnknownSalesPackagesOwned()
/**
* Get the unknown sales packages that this donor owns, local to this server
*/
public List<String> getOwnedUnknownSalesPackages()
{
return _unknownSalesPackagesOwned;
}
public boolean Owns(Integer salesPackageId)
/**
* Checks whether this donor owns the specified known sales package, local to this server
*
* @return True if this donor owns the specified package, or if the id specified is -1
*/
public boolean ownsKnownSalesPackage(int id)
{
return salesPackageId == -1 || _salesPackagesOwned.contains(salesPackageId);
return id == -1 || _salesPackagesOwned.contains(id);
}
public void AddSalesPackagesOwned(int salesPackageId)
/**
* Checks whether this donor owns the specified unknown sales package, local to this server
*
* @param packageName The package name, case sensitive
*/
public boolean ownsUnknownSalesPackage(String packageName)
{
return _unknownSalesPackagesOwned.contains(packageName);
}
/**
* Adds a sales package to this donor, local to this server
*/
public void addOwnedKnownSalesPackage(int salesPackageId)
{
_salesPackagesOwned.add(salesPackageId);
}
public boolean HasDonated()
/**
* Adds an unknown sales package to this donor, local to this server
*
* @param packageName The package name, case sensitive
*/
public void addOwnedUnknownSalesPackage(String packageName)
{
return _donated;
_unknownSalesPackagesOwned.add(packageName);
}
public void DeductCost(int cost, GlobalCurrency currencyType)
/**
* Removes a known sales package from this donor, local to this server
*/
public void removeOwnedKnownSalesPackage(int id)
{
addBalance(currencyType, -cost);
_salesPackagesOwned.remove(id);
}
/**
* Removes an unknown sales package from this donor, local to this server
*
* @param packageName The package name, case sensitive
*/
public void removeOwnedUnknownSalesPackage(String packageName)
{
_unknownSalesPackagesOwned.remove(packageName);
}
/**
* Gets the balance of the specified currency for this donor, local to this server
*/
public int getBalance(GlobalCurrency currencyType)
{
return _balances.getOrDefault(currencyType, 0);
}
/**
* Modifies the balance of the specified currency by the given amount, local to this server
*
* @param amount The amount to modify the balance by. Can be positive or negative
*/
public void addBalance(GlobalCurrency currencyType, int amount)
{
_balances.merge(currencyType, amount, Integer::sum);
}
public boolean OwnsUnknownPackage(String packageName)
{
return _unknownSalesPackagesOwned.contains(packageName);
}
public boolean Updated()
{
return _update;
}
public void AddUnknownSalesPackagesOwned(String packageName)
{
_unknownSalesPackagesOwned.add(packageName);
}
public void RemoveUnknownSalesPackagesOwned(String packageName)
{
_unknownSalesPackagesOwned.remove(packageName);
}
/**
* Get the transactions associated to this player, local to this server
*/
public List<TransactionToken> getTransactions()
{
return _transactions;
}
public boolean OwnsUltraPackage()
{
for (String packageName : _unknownSalesPackagesOwned)
{
if (packageName.contains("ULTRA"))
return true;
}
return false;
}
/**
* Get the coin transactions associated to this player, local to this server
*/
public List<CoinTransactionToken> getCoinTransactions()
{
return _coinTransactions;
}
public void removeAllPackages(String packageName)
/**
* Clears all owned unknown packages with the given name, because it's a List
*
* @param packageName The name
*/
public void removeAllOwnedUnknownSalesPackages(String packageName)
{
Iterator<String> iterator = _unknownSalesPackagesOwned.iterator();
while (iterator.hasNext())
{
String pack = iterator.next();
if (pack.equals(packageName))
{
iterator.remove();
_unknownSalesPackagesOwned.removeIf(pack -> pack.equals(packageName));
}
}
}
}

View File

@ -1,71 +0,0 @@
package mineplex.core.donation;
import mineplex.core.common.util.Callback;
import java.util.UUID;
public class GiveDonorData
{
private final String _playerName;
private final String _caller;
private final UUID _uuid;
private final int _accountId;
private final int _giveAmount;
private final Callback<Boolean> _callback;
private int _attempts;
public GiveDonorData(Callback<Boolean> callback, String playerName, String caller, UUID uuid, int accountId, int giveAmount)
{
_callback = callback;
_playerName = playerName;
_caller = caller;
_uuid = uuid;
_accountId = accountId;
_giveAmount = giveAmount;
}
public GiveDonorData(Callback<Boolean> callback, String playerName, String caller, int accountId, int giveAmount)
{
this(callback, playerName, caller, null, accountId, giveAmount);
}
public UUID getUuid()
{
return _uuid;
}
public Callback<Boolean> getCallback()
{
return _callback;
}
public String getPlayerName()
{
return _playerName;
}
public String getCaller()
{
return _caller;
}
public int getAccountId()
{
return _accountId;
}
public int getGiveAmount()
{
return _giveAmount;
}
public int getAttempts()
{
return _attempts;
}
public void incrementAttempts()
{
_attempts++;
}
}

View File

@ -1,14 +1,13 @@
package mineplex.core.donation.command;
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import mineplex.core.account.CoreClient;
import mineplex.core.command.CommandBase;
import mineplex.core.common.Rank;
import mineplex.core.common.util.Callback;
import mineplex.core.common.currency.GlobalCurrency;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UUIDFetcher;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.donation.DonationManager;
@ -30,100 +29,72 @@ public class GemCommand extends CommandBase<DonationManager>
}
String targetName = args[0];
String gemsString = args[1];
Player target = UtilPlayer.searchExact(targetName);
int amount;
try
{
amount = Integer.parseInt(args[1]);
}
catch (NumberFormatException ex)
{
UtilPlayer.message(caller, F.main("Gem", "Invalid gems Amount"));
return;
}
if (targetName.equalsIgnoreCase("@a"))
{
rewardAllGems(caller, gemsString);
rewardAllGems(caller, amount);
}
else if (target == null)
else
{
UUID uuid = UUIDFetcher.getUUIDOf(targetName);
if (uuid != null)
Plugin.getClientManager().getOrLoadClient(targetName, client ->
{
rewardGems(caller, null, targetName, uuid, gemsString);
if (client != null)
{
rewardGems(caller, client, amount);
}
else
{
UtilPlayer.message(caller, F.main("Gem", "Could not find player " + F.name(targetName)));
}
}
else
{
rewardGems(caller, target, target.getName(), target.getUniqueId(), gemsString);
});
}
}
private void rewardAllGems(Player caller, String gemsString)
private void rewardAllGems(Player caller, int gems)
{
try
{
int gems = Integer.parseInt(gemsString);
if (gems > 1000)
{
UtilPlayer.message(caller, F.main("Gem", "You can only give everybody 1000 gems at a time."));
return;
}
rewardAllGems(caller, gems);
}
catch (Exception e)
{
UtilPlayer.message(caller, F.main("Gem", "Invalid gems Amount"));
}
}
private void rewardAllGems(Player caller, int gems)
{
for (Player player : UtilServer.getPlayers())
{
Plugin.RewardGems(new Callback<Boolean>()
{
public void run(Boolean completed)
{
}
}, caller.getName(), player.getName(), player.getUniqueId(), gems);
Plugin.rewardCurrency(GlobalCurrency.GEM, player, caller.getName(), gems);
}
UtilPlayer.message(caller, F.main("Gem", "Gave everyone " + F.elem(gems + " gems")));
}
private void rewardGems(final Player caller, final Player target, final String targetName, final UUID uuid, String gemsString)
private void rewardGems(Player caller, CoreClient target, int gems)
{
try
{
int gems = Integer.parseInt(gemsString);
rewardGems(caller, target, targetName, uuid, gems);
}
catch (Exception e)
{
UtilPlayer.message(caller, F.main("Gem", "Invalid gems Amount"));
}
}
private void rewardGems(final Player caller, final Player target, final String targetName, final UUID uuid, final int gems)
{
Plugin.RewardGems(new Callback<Boolean>()
{
public void run(Boolean completed)
Plugin.rewardCurrency(GlobalCurrency.GEM, target, caller.getName(), gems, completed ->
{
if (completed)
{
UtilPlayer.message(caller, F.main("Gem", "You gave " + F.elem(gems + " gems") + " to " + F.name(targetName) + "."));
UtilPlayer.message(caller, F.main("Gem", "You gave " + F.elem(gems + " gems") + " to " + F.name(target.getRealOrDisguisedName()) + "."));
if (target != null)
if (Bukkit.getPlayer(target.getUniqueId()) != null)
{
UtilPlayer.message(target, F.main("Gem", F.name(caller.getName()) + " gave you " + F.elem(gems + " gems") + "."));
UtilPlayer.message(Bukkit.getPlayer(target.getUniqueId()), F.main("Gem", F.name(caller.getName()) + " gave you " + F.elem(gems + " gems") + "."));
}
}
else
{
UtilPlayer.message(caller, F.main("Gem", "There was an error giving " + F.elem(gems + " gems") + " to " + F.name(targetName) + "."));
UtilPlayer.message(caller, F.main("Gem", "There was an error giving " + F.elem(gems + " gems") + " to " + F.name(target.getRealOrDisguisedName()) + "."));
}
}
}, caller.getName(), targetName, uuid, gems);
});
}
}

View File

@ -1,14 +1,16 @@
package mineplex.core.donation.command;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import mineplex.core.account.CoreClient;
import mineplex.core.command.CommandBase;
import mineplex.core.common.Rank;
import mineplex.core.common.util.Callback;
import mineplex.core.common.currency.GlobalCurrency;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.common.util.UtilServer;
import mineplex.core.donation.DonationManager;
import org.bukkit.entity.Player;
public class ShardCommand extends CommandBase<DonationManager>
{
@ -27,102 +29,72 @@ public class ShardCommand extends CommandBase<DonationManager>
}
final String targetName = args[0];
final String coinsString = args[1];
Player target = UtilPlayer.searchExact(targetName);
int amount;
try
{
amount = Integer.parseInt(args[1]);
}
catch (NumberFormatException ex)
{
UtilPlayer.message(caller, F.main("Shards", "Invalid Shards Amount"));
return;
}
if (targetName.equalsIgnoreCase("@a"))
{
rewardAllShards(caller, coinsString);
rewardAllShards(caller, amount);
}
else if (target == null)
else
{
Plugin.getClientManager().loadClientByName(targetName, client ->
Plugin.getClientManager().getOrLoadClient(targetName, client ->
{
if (client != null)
rewardCoins(caller, null, targetName, client.getAccountId(), coinsString);
{
rewardCoins(caller, client, amount);
}
else
{
UtilPlayer.message(caller, F.main("Shards", "Could not find player " + F.name(targetName)));
}
});
}
else
{
rewardCoins(caller, target, target.getName(), Plugin.getClientManager().Get(target).getAccountId(), coinsString);
}
}
private void rewardAllShards(Player caller, String shardsString)
private void rewardAllShards(Player caller, int shards)
{
try
{
int shards = Integer.parseInt(shardsString);
if (shards > 1000)
{
UtilPlayer.message(caller, F.main("Shards", "You can only give everybody 1000 shards at a time."));
return;
}
rewardAllShards(caller, shards);
}
catch (Exception e)
{
UtilPlayer.message(caller, F.main("Shards", "Invalid Shards Amount"));
}
}
private void rewardAllShards(Player caller, int shards)
{
for (Player player : UtilServer.getPlayers())
{
CoreClient client = Plugin.getClientManager().Get(player);
Plugin.RewardCoins(new Callback<Boolean>()
{
public void run(Boolean completed)
{
}
}, caller.getName(), player.getName(), client.getAccountId(), shards);
Plugin.rewardCurrency(GlobalCurrency.TREASURE_SHARD, player, caller.getName(), shards);
}
UtilPlayer.message(caller, F.main("Shards", "Gave everyone " + F.elem(shards + " Treasure Shards")));
}
private void rewardCoins(final Player caller, final Player target, final String targetName, final int accountId, String coinsString)
private void rewardCoins(Player caller, CoreClient target, int coins)
{
try
{
int coins = Integer.parseInt(coinsString);
rewardCoins(caller, target, targetName, accountId, coins);
}
catch (Exception e)
{
UtilPlayer.message(caller, F.main("Shards", "Invalid Shards Amount"));
}
}
private void rewardCoins(final Player caller, final Player target, final String targetName, final int accountId, final int coins)
{
Plugin.RewardCoins(new Callback<Boolean>()
{
public void run(Boolean completed)
Plugin.rewardCurrency(GlobalCurrency.TREASURE_SHARD, target, caller.getName(), coins, completed ->
{
if (completed)
{
UtilPlayer.message(caller, F.main("Shards", "You gave " + F.elem(coins + " Treasure Shards") + " to " + F.name(targetName) + "."));
UtilPlayer.message(caller, F.main("Shards", "You gave " + F.elem(coins + " Treasure Shards") + " to " + F.name(target.getRealOrDisguisedName()) + "."));
if (target != null)
if (Bukkit.getPlayer(target.getUniqueId()) != null)
{
UtilPlayer.message(target, F.main("Shards", F.name(caller.getName()) + " gave you " + F.elem(coins + " Treasure Shards") + "."));
UtilPlayer.message(Bukkit.getPlayer(target.getUniqueId()), F.main("Shards", F.name(caller.getName()) + " gave you " + F.elem(coins + " Treasure Shards") + "."));
}
}
else
{
UtilPlayer.message(caller, F.main("Shards", "There was an error giving " + F.elem(coins + "Treasure Shards") + " to " + F.name(targetName) + "."));
UtilPlayer.message(caller, F.main("Shards", "There was an error giving " + F.elem(coins + "Treasure Shards") + " to " + F.name(target.getRealOrDisguisedName()) + "."));
}
}
}, caller.getName(), targetName, accountId, coins);
});
}
}

View File

@ -1,8 +1,12 @@
package mineplex.core.donation.repository;
import java.util.HashMap;
import java.util.Map;
import java.util.function.Consumer;
import mineplex.core.common.currency.Currency;
import mineplex.core.common.currency.GlobalCurrency;
import mineplex.core.common.util.Callback;
import mineplex.core.common.util.UtilTasks;
import mineplex.core.database.MinecraftRepository;
import mineplex.core.donation.repository.token.GemRewardToken;
import mineplex.core.donation.repository.token.PurchaseToken;
@ -12,193 +16,101 @@ import mineplex.core.server.remotecall.JsonWebCall;
import mineplex.core.server.util.TransactionResponse;
import mineplex.serverdata.database.DBPool;
import mineplex.serverdata.database.DatabaseRunnable;
import mineplex.serverdata.database.column.ColumnInt;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;
public class DonationRepository extends MinecraftRepository
{
private static String CREATE_COIN_TRANSACTION_TABLE = "CREATE TABLE IF NOT EXISTS accountCoinTransactions (id INT NOT NULL AUTO_INCREMENT, accountId INT, reason VARCHAR(100), coins INT, PRIMARY KEY (id), FOREIGN KEY (accountId) REFERENCES accounts(id));";
private static String CREATE_GEM_TRANSACTION_TABLE = "CREATE TABLE IF NOT EXISTS accountGemTransactions (id INT NOT NULL AUTO_INCREMENT, accountId INT, reason VARCHAR(100), gems INT, PRIMARY KEY (id), FOREIGN KEY (accountId) REFERENCES accounts(id));";
private static String INSERT_COIN_TRANSACTION = "INSERT INTO accountCoinTransactions(accountId, reason, coins) VALUES(?, ?, ?);";
private static String UPDATE_ACCOUNT_COINS = "UPDATE accounts SET coins = coins + ? WHERE id = ?;";
private static String UPDATE_NULL_ACCOUNT_GEMS_AND_COINS_ = "UPDATE accounts SET gems = ?, coins = ? WHERE id = ? AND gems IS NULL AND coins IS NULL;";
private static Map<GlobalCurrency, String> WEB_ADDRESSES = new HashMap<>();
private String _webAddress;
public DonationRepository(JavaPlugin plugin, String webAddress)
static
{
super(plugin, DBPool.getAccount());
_webAddress = webAddress;
WEB_ADDRESSES.put(GlobalCurrency.GEM, "PlayerAccount/GemReward");
WEB_ADDRESSES.put(GlobalCurrency.TREASURE_SHARD, "PlayerAccount/CoinReward");
}
public void PurchaseKnownSalesPackage(final Callback<TransactionResponse> callback, String name, final String uuid, final int cost, final int salesPackageId)
public DonationRepository()
{
final PurchaseToken token = new PurchaseToken();
token.AccountName = name;
super(DBPool.getAccount());
}
/**
* Purchases a known sales package.. whatever that means
*
* @param playerName The player name
* @param salesPackageId The package id
* @param callback The callback, may be null, will be run on the main thread
*/
public void purchaseKnownSalesPackage(String playerName, int salesPackageId, Consumer<TransactionResponse> callback)
{
PurchaseToken token = new PurchaseToken();
token.AccountName = playerName;
token.UsingCredits = false;
token.SalesPackageId = salesPackageId;
final Callback<TransactionResponse> extraCallback = new Callback<TransactionResponse>()
{
public void run(final TransactionResponse response)
{
Bukkit.getServer().getScheduler().runTask(getPlugin(), new Runnable()
{
@Override
public void run()
{
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 : ");
handleMSSQLCall(
"PlayerAccount/PurchaseKnownSalesPackage",
String.format("Error purchasing known sales package %s for %s: ", salesPackageId, playerName),
token,
TransactionResponse.class,
UtilTasks.onMainThread(callback)
);
}
public void PurchaseUnknownSalesPackage(final Callback<TransactionResponse> callback, final String name, final int accountId, final String packageName, final Currency currencyType, final int cost)
/**
* Purchases an unknown sales package... or something
*
* @param playerName The name of the player
* @param packageName The name of the unknown package
* @param currencyType The type of currency
* @param cost The cost
* @param callback The callback, may be null. Will be run on the main thread
*/
public void purchaseUnknownSalesPackage(String playerName, String packageName, Currency currencyType, int cost, Consumer<TransactionResponse> callback)
{
final UnknownPurchaseToken token = new UnknownPurchaseToken();
token.AccountName = name;
UnknownPurchaseToken token = new UnknownPurchaseToken();
token.AccountName = playerName;
token.SalesPackageName = packageName;
token.CoinPurchase = currencyType == GlobalCurrency.TREASURE_SHARD;
token.Cost = cost;
token.Premium = false;
final Callback<TransactionResponse> extraCallback = new Callback<TransactionResponse>()
{
public void run(final TransactionResponse response)
{
if (response == TransactionResponse.Success)
{
if (currencyType == GlobalCurrency.TREASURE_SHARD)
{
executeUpdate(UPDATE_ACCOUNT_COINS, new ColumnInt("coins", -cost), new ColumnInt("id", accountId));
//executeUpdate(INSERT_COIN_TRANSACTION, new ColumnInt("id", accountId), new ColumnVarChar("reason", 100, "Purchased " + packageName), new ColumnInt("coins", -cost));
}
handleMSSQLCall(
"PlayerAccount/PurchaseUnknownSalesPackage",
String.format("Error purchasing unknown sales package %s for %s: ", packageName, playerName),
token,
TransactionResponse.class,
UtilTasks.onMainThread(callback)
);
}
Bukkit.getServer().getScheduler().runTask(getPlugin(), new Runnable()
/**
* Update a player's currency on the MSSQL server.
*
* @param currency The type of currency
* @param playerName The name of the player
* @param reason The reason of rewarding currency
* @param amount The amount (positive or negative)
* @param callback The callback, can be null. This will be run on the main thread
*/
public void reward(GlobalCurrency currency, String playerName, String reason, int amount, Consumer<Boolean> callback)
{
@Override
public void run()
{
callback.run(response);
}
});
}
};
GemRewardToken token = new GemRewardToken();
token.Source = reason;
token.Name = playerName;
token.Amount = amount;
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 gemReward(final Callback<Boolean> callback, final String giver, String name, final String uuid, final int greenGems)
{
final GemRewardToken token = new GemRewardToken();
token.Source = giver;
token.Name = name;
token.Amount = greenGems;
final Callback<Boolean> extraCallback = new Callback<Boolean>()
{
public void run(final Boolean response)
{
Bukkit.getServer().getScheduler().runTask(getPlugin(), new Runnable()
{
@Override
public void run()
{
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(final Callback<Boolean> callback, final String giver, String name, final int accountId, final int coins)
{
final GemRewardToken token = new GemRewardToken();
token.Source = giver;
token.Name = name;
token.Amount = coins;
final Callback<Boolean> extraCallback = new Callback<Boolean>()
{
public void run(final Boolean response)
{
if (response)
{
//executeUpdate(UPDATE_ACCOUNT_COINS, new ColumnInt("coins", coins), new ColumnInt("id", accountId));
//executeUpdate(INSERT_COIN_TRANSACTION, new ColumnInt("id", accountId), new ColumnVarChar("reason", 100, "Rewarded by " + giver), new ColumnInt("coins", coins));
}
Bukkit.getServer().getScheduler().runTask(getPlugin(), new Runnable()
{
@Override
public void run()
{
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 int accountId, 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 ColumnInt("id", accountId));
}
}), "Error updating player's null gems and coins DonationRepository : ");
handleMSSQLCall(
WEB_ADDRESSES.get(currency),
String.format("Error updating %s for %s: ", currency.getString(2), playerName),
token,
Boolean.class,
UtilTasks.onMainThread(callback)
);
}
public void applyKits(String playerName)
{
new AsyncJsonWebCall(_webAddress + "PlayerAccount/ApplyKits").Execute(playerName);
handleAsyncMSSQLCall("PlayerAccount/ApplyKits", playerName);
}
}

View File

@ -37,13 +37,7 @@ public class EloRepository extends MinecraftRepository
public EloRepository(JavaPlugin plugin)
{
super(plugin, DBPool.getAccount());
initialize();
}
public void initialize()
{
super(DBPool.getAccount());
}
public boolean saveElo(int accountId, int gameType, int oldElo, int elo) throws SQLException
@ -204,11 +198,6 @@ public class EloRepository extends MinecraftRepository
Bukkit.getScheduler().runTaskAsynchronously(getPlugin(), () -> executeUpdate(DELETE_STRIKES, new ColumnInt("accountId", accountId)));
}
@Override
protected void update()
{
}
public void getTopElo(int limit, Callback<List<TopEloData>> callback)
{
int gameId = 62;

View File

@ -8,7 +8,6 @@ import org.bukkit.plugin.java.JavaPlugin;
import mineplex.core.common.util.Callback;
import mineplex.serverdata.database.DBPool;
import mineplex.serverdata.database.RepositoryBase;
import mineplex.serverdata.database.ResultSetCallable;
import mineplex.serverdata.database.column.ColumnInt;
import mineplex.serverdata.database.column.ColumnVarChar;
@ -20,19 +19,7 @@ public class FacebookRepository extends MinecraftRepository
public FacebookRepository(JavaPlugin plugin)
{
super(plugin, DBPool.getAccount());
}
@Override
protected void initialize()
{
}
@Override
protected void update()
{
super(DBPool.getAccount());
}
public void getCode(String codeName, Callback<FacebookCode> callback)

View File

@ -36,23 +36,12 @@ public class FriendRepository extends MinecraftRepository
public FriendRepository(JavaPlugin plugin)
{
super(plugin, DBPool.getAccount());
super(DBPool.getAccount());
_repository = new RedisDataRepository<PlayerStatus>(ServerManager.getMasterConnection(), ServerManager.getSlaveConnection(),
Region.currentRegion(), PlayerStatus.class, "playerStatus");
}
@Override
protected void initialize()
{
//executeUpdate(CREATE_FRIEND_TABLE);
}
@Override
protected void update()
{
}
public boolean addFriend(final Player caller, String name)
{
int rowsAffected = executeUpdate(ADD_FRIEND_RECORD, new ColumnVarChar("status", 100, "Sent"), new ColumnVarChar("name", 100, name), new ColumnVarChar("name", 100, caller.getName()));

View File

@ -72,9 +72,9 @@ public class LockCosmeticsCommand extends CommandBase<GadgetManager>
names[i++] = gadget.getName();
for (String name : names)
{
if (donor.OwnsUnknownPackage(name))
if (donor.ownsUnknownSalesPackage(name))
{
donor.removeAllPackages(name);
donor.removeAllOwnedUnknownSalesPackages(name);
removed++;
}
}
@ -89,14 +89,14 @@ public class LockCosmeticsCommand extends CommandBase<GadgetManager>
int removed = 0;
for (Mount<?> mount : _plugin.getMountManager().getMounts())
{
if (donor.OwnsUnknownPackage(mount.getName()))
if (donor.ownsUnknownSalesPackage(mount.getName()))
{
donor.removeAllPackages(mount.getName());
donor.removeAllOwnedUnknownSalesPackages(mount.getName());
removed++;
}
else if (mount.hasMount(caller))
{
donor.removeAllPackages(mount.getName());
donor.removeAllOwnedUnknownSalesPackages(mount.getName());
removed++;
}
}

View File

@ -67,14 +67,14 @@ public class LockInfusedCommand extends CommandBase<GadgetManager>
for (Gadget gadget : infusedItems)
{
_manager.getDonationManager().Get(player).removeAllPackages(gadget.getName());
_manager.getDonationManager().Get(player).removeAllOwnedUnknownSalesPackages(gadget.getName());
for (String possibleName : gadget.getAlternativePackageNames())
{
_manager.getDonationManager().Get(player).removeAllPackages(possibleName);
_manager.getDonationManager().Get(player).removeAllOwnedUnknownSalesPackages(possibleName);
}
}
_manager.getDonationManager().Get(player).removeAllPackages(mount.getName());
_manager.getDonationManager().Get(player).removeAllOwnedUnknownSalesPackages(mount.getName());
}

View File

@ -73,14 +73,14 @@ public class UnlockCosmeticsCommand extends CommandBase<GadgetManager>
names[i++] = gadget.getName();
for (String name : names)
{
if (donor.OwnsUnknownPackage(name))
if (donor.ownsUnknownSalesPackage(name))
{
hasGadget = true;
}
}
if (!hasGadget)
{
donor.AddUnknownSalesPackagesOwned(gadget.getName());
donor.addOwnedUnknownSalesPackage(gadget.getName());
added++;
}
}
@ -94,14 +94,14 @@ public class UnlockCosmeticsCommand extends CommandBase<GadgetManager>
int added = 0;
for (Mount<?> mount : _plugin.getMountManager().getMounts())
{
if (!donor.OwnsUnknownPackage(mount.getName()))
if (!donor.ownsUnknownSalesPackage(mount.getName()))
{
donor.AddUnknownSalesPackagesOwned(mount.getName());
donor.addOwnedUnknownSalesPackage(mount.getName());
added++;
}
else if (!mount.hasMount(caller))
{
donor.AddUnknownSalesPackagesOwned(mount.getName());
donor.addOwnedUnknownSalesPackage(mount.getName());
added++;
}
}

View File

@ -45,7 +45,7 @@ public class ArrowTrailTitan extends ArrowEffectGadget
{
if (Manager.getClientManager().Get(event.getPlayer()).GetRank().has(Rank.TITAN))
{
Manager.getDonationManager().Get(event.getPlayer()).AddUnknownSalesPackagesOwned(getName());
Manager.getDonationManager().Get(event.getPlayer()).addOwnedUnknownSalesPackage(getName());
}
}
}

View File

@ -34,7 +34,7 @@ public class DeathTitan extends DeathEffectGadget
{
if (Manager.getClientManager().Get(event.getPlayer()).GetRank().has(Rank.TITAN))
{
Manager.getDonationManager().Get(event.getPlayer()).AddUnknownSalesPackagesOwned(getName());
Manager.getDonationManager().Get(event.getPlayer()).addOwnedUnknownSalesPackage(getName());
}
}

View File

@ -39,7 +39,7 @@ public class DoubleJumpTitan extends DoubleJumpEffectGadget
{
if (Manager.getClientManager().Get(event.getPlayer()).GetRank().has(Rank.TITAN))
{
Manager.getDonationManager().Get(event.getPlayer()).AddUnknownSalesPackagesOwned(getName());
Manager.getDonationManager().Get(event.getPlayer()).addOwnedUnknownSalesPackage(getName());
}
}
}

View File

@ -105,7 +105,7 @@ public class ItemCoal extends ItemGadget
Manager.getInventoryManager().addItemToInventory(player, getName(), -_hat);
player.getInventory().setItem(Manager.getActiveItemSlot(), ItemStackFactory.Instance.CreateStack(getDisplayMaterial(), getDisplayData(), 1, F.item(Manager.getInventoryManager().Get(player).getItemCount(getName()) + " " + getName())));
Manager.getDonationManager().Get(player).AddUnknownSalesPackagesOwned("Lump of Coal Hat");
Manager.getDonationManager().Get(player).addOwnedUnknownSalesPackage("Lump of Coal Hat");
}
else
{
@ -147,7 +147,7 @@ public class ItemCoal extends ItemGadget
Manager.getInventoryManager().addItemToInventory(player, getName(), -_pet);
player.getInventory().setItem(Manager.getActiveItemSlot(), ItemStackFactory.Instance.CreateStack(getDisplayMaterial(), getDisplayData(), 1, F.item(Manager.getInventoryManager().Get(player).getItemCount(getName()) + " " + getName())));
Manager.getDonationManager().Get(player).AddUnknownSalesPackagesOwned("Coal Apparition");
Manager.getDonationManager().Get(player).addOwnedUnknownSalesPackage("Coal Apparition");
}
});
@ -180,7 +180,7 @@ public class ItemCoal extends ItemGadget
Manager.getInventoryManager().addItemToInventory(player, getName(), -_particle);
player.getInventory().setItem(Manager.getActiveItemSlot(), ItemStackFactory.Instance.CreateStack(getDisplayMaterial(), getDisplayData(), 1, F.item(Manager.getInventoryManager().Get(player).getItemCount(getName()) + " " + getName())));
Manager.getDonationManager().Get(player).AddUnknownSalesPackagesOwned("Coal Fumes");
Manager.getDonationManager().Get(player).addOwnedUnknownSalesPackage("Coal Fumes");
}
else
{

View File

@ -16,6 +16,7 @@ import org.bukkit.event.player.PlayerPickupItemEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.util.Vector;
import mineplex.core.common.currency.GlobalCurrency;
import mineplex.core.common.util.C;
import mineplex.core.common.util.LineFormat;
import mineplex.core.common.util.UtilAction;
@ -40,8 +41,8 @@ public class ItemCoinBomb extends ItemGadget
super(manager, "Treasure Party Bomb",
UtilText.splitLineToArray(C.cWhite + "It's party time! You'll be everyone's favourite player when you use one of these!", LineFormat.LORE),
-1,
Material.PRISMARINE, (byte)0,
30000, new Ammo("Treasure Party Bomb", "1 Coin Party Bomb", Material.PRISMARINE, (byte)0, new String[] { C.cWhite + "1 Treasure Party Bomb" }, 2000, 1));
Material.PRISMARINE, (byte) 0,
30000, new Ammo("Treasure Party Bomb", "1 Coin Party Bomb", Material.PRISMARINE, (byte) 0, new String[]{C.cWhite + "1 Treasure Party Bomb"}, 2000, 1));
}
@Override
@ -80,9 +81,9 @@ public class ItemCoinBomb extends ItemGadget
//Velocity
long passed = System.currentTimeMillis() - time;
Vector vel = new Vector(Math.sin(passed/300d), 0, Math.cos(passed/300d));
Vector vel = new Vector(Math.sin(passed / 300d), 0, Math.cos(passed / 300d));
UtilAction.velocity(coin, vel, Math.abs(Math.sin(passed/3000d)), false, 0, 0.2 + Math.abs(Math.cos(passed/3000d))*0.8, 1, false);
UtilAction.velocity(coin, vel, Math.abs(Math.sin(passed / 3000d)), false, 0, 0.2 + Math.abs(Math.cos(passed / 3000d)) * 0.8, 1, false);
coin.setPickupDelay(40);
@ -109,7 +110,7 @@ public class ItemCoinBomb extends ItemGadget
event.setCancelled(true);
event.getItem().remove();
Manager.getDonationManager().RewardCoinsLater(getName() + " Pickup", event.getPlayer(), 4);
Manager.getDonationManager().rewardCurrency(GlobalCurrency.TREASURE_SHARD, event.getPlayer(), getName() + " Pickup", 4);
event.getPlayer().getWorld().playSound(event.getPlayer().getLocation(), Sound.ORB_PICKUP, 1f, 2f);

View File

@ -83,7 +83,7 @@ public class MorphBlaze extends MorphGadget
{
if (Manager.getClientManager().Get(event.getPlayer()).GetRank().has(Rank.HERO))
{
Manager.getDonationManager().Get(event.getPlayer()).AddUnknownSalesPackagesOwned(getName());
Manager.getDonationManager().Get(event.getPlayer()).addOwnedUnknownSalesPackage(getName());
}
}
}

View File

@ -59,10 +59,10 @@ public class MorphBunny extends MorphGadget
"#" + C.cWhite + "Charge Crouch to use Super Jump",
"#" + C.cWhite + "Left Click to use Hide Easter Egg",
C.blankLine,
"#" + C.cRed +C.Bold + "WARNING: " + ChatColor.RESET + "Hide Easter Egg uses 500 Shards" ,
"#" + C.cRed + C.Bold + "WARNING: " + ChatColor.RESET + "Hide Easter Egg uses 500 Shards",
}, LineFormat.LORE),
-5,
Material.MONSTER_EGG, (byte)98);
Material.MONSTER_EGG, (byte) 98);
}
@Override
@ -163,14 +163,14 @@ public class MorphBunny extends MorphGadget
//Item
ItemStack eggStack = ItemStackFactory.Instance.CreateStack(Material.MONSTER_EGG, (byte)0, 1, "Hidden Egg" + System.currentTimeMillis());
ItemStack eggStack = ItemStackFactory.Instance.CreateStack(Material.MONSTER_EGG, (byte) 0, 1, "Hidden Egg" + System.currentTimeMillis());
eggStack.setDurability((short) 98);
Item egg = player.getWorld().dropItem(player.getEyeLocation().add(player.getLocation().getDirection()), eggStack);
UtilAction.velocity(egg, player.getLocation().getDirection(), 0.2, false, 0, 0.2, 1, false);
Manager.getDonationManager().RewardCoinsLater(this.getName() + " Egg Hide", player, -500);
Manager.getDonationManager().rewardCurrency(GlobalCurrency.TREASURE_SHARD, player, this.getName() + " Egg Hide", -500);
egg.setPickupDelay(40);
@ -197,7 +197,7 @@ public class MorphBunny extends MorphGadget
event.setCancelled(true);
event.getItem().remove();
Manager.getDonationManager().RewardCoinsLater(getName() + " Egg Pickup", event.getPlayer(), 450);
Manager.getDonationManager().rewardCurrency(GlobalCurrency.TREASURE_SHARD, event.getPlayer(), getName() + " Egg Pickup", 450);
event.getPlayer().getWorld().playSound(event.getPlayer().getLocation(), Sound.ORB_PICKUP, 1.5f, 0.75f);
event.getPlayer().getWorld().playSound(event.getPlayer().getLocation(), Sound.ORB_PICKUP, 1.5f, 1.25f);

View File

@ -170,7 +170,7 @@ public class MorphCreeper extends MorphGadget
{
if (Manager.getClientManager().Get(event.getPlayer()).GetRank().has(Rank.HERO))
{
Manager.getDonationManager().Get(event.getPlayer()).AddUnknownSalesPackagesOwned(getName());
Manager.getDonationManager().Get(event.getPlayer()).addOwnedUnknownSalesPackage(getName());
}
}

View File

@ -86,7 +86,7 @@ public class MorphPig extends MorphGadget
{
if (Manager.getClientManager().Get(event.getPlayer()).GetRank().has(Rank.ULTRA))
{
Manager.getDonationManager().Get(event.getPlayer()).AddUnknownSalesPackagesOwned(getName());
Manager.getDonationManager().Get(event.getPlayer()).addOwnedUnknownSalesPackage(getName());
}
}

View File

@ -227,7 +227,7 @@ public class MorphTitan extends MorphGadget
{
if (Manager.getClientManager().Get(event.getPlayer()).GetRank().has(Rank.TITAN))
{
Manager.getDonationManager().Get(event.getPlayer()).AddUnknownSalesPackagesOwned(getName());
Manager.getDonationManager().Get(event.getPlayer()).addOwnedUnknownSalesPackage(getName());
}
}

View File

@ -48,10 +48,10 @@ public class MorphVillager extends MorphGadget implements IThrown
C.blankLine,
"#" + C.cWhite + "Left Click to use Gem Throw",
C.blankLine,
"#" + C.cRed +C.Bold + "WARNING: " + ChatColor.RESET + "Gem Throw uses 20 Gems"
"#" + C.cRed + C.Bold + "WARNING: " + ChatColor.RESET + "Gem Throw uses 20 Gems"
}, LineFormat.LORE),
12000,
Material.EMERALD, (byte)0);
Material.EMERALD, (byte) 0);
}
@Override
@ -100,7 +100,7 @@ public class MorphVillager extends MorphGadget implements IThrown
Manager.getProjectileManager().AddThrow(gem, player, this, -1, true, true, true, true,
null, 1.4f, 0.8f, null, null, 0, UpdateType.TICK, 0.5f);
Manager.getDonationManager().RewardGems(null, this.getName() + " Throw", player.getName(), player.getUniqueId(), -20);
Manager.getDonationManager().rewardCurrency(GlobalCurrency.GEM, player, this.getName() + " Throw", -20);
gem.setPickupDelay(40);
@ -150,7 +150,7 @@ public class MorphVillager extends MorphGadget implements IThrown
event.setCancelled(true);
event.getItem().remove();
Manager.getDonationManager().RewardGemsLater(getName() + " Pickup", event.getPlayer(), 16);
Manager.getDonationManager().rewardCurrency(GlobalCurrency.GEM, event.getPlayer(), getName() + " Pickup", 16);
event.getPlayer().getWorld().playSound(event.getPlayer().getLocation(), Sound.ORB_PICKUP, 1f, 2f);
}

View File

@ -56,7 +56,7 @@ public class ParticleKronos extends ParticleGadget
/*Until it becomes purchasable*/if (Manager.getClientManager().Get(event.getPlayer()).GetRank().equals(Rank.TITAN))
//if (Manager.getClientManager().Get(event.getPlayer()).GetRank().has(Rank.TITAN))
{
Manager.getDonationManager().Get(event.getPlayer()).AddUnknownSalesPackagesOwned(getName());
Manager.getDonationManager().Get(event.getPlayer()).addOwnedUnknownSalesPackage(getName());
}
}

View File

@ -96,7 +96,7 @@ public class ParticleTitan extends ParticleGadget
{
if (Manager.getClientManager().Get(event.getPlayer()).GetRank().has(Rank.TITAN))
{
Manager.getDonationManager().Get(event.getPlayer()).AddUnknownSalesPackagesOwned(getName());
Manager.getDonationManager().Get(event.getPlayer()).addOwnedUnknownSalesPackage(getName());
}
}
}

View File

@ -182,12 +182,12 @@ public abstract class Gadget extends SalesPackageBase implements Listener
public boolean ownsGadget(Player player)
{
if(isFree() || _free) return true;
if(Manager.getDonationManager().Get(player).OwnsUnknownPackage(getName())) { return true; }
if(Manager.getDonationManager().Get(player).ownsUnknownSalesPackage(getName())) { return true; }
if(Manager.getInventoryManager().Get(player).getItemCount(getName()) > 0) { return true; }
for(String alt : _alternativePackageNames)
{
if(Manager.getDonationManager().Get(player).OwnsUnknownPackage(alt)) { return true; }
if(Manager.getDonationManager().Get(player).ownsUnknownSalesPackage(alt)) { return true; }
if(Manager.getInventoryManager().Get(player).getItemCount(alt) > 0) { return true; }
}

View File

@ -12,7 +12,6 @@ import mineplex.core.database.MinecraftRepository;
import org.bukkit.plugin.java.JavaPlugin;
import mineplex.serverdata.database.DBPool;
import mineplex.serverdata.database.RepositoryBase;
import mineplex.serverdata.database.ResultSetCallable;
import mineplex.serverdata.database.column.ColumnInt;
import mineplex.serverdata.database.column.ColumnVarChar;
@ -26,7 +25,7 @@ public class GiveawayRepository extends MinecraftRepository
public GiveawayRepository(JavaPlugin plugin)
{
super(plugin, DBPool.getAccount());
super(DBPool.getAccount());
}
public boolean canGiveaway(int accountId, String giveawayName, String cooldownName)
@ -119,16 +118,4 @@ public class GiveawayRepository extends MinecraftRepository
return giveawayData;
}
@Override
protected void initialize()
{
}
@Override
protected void update()
{
}
}

View File

@ -6,6 +6,7 @@ import org.bukkit.event.Listener;
import mineplex.core.account.CoreClientManager;
import mineplex.core.common.Rank;
import mineplex.core.common.currency.GlobalCurrency;
import mineplex.core.common.util.C;
import mineplex.core.common.util.Callback;
import mineplex.core.common.util.F;
@ -68,15 +69,14 @@ public class GlobalGiveCoins implements Listener
final int fAmount = amount;
for (final Player p : UtilServer.getPlayers())
{
_donationManager.RewardCoins(new Callback<Boolean>()
_donationManager.rewardCurrency(GlobalCurrency.TREASURE_SHARD, p, "Global Coins", amount, response ->
{
@Override
public void run(Boolean data)
if (response)
{
UtilPlayer.message(p, F.main("Global", "You received " + F.elem(fAmount + " Coins") + "."));
UtilTextMiddle.display(C.cYellow + fAmount + " Coins", C.cGold + "received from " + e.getCallerName() + "!", p);
}
}, "Global Coins", p.getName(), _clientManager.getAccountId(p), amount);
});
}
}
}

View File

@ -5,6 +5,7 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import mineplex.core.common.Rank;
import mineplex.core.common.currency.GlobalCurrency;
import mineplex.core.common.util.C;
import mineplex.core.common.util.Callback;
import mineplex.core.common.util.F;
@ -65,15 +66,11 @@ public class GlobalGiveGems implements Listener
final int fAmount = amount;
for (final Player p : UtilServer.getPlayers())
{
_donationManager.RewardGems(new Callback<Boolean>()
{
@Override
public void run(Boolean data)
_donationManager.rewardCurrency(GlobalCurrency.GEM, p, "Global Gems", amount, success ->
{
UtilPlayer.message(p, F.main("Global", "You received " + F.elem(fAmount + " Gems") + "."));
UtilTextMiddle.display(C.cYellow + fAmount + " Gems", C.cGold + "received from " + e.getCallerName() + "!", p);
}
}, "Global Gems", p.getName(), p.getUniqueId(), amount);
});
}
}
}

View File

@ -5,7 +5,6 @@ import java.sql.SQLException;
import mineplex.core.database.MinecraftRepository;
import mineplex.serverdata.database.DBPool;
import mineplex.serverdata.database.RepositoryBase;
import mineplex.serverdata.database.column.ColumnVarChar;
import org.bukkit.entity.Player;
@ -18,17 +17,7 @@ public class IgnoreRepository extends MinecraftRepository
public IgnoreRepository(JavaPlugin plugin)
{
super(plugin, DBPool.getAccount());
}
@Override
protected void initialize()
{
}
@Override
protected void update()
{
super(DBPool.getAccount());
}
public boolean addIgnore(final Player caller, String name)

View File

@ -13,7 +13,7 @@ public class IncognitoRepository extends MinecraftRepository
public IncognitoRepository(IncognitoManager incognitoManager)
{
super(incognitoManager.getPlugin(), DBPool.getAccount());
super(DBPool.getAccount());
}
public void setStatus(int accountId, boolean status)
@ -26,8 +26,4 @@ public class IncognitoRepository extends MinecraftRepository
{
executeUpdate(CREATE_TABLE);
}
protected void update()
{
}
}

View File

@ -10,7 +10,6 @@ import org.bukkit.plugin.java.JavaPlugin;
import mineplex.core.common.util.NautHashMap;
import mineplex.serverdata.database.DBPool;
import mineplex.serverdata.database.RepositoryBase;
import mineplex.serverdata.database.ResultSetCallable;
import mineplex.serverdata.database.column.ColumnInt;
import mineplex.serverdata.database.column.ColumnVarChar;
@ -30,21 +29,7 @@ public class InventoryRepository extends MinecraftRepository
public InventoryRepository(JavaPlugin plugin)
{
super(plugin, DBPool.getAccount());
}
@Override
protected void initialize()
{
/*
executeUpdate(CREATE_INVENTORY_TABLE);
executeUpdate(CREATE_INVENTORY_RELATION_TABLE);
*/
}
@Override
protected void update()
{
super(DBPool.getAccount());
}
public void addItem(String name)

View File

@ -2,7 +2,6 @@ package mineplex.core.leaderboard;
import mineplex.core.database.MinecraftRepository;
import mineplex.serverdata.database.DBPool;
import mineplex.serverdata.database.RepositoryBase;
import mineplex.serverdata.database.column.ColumnInt;
import mineplex.serverdata.database.column.ColumnVarChar;
@ -37,21 +36,9 @@ public class StatEventsRepository extends MinecraftRepository
*/
public StatEventsRepository(JavaPlugin plugin)
{
super(plugin, DBPool.getAccount());
super(DBPool.getAccount());
}
@Override
protected void initialize()
{
//executeUpdate(CREATE_EVENTS_TABLE);
//executeUpdate(CREATE_STAT_RELATION_TABLE);
}
@Override
protected void update()
{
}
/**
* Insert (or update) a new stat event record for today into the repository.

View File

@ -246,7 +246,7 @@ public class MessageManager extends MiniClientPlugin<ClientMessage>
Get(from).LastToTime = System.currentTimeMillis();
// Chiss or defek7
if (GetClientManager().Get(to).GetRank() == Rank.DEVELOPER)
if (GetClientManager().Get(to).getRealOrDisguisedRank() == Rank.DEVELOPER)
{
UtilPlayer.message(from, C.cPurple + to.getName() + " is often AFK or minimized, due to plugin development.");
UtilPlayer.message(from, C.cPurple + "Please be patient if they do not reply instantly.");

View File

@ -108,7 +108,7 @@ public class MountDragon extends DragonMount
{
if (Manager.getClientManager().Get(event.getPlayer()).GetRank().has(Rank.HERO))
{
Manager.getDonationManager().Get(event.getPlayer()).AddUnknownSalesPackagesOwned(getName());
Manager.getDonationManager().Get(event.getPlayer()).addOwnedUnknownSalesPackage(getName());
}
}
}

View File

@ -137,7 +137,7 @@ public class MountTitan extends Mount<MountTitanData>
{
if (Manager.getClientManager().Get(event.getPlayer()).GetRank().has(Rank.TITAN))
{
Manager.getDonationManager().Get(event.getPlayer()).AddUnknownSalesPackagesOwned(getName());
Manager.getDonationManager().Get(event.getPlayer()).addOwnedUnknownSalesPackage(getName());
}
}
}

View File

@ -19,7 +19,7 @@ public class PetRepository extends MinecraftRepository
public PetRepository(JavaPlugin plugin, String webAddress)
{
super(plugin, DBPool.getAccount());
super(DBPool.getAccount());
_webAddress = webAddress;
}
@ -43,14 +43,4 @@ public class PetRepository extends MinecraftRepository
{
new AsyncJsonWebCall(_webAddress + "Pets/UpdatePet").Execute(token);
}
@Override
protected void initialize()
{
}
@Override
protected void update()
{
}
}

View File

@ -17,6 +17,7 @@ import mineplex.core.Managers;
import mineplex.core.MiniDbClientPlugin;
import mineplex.core.account.CoreClientManager;
import mineplex.core.bonuses.BonusManager;
import mineplex.core.common.currency.GlobalCurrency;
import mineplex.core.common.util.C;
import mineplex.core.common.util.Callback;
import mineplex.core.common.util.F;
@ -175,7 +176,8 @@ public class PlayWireManager extends MiniDbClientPlugin<PlayWireClientData>
if (response == ResponseType.COUNTED)
{
attemptRedeem(player);
} else
}
else
{
player.sendMessage(response.getMessage());
}

View File

@ -16,9 +16,11 @@ import com.google.gson.JsonObject;
import net.minecraft.server.v1_8_R3.IChatBaseComponent.ChatSerializer;
import net.minecraft.server.v1_8_R3.PacketPlayOutChat;
import mineplex.core.MiniDbClientPlugin;
import mineplex.core.account.CoreClientManager;
import mineplex.core.common.Rank;
import mineplex.core.common.currency.GlobalCurrency;
import mineplex.core.common.util.C;
import mineplex.core.common.util.Callback;
import mineplex.core.common.util.F;
@ -114,7 +116,7 @@ public class PollManager extends MiniDbClientPlugin<PlayerPollData>
player.sendMessage("");
for (int i = 1; i <= answers.length; i++)
{
if (answers[i-1] != null && answers[i-1].length() > 0)
if (answers[i - 1] != null && answers[i - 1].length() > 0)
{
String message = C.cGreen + i + ". " + answers[i - 1];
// Base message object
@ -156,47 +158,27 @@ public class PollManager extends MiniDbClientPlugin<PlayerPollData>
Get(player).addAnswer(poll.getId(), answer);
// Here we add the answer into the database, and once that is successful we give the coin reward
_plugin.getServer().getScheduler().runTaskAsynchronously(_plugin, new Runnable()
{
@Override
public void run()
_plugin.getServer().getScheduler().runTaskAsynchronously(_plugin, () ->
{
if (_repository.addPollAnswer(uuid, poll.getId(), answer))
{
// Poll response successful, give coins
_donationManager.RewardGems(new Callback<Boolean>()
{
@Override
public void run(Boolean completed)
{
if (completed)
{
_donationManager.RewardCoins(new Callback<Boolean>()
{
@Override
public void run(Boolean completed)
{
if (completed)
{
// Need to get out of Async code
_plugin.getServer().getScheduler().runTask(_plugin, new Runnable()
{
@Override
public void run()
{
UtilPlayer.message(player, F.main("Carl", "Thanks for your response!"));
player.playSound(player.getEyeLocation(), Sound.LEVEL_UP, 1F, 0);
// Poll response successful, give coins
_donationManager.rewardCurrency(GlobalCurrency.GEM, player, "Poll", poll.getCoinReward(), gemSuccessful ->
{
if (gemSuccessful)
{
UtilPlayer.message(player, F.main("Carl", "You received " + F.elem(poll.getCoinReward() + "") + " Gems!"));
}
_donationManager.rewardCurrency(GlobalCurrency.TREASURE_SHARD, player, "Poll", poll.getCoinReward(), completed ->
{
if (completed)
{
UtilPlayer.message(player, F.main("Carl", "You received " + F.elem(poll.getCoinReward() + "") + " Coins!"));
}
});
}
}
}, "Poll", name, accountId, poll.getCoinReward());
}
}
}, "Poll", name, uuid, poll.getCoinReward());
}
});
}
});
}

View File

@ -10,7 +10,6 @@ import mineplex.core.database.MinecraftRepository;
import org.bukkit.plugin.java.JavaPlugin;
import mineplex.serverdata.database.DBPool;
import mineplex.serverdata.database.RepositoryBase;
import mineplex.serverdata.database.ResultSetCallable;
import mineplex.serverdata.database.column.ColumnInt;
import mineplex.serverdata.database.column.ColumnVarChar;
@ -30,20 +29,7 @@ public class PollRepository extends MinecraftRepository
public PollRepository(JavaPlugin plugin)
{
super(plugin, DBPool.getAccount());
}
@Override
protected void initialize()
{
//executeUpdate(CREATE_POLL_TABLE);
//executeUpdate(CREATE_RELATION_TABLE);
}
@Override
protected void update()
{
super(DBPool.getAccount());
}
public List<Poll> retrievePolls()

View File

@ -106,12 +106,12 @@ public class PowerPlayClubRepository implements Listener {
PowerPlayData cached = getCachedData(player);
PowerPlayClubRewards.rewardsForMonths(cached.getUsableCosmeticMonths()).stream()
.map(PowerPlayClubRewards.PowerPlayClubItem::getPrize)
.forEach(_donationManager.Get(player)::AddUnknownSalesPackagesOwned);
.forEach(_donationManager.Get(player)::addOwnedUnknownSalesPackage);
// Gives Metal Man for anyone subscribed
if (cached.getUsableCosmeticMonths().size() > 0)
{
_donationManager.Get(player).AddUnknownSalesPackagesOwned("Metal Man Morph");
_donationManager.Get(player).addOwnedUnknownSalesPackage("Metal Man Morph");
}
}

View File

@ -19,20 +19,10 @@ public class PreferencesRepository extends MinecraftRepository
public PreferencesRepository(PreferencesManager plugin)
{
super(plugin.getPlugin(), DBPool.getAccount());
super(DBPool.getAccount());
_manager = plugin;
}
@Override
protected void initialize()
{
}
@Override
protected void update()
{
}
/**
* Save a player's preferences in SQL
*

View File

@ -33,20 +33,10 @@ public class KitProgressionRepository extends MinecraftRepository
public KitProgressionRepository(KitProgressionManager plugin)
{
super(plugin.getPlugin(), DBPool.getAccount());
super(DBPool.getAccount());
_kitProgressionManager = plugin;
}
@Override
protected void initialize()
{
}
@Override
protected void update()
{
}
/**
* Inserts data for a kit into the database
* This will update the info if the kit is already in there

View File

@ -1,6 +1,7 @@
package mineplex.core.progression.data;
import mineplex.core.server.util.TransactionResponse;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
@ -39,7 +40,8 @@ public class KitUpgradeProcessor implements ConfirmationProcessor
String packageName = _kit.getInternalName() + "." + _upgradeLevel;
int cost = Calculations.getGemsCost(_upgradeLevel);
// Use UnknownPackages for this right now as it handles overspending gems properly
_manager.getDonationManager().purchaseUnknownSalesPackage(data ->
_manager.getDonationManager().purchaseUnknownSalesPackage(_player, packageName, GlobalCurrency.GEM, cost, false,
data ->
{
if (data == TransactionResponse.Success)
{
@ -58,6 +60,6 @@ public class KitUpgradeProcessor implements ConfirmationProcessor
{
callback.reject("There was an error processing your transaction. Try again later");
}
}, _player, packageName, GlobalCurrency.GEM, cost, false);
});
}
}

View File

@ -20,22 +20,10 @@ public class TitanGiveawayRepository extends MinecraftRepository
public TitanGiveawayRepository(JavaPlugin plugin)
{
super(plugin, DBPool.getAccount());
super(DBPool.getAccount());
_titanCount = 0;
}
@Override
protected void initialize()
{
}
@Override
protected void update()
{
}
public boolean addTitan(int accountId, Region region, String serverName)
{
return 1 == executeUpdate(ADD_TITAN, new ColumnInt("accountId", accountId), new ColumnVarChar("region", 10, region.name()), new ColumnVarChar("serverName", 64, serverName));

View File

@ -6,6 +6,7 @@ import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import mineplex.core.common.currency.GlobalCurrency;
import mineplex.core.common.util.Callback;
import mineplex.core.donation.DonationManager;
import mineplex.core.reward.Reward;
@ -40,14 +41,7 @@ public class GemReward extends Reward
{
int GemsToReward = _random.nextInt(_maxGemCount - _minGemCount) + _minGemCount;
_donationManager.RewardGems(new Callback<Boolean>()
{
@Override
public void run(Boolean data)
{
}
}, "Treasure Chest", player.getName(), player.getUniqueId(), GemsToReward);
_donationManager.rewardCurrency(GlobalCurrency.GEM, player, "Treasure Chest", GemsToReward);
return new RewardData(null, getRarity().getColor() + GemsToReward + " Gems", new ItemStack(Material.EMERALD), getRarity());
}

View File

@ -1,7 +1,9 @@
package mineplex.core.reward.rewards;
import mineplex.core.account.CoreClientManager;
import mineplex.core.common.currency.GlobalCurrency;
import mineplex.core.common.util.UtilMath;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
@ -69,7 +71,7 @@ public class TreasureShardReward extends Reward
@Override
public void run()
{
_donationManager.rewardCoinsUntilSuccess(null, "Treasure", player.getName(), accountId, shards);
_donationManager.rewardCurrencyUntilSuccess(GlobalCurrency.TREASURE_SHARD, player, "Treasure", shards);
}
}, 100);

View File

@ -46,7 +46,7 @@ public class UnknownPackageReward extends Reward
@Override
protected RewardData giveRewardCustom(Player player, RewardType type)
{
_donationManager.PurchaseUnknownSalesPackage(null, player.getName(), _donationManager.getClientManager().Get(player).getAccountId(), _packageName, GlobalCurrency.TREASURE_SHARD, 0, true);
_donationManager.purchaseUnknownSalesPackage(player, _packageName, GlobalCurrency.TREASURE_SHARD, 0, true, null);
return new RewardData(getRarity().getDarkColor() + _header, getRarity().getColor() + _name, _itemStack, getRarity());
}
@ -60,7 +60,7 @@ public class UnknownPackageReward extends Reward
return false;
}
boolean hasItem = false;
if (_donationManager.Get(player).OwnsUnknownPackage(_packageName))
if (_donationManager.Get(player).ownsUnknownSalesPackage(_packageName))
{
hasItem = true;
}
@ -68,7 +68,7 @@ public class UnknownPackageReward extends Reward
{
for (String altName : _alternativeNames)
{
if (_donationManager.Get(player).OwnsUnknownPackage(altName))
if (_donationManager.Get(player).ownsUnknownSalesPackage(altName))
{
hasItem = true;
}

View File

@ -23,7 +23,11 @@ import org.bukkit.event.inventory.InventoryDragEvent;
import org.bukkit.event.inventory.InventoryOpenEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
public abstract class ShopBase<PluginType extends MiniPlugin> implements Listener
{
@ -34,9 +38,9 @@ public abstract class ShopBase<PluginType extends MiniPlugin> implements Listene
private CoreClientManager _clientManager;
private DonationManager _donationManager;
private String _name;
private NautHashMap<String, ShopPageBase<PluginType, ? extends ShopBase<PluginType>>> _playerPageMap;
private Map<String, ShopPageBase<PluginType, ? extends ShopBase<PluginType>>> _playerPageMap = new HashMap<>();
private HashSet<String> _openedShop = new HashSet<String>();
private Set<String> _openedShop = new HashSet<>();
public ShopBase(PluginType plugin, CoreClientManager clientManager, DonationManager donationManager, String name)
{
@ -45,7 +49,6 @@ public abstract class ShopBase<PluginType extends MiniPlugin> implements Listene
_donationManager = donationManager;
_name = name;
_playerPageMap = new NautHashMap<String, ShopPageBase<PluginType, ? extends ShopBase<PluginType>>>();
_errorThrottling = new NautHashMap<String, Long>();
_purchaseBlock = new NautHashMap<String, Long>();
@ -83,17 +86,17 @@ public abstract class ShopBase<PluginType extends MiniPlugin> implements Listene
public boolean attemptShopOpen(Player player)
{
if (!_openedShop.contains(player.getName()))
if (!_openedShop.contains(player.getUniqueId()))
{
if (!canOpenShop(player))
return false;
_openedShop.add(player.getName());
_openedShop.add(player.getUniqueId());
openShopForPlayer(player);
if (!_playerPageMap.containsKey(player.getName()))
if (!_playerPageMap.containsKey(player.getUniqueId()))
{
_playerPageMap.put(player.getName(), buildPagesFor(player));
_playerPageMap.put(player.getUniqueId(), buildPagesFor(player));
}
openPageForPlayer(player, getOpeningPageForPlayer(player));
@ -106,7 +109,7 @@ public abstract class ShopBase<PluginType extends MiniPlugin> implements Listene
protected ShopPageBase<PluginType, ? extends ShopBase<PluginType>> getOpeningPageForPlayer(HumanEntity player)
{
return _playerPageMap.get(player.getName());
return _playerPageMap.get(player.getUniqueId());
}
@EventHandler
@ -145,7 +148,7 @@ public abstract class ShopBase<PluginType extends MiniPlugin> implements Listene
@EventHandler
public void onInventoryClose(InventoryCloseEvent event)
{
if (_playerPageMap.containsKey(event.getPlayer().getName()) && _playerPageMap.get(event.getPlayer().getName()).getTitle() != null && _playerPageMap.get(event.getPlayer().getName()).getTitle().equalsIgnoreCase(event.getInventory().getTitle()))
if (_playerPageMap.containsKey(event.getPlayer().getUniqueId()) && _playerPageMap.get(event.getPlayer().getUniqueId()).getTitle() != null && _playerPageMap.get(event.getPlayer().getUniqueId()).getTitle().equalsIgnoreCase(event.getInventory().getTitle()))
{
_playerPageMap.get(event.getPlayer().getName()).playerClosed();
_playerPageMap.get(event.getPlayer().getName()).dispose();
@ -164,7 +167,7 @@ public abstract class ShopBase<PluginType extends MiniPlugin> implements Listene
if (!event.isCancelled())
return;
if (_playerPageMap.containsKey(event.getPlayer().getName()) && _playerPageMap.get(event.getPlayer().getName()).getTitle() != null && _playerPageMap.get(event.getPlayer().getName()).getTitle().equalsIgnoreCase(event.getInventory().getTitle()))
if (_playerPageMap.containsKey(event.getPlayer().getUniqueId()) && _playerPageMap.get(event.getPlayer().getUniqueId()).getTitle() != null && _playerPageMap.get(event.getPlayer().getUniqueId()).getTitle().equalsIgnoreCase(event.getInventory().getTitle()))
{
_playerPageMap.get(event.getPlayer().getName()).playerClosed();
_playerPageMap.get(event.getPlayer().getName()).dispose();
@ -189,7 +192,7 @@ public abstract class ShopBase<PluginType extends MiniPlugin> implements Listene
@EventHandler
public void onPlayerQuit(PlayerQuitEvent event)
{
if (_playerPageMap.containsKey(event.getPlayer().getName()))
if (_playerPageMap.containsKey(event.getPlayer().getUniqueId()))
{
_playerPageMap.get(event.getPlayer().getName()).playerClosed();
_playerPageMap.get(event.getPlayer().getName()).dispose();
@ -205,9 +208,9 @@ public abstract class ShopBase<PluginType extends MiniPlugin> implements Listene
public void openPageForPlayer(Player player, ShopPageBase<PluginType, ? extends ShopBase<PluginType>> page)
{
if (_playerPageMap.containsKey(player.getName()))
if (_playerPageMap.containsKey(player.getUniqueId()))
{
_playerPageMap.get(player.getName()).playerClosed();
_playerPageMap.get(player.getUniqueId()).playerClosed();
}
setCurrentPageForPlayer(player, page);
@ -224,7 +227,7 @@ public abstract class ShopBase<PluginType extends MiniPlugin> implements Listene
public void setCurrentPageForPlayer(Player player, ShopPageBase<PluginType, ? extends ShopBase<PluginType>> page)
{
_playerPageMap.put(player.getName(), page);
_playerPageMap.put(player.getUniqueId(), page);
}
public void addPlayerProcessError(Player player)
@ -240,7 +243,7 @@ public abstract class ShopBase<PluginType extends MiniPlugin> implements Listene
return !_purchaseBlock.containsKey(player.getName()) || (System.currentTimeMillis() - _purchaseBlock.get(player.getName()) > 10000);
}
public NautHashMap<String, ShopPageBase<PluginType, ? extends ShopBase<PluginType>>> getPageMap()
public Map<UUID, ShopPageBase<PluginType, ? extends ShopBase<PluginType>>> getPageMap()
{
return _playerPageMap;
}
@ -249,7 +252,7 @@ public abstract class ShopBase<PluginType extends MiniPlugin> implements Listene
public boolean isPlayerInShop(HumanEntity player)
{
return _playerPageMap.containsKey(player.getName());
return _playerPageMap.containsKey(player.getUniqueId());
}
protected PluginType getPlugin()
@ -272,12 +275,12 @@ public abstract class ShopBase<PluginType extends MiniPlugin> implements Listene
return _name;
}
protected NautHashMap<String, ShopPageBase<PluginType, ? extends ShopBase<PluginType>>> getPlayerPageMap()
protected Map<UUID, ShopPageBase<PluginType, ? extends ShopBase<PluginType>>> getPlayerPageMap()
{
return _playerPageMap;
}
protected HashSet<String> getOpenedShop()
protected Set<UUID> getOpenedShop()
{
return _openedShop;
}

View File

@ -1,5 +1,7 @@
package mineplex.core.shop.item;
import mineplex.core.account.CoreClient;
import mineplex.core.account.CoreClientManager;
import mineplex.core.common.currency.GlobalCurrency;
import mineplex.core.common.util.C;
import mineplex.core.donation.DonationManager;
@ -7,10 +9,16 @@ import mineplex.core.itemstack.ItemBuilder;
import mineplex.core.server.util.TransactionResponse;
import mineplex.core.shop.confirmation.ConfirmationCallback;
import mineplex.core.shop.confirmation.ConfirmationProcessor;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
public class SalesPackageProcessor implements ConfirmationProcessor {
import static mineplex.core.Managers.require;
public class SalesPackageProcessor implements ConfirmationProcessor
{
private final CoreClientManager _clientManager = require(CoreClientManager.class);
private final GlobalCurrency _currencyType;
private final SalesPackageBase _salesItem;
private final DonationManager _donationManager;
@ -35,13 +43,14 @@ public class SalesPackageProcessor implements ConfirmationProcessor {
@Override
public void process(ConfirmationCallback callback)
{
CoreClient client = _clientManager.Get(_player);
if (_salesItem.isKnown())
{
_donationManager.PurchaseKnownSalesPackage(response -> showResults(callback, response), _player.getName(), _player.getUniqueId(), _salesItem.getCost(_currencyType), _salesItem.getSalesPackageId());
_donationManager.purchaseKnownSalesPackage(client, _salesItem.getSalesPackageId(), response -> showResults(callback, response));
}
else
{
_donationManager.PurchaseUnknownSalesPackage(response -> showResults(callback, response), _player.getName(), _donationManager.getClientManager().Get(_player).getAccountId(), _salesItem.getName(), _currencyType, _salesItem.getCost(_currencyType), _salesItem.oneTimePurchase());
_donationManager.purchaseUnknownSalesPackage(client, _salesItem.getName(), _currencyType, _salesItem.getCost(_currencyType), _salesItem.oneTimePurchase(), response -> showResults(callback, response));
}
}

View File

@ -9,7 +9,6 @@ import mineplex.core.database.MinecraftRepository;
import org.bukkit.plugin.java.JavaPlugin;
import mineplex.serverdata.database.DBPool;
import mineplex.serverdata.database.RepositoryBase;
import mineplex.serverdata.database.ResultSetCallable;
import mineplex.serverdata.database.column.ColumnVarChar;
@ -24,21 +23,10 @@ public class SpawnRepository extends MinecraftRepository
public SpawnRepository(JavaPlugin plugin, String serverName)
{
super(plugin, DBPool.getAccount());
super(DBPool.getAccount());
_serverName = serverName;
}
@Override
protected void initialize()
{
//executeUpdate(CREATE_SPAWN_TABLE);
}
@Override
protected void update()
{
}
public void addSpawn(String location)
{
executeUpdate(ADD_SERVER_SPAWN, new ColumnVarChar("serverName", 100, _serverName), new ColumnVarChar("location", 100, location));

View File

@ -9,7 +9,6 @@ import java.util.List;
import mineplex.core.common.util.NautHashMap;
import mineplex.core.database.MinecraftRepository;
import mineplex.serverdata.database.DBPool;
import mineplex.serverdata.database.RepositoryBase;
import mineplex.serverdata.database.ResultSetCallable;
import mineplex.serverdata.database.column.ColumnVarChar;
import mineplex.database.Tables;
@ -32,15 +31,9 @@ public class StatsRepository extends MinecraftRepository
public StatsRepository(JavaPlugin plugin)
{
super(plugin, DBPool.getAccount());
super(DBPool.getAccount());
}
@Override
protected void initialize() { }
@Override
protected void update() { }
public List<Stat> retrieveStats()
{
final List<Stat> stats = new ArrayList<Stat>();

View File

@ -9,7 +9,6 @@ import mineplex.core.database.MinecraftRepository;
import org.bukkit.plugin.java.JavaPlugin;
import mineplex.serverdata.database.DBPool;
import mineplex.serverdata.database.RepositoryBase;
import mineplex.serverdata.database.ResultSetCallable;
import mineplex.serverdata.database.column.ColumnInt;
import mineplex.serverdata.database.column.ColumnVarChar;
@ -25,17 +24,7 @@ public class TaskRepository extends MinecraftRepository
public TaskRepository(JavaPlugin plugin)
{
super(plugin, DBPool.getAccount());
}
@Override
protected void initialize()
{
}
@Override
protected void update()
{
super(DBPool.getAccount());
}
public boolean addAccountTask(int accountId, int taskId)

View File

@ -13,6 +13,7 @@ import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.plugin.java.JavaPlugin;
import mineplex.core.MiniPlugin;
import mineplex.core.common.currency.GlobalCurrency;
import mineplex.core.common.util.C;
import mineplex.core.common.util.Callback;
import mineplex.core.common.util.F;
@ -104,9 +105,7 @@ public class TextTutorialManager extends MiniPlugin
{
public void run(Boolean completed)
{
_donationManager.RewardGems(new Callback<Boolean>()
{
public void run(Boolean completed)
_donationManager.rewardCurrency(GlobalCurrency.GEM, player, "Tutorial " + tut.getName(), tut.getGemReward(), success ->
{
if (completed)
{
@ -115,8 +114,7 @@ public class TextTutorialManager extends MiniPlugin
//Sound
player.playSound(player.getLocation(), Sound.LEVEL_UP, 2f, 1.5f);
}
}
}, "Tutorial " + tut.getName(), player.getName(), player.getUniqueId(), tut.getGemReward());
});
}
}, player, tut.getTaskId());
}

View File

@ -2,12 +2,14 @@ package mineplex.core.thank;
import mineplex.core.MiniDbClientPlugin;
import mineplex.core.account.CoreClientManager;
import mineplex.core.common.currency.GlobalCurrency;
import mineplex.core.common.util.Callback;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.donation.DonationManager;
import mineplex.core.recharge.Recharge;
import mineplex.core.thank.command.ThankCommand;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
@ -63,18 +65,19 @@ public class ThankManager extends MiniDbClientPlugin<ThankData>
return;
}
int senderAccountId = ClientManager.getAccountId(sender);
int receiverAccountId = ClientManager.getAccountId(receiver);
thankPlayer(receiver.getName(), receiverAccountId, sender.getName(), senderAccountId, receiverReward, senderReward, reason, ignoreCooldown, result ->
thankPlayer(receiver.getName(), receiverAccountId, sender, receiverReward, senderReward, reason, ignoreCooldown, result ->
{
if (result == ThankResult.SUCCESS)
{
// Reload their thank data if the player is online!
runAsync(() -> {
runAsync(() ->
{
try
{
Set(receiver, _thankRepository.getThankData(receiverAccountId));
} catch (SQLException e)
}
catch (SQLException e)
{
e.printStackTrace();
}
@ -102,15 +105,17 @@ public class ThankManager extends MiniDbClientPlugin<ThankData>
return;
}
runAsync(() -> {
runAsync(() ->
{
try
{
ClaimThankResult result = _thankRepository.claimThank(accountId);
runSync(() -> {
runSync(() ->
{
if (result != null && result.getClaimed() > 0)
{
Set(player, new ThankData(0));
_donationManager.rewardCoinsUntilSuccess(null, "Thank", player.getName(), accountId, result.getClaimed());
_donationManager.rewardCurrencyUntilSuccess(GlobalCurrency.TREASURE_SHARD, player, "Thank", result.getClaimed());
}
callback.run(result);
});
@ -129,16 +134,17 @@ public class ThankManager extends MiniDbClientPlugin<ThankData>
*
* @param receiverName Name of the player being thanked
* @param receiverAccountId Account id of the player being thanked
* @param senderName Name of the player sending the thanks
* @param senderAccountId Account id of the player sending the thanks
* @param sender The player sending the thanks
* @param receiverReward The Treasure Shard reward for the receiver
* @param senderReward The Treasure Shard reward for the sender
* @param reason The reason that player is being thanked
* @param ignoreCooldown Should we ignore all thank cooldowns
* @param callback Callback for processing the result
*/
public void thankPlayer(String receiverName, int receiverAccountId, String senderName, int senderAccountId, int receiverReward, int senderReward, String reason, boolean ignoreCooldown, Callback<ThankResult> callback)
public void thankPlayer(String receiverName, int receiverAccountId, Player sender, int receiverReward, int senderReward, String reason, boolean ignoreCooldown, Callback<ThankResult> callback)
{
int senderAccountId = getClientManager().getAccountId(sender);
// Break out on bad account id
if (senderAccountId == -1 || receiverAccountId == -1)
{
@ -153,15 +159,17 @@ public class ThankManager extends MiniDbClientPlugin<ThankData>
return;
}
runAsync(() -> {
runAsync(() ->
{
try
{
boolean success = _thankRepository.thank(receiverAccountId, senderAccountId, receiverReward, reason, ignoreCooldown);
runSync(() -> {
runSync(() ->
{
if (success)
{
// Reward Shards for the sender now. The player being thanked can claim their shards at Carl.
_donationManager.rewardCoinsUntilSuccess(null, "Thank", senderName, senderAccountId, senderReward);
_donationManager.rewardCurrencyUntilSuccess(GlobalCurrency.TREASURE_SHARD, sender, "Thank", senderReward);
}
callback.run(success ? ThankResult.SUCCESS : ThankResult.COOLDOWN_DATABASE);

View File

@ -4,12 +4,9 @@ import mineplex.core.database.MinecraftRepository;
import mineplex.database.routines.AddThank;
import mineplex.database.routines.ClaimThank;
import mineplex.serverdata.database.DBPool;
import mineplex.serverdata.database.ResultSetCallable;
import mineplex.serverdata.database.column.ColumnInt;
import org.bukkit.plugin.java.JavaPlugin;
import org.jooq.Configuration;
import java.sql.ResultSet;
import java.sql.SQLException;
public class ThankRepository extends MinecraftRepository
@ -18,18 +15,7 @@ public class ThankRepository extends MinecraftRepository
public ThankRepository(JavaPlugin plugin)
{
super(plugin, DBPool.getAccount());
}
@Override
protected void initialize()
{
}
@Override
protected void update()
{
super(DBPool.getAccount());
}
public boolean thank(int receiverAccountId, int senderAccountId, int thankAmount, String reason, boolean ignoreCooldown)

View File

@ -19,11 +19,11 @@ public class ScoreboardElementRank implements ScoreboardElement
{
output.add(manager.getClients().Get(player).GetRank().Name);
}
else if (manager.getDonation().Get(player).OwnsUnknownPackage("SuperSmashMobs ULTRA") ||
manager.getDonation().Get(player).OwnsUnknownPackage("Survival Games ULTRA") ||
manager.getDonation().Get(player).OwnsUnknownPackage("Minigames ULTRA") ||
manager.getDonation().Get(player).OwnsUnknownPackage("CastleSiege ULTRA") ||
manager.getDonation().Get(player).OwnsUnknownPackage("Champions ULTRA"))
else if (manager.getDonation().Get(player).ownsUnknownSalesPackage("SuperSmashMobs ULTRA") ||
manager.getDonation().Get(player).ownsUnknownSalesPackage("Survival Games ULTRA") ||
manager.getDonation().Get(player).ownsUnknownSalesPackage("Minigames ULTRA") ||
manager.getDonation().Get(player).ownsUnknownSalesPackage("CastleSiege ULTRA") ||
manager.getDonation().Get(player).ownsUnknownSalesPackage("Champions ULTRA"))
{
output.add("Single Ultra");
}

View File

@ -25,7 +25,7 @@ public class TournamentRepository extends MinecraftRepository
public TournamentRepository(JavaPlugin plugin)
{
super(plugin, DBPool.getAccount());
super(DBPool.getAccount());
}
public int registerForTournament(int accountId, int tournamentId)
@ -83,10 +83,4 @@ public class TournamentRepository extends MinecraftRepository
return tournaments;
}
@Override
protected void initialize() { }
@Override
protected void update() { }
}

View File

@ -0,0 +1,15 @@
package mineplex.core.utils;
import org.bukkit.plugin.Plugin;
import mineplex.core.common.util.UtilServer;
import mineplex.core.updater.UpdateType;
public class UtilScheduler
{
public static void runEvery(UpdateType speed, Runnable action)
{
Plugin plugin = UtilServer.getPlugin();
plugin.getServer().getScheduler().runTaskTimer(plugin, action, 0, (int) Math.ceil(speed.getMilliseconds() / 50.0));
}
}

View File

@ -2,7 +2,6 @@ package mineplex.core.valentines;
import mineplex.core.database.MinecraftRepository;
import mineplex.serverdata.database.DBPool;
import mineplex.serverdata.database.RepositoryBase;
import mineplex.serverdata.database.column.ColumnInt;
import org.bukkit.plugin.java.JavaPlugin;
@ -12,20 +11,9 @@ public class ValentinesGiftRepository extends MinecraftRepository
public ValentinesGiftRepository(JavaPlugin plugin)
{
super(plugin, DBPool.getAccount());
super(DBPool.getAccount());
}
@Override
protected void initialize()
{
}
@Override
protected void update()
{
}
public boolean giveGift(int senderId, int targetId)
{

View File

@ -2,6 +2,7 @@ package mineplex.core.youtube;
import mineplex.core.MiniDbClientPlugin;
import mineplex.core.account.CoreClientManager;
import mineplex.core.common.currency.GlobalCurrency;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilPlayer;
import mineplex.core.donation.DonationManager;
@ -55,7 +56,7 @@ public class YoutubeManager extends MiniDbClientPlugin<YoutubeClient>
client.setClickDate(ZonedDateTime.now(ZoneOffset.UTC).toLocalDate());
_repository.attemptYoutube(player, client, () ->
{
_donationManager.RewardCoinsLater("YouTube", player, 250);
_donationManager.rewardCurrency(GlobalCurrency.TREASURE_SHARD, player, "YouTube", 250);
Bukkit.getScheduler().runTaskLater(getClientManager().getPlugin(), () -> UtilPlayer.message(player, F.main("Carl", "Rewarded " + F.elem("250 Treasure Shards") + " for watching the YouTube video")), REWARD_MESSAGE_DELAY_SECONDS * 20L);
});
}

View File

@ -69,7 +69,7 @@ public class Enjin extends MiniPlugin implements CommandExecutor
if (event.getType() != UpdateType.MIN_01)
return;
for (Iterator<Entry<String, Entry<UUID, Long>>> iterator = _cachedUUIDs.entrySet().iterator(); iterator.hasNext();)
for (Iterator<Entry<String, Entry<UUID, Long>>> iterator = _cachedUUIDs.entrySet().iterator(); iterator.hasNext(); )
{
Entry<String, Entry<UUID, Long>> entry = iterator.next();
@ -86,7 +86,7 @@ public class Enjin extends MiniPlugin implements CommandExecutor
try
{
if (sender instanceof Player)
((Player)sender).kickPlayer("Like bananas? I don't. Here take these and go have fun.");
((Player) sender).kickPlayer("Like bananas? I don't. Here take these and go have fun.");
if (label.equalsIgnoreCase("enjin_mineplex"))
{
@ -216,9 +216,7 @@ public class Enjin extends MiniPlugin implements CommandExecutor
final String packageName = tempName;
_donationManager.PurchaseUnknownSalesPackage(new Callback<TransactionResponse>()
{
public void run(TransactionResponse data)
_donationManager.purchaseUnknownSalesPackage(client, amount == 1 ? packageName : packageName + " " + amount, GlobalCurrency.GEM, 0, false, data ->
{
if (data == TransactionResponse.Success)
{
@ -242,10 +240,9 @@ public class Enjin extends MiniPlugin implements CommandExecutor
else
{
System.out.println("[" + _dateFormat.format(new Date()) + "] ERROR processing " + name + " " + amount + ". Queuing for run later.");
_purchaseManager.addAccountPurchaseToQueue(client.getAccountId(), packageName, amount, data == TransactionResponse.Success);
_purchaseManager.addAccountPurchaseToQueue(client.getAccountId(), packageName, amount, false);
}
}
}, name, client.getAccountId(), amount == 1 ? packageName : packageName + " " + amount, GlobalCurrency.GEM, 0, false);
});
return true;
}
@ -257,9 +254,7 @@ public class Enjin extends MiniPlugin implements CommandExecutor
final int amount = Integer.parseInt(args[2]);
_donationManager.RewardCoins(new Callback<Boolean>()
{
public void run (Boolean response)
_donationManager.rewardCurrency(GlobalCurrency.TREASURE_SHARD, client, "purchase", amount, response ->
{
if (response)
System.out.println("[" + _dateFormat.format(new Date()) + "] " + name + " received " + amount + " coins.");
@ -267,8 +262,7 @@ public class Enjin extends MiniPlugin implements CommandExecutor
System.out.println("[" + _dateFormat.format(new Date()) + "] ERROR processing " + name + " " + amount + " coins. Queuing for run later.");
_purchaseManager.addAccountPurchaseToQueue(client.getAccountId(), "Coins", amount, response);
}
}, "purchase", name, client.getAccountId(), amount);
});
return true;
}
@ -282,7 +276,7 @@ public class Enjin extends MiniPlugin implements CommandExecutor
_inventoryManager.addItemToInventoryForOffline(new Callback<Boolean>()
{
public void run (Boolean response)
public void run(Boolean response)
{
if (response)
System.out.println("[" + _dateFormat.format(new Date()) + "] " + name + " received " + amount + " gem boosters.");
@ -310,7 +304,8 @@ public class Enjin extends MiniPlugin implements CommandExecutor
_powerPlayClubRepository.addSubscription(client.getAccountId(), date, duration);
} else if (args[2].equalsIgnoreCase("cancel"))
}
else if (args[2].equalsIgnoreCase("cancel"))
{
// TODO: cancel it in our logs? I don't think this is necessary.
}
@ -329,9 +324,7 @@ public class Enjin extends MiniPlugin implements CommandExecutor
}
final String packageName = purchase;
_donationManager.PurchaseUnknownSalesPackage(new Callback<TransactionResponse>()
{
public void run(TransactionResponse data)
_donationManager.purchaseUnknownSalesPackage(client, packageName, GlobalCurrency.GEM, 0, false, data ->
{
if (data == TransactionResponse.Success)
{
@ -355,10 +348,9 @@ public class Enjin extends MiniPlugin implements CommandExecutor
else
{
System.out.println("[" + _dateFormat.format(new Date()) + "] ERROR processing " + name + " 1" + ". Queuing for run later.");
_purchaseManager.addAccountPurchaseToQueue(client.getAccountId(), packageName, 1, data == TransactionResponse.Success);
_purchaseManager.addAccountPurchaseToQueue(client.getAccountId(), packageName, 1, false);
}
}
}, name, client.getAccountId(), packageName, GlobalCurrency.GEM, 0, false);
});
//enjin_mineplex clansBanner AlexTheCoder true
return true;
}
@ -370,7 +362,7 @@ public class Enjin extends MiniPlugin implements CommandExecutor
_inventoryManager.addItemToInventoryForOffline(new Callback<Boolean>()
{
public void run (Boolean response)
public void run(Boolean response)
{
if (response)
System.out.println("[" + _dateFormat.format(new Date()) + "] " + name + " received " + amount + " rune amplifiers.");

View File

@ -7,6 +7,8 @@ import mineplex.core.inventory.InventoryManager;
import mineplex.core.updater.Updater;
import org.bukkit.plugin.java.JavaPlugin;
import static mineplex.core.Managers.require;
public class EnjinTranslator extends JavaPlugin
{
private String WEB_CONFIG = "webServer";
@ -25,7 +27,7 @@ public class EnjinTranslator extends JavaPlugin
CoreClientManager clientManager = new CoreClientManager(this, GetWebServerAddress());
CommandCenter.Instance.setClientManager(clientManager);
DonationManager donationManager = new DonationManager(this, clientManager, GetWebServerAddress());
DonationManager donationManager = require(DonationManager.class);
//Main Modules
new Enjin(this, clientManager, donationManager, new InventoryManager(this, clientManager));

View File

@ -4,7 +4,6 @@ import mineplex.core.database.MinecraftRepository;
import org.bukkit.plugin.java.JavaPlugin;
import mineplex.serverdata.database.DBPool;
import mineplex.serverdata.database.RepositoryBase;
import mineplex.serverdata.database.column.ColumnInt;
import mineplex.serverdata.database.column.ColumnVarChar;
@ -14,21 +13,11 @@ public class TempRepository extends MinecraftRepository
public TempRepository(JavaPlugin plugin)
{
super(plugin, DBPool.getAccount());
super(DBPool.getAccount());
}
public void addGemBooster(String name, int amount)
{
executeUpdate(INSERT_CLIENT_INVENTORY, new ColumnInt("count", amount), new ColumnVarChar("name", 100, name));
}
@Override
protected void initialize()
{
}
@Override
protected void update()
{
}
}

View File

@ -9,7 +9,6 @@ import mineplex.core.database.MinecraftRepository;
import org.bukkit.plugin.java.JavaPlugin;
import mineplex.serverdata.database.DBPool;
import mineplex.serverdata.database.RepositoryBase;
import mineplex.serverdata.database.ResultSetCallable;
import mineplex.serverdata.database.column.ColumnBoolean;
import mineplex.serverdata.database.column.ColumnInt;
@ -24,15 +23,9 @@ public class PurchaseRepository extends MinecraftRepository
public PurchaseRepository(JavaPlugin plugin)
{
super(plugin, DBPool.getAccount());
super(DBPool.getAccount());
}
@Override
protected void initialize() { }
@Override
protected void update() { }
public void addPackage(String name, ResultSetCallable callable)
{
executeInsert(INSERT_PACKAGE, callable, new ColumnVarChar("packageName", 100, name));

View File

@ -13,7 +13,6 @@ import mineplex.core.common.util.Callback;
import mineplex.core.common.util.NautHashMap;
import mineplex.core.database.MinecraftRepository;
import mineplex.serverdata.database.DBPool;
import mineplex.serverdata.database.RepositoryBase;
import mineplex.serverdata.database.ResultSetCallable;
import mineplex.serverdata.database.column.Column;
import mineplex.serverdata.database.column.ColumnBoolean;
@ -88,7 +87,7 @@ public class ClanRepository extends MinecraftRepository
public ClanRepository(JavaPlugin plugin, String serverName, boolean isClansServer)
{
super(plugin, DBPool.getAccount());
super(DBPool.getAccount());
_serverName = serverName;
_serverId = -1;
@ -400,11 +399,6 @@ public class ClanRepository extends MinecraftRepository
return clans.values();
}
@Override
protected void update()
{
}
public boolean deleteClan(int clanId)
{
return jooq().delete(clans).where(clans.id.equal(clanId)).execute() == 1;

View File

@ -109,7 +109,7 @@ public class Clans extends JavaPlugin
VisibilityManager.Initialize(this);
// new ProfileCacheManager(this);
_donationManager = new DonationManager(this, _clientManager, webServerAddress);
_donationManager = require(DonationManager.class);
new FallingBlocks(this);

View File

@ -22,7 +22,7 @@ public class ClansBanRepository extends MinecraftRepository
public ClansBanRepository(JavaPlugin plugin)
{
super(plugin, DBPool.getAccount());
super(DBPool.getAccount());
}
public CompletableFuture<Optional<ClansBan>> ban(UUID uuid, String admin, long time, String reason)
@ -111,12 +111,6 @@ public class ClansBanRepository extends MinecraftRepository
});
}
@Override
protected void initialize() {}
@Override
protected void update() {}
public void removeBan(ClansBan ban)
{
executeUpdate(REMOVE_BAN, new ColumnInt("id", ban.getId()));

View File

@ -60,11 +60,11 @@ public class BannerManager extends MiniPlugin
public int getBannerUnlockLevel(Player player)
{
int level = 0;
if (ClansManager.getInstance().getDonationManager().Get(player).OwnsUnknownPackage("Clan Banner Usage"))
if (ClansManager.getInstance().getDonationManager().Get(player).ownsUnknownSalesPackage("Clan Banner Usage"))
{
level = 1;
}
if (ClansManager.getInstance().getDonationManager().Get(player).OwnsUnknownPackage("Clan Banner Editor"))
if (ClansManager.getInstance().getDonationManager().Get(player).ownsUnknownSalesPackage("Clan Banner Editor"))
{
level = 2;
}

View File

@ -35,7 +35,7 @@ public class BannerRepository extends MinecraftRepository
public BannerRepository(JavaPlugin plugin, BannerManager bannerManager)
{
super(plugin, DBPool.getAccount());
super(DBPool.getAccount());
_bannerManager = bannerManager;
}
@ -162,13 +162,4 @@ public class BannerRepository extends MinecraftRepository
executeUpdate(DELETE_BANNER, new ColumnInt("clanId", clan.getId()));
});
}
@Override
protected void initialize()
{
//executeUpdate(CREATE);
}
@Override
protected void update() {}
}

View File

@ -29,7 +29,7 @@ public class ClanNameBlacklistRepository extends MinecraftRepository
public ClanNameBlacklistRepository(JavaPlugin plugin, ClansBlacklist blacklist)
{
super(plugin, DBPool.getAccount());
super(DBPool.getAccount());
_blacklist = blacklist;
}
@ -61,11 +61,6 @@ public class ClanNameBlacklistRepository extends MinecraftRepository
});
}
@Override
protected void initialize()
{
}
@Override
protected void update()
{

View File

@ -28,7 +28,7 @@ public class PortalRepository extends MinecraftRepository
public PortalRepository(JavaPlugin plugin, NetherManager portalManager)
{
super(plugin, DBPool.getAccount());
super(DBPool.getAccount());
_nether = portalManager;
}
@ -95,15 +95,4 @@ public class PortalRepository extends MinecraftRepository
executeUpdate(DELETE_PORTAL, new ColumnInt("id", id));
});
}
@Override
protected void initialize()
{
executeUpdate(CREATE);
}
@Override
protected void update()
{
}
}

View File

@ -47,7 +47,7 @@ public class OutpostRepository extends MinecraftRepository
public OutpostRepository(JavaPlugin plugin, OutpostManager manager)
{
super(plugin, DBPool.getAccount());
super(DBPool.getAccount());
_manager = manager;
}
@ -115,11 +115,6 @@ public class OutpostRepository extends MinecraftRepository
executeUpdate(CREATE);
}
@Override
protected void update()
{
}
public void updateOutpost(OutpostToken token)
{
executeUpdate(UPDATE_OUTPOST,

View File

@ -3,9 +3,7 @@ package mineplex.game.clans.clans.siege.repository;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.bukkit.plugin.java.JavaPlugin;
@ -48,7 +46,7 @@ public class SiegeWeaponRepository extends MinecraftRepository
public SiegeWeaponRepository(JavaPlugin plugin, SiegeManager siegeManager)
{
super(plugin, DBPool.getAccount());
super(DBPool.getAccount());
_siegeManager = siegeManager;
}
@ -158,15 +156,4 @@ public class SiegeWeaponRepository extends MinecraftRepository
new ColumnTimestamp("lastFired", new Timestamp(token.LastFired)),
new ColumnVarChar("entities", 100, ""));
}
@Override
protected void initialize()
{
//executeUpdate(CREATE);
}
@Override
protected void update()
{
}
}

View File

@ -12,6 +12,7 @@ import mineplex.game.clans.clans.ClansDataAccessLayer;
import mineplex.game.clans.clans.ClansManager;
import mineplex.game.clans.items.economy.GoldToken;
import mineplex.game.clans.shop.bank.BankShop;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
@ -39,7 +40,11 @@ public class GoldManager extends MiniDbClientPlugin<GoldData>
public static final String META_STRING = "clans.goldAmount";
private static GoldManager _instance;
public static GoldManager getInstance() { return _instance; }
public static GoldManager getInstance()
{
return _instance;
}
private DonationManager _donationManager;
private final int _serverId;
@ -117,7 +122,7 @@ public class GoldManager extends MiniDbClientPlugin<GoldData>
}
}
@EventHandler (ignoreCancelled = true)
@EventHandler(ignoreCancelled = true)
public void onPickup(PlayerPickupItemEvent event)
{
if (_itemSet.contains(event.getItem()))
@ -196,7 +201,7 @@ public class GoldManager extends MiniDbClientPlugin<GoldData>
if (gemCount >= gemAmount)
{
_donationManager.RewardGemsLater("GoldManager", player, -gemAmount);
_donationManager.rewardCurrency(GlobalCurrency.GEM, player, "GoldManager", -gemAmount);
addGold(player, goldCount);
notify(player, String.format("You have transferred %d gems into %d gold coins!", gemAmount, goldCount));
_transferTracker.insertTransfer(player);
@ -431,7 +436,8 @@ public class GoldManager extends MiniDbClientPlugin<GoldData>
}
@Override
protected GoldData addPlayer(UUID uuid) {
protected GoldData addPlayer(UUID uuid)
{
return new GoldData();
}
}

View File

@ -9,7 +9,6 @@ import mineplex.core.database.MinecraftRepository;
import org.bukkit.plugin.java.JavaPlugin;
import mineplex.serverdata.database.DBPool;
import mineplex.serverdata.database.RepositoryBase;
import mineplex.serverdata.database.ResultSetCallable;
import mineplex.serverdata.database.column.ColumnByte;
import mineplex.serverdata.database.column.ColumnDouble;
@ -35,7 +34,7 @@ public class FieldRepository extends MinecraftRepository
public FieldRepository(JavaPlugin plugin)
{
super(plugin, DBPool.getAccount());
super(DBPool.getAccount());
}
public List<FieldBlockToken> getFieldBlocks(String server)
@ -179,10 +178,4 @@ public class FieldRepository extends MinecraftRepository
executeUpdate(CREATE_FIELD_ORE_TABLE);
executeUpdate(CREATE_FIELD_MONSTER_TABLE);
}
@Override
protected void update()
{
}
}

Some files were not shown because too many files have changed in this diff Show More