Completed Energy
This commit is contained in:
parent
abbf6957b0
commit
a9e68ff777
@ -31,12 +31,33 @@ public class UtilTime
|
||||
|
||||
public enum TimeUnit
|
||||
{
|
||||
FIT,
|
||||
DAYS,
|
||||
HOURS,
|
||||
MINUTES,
|
||||
SECONDS,
|
||||
MILLISECONDS
|
||||
FIT(1),
|
||||
DAYS(86400000),
|
||||
HOURS(3600000),
|
||||
MINUTES(60000),
|
||||
SECONDS(1000),
|
||||
MILLISECONDS(1);
|
||||
|
||||
private long _ms;
|
||||
|
||||
TimeUnit(long ms)
|
||||
{
|
||||
_ms = ms;
|
||||
}
|
||||
|
||||
public long getMilliseconds()
|
||||
{
|
||||
return _ms;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Convert from one TimeUnit to a different one
|
||||
*/
|
||||
public static long convert(long time, TimeUnit from, TimeUnit to)
|
||||
{
|
||||
long milleseconds = time * from.getMilliseconds();
|
||||
return milleseconds / to.getMilliseconds();
|
||||
}
|
||||
|
||||
public static String since(long epoch)
|
||||
|
@ -103,17 +103,17 @@ public abstract class MiniPlugin implements Listener
|
||||
System.out.println(F.main(_moduleName, message));
|
||||
}
|
||||
|
||||
protected void runAsync(Runnable runnable)
|
||||
public void runAsync(Runnable runnable)
|
||||
{
|
||||
_plugin.getServer().getScheduler().runTaskAsynchronously(_plugin, runnable);
|
||||
}
|
||||
|
||||
protected void runSync(Runnable runnable)
|
||||
public void runSync(Runnable runnable)
|
||||
{
|
||||
_plugin.getServer().getScheduler().runTask(_plugin, runnable);
|
||||
}
|
||||
|
||||
protected void runSyncLater(Runnable runnable, long delay)
|
||||
public void runSyncLater(Runnable runnable, long delay)
|
||||
{
|
||||
_plugin.getServer().getScheduler().runTaskLater(_plugin, runnable, delay);
|
||||
}
|
||||
|
@ -41,9 +41,9 @@ public class DonationManager extends MiniDbClientPlugin<Donor>
|
||||
public void addCommands()
|
||||
{
|
||||
// TODO: Re-add commands? Where are command implementations, seen as missing at the moment.
|
||||
//addCommand(new GemCommand(this));
|
||||
//addCommand(new CoinCommand(this));
|
||||
//addCommand(new GoldCommand(this));
|
||||
addCommand(new GemCommand(this));
|
||||
addCommand(new CoinCommand(this));
|
||||
addCommand(new GoldCommand(this));
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
@ -59,7 +59,7 @@ public class DonationManager extends MiniDbClientPlugin<Donor>
|
||||
//_repository.updateGemsAndCoins(uuid, Get(token.Name).GetGems(), Get(token.Name).getCoins());
|
||||
}
|
||||
|
||||
public void PurchaseUnknownSalesPackage(final Callback<TransactionResponse> callback, final String name, final int accountId, final String packageName, final boolean coinPurchase, final int cost, boolean oneTimePurchase)
|
||||
public void PurchaseUnknownSalesPackage(final Callback<TransactionResponse> callback, final String name, final int accountId, final String packageName, final CurrencyType currencyType, final int cost, boolean oneTimePurchase)
|
||||
{
|
||||
final Donor donor = Bukkit.getPlayerExact(name) != null ? Get(name) : null;
|
||||
|
||||
@ -83,14 +83,14 @@ public class DonationManager extends MiniDbClientPlugin<Donor>
|
||||
if (donor != null)
|
||||
{
|
||||
donor.AddUnknownSalesPackagesOwned(packageName);
|
||||
donor.DeductCost(cost, coinPurchase ? CurrencyType.Coins : CurrencyType.Gems);
|
||||
donor.DeductCost(cost, currencyType);
|
||||
}
|
||||
}
|
||||
|
||||
if (callback != null)
|
||||
callback.run(response);
|
||||
}
|
||||
}, name, accountId, packageName, coinPurchase, cost);
|
||||
}, name, accountId, packageName, currencyType, cost);
|
||||
}
|
||||
|
||||
public void PurchaseKnownSalesPackage(final Callback<TransactionResponse> callback, final String name, final UUID uuid, final int cost, final int salesPackageId)
|
||||
|
@ -6,6 +6,7 @@ import java.sql.SQLException;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import mineplex.core.common.CurrencyType;
|
||||
import mineplex.core.common.util.Callback;
|
||||
import mineplex.core.database.DBPool;
|
||||
import mineplex.core.database.DatabaseRunnable;
|
||||
@ -69,12 +70,12 @@ public class DonationRepository extends RepositoryBase
|
||||
}), "Error purchasing known sales package in DonationRepository : ");
|
||||
}
|
||||
|
||||
public void PurchaseUnknownSalesPackage(final Callback<TransactionResponse> callback, final String name, final int accountId, final String packageName, final boolean coinPurchase, final int cost)
|
||||
public void PurchaseUnknownSalesPackage(final Callback<TransactionResponse> callback, final String name, final int accountId, final String packageName, final CurrencyType currencyType, final int cost)
|
||||
{
|
||||
final UnknownPurchaseToken token = new UnknownPurchaseToken();
|
||||
token.AccountName = name;
|
||||
token.SalesPackageName = packageName;
|
||||
token.CoinPurchase = coinPurchase;
|
||||
token.CoinPurchase = currencyType == CurrencyType.Coins;
|
||||
token.Cost = cost;
|
||||
token.Premium = false;
|
||||
|
||||
@ -84,11 +85,15 @@ public class DonationRepository extends RepositoryBase
|
||||
{
|
||||
if (response == TransactionResponse.Success)
|
||||
{
|
||||
if (coinPurchase)
|
||||
if (currencyType == CurrencyType.Coins)
|
||||
{
|
||||
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));
|
||||
}
|
||||
else if (currencyType == CurrencyType.Gold)
|
||||
{
|
||||
executeUpdate(UPDATE_ACCOUNT_GOLD, new ColumnInt("gold", -cost), new ColumnInt("id", accountId));
|
||||
}
|
||||
}
|
||||
|
||||
Bukkit.getServer().getScheduler().runTask(Plugin, new Runnable()
|
||||
|
@ -3,6 +3,7 @@ package mineplex.core.reward.rewards;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import mineplex.core.common.CurrencyType;
|
||||
import mineplex.core.donation.DonationManager;
|
||||
import mineplex.core.reward.Reward;
|
||||
import mineplex.core.reward.RewardData;
|
||||
@ -31,7 +32,7 @@ public class UnknownPackageReward extends Reward
|
||||
@Override
|
||||
protected RewardData giveRewardCustom(Player player)
|
||||
{
|
||||
_donationManager.PurchaseUnknownSalesPackage(null, player.getName(), _donationManager.getClientManager().Get(player).getAccountId(), _packageName, true, 0, true);
|
||||
_donationManager.PurchaseUnknownSalesPackage(null, player.getName(), _donationManager.getClientManager().Get(player).getAccountId(), _packageName, CurrencyType.Coins, 0, true);
|
||||
|
||||
return new RewardData(getRarity().getColor() + _name, _itemStack);
|
||||
}
|
||||
|
@ -147,7 +147,7 @@ public class ConfirmationPage<PluginType extends MiniPlugin, ShopType extends Sh
|
||||
{
|
||||
showResultsPage(response);
|
||||
}
|
||||
}, getPlayer().getName(), getClientManager().Get(getPlayer()).getAccountId(), _salesItem.GetName(), getCurrencyType() == CurrencyType.Coins, _salesItem.GetCost(getCurrencyType()), _salesItem.OneTimePurchase());
|
||||
}, getPlayer().getName(), getClientManager().Get(getPlayer()).getAccountId(), _salesItem.GetName(), getCurrencyType(), _salesItem.GetCost(getCurrencyType()), _salesItem.OneTimePurchase());
|
||||
}
|
||||
|
||||
_taskId = getPlugin().getScheduler().scheduleSyncRepeatingTask(getPlugin().getPlugin(), this, 2L, 2L);
|
||||
|
@ -7,6 +7,7 @@ import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import mineplex.core.MiniPlugin;
|
||||
import mineplex.core.account.CoreClientManager;
|
||||
import mineplex.core.common.util.Callback;
|
||||
import mineplex.core.common.util.F;
|
||||
import mineplex.core.donation.DonationManager;
|
||||
import mineplex.game.clans.shop.energy.EnergyShop;
|
||||
@ -14,6 +15,7 @@ import mineplex.game.clans.shop.energy.EnergyShop;
|
||||
public class ClanEnergyManager extends MiniPlugin implements Runnable
|
||||
{
|
||||
private ClansManager _clansManager;
|
||||
private DonationManager _donationManager;
|
||||
private EnergyShop _shop;
|
||||
private int tickCount;
|
||||
|
||||
@ -21,7 +23,8 @@ public class ClanEnergyManager extends MiniPlugin implements Runnable
|
||||
{
|
||||
super("Clan Energy", plugin);
|
||||
_clansManager = clansManager;
|
||||
_shop = new EnergyShop(clansManager, clientManager, donationManager);
|
||||
_donationManager = donationManager;
|
||||
_shop = new EnergyShop(this, clientManager, donationManager);
|
||||
|
||||
// Wait 5 seconds and then tick every 60 seconds
|
||||
_plugin.getServer().getScheduler().runTaskTimer(_plugin, this, 20 * 5, 20 * 60);
|
||||
@ -66,11 +69,22 @@ public class ClanEnergyManager extends MiniPlugin implements Runnable
|
||||
}
|
||||
}
|
||||
|
||||
public void purchaseEnergy(Player player, ClanInfo clanInfo, int energy, Callback<Boolean> callback)
|
||||
{
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void openShop(Player player)
|
||||
{
|
||||
_shop.attemptShopOpen(player);
|
||||
}
|
||||
|
||||
public ClansManager getClansManager()
|
||||
{
|
||||
return _clansManager;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void command(PlayerCommandPreprocessEvent event)
|
||||
{
|
||||
@ -79,4 +93,9 @@ public class ClanEnergyManager extends MiniPlugin implements Runnable
|
||||
openShop(event.getPlayer());
|
||||
}
|
||||
}
|
||||
|
||||
public int convertEnergyToGold(int energy)
|
||||
{
|
||||
return (energy / 4) + (energy % 4 == 0 ? 0 : 1);
|
||||
}
|
||||
}
|
||||
|
@ -469,7 +469,7 @@ public class ClanInfo
|
||||
public int getEnergyMax()
|
||||
{
|
||||
// 10080 = 7 days of minutes
|
||||
return 1440 + (getEnergyCostPerMinute() * 10080);
|
||||
return Math.max(1440, getEnergyCostPerMinute() * 60 * 24 * 3);
|
||||
}
|
||||
|
||||
public int getEnergyCostPerMinute()
|
||||
@ -477,6 +477,11 @@ public class ClanInfo
|
||||
return (getSize() * getClaimCount());
|
||||
}
|
||||
|
||||
public int getEnergyPurchasableMinutes()
|
||||
{
|
||||
return getEnergyPurchasable() / getEnergyCostPerMinute();
|
||||
}
|
||||
|
||||
public int getEnergyPurchasable()
|
||||
{
|
||||
int diff = getEnergyMax() - getEnergy();
|
||||
|
@ -66,6 +66,7 @@ public class ClansDataAccessLayer
|
||||
token.Description = "No Description";
|
||||
token.Home = "";
|
||||
token.Admin = admin;
|
||||
token.Energy = 1440;
|
||||
|
||||
//Create Clan
|
||||
ClanInfo clan = new ClanInfo(_manager, token);
|
||||
|
@ -587,16 +587,6 @@ public class ClansManager extends MiniClientPlugin<ClientClan> implements IRelat
|
||||
return _chat;
|
||||
}
|
||||
|
||||
public int convertGoldToEnergy(int gold)
|
||||
{
|
||||
return gold * 4;
|
||||
}
|
||||
|
||||
public int convertEnergyToGold(int energy)
|
||||
{
|
||||
return (energy / 4) + (energy % 4 == 0 ? 0 : 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the timezone for this server.
|
||||
* This may be used in the future if we have
|
||||
|
@ -799,6 +799,12 @@ public class ClansCommand extends CommandBase<ClansManager>
|
||||
return;
|
||||
}
|
||||
|
||||
if (clan.getEnergy() == 0)
|
||||
{
|
||||
UtilPlayer.message(caller, F.main("Clans", "You must purchase energy at a shop before you can claim land."));
|
||||
return;
|
||||
}
|
||||
|
||||
String chunk = UtilWorld.chunkToStr(caller.getLocation().getChunk());
|
||||
ClanInfo ownerClan = Plugin.getClanUtility().getOwner(caller.getLocation());
|
||||
|
||||
|
@ -138,7 +138,8 @@ public class ClansRegions extends MiniPlugin
|
||||
sendBorder(event.getPlayer());
|
||||
}
|
||||
|
||||
@EventHandler public void onTeleport(PlayerTeleportEvent event)
|
||||
@EventHandler
|
||||
public void onTeleport(PlayerTeleportEvent event)
|
||||
{
|
||||
Location from = event.getFrom();
|
||||
Location to = event.getTo();
|
||||
|
@ -0,0 +1,25 @@
|
||||
package mineplex.game.clans.shop.energy;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import mineplex.core.common.CurrencyType;
|
||||
import mineplex.core.shop.item.SalesPackageBase;
|
||||
|
||||
public class EnergyPackage extends SalesPackageBase
|
||||
{
|
||||
public EnergyPackage(String name, int cost)
|
||||
{
|
||||
super(name, Material.REDSTONE, " ", ChatColor.RESET + "Clan Energy");
|
||||
CurrencyCostMap.put(CurrencyType.Gold, cost);
|
||||
KnownPackage = false;
|
||||
OneTimePurchaseOnly = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void Sold(Player player, CurrencyType currencyType)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
@ -1,5 +1,8 @@
|
||||
package mineplex.game.clans.shop.energy;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -8,122 +11,80 @@ import org.bukkit.inventory.ItemStack;
|
||||
import mineplex.core.account.CoreClientManager;
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.F;
|
||||
import mineplex.core.common.util.UtilTime;
|
||||
import mineplex.core.donation.DonationManager;
|
||||
import mineplex.core.itemstack.ItemStackFactory;
|
||||
import mineplex.core.shop.item.ShopItem;
|
||||
import mineplex.core.shop.page.ShopPageBase;
|
||||
import mineplex.game.clans.clans.ClanEnergyManager;
|
||||
import mineplex.game.clans.clans.ClanInfo;
|
||||
import mineplex.game.clans.clans.ClansManager;
|
||||
|
||||
public class EnergyPage extends ShopPageBase<ClansManager, EnergyShop>
|
||||
public class EnergyPage extends ShopPageBase<ClanEnergyManager, EnergyShop>
|
||||
{
|
||||
private ClanInfo _clanInfo;
|
||||
|
||||
public EnergyPage(ClansManager plugin, EnergyShop shop, CoreClientManager clientManager, DonationManager donationManager, Player player)
|
||||
public EnergyPage(ClanEnergyManager plugin, EnergyShop shop, CoreClientManager clientManager, DonationManager donationManager, Player player)
|
||||
{
|
||||
super(plugin, shop, clientManager, donationManager, "Energy Shop", player, 9);
|
||||
_clanInfo = getPlugin().getClan(getPlayer());
|
||||
|
||||
super(plugin, shop, clientManager, donationManager, "Energy Shop", player, 18);
|
||||
buildPage();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void buildPage()
|
||||
{
|
||||
if (_clanInfo == null)
|
||||
{
|
||||
ClanInfo clanInfo = getPlugin().getClansManager().getClan(getPlayer());
|
||||
if (clanInfo == null)
|
||||
buildNoClan();
|
||||
return;
|
||||
}
|
||||
else if (_clanInfo.getEnergyPurchasable() > 0)
|
||||
{
|
||||
if (hasEnoughGold())
|
||||
{
|
||||
buildPurchasable(_clanInfo);
|
||||
}
|
||||
else
|
||||
{
|
||||
buildNotEnoughGold(_clanInfo);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
buildMaxEnergy(_clanInfo);
|
||||
addInfo(clanInfo, 4);
|
||||
buildPurchase(clanInfo);
|
||||
}
|
||||
}
|
||||
|
||||
private void buildPurchasable(ClanInfo _clanInfo)
|
||||
private void buildPurchase(ClanInfo clanInfo)
|
||||
{
|
||||
int playerGold = getPlayerGold();
|
||||
int energyCost = getEnergyPerHour();
|
||||
int goldCost = getGoldPerHour();
|
||||
int energyPerMin = Math.max(1, clanInfo.getEnergyCostPerMinute());
|
||||
|
||||
EnergyShopButton button = new EnergyShopButton(getPlayer(), getPlugin(), this, _clanInfo, true, getDonationManager());
|
||||
String title = "Purchase Energy";
|
||||
String currentEnergy = ChatColor.RESET + F.value("Clan Energy", "" + _clanInfo.getEnergy());
|
||||
String energyString = ChatColor.RESET + F.value("Energy drain/hour", "" + energyCost);
|
||||
String playerGoldString = ChatColor.RESET + F.value("Your Gold", playerGold + "g");
|
||||
String purchaseString = ChatColor.RESET + C.cWhite + "Click to buy 1 hour of energy for " + C.cYellow + goldCost + "g";
|
||||
ShopItem shopItem = new ShopItem(Material.LAVA_BUCKET, title, new String[] {" ", currentEnergy, energyString, " ", playerGoldString, purchaseString}, 0, false, false);
|
||||
addButton(4, shopItem, button);
|
||||
int oneHourEnergy = energyPerMin * 60;
|
||||
int oneDayEnergy = oneHourEnergy * 24;
|
||||
int maxEnergy = clanInfo.getEnergyPurchasable();
|
||||
|
||||
addButton(clanInfo, 11, oneHourEnergy, Material.REDSTONE, (byte) 0, " ", ChatColor.RESET + "1 Hour of Energy", " ", ChatColor.RESET + "Costs " + C.cGreen + "$" + getPlugin().convertEnergyToGold(oneHourEnergy));
|
||||
addButton(clanInfo, 13, oneDayEnergy, Material.REDSTONE_BLOCK, (byte) 0, " ", ChatColor.RESET + "1 Day of Energy", " ", ChatColor.RESET + "Costs " + C.cGreen + "$" + getPlugin().convertEnergyToGold(oneDayEnergy));
|
||||
addButton(clanInfo, 15, maxEnergy, Material.FURNACE, (byte) 0, " ", ChatColor.RESET + "Maxed Out Energy", " ", ChatColor.RESET + "Costs " + C.cGreen + "$" + getPlugin().convertEnergyToGold(maxEnergy));
|
||||
}
|
||||
|
||||
private void buildNotEnoughGold(ClanInfo _clanInfo)
|
||||
private void addInfo(ClanInfo clanInfo, int slot)
|
||||
{
|
||||
int playerGold = getPlayerGold();
|
||||
int energyCost = getEnergyPerHour();
|
||||
int goldCost = getGoldPerHour();
|
||||
String itemName = clanInfo.getName();
|
||||
ArrayList<String> lore = new ArrayList<String>();
|
||||
lore.add(" ");
|
||||
lore.add(C.cYellow + "Energy: " + ChatColor.RESET + clanInfo.getEnergy());
|
||||
lore.add(C.cYellow + "Drain: " + ChatColor.RESET + clanInfo.getEnergyCostPerMinute() * 60 + " per Hour");
|
||||
lore.add(C.cYellow + "Max Energy: " + ChatColor.RESET + clanInfo.getEnergyMax());
|
||||
if (clanInfo.getEnergyCostPerMinute() > 0)
|
||||
lore.add(C.cYellow + "Time Left: " + ChatColor.RESET + UtilTime.convertString((clanInfo.getEnergy() / clanInfo.getEnergyCostPerMinute()) * 60000L, 1, UtilTime.TimeUnit.FIT));
|
||||
|
||||
EnergyShopButton button = new EnergyShopButton(getPlayer(), getPlugin(), this, _clanInfo, true, getDonationManager());
|
||||
String title = ChatColor.RED + C.Bold + "Missing Gold!";
|
||||
String currentEnergy = ChatColor.RESET + F.value("Clan Energy", "" + _clanInfo.getEnergy());
|
||||
String energyString = ChatColor.RESET + F.value("Energy drain/hour", "" + energyCost);
|
||||
String playerGoldString = ChatColor.RESET + F.value("Your Gold", playerGold + "g");
|
||||
String purchaseString = ChatColor.RESET + C.cWhite + "You don't have enough gold";
|
||||
String goldString = ChatColor.RESET + C.cWhite + "You need " + C.cYellow + goldCost + C.cWhite + " gold to purchase energy";
|
||||
ShopItem shopItem = new ShopItem(Material.GOLD_INGOT, title, new String[] {" ", currentEnergy, energyString, " ", playerGoldString, purchaseString, goldString}, 0, false, false);
|
||||
addButton(4, shopItem, button);
|
||||
ShopItem shopItem = new ShopItem(Material.DIAMOND, itemName, lore.toArray(new String[0]), 1, false, false);
|
||||
setItem(slot, shopItem);
|
||||
}
|
||||
|
||||
private void addButton(ClanInfo clanInfo, int slot, int energyAmount, Material material, byte data, String... lore)
|
||||
{
|
||||
boolean locked = energyAmount > clanInfo.getEnergyPurchasable() || energyAmount == 0;
|
||||
String itemName = "Purchase " + energyAmount + " Energy";
|
||||
|
||||
ShopItem shopItem = new ShopItem(material, itemName, lore, 1, locked, false);
|
||||
|
||||
if (locked)
|
||||
setItem(slot, shopItem);
|
||||
else
|
||||
addButton(slot, shopItem, new EnergyShopButton(getPlugin(), this, energyAmount, clanInfo));
|
||||
}
|
||||
|
||||
private void buildNoClan()
|
||||
{
|
||||
ShopItem shopItem = new ShopItem(Material.GLASS, "No Clan!", new String[] {" ", "You need to be in a", "clan to purchase energy!"}, 1, false, false);
|
||||
ShopItem shopItem = new ShopItem(Material.BEDROCK, "No Clan!", new String[] {" ", ChatColor.RESET + "You need to be in a", ChatColor.RESET + "clan to purchase energy!"}, 1, false, false);
|
||||
setItem(4, shopItem);
|
||||
}
|
||||
|
||||
private void buildMaxEnergy(ClanInfo _clanInfo)
|
||||
{
|
||||
int energy = _clanInfo.getEnergy();
|
||||
String title = C.cRed + C.Bold + "Cannot Purchase Energy!";
|
||||
String currentEnergy = ChatColor.RESET + F.value("Clan Energy", "" + energy);
|
||||
String[] lore = new String[] {" ", currentEnergy, ChatColor.RESET + "Your clan is at the energy cap"};
|
||||
ShopItem shopItem = new ShopItem(Material.BUCKET, title, lore, 0, false, false);
|
||||
addItem(4, shopItem);
|
||||
}
|
||||
|
||||
protected boolean hasEnoughGold()
|
||||
{
|
||||
return getPlayerGold() >= getGoldPerHour();
|
||||
}
|
||||
|
||||
protected int getGoldPerHour()
|
||||
{
|
||||
return getPlugin().convertEnergyToGold(getEnergyPerHour());
|
||||
}
|
||||
|
||||
protected int getEnergyPerHour()
|
||||
{
|
||||
return _clanInfo.getEnergyCostPerMinute() * 60;
|
||||
}
|
||||
|
||||
protected int getPlayerGold()
|
||||
{
|
||||
return getDonationManager().Get(getPlayer()).getGold();
|
||||
}
|
||||
|
||||
public void showLoading()
|
||||
{
|
||||
ItemStack is = ItemStackFactory.Instance.CreateStack(Material.WOOL, (byte) 11, 1, C.cAqua + C.Bold + "Please Wait..");
|
||||
setItem(4, is);
|
||||
}
|
||||
}
|
||||
|
@ -6,18 +6,18 @@ import mineplex.core.account.CoreClientManager;
|
||||
import mineplex.core.donation.DonationManager;
|
||||
import mineplex.core.shop.ShopBase;
|
||||
import mineplex.core.shop.page.ShopPageBase;
|
||||
import mineplex.game.clans.clans.ClanEnergyManager;
|
||||
import mineplex.game.clans.clans.ClansManager;
|
||||
|
||||
public class EnergyShop extends ShopBase<ClansManager>
|
||||
public class EnergyShop extends ShopBase<ClanEnergyManager>
|
||||
{
|
||||
public EnergyShop(ClansManager plugin, CoreClientManager clientManager, DonationManager donationManager)
|
||||
public EnergyShop(ClanEnergyManager plugin, CoreClientManager clientManager, DonationManager donationManager)
|
||||
{
|
||||
super(plugin, clientManager, donationManager, "Energy Shop");
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected ShopPageBase<ClansManager, ? extends ShopBase<ClansManager>> buildPagesFor(Player player)
|
||||
protected ShopPageBase<ClanEnergyManager, ? extends ShopBase<ClanEnergyManager>> buildPagesFor(Player player)
|
||||
{
|
||||
return new EnergyPage(getPlugin(), this, getClientManager(), getDonationManager(), player);
|
||||
}
|
||||
|
@ -1,56 +1,64 @@
|
||||
package mineplex.game.clans.shop.energy;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
|
||||
import mineplex.core.common.CurrencyType;
|
||||
import mineplex.core.common.util.Callback;
|
||||
import mineplex.core.common.util.F;
|
||||
import mineplex.core.common.util.UtilTime;
|
||||
import mineplex.core.donation.DonationManager;
|
||||
import mineplex.core.energy.Energy;
|
||||
import mineplex.core.shop.ShopBase;
|
||||
import mineplex.core.shop.item.IButton;
|
||||
import mineplex.core.shop.page.ConfirmationPage;
|
||||
import mineplex.game.clans.clans.ClanEnergyManager;
|
||||
import mineplex.game.clans.clans.ClanInfo;
|
||||
import mineplex.game.clans.clans.ClansManager;
|
||||
|
||||
public class EnergyShopButton implements IButton
|
||||
{
|
||||
private Player _player;
|
||||
private ClansManager _clansManager;
|
||||
private ClanEnergyManager _energyManager;
|
||||
private EnergyPage _page;
|
||||
private int _energyToPurchase;
|
||||
private ClanInfo _clanInfo;
|
||||
private boolean _canPurchaseEnergy;
|
||||
private DonationManager _donationManager;
|
||||
|
||||
public EnergyShopButton(Player player, ClansManager clansManager, EnergyPage page, ClanInfo clanInfo, boolean canPurchaseEnergy, DonationManager donationManager)
|
||||
public EnergyShopButton(ClanEnergyManager energyManager, EnergyPage page, int energyToPurchase, ClanInfo clanInfo)
|
||||
{
|
||||
_player = player;
|
||||
_clansManager = clansManager;
|
||||
_energyManager = energyManager;
|
||||
_clanInfo = clanInfo;
|
||||
_canPurchaseEnergy = canPurchaseEnergy;
|
||||
_donationManager = donationManager;
|
||||
_energyToPurchase = energyToPurchase;
|
||||
_page = page;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onClick(final Player player, ClickType clickType)
|
||||
{
|
||||
if (_page.hasEnoughGold())
|
||||
_page.getShop().openPageForPlayer(player, new ConfirmationPage<ClanEnergyManager, EnergyShop>(
|
||||
_page.getPlugin(), _page.getShop(), _page.getClientManager(), _page.getDonationManager(), new Runnable()
|
||||
{
|
||||
int playerGold = _page.getPlayerGold();
|
||||
final int energy = _page.getEnergyPerHour();
|
||||
int goldCost = _page.getGoldPerHour();
|
||||
|
||||
_page.clearPage();
|
||||
_page.showLoading();
|
||||
_donationManager.RewardGold(new Callback<Boolean>()
|
||||
public void run()
|
||||
{
|
||||
@Override
|
||||
public void run(Boolean data)
|
||||
_clanInfo.adjustEnergy(_energyToPurchase);
|
||||
_page.refresh();
|
||||
|
||||
_energyManager.runAsync(new Runnable()
|
||||
{
|
||||
player.playSound(player.getEyeLocation(), Sound.ANVIL_USE, 1, 1);
|
||||
_clanInfo.adjustEnergy(energy);
|
||||
_page.refresh();
|
||||
}
|
||||
}, "Energy Purchase", player.getName(), _page.getClientManager().Get(player).getAccountId(), -goldCost, true);
|
||||
}
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
_energyManager.getClansManager().getClanDataAccess().updateEnergy(_clanInfo);
|
||||
}
|
||||
});
|
||||
|
||||
// Notify
|
||||
_energyManager.getClansManager().messageClan(_clanInfo, F.main("Energy", F.name(player.getName()) + " purchased " + F.elem(_energyToPurchase + " Energy") + " for the clan"));
|
||||
}
|
||||
}, _page, new EnergyPackage(_energyToPurchase + " Energy", _energyManager.convertEnergyToGold(_energyToPurchase)), CurrencyType.Gold, player));
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -23,6 +23,7 @@ import org.bukkit.event.entity.ItemSpawnEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||
|
||||
import mineplex.core.common.CurrencyType;
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.F;
|
||||
import mineplex.core.common.util.UtilBlock;
|
||||
@ -399,7 +400,7 @@ public class Halloween extends SoloGame
|
||||
{
|
||||
for (Player player : GetPlayers(false))
|
||||
{
|
||||
Manager.GetDonation().PurchaseUnknownSalesPackage(null, player.getName(), Manager.GetClients().Get(player).getAccountId(), "Pumpling", false, 0, true);
|
||||
Manager.GetDonation().PurchaseUnknownSalesPackage(null, player.getName(), Manager.GetClients().Get(player).getAccountId(), "Pumpling", CurrencyType.Gems, 0, true);
|
||||
Manager.GetGame().AddGems(player, 30, "Killing the Pumpkin King", false, false);
|
||||
Manager.GetGame().AddGems(player, 10, "Participation", false, false);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user