From 5ebc7080eece15a8ef3ea5d9bdf3077e69ec8826 Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Fri, 7 Aug 2015 04:13:09 -0500 Subject: [PATCH 1/7] Push fixes --- .../src/mineplex/hub/bonuses/BonusManager.java | 4 ++++ .../src/mineplex/hub/bonuses/gui/buttons/VoteButton.java | 8 +++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusManager.java index 5acba755a..d02890ff0 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusManager.java @@ -141,6 +141,7 @@ public class BonusManager extends MiniClientPlugin implements I { incrementDailyStreak(player); awardBonus(player, amount); + updateCreeperVisual(player); } result.accept(r); @@ -177,7 +178,10 @@ public class BonusManager extends MiniClientPlugin implements I public void accept(Boolean aBoolean) { if (aBoolean) + { awardBonus(player, getRankBonusAmount(player)); + updateCreeperVisual(player); + } result.accept(aBoolean); } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/VoteButton.java b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/VoteButton.java index 164c55936..0552203d7 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/VoteButton.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/VoteButton.java @@ -58,7 +58,8 @@ public class VoteButton implements GuiItem, Listener { { //TODO get url from db _url = "http://minecraftservers.org/vote/121070"; - + + setItem(); Bukkit.getPluginManager().registerEvents(this, getPlugin()); } @@ -68,7 +69,6 @@ public class VoteButton implements GuiItem, Listener { HandlerList.unregisterAll(this); } - @Override public void click(ClickType clickType) { @@ -113,7 +113,7 @@ public class VoteButton implements GuiItem, Listener { if (isAvailable()) { - material = Material.CHEST; + material = Material.JUKEBOX; itemName = C.cGreen + C.Bold + "Vote Bonus"; lore.add(" "); @@ -165,6 +165,8 @@ public class VoteButton implements GuiItem, Listener { { if (_url == null) return false; + System.out.println(timeLeft()); + return (timeLeft() <= 0); } From f76d9b0d37f021374ed3880fa117cb47597888c2 Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Fri, 7 Aug 2015 04:20:54 -0500 Subject: [PATCH 2/7] Replace Consumers with Callbacks --- .../mineplex/hub/bonuses/BonusManager.java | 25 +++++++------ .../mineplex/hub/bonuses/BonusRepository.java | 35 +++++++++---------- .../bonuses/gui/buttons/DailyBonusButton.java | 7 ++-- .../bonuses/gui/buttons/RankBonusButton.java | 8 ++--- 4 files changed, 34 insertions(+), 41 deletions(-) diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusManager.java index d02890ff0..bfd1bca5a 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusManager.java @@ -4,7 +4,6 @@ import java.sql.Date; import java.sql.Timestamp; import java.util.Calendar; import java.util.TimeZone; -import java.util.function.Consumer; import mineplex.core.MiniClientPlugin; import mineplex.core.account.CoreClient; @@ -127,15 +126,15 @@ public class BonusManager extends MiniClientPlugin implements I public static final long TIME_BETWEEN_BONUSES = 1000 * 60 * 60 * 20; public static final long STREAK_RESET_TIME = 1000 * 60 * 60 * 12; - public void attemptDailyBonus(final Player player, final BonusAmount amount, final Consumer result) + public void attemptDailyBonus(final Player player, final BonusAmount amount, final Callback result) { if (timeTillDailyBonus(player) > 0) - result.accept(false); + result.run(false); - getRepository().attemptDailyBonus(player, new Consumer() + getRepository().attemptDailyBonus(player, new Callback() { @Override - public void accept(Boolean r) + public void run(Boolean r) { if (r) { @@ -144,7 +143,7 @@ public class BonusManager extends MiniClientPlugin implements I updateCreeperVisual(player); } - result.accept(r); + result.run(r); } }); } @@ -168,14 +167,14 @@ public class BonusManager extends MiniClientPlugin implements I } // RANK BONUS - public void attemptRankBonus(final Player player, final Consumer result) + public void attemptRankBonus(final Player player, final Callback result) { if (timeTillRankBonus(player) > 0) - result.accept(false); - getRepository().attemptRankBonus(player, new Consumer() + result.run(false); + getRepository().attemptRankBonus(player, new Callback() { @Override - public void accept(Boolean aBoolean) + public void run(Boolean aBoolean) { if (aBoolean) { @@ -183,7 +182,7 @@ public class BonusManager extends MiniClientPlugin implements I updateCreeperVisual(player); } - result.accept(aBoolean); + result.run(aBoolean); } }); } @@ -305,10 +304,10 @@ public class BonusManager extends MiniClientPlugin implements I //VOTE - public void atteptVoteBonus(final Player player, final Consumer result) + public void atteptVoteBonus(final Player player, final Callback result) { if (timeTillRankBonus(player) > 0) - result.accept(false); + result.run(false); getRepository().attemptRankBonus(player, result); } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusRepository.java b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusRepository.java index 0ee538f8b..070e4aec0 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusRepository.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusRepository.java @@ -6,11 +6,8 @@ import java.sql.Date; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Timestamp; -import java.util.function.Consumer; import mineplex.core.common.util.Callback; -import mineplex.core.common.util.F; -import mineplex.core.common.util.UtilPlayer; import mineplex.core.database.DBPool; import mineplex.core.database.RepositoryBase; import mineplex.core.database.ResultSetCallable; @@ -60,10 +57,10 @@ public class BonusRepository extends RepositoryBase return record; } - public void attemptDailyBonus(final Player player, final Consumer result) + public void attemptDailyBonus(final Player player, final Callback result) { if (!Recharge.Instance.usable(player, "AttemptDailyBonus")) { - result.accept(false); + result.run(false); return; } final int accountId = _manager.getClientManager().Get(player).getAccountId(); @@ -105,13 +102,13 @@ public class BonusRepository extends RepositoryBase if (pass) { _manager.Get(player).setDailyTime(new Timestamp(BonusManager.getSqlTime())); - result.accept(true); + result.run(true); } else { Recharge.Instance.use(player, "AttemptDailyBonus", 1000 * 10, false, false); _manager.Get(player).setDailyTime(timeStamp); - result.accept(false); + result.run(false); } } }); @@ -120,23 +117,23 @@ public class BonusRepository extends RepositoryBase { Recharge.Instance.use(player, "AttemptDailyBonus", 1000 * 30, false, false); e.printStackTrace(); - result.accept(false); + result.run(false); } } }); } - public void attemptRankBonus(final Player player, final Consumer result) + public void attemptRankBonus(final Player player, final Callback result) { if (!Recharge.Instance.usable(player, "AttemptRankBonus")) { - result.accept(false); + result.run(false); return; } final int accountId = _manager.getClientManager().Get(player).getAccountId(); final int coins = _manager.getRankBonusAmount(player).getCoins(); if (coins == 0/* && gems == 0 */) { - result.accept(false); + result.run(false); return; } @@ -171,29 +168,29 @@ public class BonusRepository extends RepositoryBase if (pass) { - result.accept(true); + result.run(true); } else { Recharge.Instance.use(player, "AttemptRankBonus", 1000 * 10, false, false); - result.accept(false); + result.run(false); } } }); } catch (Exception e) { Recharge.Instance.use(player, "AttemptRankBonus", 1000 * 30, false, false); e.printStackTrace(); - result.accept(false); + result.run(false); } } }); } - public void voteBonus(final Player player, final Consumer result) + public void voteBonus(final Player player, final Callback result) { if (!Recharge.Instance.usable(player, "AttemptVoteBonus")) { - result.accept(false); + result.run(false); return; } final int accountId = _manager.getClientManager().Get(player).getAccountId(); @@ -202,7 +199,7 @@ public class BonusRepository extends RepositoryBase final int gems = 0; if (coins == 0/* && gems == 0 */) { - result.accept(false); + result.run(false); return; } @@ -237,13 +234,13 @@ public class BonusRepository extends RepositoryBase _donationManager.RewardCoins(null, "Vote bonus", player.getName(), accountId, coins); _donationManager.RewardGems(null, "Vote bonus", player.getName(), player.getUniqueId(), gems); - result.accept(true); + result.run(true); } }); } catch (Exception e) { e.printStackTrace(); - result.accept(false); + result.run(false); } } }); diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/DailyBonusButton.java b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/DailyBonusButton.java index 2ba7a359a..4554c8a58 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/DailyBonusButton.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/DailyBonusButton.java @@ -1,9 +1,9 @@ package mineplex.hub.bonuses.gui.buttons; import java.util.ArrayList; -import java.util.function.Consumer; import mineplex.core.common.util.C; +import mineplex.core.common.util.Callback; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilTime; @@ -72,10 +72,9 @@ public class DailyBonusButton implements GuiItem, Listener _item = ItemStackFactory.Instance.CreateStack(Material.LAPIS_BLOCK, (byte)0, 1, ChatColor.BLUE + "Processing..."); refreshItem(); new LoadingWindow(getPlugin(), getPlayer(), 6*9); - _bonusManager.attemptDailyBonus(getPlayer(), _bonusManager.getDailyBonusAmount(_player), new Consumer() { - @SuppressWarnings("deprecation") + _bonusManager.attemptDailyBonus(getPlayer(), _bonusManager.getDailyBonusAmount(_player), new Callback() { @Override - public void accept(Boolean t) + public void run(Boolean t) { if (t) { diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/RankBonusButton.java b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/RankBonusButton.java index e5007bd53..3189ec5d5 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/RankBonusButton.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/RankBonusButton.java @@ -1,9 +1,9 @@ package mineplex.hub.bonuses.gui.buttons; import java.util.ArrayList; -import java.util.function.Consumer; import mineplex.core.common.util.C; +import mineplex.core.common.util.Callback; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilTime; @@ -17,7 +17,6 @@ import mineplex.core.shop.item.ShopItem; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import mineplex.hub.bonuses.BonusAmount; -import mineplex.hub.bonuses.BonusClientData; import mineplex.hub.bonuses.BonusManager; import org.bukkit.Bukkit; @@ -83,11 +82,10 @@ public class RankBonusButton implements GuiItem, Listener { _item = ItemStackFactory.Instance.CreateStack(Material.LAPIS_BLOCK, (byte)0, 1, ChatColor.BLUE + "Processing..."); refreshItem(); new LoadingWindow(getPlugin(), getPlayer(), 6*9); - _bonusManager.attemptRankBonus(getPlayer(), new Consumer() + _bonusManager.attemptRankBonus(getPlayer(), new Callback() { - @SuppressWarnings("deprecation") @Override - public void accept(Boolean t) + public void run(Boolean t) { setItem(); From 4f6dfdb856d9ab918e1aacd25532236fcbb3bc7d Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Sat, 8 Aug 2015 06:35:25 -0500 Subject: [PATCH 3/7] Update carl spin button to consume tickets, Updates to Votifier Plugin, Redis Vote Command, Various bug fixes --- .../core/votifier/RedisVotifierCommand.java | 17 --- .../core/votifier/VotifierCommand.java | 23 ++++ .../src/mineplex/hub/bonuses/BonusAmount.java | 1 - .../mineplex/hub/bonuses/BonusManager.java | 105 +++++++++++++++++- .../mineplex/hub/bonuses/BonusRepository.java | 65 +++++++++++ .../mineplex/hub/bonuses/StreakRecord.java | 23 ++++ .../src/mineplex/hub/bonuses/VoteHandler.java | 31 ++++++ .../mineplex/hub/bonuses/gui/BonusGui.java | 2 +- .../bonuses/gui/buttons/CarlSpinButton.java | 43 ++++++- .../bonuses/gui/buttons/DailyBonusButton.java | 12 +- .../hub/bonuses/gui/buttons/VoteButton.java | 13 ++- .../Mineplex.Votifier/Mineplex.Votifier.iml | 1 + .../mineplex/votifier/VotifierManager.java | 46 +++++++- 13 files changed, 342 insertions(+), 40 deletions(-) delete mode 100644 Plugins/Mineplex.Core/src/mineplex/core/votifier/RedisVotifierCommand.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/votifier/VotifierCommand.java create mode 100644 Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/StreakRecord.java create mode 100644 Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/VoteHandler.java diff --git a/Plugins/Mineplex.Core/src/mineplex/core/votifier/RedisVotifierCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/votifier/RedisVotifierCommand.java deleted file mode 100644 index 7b92598b3..000000000 --- a/Plugins/Mineplex.Core/src/mineplex/core/votifier/RedisVotifierCommand.java +++ /dev/null @@ -1,17 +0,0 @@ -package mineplex.core.votifier; - -import java.util.UUID; - -import mineplex.serverdata.commands.ServerCommand; - -public class RedisVotifierCommand extends ServerCommand -{ - private UUID _voterUUID; - - - public RedisVotifierCommand() - { - - } - -} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/votifier/VotifierCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/votifier/VotifierCommand.java new file mode 100644 index 000000000..a84087fb0 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/votifier/VotifierCommand.java @@ -0,0 +1,23 @@ +package mineplex.core.votifier; + +import java.util.UUID; + +import mineplex.serverdata.commands.ServerCommand; + +public class VotifierCommand extends ServerCommand +{ + private String _playerName; + + public VotifierCommand(String playerName, String targetServer) + { + super(targetServer); + + _playerName = playerName; + } + + public String getPlayerName() + { + return _playerName; + } + +} diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusAmount.java b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusAmount.java index 9c5343077..d596a846b 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusAmount.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusAmount.java @@ -143,7 +143,6 @@ public class BonusAmount addLore(lore, getGems(), getBonusGems(), "Gems"); addLore(lore, getGold(), getBonusGold(), "Gold"); addLore(lore, getExperience(), getBonusExperience(), "Experience"); - lore.add(" "); } private void addLore(List lore, int amount, int bonus, String suffix) diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusManager.java index bfd1bca5a..b4bd57948 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusManager.java @@ -23,10 +23,14 @@ import mineplex.core.npc.NpcManager; import mineplex.core.reward.RewardManager; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; +import mineplex.core.votifier.VotifierCommand; import mineplex.hub.bonuses.commands.GuiCommand; import mineplex.hub.bonuses.gui.BonusGui; import mineplex.database.tables.records.BonusRecord; +import mineplex.hub.bonuses.gui.SpinGui; +import mineplex.serverdata.commands.ServerCommandManager; +import org.bukkit.Bukkit; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import org.bukkit.entity.LivingEntity; @@ -87,6 +91,10 @@ public class BonusManager extends MiniClientPlugin implements I private RewardManager _rewardManager; private Npc _carlNpc; + // Streak + private StreakRecord _dailyStreak; + private StreakRecord _voteStreak; + public BonusManager(JavaPlugin plugin, CoreClientManager clientManager, DonationManager donationManager, NpcManager npcManager, HologramManager hologramManager, RewardManager rewardManager) { super("Bonus", plugin); @@ -102,7 +110,11 @@ public class BonusManager extends MiniClientPlugin implements I clientManager.addStoredProcedureLoginProcessor(this); + ServerCommandManager.getInstance().registerCommandType("VotifierCommand", VotifierCommand.class, + new VoteHandler(this)); + updateOffSet(); + updateStreakRecord(); } @Override @@ -121,6 +133,51 @@ public class BonusManager extends MiniClientPlugin implements I updateOffSet(); } + @EventHandler + public void updateStreak(UpdateEvent event) + { + if (event.getType() != UpdateType.MIN_16) + return; + + updateStreakRecord(); + } + + private void updateStreakRecord() + { + _repository.getDailyStreakRecord(new Callback() + { + @Override + public void run(StreakRecord data) + { + _dailyStreak = data; + } + }); + + _repository.getVoteStreakRecord(new Callback() + { + @Override + public void run(StreakRecord data) + { + _voteStreak = data; + } + }); + } + + public StreakRecord getDailyStreak() + { + return _dailyStreak; + } + + public StreakRecord getVoteStreak() + { + return _voteStreak; + } + + public void handleVote(Player player) + { + Bukkit.broadcastMessage("Recieved Vote: " + player.getName()); + } + // DAILY BONUS public static final long TIME_BETWEEN_BONUSES = 1000 * 60 * 60 * 20; @@ -186,6 +243,41 @@ public class BonusManager extends MiniClientPlugin implements I } }); } + + public void attemptCarlSpin(final Player player) + { + final BonusClientData clientData = Get(player); + + if (clientData.getTickets() > 0) + { + clientData.setTickets(clientData.getTickets() - 1); + + runAsync(new Runnable() + { + @Override + public void run() + { + int modified = clientData.getRecord().store(); + + if (modified == 1) + { + runSync(new Runnable() + { + @Override + public void run() + { + new SpinGui(getPlugin(), player, _rewardManager).openInventory(); + } + }); + } + else + { + UtilPlayer.message(player, F.main("Carl", "There was an error processing your request")); + } + } + }); + } + } public long timeTillRankBonus(Player player) { @@ -275,8 +367,6 @@ public class BonusManager extends MiniClientPlugin implements I { BonusAmount amount = new BonusAmount(); amount.setTickets(1); - amount.setBonusCoins(100); - amount.setBonusExperience(100); return amount; } @@ -330,7 +420,7 @@ public class BonusManager extends MiniClientPlugin implements I public void awardBonus(final Player player, BonusAmount amount) { - BonusClientData bonusClient = Get(player); + final BonusClientData bonusClient = Get(player); CoreClient coreClient = _clientManager.Get(player); final int gems = amount.getTotalGems(); @@ -399,7 +489,14 @@ public class BonusManager extends MiniClientPlugin implements I if (tickets > 0) { bonusClient.setTickets(tickets + bonusClient.getTickets()); - // TODO database save + runAsync(new Runnable() + { + @Override + public void run() + { + bonusClient.getRecord().store(); + } + }); UtilPlayer.message(player, F.main("Bonus", "Rewarded " + F.elem(tickets + " Carl Spin Ticket"))); } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusRepository.java b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusRepository.java index 070e4aec0..8fcc95d6d 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusRepository.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusRepository.java @@ -16,6 +16,8 @@ import mineplex.core.recharge.Recharge; import mineplex.database.Tables; import mineplex.database.tables.records.BonusRecord; import org.jooq.DSLContext; +import org.jooq.Record2; +import org.jooq.TableField; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -57,6 +59,42 @@ public class BonusRepository extends RepositoryBase return record; } + public void getDailyStreakRecord(Callback callback) + { + getStreakRecord(Tables.bonus.maxDailyStreak, callback); + } + + public void getVoteStreakRecord(Callback callback) + { + getStreakRecord(Tables.bonus.maxVoteStreak, callback); + } + + private void getStreakRecord(final TableField field, final Callback callback) + { + Bukkit.getScheduler().runTaskAsynchronously(_manager.getPlugin(), new Runnable() + { + @Override + public void run() + { + final Record2 record = jooq().select(Tables.accounts.name, field) + .from(Tables.bonus.join(Tables.accounts).on(Tables.bonus.accountId.eq(Tables.accounts.id))) + .orderBy(field.desc()).limit(1).fetchOne(); + + Bukkit.getScheduler().runTask(_manager.getPlugin(), new Runnable() + { + @Override + public void run() + { + if (record.value1() != null && record.value2() != null) + { + callback.run(new StreakRecord(record.value1(), record.value2())); + } + } + }); + } + }); + } + public void attemptDailyBonus(final Player player, final Callback result) { if (!Recharge.Instance.usable(player, "AttemptDailyBonus")) { @@ -123,6 +161,33 @@ public class BonusRepository extends RepositoryBase }); } + @Deprecated + public void attemptPurchaseSpin(final Player player, final Callback result) + { + final int accountId = _manager.getClientManager().Get(player).getAccountId(); + + Bukkit.getScheduler().runTaskAsynchronously(_manager.getPlugin(), new Runnable() + { + @Override + public void run() + { + final int newTickets = jooq().update(Tables.bonus).set(Tables.bonus.tickets, Tables.bonus.tickets.sub(-1)). + where(Tables.bonus.accountId.eq(accountId)).returning(Tables.bonus.tickets).fetchOne().getTickets(); + + Bukkit.getScheduler().runTask(_manager.getPlugin(), new Runnable() + { + @Override + public void run() + { + + + } + }); + + } + }); + } + public void attemptRankBonus(final Player player, final Callback result) { if (!Recharge.Instance.usable(player, "AttemptRankBonus")) { diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/StreakRecord.java b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/StreakRecord.java new file mode 100644 index 000000000..901ef4ad6 --- /dev/null +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/StreakRecord.java @@ -0,0 +1,23 @@ +package mineplex.hub.bonuses; + +public class StreakRecord +{ + private String _playerName; + private int _streak; + + public StreakRecord(String playerName, int streak) + { + _playerName = playerName; + _streak = streak; + } + + public String getPlayerName() + { + return _playerName; + } + + public int getStreak() + { + return _streak; + } +} diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/VoteHandler.java b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/VoteHandler.java new file mode 100644 index 000000000..73e11305b --- /dev/null +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/VoteHandler.java @@ -0,0 +1,31 @@ +package mineplex.hub.bonuses; + +import org.bukkit.entity.Player; + +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.votifier.VotifierCommand; +import mineplex.serverdata.commands.CommandCallback; +import mineplex.serverdata.commands.ServerCommand; + +public class VoteHandler implements CommandCallback +{ + private BonusManager _bonusManager; + + public VoteHandler(BonusManager bonusManager) + { + _bonusManager = bonusManager; + } + + @Override + public void run(ServerCommand command) + { + VotifierCommand v = ((VotifierCommand) command); + + Player player = UtilPlayer.searchExact(v.getPlayerName()); + + if (player != null) + { + _bonusManager.handleVote(player); + } + } +} diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/BonusGui.java b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/BonusGui.java index 083288461..65aa961cf 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/BonusGui.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/BonusGui.java @@ -28,7 +28,7 @@ public class BonusGui extends SimpleGui setItem(15, new DailyBonusButton(getPlugin(), player, this, manager)); - setItem(31, new CarlSpinButton(getPlugin(), player, rewardManager)); + setItem(31, new CarlSpinButton(getPlugin(), player, manager, rewardManager)); } @Override diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/CarlSpinButton.java b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/CarlSpinButton.java index e91626a23..c68f95814 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/CarlSpinButton.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/CarlSpinButton.java @@ -1,5 +1,7 @@ package mineplex.hub.bonuses.gui.buttons; +import java.util.ArrayList; + import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; @@ -7,22 +9,25 @@ import org.bukkit.event.inventory.ClickType; import org.bukkit.inventory.ItemStack; import org.bukkit.plugin.Plugin; +import mineplex.core.common.util.C; import mineplex.core.gui.GuiItem; import mineplex.core.reward.RewardManager; import mineplex.core.shop.item.ShopItem; -import mineplex.hub.bonuses.gui.SpinGui; +import mineplex.hub.bonuses.BonusClientData; +import mineplex.hub.bonuses.BonusManager; public class CarlSpinButton implements GuiItem { - private Plugin _plugin; private Player _player; + private BonusManager _bonusManager; private RewardManager _rewardManager; - public CarlSpinButton(Plugin plugin, Player player, RewardManager rewardManager) + public CarlSpinButton(Plugin plugin, Player player, BonusManager bonusManager, RewardManager rewardManager) { _plugin = plugin; _player = player; + _bonusManager = bonusManager; _rewardManager = rewardManager; } @@ -40,14 +45,40 @@ public class CarlSpinButton implements GuiItem @Override public void click(ClickType clickType) { - new SpinGui(_plugin, _player, _rewardManager).openInventory(); + BonusClientData client = _bonusManager.Get(_player); + int tickets = client.getTickets(); + + if (tickets > 0) + { + _bonusManager.attemptCarlSpin(_player); + } +// new SpinGui(_plugin, _player, _rewardManager).openInventory(); } @Override public ItemStack getObject() { - ShopItem item = new ShopItem(Material.SKULL_ITEM, (byte) 4, "Carl's Spinner", new String[] {ChatColor.RESET + "Try your Luck!" }, 1, false, false); + BonusClientData client = _bonusManager.Get(_player); + int tickets = client.getTickets(); - return item; + String name = (tickets > 0 ? C.cGreen : C.cRed) + C.Bold + "Carl's Spinner"; + ArrayList lore = new ArrayList(); + Material material = Material.SKULL_ITEM; + byte data = (byte) 4; + + lore.add(" "); + if (tickets > 0) + { + lore.add(ChatColor.RESET + "Click to Spin"); + } + else + { + lore.add(ChatColor.RESET + "You need a Carl Spin Ticket to Spin"); + } + + lore.add(" "); + lore.add(ChatColor.YELLOW + "Your Tickets: " + C.cWhite + tickets); + + return new ShopItem(material, data, name, lore.toArray(new String[0]), 1, false, false); } } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/DailyBonusButton.java b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/DailyBonusButton.java index 4554c8a58..f6534589d 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/DailyBonusButton.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/DailyBonusButton.java @@ -19,6 +19,7 @@ import mineplex.core.updater.event.UpdateEvent; import mineplex.hub.bonuses.BonusAmount; import mineplex.hub.bonuses.BonusClientData; import mineplex.hub.bonuses.BonusManager; +import mineplex.hub.bonuses.StreakRecord; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -139,6 +140,7 @@ public class DailyBonusButton implements GuiItem, Listener BonusAmount bonusAmount = _bonusManager.getDailyBonusAmount(_player); bonusAmount.addLore(lore); + lore.add(" "); lore.add(C.cYellow + "Current Streak: " + C.cWhite + client.getDailyStreak()); lore.add(C.cYellow + "Highest Streak: " + C.cWhite + client.getMaxDailyStreak()); @@ -154,9 +156,13 @@ public class DailyBonusButton implements GuiItem, Listener } } - lore.add(" "); - lore.add(C.cYellow + "Record Holder: " + C.cWhite + "Phinary"); - lore.add(C.cYellow + "Streak: " + C.cWhite + "420"); + StreakRecord streakRecord = _bonusManager.getDailyStreak(); + if (streakRecord != null) + { + lore.add(" "); + lore.add(C.cYellow + "Record: " + C.cWhite + streakRecord.getPlayerName()); + lore.add(C.cYellow + "Streak: " + C.cWhite + streakRecord.getStreak()); + } _item = new ShopItem(material, itemName, lore.toArray(new String[0]), 1, false, false); diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/VoteButton.java b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/VoteButton.java index 0552203d7..54021b6f2 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/VoteButton.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/VoteButton.java @@ -17,6 +17,8 @@ import mineplex.core.updater.event.UpdateEvent; import mineplex.hub.bonuses.BonusAmount; import mineplex.hub.bonuses.BonusClientData; import mineplex.hub.bonuses.BonusManager; +import mineplex.hub.bonuses.StreakRecord; + import net.minecraft.server.v1_7_R4.ChatSerializer; import net.minecraft.server.v1_7_R4.IChatBaseComponent; import net.minecraft.server.v1_7_R4.PacketPlayOutChat; @@ -134,6 +136,7 @@ public class VoteButton implements GuiItem, Listener { BonusAmount bonusAmount = _bonusManager.getVoteBonusAmount(_player); bonusAmount.addLore(lore); + lore.add(" "); lore.add(C.cYellow + "Current Streak: " + C.cWhite + client.getVoteStreak()); lore.add(C.cYellow + "Highest Streak: " + C.cWhite + client.getMaxVoteStreak()); @@ -149,9 +152,13 @@ public class VoteButton implements GuiItem, Listener { } } - lore.add(" "); - lore.add(C.cYellow + "Record Holder: " + C.cWhite + "Phinary"); - lore.add(C.cYellow + "Streak: " + C.cWhite + "420"); + StreakRecord streakRecord = _bonusManager.getVoteStreak(); + if (streakRecord != null) + { + lore.add(" "); + lore.add(C.cYellow + "Record: " + C.cWhite + streakRecord.getPlayerName()); + lore.add(C.cYellow + "Streak: " + C.cWhite + streakRecord.getStreak()); + } _item = new ShopItem(material, itemName, lore.toArray(new String[0]), 1, false, false); } diff --git a/Plugins/Mineplex.Votifier/Mineplex.Votifier.iml b/Plugins/Mineplex.Votifier/Mineplex.Votifier.iml index 8d37a4051..b7d71d202 100644 --- a/Plugins/Mineplex.Votifier/Mineplex.Votifier.iml +++ b/Plugins/Mineplex.Votifier/Mineplex.Votifier.iml @@ -16,6 +16,7 @@ + diff --git a/Plugins/Mineplex.Votifier/src/mineplex/votifier/VotifierManager.java b/Plugins/Mineplex.Votifier/src/mineplex/votifier/VotifierManager.java index 30646a1f5..ecef96339 100644 --- a/Plugins/Mineplex.Votifier/src/mineplex/votifier/VotifierManager.java +++ b/Plugins/Mineplex.Votifier/src/mineplex/votifier/VotifierManager.java @@ -8,27 +8,63 @@ import com.vexsoftware.votifier.model.VotifierEvent; import mineplex.core.MiniPlugin; import mineplex.core.account.CoreClientManager; import mineplex.core.donation.DonationManager; -import mineplex.core.votifier.RedisVotifierCommand; +import mineplex.core.votifier.VotifierCommand; +import mineplex.serverdata.Region; +import mineplex.serverdata.commands.ServerCommandManager; +import mineplex.serverdata.data.PlayerStatus; +import mineplex.serverdata.redis.RedisDataRepository; +import mineplex.serverdata.servers.ServerManager; /** * Created by shaun on 15-08-05. */ public class VotifierManager extends MiniPlugin { + private RedisDataRepository _usPlayerRepo; + private RedisDataRepository _euPlayerRepo; + public VotifierManager(JavaPlugin plugin, CoreClientManager clientManager, DonationManager donationManager) { super("Votifier", plugin); + + _usPlayerRepo = new RedisDataRepository(ServerManager.getMasterConnection(), ServerManager.getSlaveConnection(), + Region.US, PlayerStatus.class, "playerStatus"); + _euPlayerRepo = new RedisDataRepository(ServerManager.getMasterConnection(), ServerManager.getSlaveConnection(), + Region.EU, PlayerStatus.class, "playerStatus"); + + ServerCommandManager.getInstance().registerCommandType("VotifierCommand", VotifierCommand.class); } - - @EventHandler public void handleVote(VotifierEvent event) { Vote vote = event.getVote(); - RedisVotifierCommand command = new RedisVotifierCommand(); - System.out.println("New Vote: " + vote.getUsername()); + + PlayerStatus usStatus = _usPlayerRepo.getElement(vote.getUsername()); +// VotifierCommand command = new VotifierCommand(vote.getUsername(), "PhiTest-1"); +// command.publish(); + + if (usStatus != null) + { + System.out.println("Found on US Server: " + usStatus.getServer()); + VotifierCommand command = new VotifierCommand(vote.getUsername(), usStatus.getServer()); + command.publish(); + } + else + { + System.out.println("Not found on US Server!"); + } + + PlayerStatus euStatus = _euPlayerRepo.getElement(vote.getUsername()); + if (euStatus != null) + { + System.out.println("Found on EU Server: " + euStatus.getServer()); + } + else + { + System.out.println("Not found on EU Server!"); + } } } \ No newline at end of file From e6519206af6623cd0f16188a3b2c5cac3a39ef61 Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Sat, 8 Aug 2015 16:29:03 -0500 Subject: [PATCH 4/7] Add event to be called when a player tries to buy a carl spin --- .../mineplex/hub/bonuses/BonusManager.java | 45 +++++++++------- .../hub/bonuses/event/CarlSpinnerEvent.java | 54 +++++++++++++++++++ 2 files changed, 80 insertions(+), 19 deletions(-) create mode 100644 Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/event/CarlSpinnerEvent.java diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusManager.java index b4bd57948..817db72db 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusManager.java @@ -25,6 +25,7 @@ import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import mineplex.core.votifier.VotifierCommand; import mineplex.hub.bonuses.commands.GuiCommand; +import mineplex.hub.bonuses.event.CarlSpinnerEvent; import mineplex.hub.bonuses.gui.BonusGui; import mineplex.database.tables.records.BonusRecord; import mineplex.hub.bonuses.gui.SpinGui; @@ -250,32 +251,38 @@ public class BonusManager extends MiniClientPlugin implements I if (clientData.getTickets() > 0) { - clientData.setTickets(clientData.getTickets() - 1); + CarlSpinnerEvent event = new CarlSpinnerEvent(player); + Bukkit.getServer().getPluginManager().callEvent(event); - runAsync(new Runnable() + if (!event.isCancelled()) { - @Override - public void run() - { - int modified = clientData.getRecord().store(); + clientData.setTickets(clientData.getTickets() - 1); - if (modified == 1) + runAsync(new Runnable() + { + @Override + public void run() { - runSync(new Runnable() + int modified = clientData.getRecord().store(); + + if (modified == 1) { - @Override - public void run() + runSync(new Runnable() { - new SpinGui(getPlugin(), player, _rewardManager).openInventory(); - } - }); + @Override + public void run() + { + new SpinGui(getPlugin(), player, _rewardManager).openInventory(); + } + }); + } + else + { + UtilPlayer.message(player, F.main("Carl", "There was an error processing your request")); + } } - else - { - UtilPlayer.message(player, F.main("Carl", "There was an error processing your request")); - } - } - }); + }); + } } } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/event/CarlSpinnerEvent.java b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/event/CarlSpinnerEvent.java new file mode 100644 index 000000000..fed71229b --- /dev/null +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/event/CarlSpinnerEvent.java @@ -0,0 +1,54 @@ +package mineplex.hub.bonuses.event; + +import org.bukkit.entity.Player; +import org.bukkit.event.Cancellable; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; + +/** + * Called when a player attempts to purchase a spin through carl + */ +public class CarlSpinnerEvent extends Event implements Cancellable +{ + private static final HandlerList handlers = new HandlerList(); + + private Player _player; + private boolean _cancelled; + + public CarlSpinnerEvent(Player player) + { + _player = player; + } + + public HandlerList getHandlers() + { + return handlers; + } + + public static HandlerList getHandlerList() + { + return handlers; + } + + public Player getPlayer() + { + return _player; + } + + public void setPlayer(Player player) + { + _player = player; + } + + @Override + public boolean isCancelled() + { + return _cancelled; + } + + @Override + public void setCancelled(boolean b) + { + _cancelled = b; + } +} From 85c8e42f53f3b6f2a75a3383a74683b3d9dabc6a Mon Sep 17 00:00:00 2001 From: Sarah Date: Sun, 9 Aug 2015 15:00:54 +0200 Subject: [PATCH 5/7] Finalizing and improving the Carl spinner and adding creeper explosion animations. --- .../core/treasure/animation/Animation.java | 12 ++ .../mineplex/hub/bonuses/BonusManager.java | 137 +++++++++++++- .../hub/bonuses/animations/AnimationCarl.java | 102 +++++++++++ .../bonuses/commands/AnimationCommand.java | 28 +++ .../src/mineplex/hub/bonuses/gui/SpinGui.java | 170 +++++++++++++++--- .../bonuses/gui/buttons/CarlSpinButton.java | 1 + .../bonuses/gui/buttons/RankBonusButton.java | 18 +- 7 files changed, 435 insertions(+), 33 deletions(-) create mode 100644 Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/animations/AnimationCarl.java create mode 100644 Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/commands/AnimationCommand.java diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/Animation.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/Animation.java index c3fbe6e62..a6b986660 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/Animation.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/Animation.java @@ -16,6 +16,8 @@ public abstract class Animation _treasure = treasure; _running = true; } + + public Animation() {} public void run() { @@ -50,5 +52,15 @@ public abstract class Animation { return _treasure; } + + public void setRunning(boolean b) + { + _running = b; + } + + public void setTicks(int ticks) + { + _ticks = ticks; + } } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusManager.java index 817db72db..dbd6db81a 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusManager.java @@ -2,7 +2,9 @@ package mineplex.hub.bonuses; import java.sql.Date; import java.sql.Timestamp; +import java.util.ArrayList; import java.util.Calendar; +import java.util.Iterator; import java.util.TimeZone; import mineplex.core.MiniClientPlugin; @@ -14,7 +16,16 @@ import mineplex.core.common.Rank; import mineplex.core.common.util.C; import mineplex.core.common.util.Callback; import mineplex.core.common.util.F; +import mineplex.core.common.util.NautHashMap; +import mineplex.core.common.util.UtilAction; +import mineplex.core.common.util.UtilBlock; +import mineplex.core.common.util.UtilMath; +import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilParticle.ViewDist; +import mineplex.core.disguise.disguises.DisguiseCreeper; import mineplex.core.donation.DonationManager; import mineplex.core.hologram.Hologram; import mineplex.core.hologram.HologramManager; @@ -24,6 +35,8 @@ import mineplex.core.reward.RewardManager; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import mineplex.core.votifier.VotifierCommand; +import mineplex.hub.bonuses.animations.AnimationCarl; +import mineplex.hub.bonuses.commands.AnimationCommand; import mineplex.hub.bonuses.commands.GuiCommand; import mineplex.hub.bonuses.event.CarlSpinnerEvent; import mineplex.hub.bonuses.gui.BonusGui; @@ -32,15 +45,21 @@ import mineplex.hub.bonuses.gui.SpinGui; import mineplex.serverdata.commands.ServerCommandManager; import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Sound; +import org.bukkit.craftbukkit.v1_7_R4.entity.CraftEntity; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; +import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.player.PlayerInteractEntityEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.plugin.java.JavaPlugin; +import org.bukkit.util.Vector; + import net.minecraft.server.v1_7_R4.DataWatcher; import net.minecraft.server.v1_7_R4.PacketPlayOutEntityMetadata; @@ -50,6 +69,11 @@ public class BonusManager extends MiniClientPlugin implements I public static final TimeZone TIMEZONE = TimeZone.getTimeZone("UTC"); private static long timeOffSet = 0; + + private ArrayList _pendingExplosions = new ArrayList<>(); + private ArrayList _pendingExplosionsPlayers = new ArrayList<>(); + private long _explode; + private boolean _canVote; public static long getSqlTime() { @@ -91,6 +115,7 @@ public class BonusManager extends MiniClientPlugin implements I private HologramManager _hologramManager; private RewardManager _rewardManager; private Npc _carlNpc; + private AnimationCarl _animation; // Streak private StreakRecord _dailyStreak; @@ -107,7 +132,10 @@ public class BonusManager extends MiniClientPlugin implements I _rewardManager = rewardManager; // Hope to god this works! + _canVote = true; _carlNpc = _npcManager.getNpcByName("Carl the Creeper"); + _animation = new AnimationCarl(_carlNpc.getEntity()); + _animation.setRunning(false); clientManager.addStoredProcedureLoginProcessor(this); @@ -122,6 +150,7 @@ public class BonusManager extends MiniClientPlugin implements I public void addCommands() { addCommand(new GuiCommand(this)); + addCommand(new AnimationCommand(this)); } // Just keeping things up-to-date @@ -176,7 +205,95 @@ public class BonusManager extends MiniClientPlugin implements I public void handleVote(Player player) { - Bukkit.broadcastMessage("Recieved Vote: " + player.getName()); + addPendingExplosion(player, player.getName()); + } + + @EventHandler + public void fireCreeper(UpdateEvent event) + { + if(event.getType() != UpdateType.SLOW) + return; + + if(_pendingExplosions.isEmpty()) + return; + + if(!_canVote) + return; + + if(_pendingExplosions.get(0) instanceof String) + { + String name = (String)_pendingExplosions.get(0); + Bukkit.broadcastMessage("Recieved Vote: " + name); + } + _explode = System.currentTimeMillis(); + _animation.setTicks(0); + _canVote = false; + } + + @EventHandler + public void creeperAnimation(UpdateEvent event) + { + if (event.getType() != UpdateType.TICK) + return; + + if(_canVote) + return; + + Entity creeper = _carlNpc.getEntity(); + + double elapsed = (System.currentTimeMillis() - _explode)/1000d; + + //Not Detonated + if (elapsed < 1) + { + //Sound + creeper.getWorld().playSound(creeper.getLocation(), Sound.CREEPER_HISS, (float)(0.5 + elapsed), (float)(0.5 + elapsed)); + + IncreaseSize(creeper); + return; + } + + if(!_animation.isRunning()) + { + //Effect + UtilParticle.PlayParticle(ParticleType.HUGE_EXPLOSION, creeper.getLocation(), 0, 0, 0, 0, 1, ViewDist.MAX, UtilServer.getPlayers()); + creeper.getWorld().playSound(creeper.getLocation(), Sound.EXPLODE, 2f, 1f); + _animation.setType(_pendingExplosions.get(0)); + _animation.setPlayer(_pendingExplosionsPlayers.get(0)); + _animation.setTime(System.currentTimeMillis()); + _animation.setRunning(true); + } + + if(!_animation.isDone()) + return; + + DecreaseSize(creeper); + _pendingExplosions.remove(0); + _pendingExplosionsPlayers.remove(0); + _canVote = true; + } + + @EventHandler + public void updateAnimation(UpdateEvent event) + { + if(event.getType() != UpdateType.TICK) + return; + + if(!_animation.isRunning()) + return; + + _animation.run(); + } + + public void DecreaseSize(Entity player) + { + ((CraftEntity)_carlNpc.getEntity()).getHandle().getDataWatcher().watch(16, -1); + ((CraftEntity)_carlNpc.getEntity()).getHandle().getDataWatcher().watch(17, 1); + } + + public void IncreaseSize(Entity player) + { + ((CraftEntity)_carlNpc.getEntity()).getHandle().getDataWatcher().watch(16, 1); } // DAILY BONUS @@ -253,6 +370,7 @@ public class BonusManager extends MiniClientPlugin implements I { CarlSpinnerEvent event = new CarlSpinnerEvent(player); Bukkit.getServer().getPluginManager().callEvent(event); + final BonusManager manager = this; if (!event.isCancelled()) { @@ -272,7 +390,7 @@ public class BonusManager extends MiniClientPlugin implements I @Override public void run() { - new SpinGui(getPlugin(), player, _rewardManager).openInventory(); + new SpinGui(getPlugin(), player, _rewardManager, manager).openInventory(); } }); } @@ -374,6 +492,7 @@ public class BonusManager extends MiniClientPlugin implements I { BonusAmount amount = new BonusAmount(); amount.setTickets(1); + amount.setGems(500); return amount; } @@ -383,15 +502,19 @@ public class BonusManager extends MiniClientPlugin implements I BonusAmount data = new BonusAmount(); + if (rank.Has(Rank.MODERATOR)) + { + data.setCoins(35000); + } if (rank.Has(Rank.LEGEND)) { data.setCoins(30000); } - else if (rank.Has(Rank.ULTRA)) + else if (rank.Has(Rank.HERO)) { data.setCoins(15000); } - else if (rank.Has(Rank.HERO)) + else if (rank.Has(Rank.ULTRA)) { data.setCoins(7500); } @@ -685,4 +808,10 @@ public class BonusManager extends MiniClientPlugin implements I BonusClientData clientData = new BonusClientData(record); Set(playerName, clientData); } + + public void addPendingExplosion(Player player, Object obj) + { + _pendingExplosions.add(obj); + _pendingExplosionsPlayers.add(player); + } } \ No newline at end of file diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/animations/AnimationCarl.java b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/animations/AnimationCarl.java new file mode 100644 index 000000000..02783c89a --- /dev/null +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/animations/AnimationCarl.java @@ -0,0 +1,102 @@ +package mineplex.hub.bonuses.animations; + +import mineplex.core.common.util.UtilAction; +import mineplex.core.common.util.UtilMath; +import mineplex.core.reward.Reward; +import mineplex.core.reward.RewardData; +import mineplex.core.treasure.animation.Animation; + +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Item; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.util.Vector; + +public class AnimationCarl extends Animation +{ + + private boolean _isDone; + private Block _creeper; + private long _startTime; + private Object _type; + private Player _player; + + public AnimationCarl(Entity creeper) + { + _creeper = creeper.getLocation().getBlock(); + } + + @Override + protected void tick() + { + if(_type instanceof String) + { + if (getTicks() < 40) + { + Item gem = _creeper.getWorld().dropItem(_creeper.getLocation().add(0.5, 2, 0.5), new ItemStack(Material.EMERALD)); + + //Velocity + long passed = System.currentTimeMillis() - _startTime; + Vector vel = new Vector(Math.sin(passed/5d), 0, Math.cos(passed/5d)); + + UtilAction.velocity(gem, vel, Math.abs(Math.sin(passed/3000d)), false, 0, 0.2 + Math.abs(Math.cos(passed/3000d))*0.6, 1, false); + + gem.setTicksLived(1170); + } + else + { + finish(); + } + } + if(_type instanceof Reward) + { + RewardData rewardData = ((Reward)_type).getFakeRewardData(null); + ItemStack itemStack = rewardData.getDisplayItem(); + if(itemStack.getType() == Material.PAPER) + { + itemStack = new ItemStack(Material.NETHER_STAR); + } + Item item = _creeper.getWorld().dropItem(_creeper.getLocation().add(0.5, 2, 0.5), itemStack); + + Vector vel = new Vector(_player.getLocation().getX() - _creeper.getLocation().getX(), 0, _player.getLocation().getZ() - _creeper.getLocation().getZ()); + + UtilAction.velocity(item, vel, 0.1, false, 0, 0.2 + 1*0.4, 1, false); + + item.setTicksLived(1170); + finish(); + } + } + + @Override + protected void onFinish() { + _isDone = true; + setTicks(0); + } + + public boolean isDone() + { + return _isDone; + } + + public void setDone(boolean b) + { + _isDone = b; + } + + public void setTime(long time) + { + _startTime = time; + } + + public void setType(Object type) + { + _type = type; + } + + public void setPlayer(Player player) + { + _player = player; + } +} diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/commands/AnimationCommand.java b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/commands/AnimationCommand.java new file mode 100644 index 000000000..28e2f493a --- /dev/null +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/commands/AnimationCommand.java @@ -0,0 +1,28 @@ +package mineplex.hub.bonuses.commands; + +import org.bukkit.entity.Player; + +import mineplex.core.command.CommandBase; +import mineplex.core.common.Rank; +import mineplex.hub.bonuses.BonusManager; + +public class AnimationCommand extends CommandBase{ + + BonusManager _plugin; + + public AnimationCommand(BonusManager plugin) + { + super(plugin, Rank.DEVELOPER, "animation"); + _plugin = plugin; + } + + @Override + public void Execute(Player caller, String[] args) + { + _plugin.addPendingExplosion(caller, "Test"); + _plugin.addPendingExplosion(caller, "Chiss"); + _plugin.addPendingExplosion(caller, "Phinary"); + _plugin.addPendingExplosion(caller, "xXVevzZXx"); + } + +} \ No newline at end of file diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/SpinGui.java b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/SpinGui.java index 8701b3618..fb3355211 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/SpinGui.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/SpinGui.java @@ -1,16 +1,13 @@ package mineplex.hub.bonuses.gui; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.Sound; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.inventory.ItemStack; -import org.bukkit.plugin.Plugin; +import java.util.ArrayList; +import mineplex.core.common.util.C; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilPlayer; import mineplex.core.gui.DisplayItem; import mineplex.core.gui.SimpleGui; +import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.reward.Reward; import mineplex.core.reward.RewardData; import mineplex.core.reward.RewardManager; @@ -18,44 +15,97 @@ import mineplex.core.reward.RewardType; import mineplex.core.shop.item.ShopItem; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; +import mineplex.hub.bonuses.BonusManager; import mineplex.hub.bonuses.gui.buttons.RewardButton; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.inventory.InventoryCloseEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.plugin.Plugin; + public class SpinGui extends SimpleGui { - private static final int SELECT_OFFSET = 4; private static final int REWARDS_TO_GENERATE = 1000; - private static final int HOPPER_SLOT = 22; - private static final int CARL_SLOT = 40; - private static final int[] LINE_NUMS = { -27, -18, -9, 9, 18 }; + private static final int HOPPER_SLOT = 4; + private static final int CARL_SLOT = 22; + private static final int[] LINE_NUMS = { /*-27, -18,*/ -9, 9/*, 18*/ }; + private static final int STOP_SPINNER_AT = 75; private int _tickCount; + private RewardData _rewardData; + private Reward _reward; + private BonusManager _manager; private int _currentRewardIndex; private int _ticksThisSwap; private int _ticksPerSwap; private int _swapCount; private Reward[] _rewards; + private boolean _stopped; + private boolean _rewarded; + private ArrayList _ticks; + private int _frame; + private float _pitch; + private int _stopSpinnerAt; - public SpinGui(Plugin plugin, Player player, RewardManager rewardManager) + public SpinGui(Plugin plugin, Player player, RewardManager rewardManager, BonusManager manager) { - super(plugin, player, "Carl's Spinner", 54); + super(plugin, player, "Carl's Spinner", 27); + + _manager = manager; ShopItem carlItem = new ShopItem(Material.SKULL_ITEM, (byte) 4, "Carl's Spinner", new String[] {ChatColor.RESET + "Good Luck!" }, 1, false, false); setItem(HOPPER_SLOT, new DisplayItem(new ItemStack(Material.HOPPER))); - setItem(CARL_SLOT, new DisplayItem(carlItem)); + //setItem(CARL_SLOT, new DisplayItem(carlItem)); _rewards = new Reward[REWARDS_TO_GENERATE]; + _ticks = new ArrayList<>(); + _frame = 0; + _pitch = 1; for (int i = 0; i < REWARDS_TO_GENERATE; i++) { _rewards[i] = rewardManager.nextReward(player, null, false, RewardType.Spinner, true); } + + _ticksPerSwap = 1; + + _stopSpinnerAt = STOP_SPINNER_AT; + + for (int i=0 ; i<40 ; i++) + _ticks.add(1); + + for (int i=0 ; i<20 ; i++) + _ticks.add(2); - _ticksPerSwap = 3; + for (int i=0 ; i<10 ; i++) + _ticks.add(4); + + for (int i=0 ; i<5 ; i++) + _ticks.add(8); + + if (Math.random() > 0.5) + { + _ticks.add(12); + _stopSpinnerAt++; + } + + _reward = _rewards[_stopSpinnerAt % REWARDS_TO_GENERATE + 3]; + _rewardData = _reward.giveReward("Carls Spinner", getPlayer()); } private void tick() { + + if(_stopped) + return; + _ticksThisSwap++; // Swap @@ -65,15 +115,23 @@ public class SpinGui extends SimpleGui _swapCount++; updateGui(); - float pitch = Math.max(-2, 2 - (_swapCount / 50f)); -// Bukkit.broadcastMessage(pitch + ""); - getPlayer().playSound(getPlayer().getEyeLocation(), Sound.NOTE_PLING, 1, pitch); + if(_pitch == 1) + _pitch = (float) 1.5; + else if(_pitch == 1.5) + _pitch = 2; + else if(_pitch == 2) + _pitch = 1; + + getPlayer().playSound(getPlayer().getEyeLocation(), Sound.NOTE_PLING, 1, _pitch); _currentRewardIndex++; // Slow - if (_swapCount % 10 == 0) - _ticksPerSwap++; + _ticksPerSwap = _ticks.get(_currentRewardIndex - 1); + + if(_currentRewardIndex == _stopSpinnerAt) + _stopped = true; + } _tickCount++; @@ -86,7 +144,7 @@ public class SpinGui extends SimpleGui int index = _currentRewardIndex + i; index = index % REWARDS_TO_GENERATE; - int slot = 27 + i; + int slot = 9 + i; RewardData data = _rewards[index].getFakeRewardData(getPlayer()); setItem(slot, new RewardButton(data)); @@ -94,7 +152,7 @@ public class SpinGui extends SimpleGui for (int j = 0; j < LINE_NUMS.length; j++) { int paneSlot = slot + LINE_NUMS[j]; - if (paneSlot == HOPPER_SLOT || paneSlot == CARL_SLOT) + if (paneSlot == HOPPER_SLOT) continue; setItem(paneSlot, new DisplayItem(data.getRarity().getItemStack())); @@ -109,6 +167,72 @@ public class SpinGui extends SimpleGui return; tick(); + checkIfDone(); + } + + @EventHandler(priority = EventPriority.HIGHEST) + public void close(InventoryCloseEvent event) + { + if(_rewarded) + return; + + if(event.getPlayer() != getPlayer()) + return; + + _manager.addPendingExplosion(getPlayer(), _reward); + UtilPlayer.message(getPlayer(), F.main("Carl's Spinner", "You got " + _rewardData.getRarity().getColor() + _rewardData.getFriendlyName() + C.cGray + " From Carl's Spinner.")); + } + + @EventHandler + public void Glass(UpdateEvent event) + { + if (event.getType() != UpdateType.FAST) + return; + + if(!_stopped) + return; + + if(!_rewarded) + return; + + if(_frame == 0) + { + setItem(CARL_SLOT, new DisplayItem(_rewardData.getRarity().getItemStack())); + setItem(HOPPER_SLOT, new DisplayItem(_rewardData.getRarity().getItemStack())); + _frame++; + } + else if(_frame < 5) + { + setItem(HOPPER_SLOT + _frame, new DisplayItem(_rewardData.getRarity().getItemStack())); + setItem(HOPPER_SLOT - _frame, new DisplayItem(_rewardData.getRarity().getItemStack())); + + setItem(CARL_SLOT + _frame, new DisplayItem(_rewardData.getRarity().getItemStack())); + setItem(CARL_SLOT - _frame, new DisplayItem(_rewardData.getRarity().getItemStack())); + + setItem(13 + _frame, new DisplayItem(_rewardData.getRarity().getItemStack())); + setItem(13 - _frame, new DisplayItem(_rewardData.getRarity().getItemStack())); + _frame++; + } + if(_frame == 6) + { + + } + } + + public void checkIfDone() + { + if(!_stopped) + return; + + if(_rewarded) + return; + + _manager.addPendingExplosion(getPlayer(), _reward); + ItemStack item = getInventory().getItem(13); + getInventory().setItem(13, ItemStackFactory.Instance.CreateStack(item.getType(), (byte) 0, 1, _rewardData.getFriendlyName())); + UtilPlayer.message(getPlayer(), F.main("Carl's Spinner", "You got " + _rewardData.getRarity().getColor() + _rewardData.getFriendlyName() + C.cGray + " From Carl's Spinner.")); + _rewarded = true; + } } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/CarlSpinButton.java b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/CarlSpinButton.java index c68f95814..4c295f5dd 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/CarlSpinButton.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/CarlSpinButton.java @@ -52,6 +52,7 @@ public class CarlSpinButton implements GuiItem { _bonusManager.attemptCarlSpin(_player); } + // new SpinGui(_plugin, _player, _rewardManager).openInventory(); } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/RankBonusButton.java b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/RankBonusButton.java index 3189ec5d5..5cfb45207 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/RankBonusButton.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/RankBonusButton.java @@ -145,17 +145,23 @@ public class RankBonusButton implements GuiItem, Listener { if (!hasRank) { material = Material.COAL_BLOCK; - itemName = C.cRed + ChatColor.BOLD + "Rank Bonus"; + itemName = C.cRed + ChatColor.BOLD + "Rank Monthly Bonus"; lore.add(" "); - lore.add(ChatColor.WHITE + "Players with a rank get monthly rewards!"); - lore.add(ChatColor.WHITE + "Purchase at mineplex.com/shop"); + lore.add(ChatColor.WHITE + "Players with a Rank get a Monthly Bonus!"); + lore.add(ChatColor.WHITE + ""); + lore.add(ChatColor.AQUA + "Ultra: 7500 Coins"); + lore.add(ChatColor.LIGHT_PURPLE + "Hero: 15000 Coins"); + lore.add(ChatColor.GREEN + "Legend: 30000 Coins"); + lore.add(ChatColor.WHITE + ""); + lore.add(ChatColor.WHITE + "Purchase a Rank at;"); + lore.add(ChatColor.WHITE + "www.mineplex.com/shop"); } else { if (isAvailable()) { material = Material.ENDER_CHEST; - itemName = C.cGreen + C.Bold + "Rank Bonus"; + itemName = C.cGreen + C.Bold + "Rank Monthly Bonus"; lore.add(" "); lore.add(ChatColor.RESET + "Click to Claim!"); @@ -163,7 +169,7 @@ public class RankBonusButton implements GuiItem, Listener { else { material = Material.REDSTONE_BLOCK; - itemName = C.cRed + C.Bold + "Rank Bonus"; + itemName = C.cRed + C.Bold + "Rank Monthly Bonus"; lore.add(" "); lore.add(ChatColor.RESET + "Next reward in " + UtilTime.convertString(timeLeft(), 0, TimeUnit.FIT) + "!"); @@ -185,7 +191,7 @@ public class RankBonusButton implements GuiItem, Listener { public long timeLeft() { - return _bonusManager.nextRankBonus(getPlayer()) - System.currentTimeMillis(); + return _bonusManager.nextRankBonus(getPlayer()) - System.currentTimeMillis(); } public boolean isAvailable() From 941e746ca981a404b28c939b83a531a20b98fbd3 Mon Sep 17 00:00:00 2001 From: Sarah Date: Sun, 9 Aug 2015 16:47:03 +0200 Subject: [PATCH 6/7] Finalizing Poll GUI in Carl's GUI. --- .../src/mineplex/hub/HubManager.java | 4 ++- .../mineplex/hub/bonuses/BonusManager.java | 10 +++++- .../mineplex/hub/bonuses/gui/BonusGui.java | 10 ++++-- .../hub/bonuses/gui/buttons/PollButton.java | 36 +++++++++++++------ .../src/mineplex/hub/poll/PollManager.java | 4 +-- 5 files changed, 47 insertions(+), 17 deletions(-) diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java index 4a4fbdd2b..944e7d9b5 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java @@ -115,6 +115,7 @@ public class HubManager extends MiniClientPlugin private DisguiseManager _disguiseManager; private PartyManager _partyManager; private ForcefieldManager _forcefieldManager; + private PollManager _pollManager; private Portal _portal; private StatsManager _statsManager; private GadgetManager _gadgetManager; @@ -158,6 +159,7 @@ public class HubManager extends MiniClientPlugin _conditionManager = conditionManager; _donationManager = donationManager; _disguiseManager = disguiseManager; + _pollManager = pollManager; _portal = portal; @@ -207,7 +209,7 @@ public class HubManager extends MiniClientPlugin ((CraftWorld)Bukkit.getWorlds().get(0)).getHandle().pvpMode = true; - new BonusManager(plugin, clientManager, donationManager, npcManager, hologramManager, rewardManager); + new BonusManager(plugin, clientManager, donationManager, pollManager , npcManager, hologramManager, rewardManager); // NotificationManager notificationManager = new NotificationManager(plugin, clientManager, donationManager); diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusManager.java index dbd6db81a..6bd421b75 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/BonusManager.java @@ -42,6 +42,7 @@ import mineplex.hub.bonuses.event.CarlSpinnerEvent; import mineplex.hub.bonuses.gui.BonusGui; import mineplex.database.tables.records.BonusRecord; import mineplex.hub.bonuses.gui.SpinGui; +import mineplex.hub.poll.PollManager; import mineplex.serverdata.commands.ServerCommandManager; import org.bukkit.Bukkit; @@ -111,6 +112,7 @@ public class BonusManager extends MiniClientPlugin implements I private BonusRepository _repository; private CoreClientManager _clientManager; private DonationManager _donationManager; + private PollManager _pollManager; private NpcManager _npcManager; private HologramManager _hologramManager; private RewardManager _rewardManager; @@ -121,7 +123,7 @@ public class BonusManager extends MiniClientPlugin implements I private StreakRecord _dailyStreak; private StreakRecord _voteStreak; - public BonusManager(JavaPlugin plugin, CoreClientManager clientManager, DonationManager donationManager, NpcManager npcManager, HologramManager hologramManager, RewardManager rewardManager) + public BonusManager(JavaPlugin plugin, CoreClientManager clientManager, DonationManager donationManager, PollManager pollManager, NpcManager npcManager, HologramManager hologramManager, RewardManager rewardManager) { super("Bonus", plugin); _repository = new BonusRepository(plugin, this, donationManager); @@ -130,6 +132,7 @@ public class BonusManager extends MiniClientPlugin implements I _npcManager = npcManager; _hologramManager = hologramManager; _rewardManager = rewardManager; + _pollManager = pollManager; // Hope to god this works! _canVote = true; @@ -814,4 +817,9 @@ public class BonusManager extends MiniClientPlugin implements I _pendingExplosions.add(obj); _pendingExplosionsPlayers.add(player); } + + public PollManager getPollManager() + { + return _pollManager; + } } \ No newline at end of file diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/BonusGui.java b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/BonusGui.java index 65aa961cf..ea7978621 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/BonusGui.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/BonusGui.java @@ -5,11 +5,13 @@ import mineplex.core.reward.RewardManager; import mineplex.hub.bonuses.BonusManager; import mineplex.hub.bonuses.gui.buttons.CarlSpinButton; import mineplex.hub.bonuses.gui.buttons.DailyBonusButton; +import mineplex.hub.bonuses.gui.buttons.PollButton; import mineplex.hub.bonuses.gui.buttons.RankBonusButton; import mineplex.hub.bonuses.gui.buttons.VoteButton; import org.bukkit.entity.Player; import org.bukkit.plugin.Plugin; +import org.omg.CORBA._PolicyStub; public class BonusGui extends SimpleGui { @@ -22,12 +24,14 @@ public class BonusGui extends SimpleGui this.manager = manager; - setItem(11, new VoteButton(plugin, player, this, manager)); + setItem(10, new VoteButton(plugin, player, this, manager)); - setItem(13, new RankBonusButton(getPlugin(), player, this, manager)); + setItem(12, new RankBonusButton(getPlugin(), player, this, manager)); - setItem(15, new DailyBonusButton(getPlugin(), player, this, manager)); + setItem(14, new DailyBonusButton(getPlugin(), player, this, manager)); + setItem(16, new PollButton(getPlugin(), player, manager.getPollManager(), manager.getClientManager(), this)); + setItem(31, new CarlSpinButton(getPlugin(), player, manager, rewardManager)); } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/PollButton.java b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/PollButton.java index 9ae72899b..5584e5b65 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/PollButton.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/PollButton.java @@ -1,8 +1,10 @@ package mineplex.hub.bonuses.gui.buttons; +import java.util.ArrayList; import java.util.HashMap; import mineplex.core.account.CoreClientManager; +import mineplex.core.common.util.C; import mineplex.core.common.util.UtilText; import mineplex.core.gui.GuiInventory; import mineplex.core.gui.GuiItem; @@ -53,9 +55,6 @@ public class PollButton extends SimpleGui implements GuiItem { if (_poll != null) { - - // Todo - Fix this! -// getButtonMap().putAll(hard); setItem(4, getQuestionItem(_poll.getQuestion())); @@ -63,22 +62,38 @@ public class PollButton extends SimpleGui implements GuiItem { for (int i = 0; i < slots.length; i++) { - - setItem(9 * 2 + slots[i], new AnswerItem(_poll, i)); - + AnswerItem item = new AnswerItem(_poll, i); + setItem(9 * 2 + slots[i], item); } } } } - @Override public ItemStack getObject() { + ArrayList lore = new ArrayList<>(); if (_poll == null) - return ItemStackFactory.Instance.CreateStack(Material.REDSTONE_BLOCK, (byte) 0, 1, "No polls!"); + { + lore.add(C.cRed + "You've already voted on all of the polls!"); + return ItemStackFactory.Instance.CreateStack(Material.REDSTONE_BLOCK, (byte) 0, 1, ChatColor.RED + C.Bold + "Vote on Poll", lore); + } else - return ItemStackFactory.Instance.CreateStack(Material.BOOK_AND_QUILL, (byte) 0, 1, ChatColor.GREEN + _poll.getQuestion()); + { + lore.add(C.cWhite + _poll.getQuestion()); + lore.add(""); + int i = 1; + for(String str : _poll.getAnswers()) + { + lore.add(C.cAqua + "" + i + ".) " + str); + i++; + } + lore.add(""); + lore.add(C.cYellow + C.Bold + "Reward: 500 Gems"); + lore.add(""); + lore.add(C.cGreen + "Click to go to the vote page!"); + return ItemStackFactory.Instance.CreateStack(Material.BOOK_AND_QUILL, (byte) 0, 1, C.cGreen + C.Bold + "Vote on Poll", lore); + } } @Override @@ -155,8 +170,9 @@ public class PollButton extends SimpleGui implements GuiItem { _pollManager.answerPoll(getPlayer(), _poll, num); getPlayer().playSound(getPlayer().getLocation(), Sound.NOTE_PLING, 1, 1.6f); + new TimedMessageWindow(getPlugin(), getPlayer(), ItemStackFactory.Instance.CreateStack(Material.EMERALD_BLOCK, (byte) 0, 1, ChatColor.GREEN + "Your anwser:", wrap(getPoll().getAnswers()[num])), ChatColor.GREEN + "Moo", 6 * 9, 50, getMaster()).openInventory(); - + getPlayer().closeInventory(); } @Override diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/poll/PollManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/poll/PollManager.java index 8820efd46..7fb0e00fd 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/poll/PollManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/poll/PollManager.java @@ -64,7 +64,7 @@ public class PollManager extends MiniDbClientPlugin pollData.setPollCooldown(5000); } - @EventHandler + /*@EventHandler public void update(UpdateEvent event) { if (event.getType() != UpdateType.SLOW) @@ -88,7 +88,7 @@ public class PollManager extends MiniDbClientPlugin pollData.updatePollCooldown(); } } - } + }*/ public Poll getNextPoll(PlayerPollData pollData, Rank playerRank) { From 8c66ef7f15883ec3c629a665af694572939fdb28 Mon Sep 17 00:00:00 2001 From: Sarah Date: Sun, 9 Aug 2015 18:33:44 +0200 Subject: [PATCH 7/7] changing Hub items and adding Profile GUI. --- .../core/achievement/AchievementManager.java | 28 +--------- .../personalServer/HostServerCommand.java | 2 +- .../personalServer/PersonalServerManager.java | 1 - .../core/preferences/PreferencesManager.java | 55 ++++++++++++------- .../Mineplex.Hub/src/mineplex/hub/Hub.java | 6 +- .../src/mineplex/hub/HubManager.java | 16 +++++- .../hub/bonuses/gui/buttons/PollButton.java | 35 +++++++++--- .../bonuses/gui/buttons/RankBonusButton.java | 14 ++++- .../hub/profile/buttons/ButtonMPS.java | 51 +++++++++++++++++ .../hub/profile/buttons/ButtonPrefs.java | 51 +++++++++++++++++ .../hub/profile/buttons/ButtonStats.java | 55 +++++++++++++++++++ .../mineplex/hub/profile/gui/GUIProfile.java | 48 ++++++++++++++++ 12 files changed, 301 insertions(+), 61 deletions(-) create mode 100644 Plugins/Mineplex.Hub/src/mineplex/hub/profile/buttons/ButtonMPS.java create mode 100644 Plugins/Mineplex.Hub/src/mineplex/hub/profile/buttons/ButtonPrefs.java create mode 100644 Plugins/Mineplex.Hub/src/mineplex/hub/profile/buttons/ButtonStats.java create mode 100644 Plugins/Mineplex.Hub/src/mineplex/hub/profile/gui/GUIProfile.java diff --git a/Plugins/Mineplex.Core/src/mineplex/core/achievement/AchievementManager.java b/Plugins/Mineplex.Core/src/mineplex/core/achievement/AchievementManager.java index 485f5a124..76e58b6fb 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/achievement/AchievementManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/achievement/AchievementManager.java @@ -137,15 +137,6 @@ public class AchievementManager extends MiniPlugin _log.remove(event.getPlayer().getName()); } - @EventHandler - public void playerJoin(PlayerJoinEvent event) - { - if (_giveInterfaceItem) - { - giveInterfaceItem(event.getPlayer()); - } - } - public void clearLog(Player player) { _log.remove(player.getName()); @@ -161,22 +152,7 @@ public class AchievementManager extends MiniPlugin _giveInterfaceItem = giveInterfaceItem; } - public void giveInterfaceItem(Player player) - { - if (!UtilGear.isMat(player.getInventory().getItem(_interfaceSlot), Material.SKULL_ITEM)) - { - ItemStack item = ItemStackFactory.Instance.CreateStack(Material.SKULL_ITEM, (byte) 3, 1, ChatColor.RESET + C.cGreen + "/stats"); - SkullMeta meta = ((SkullMeta) item.getItemMeta()); - meta.setOwner(player.getName()); - item.setItemMeta(meta); - - player.getInventory().setItem(_interfaceSlot, item); - - UtilInv.Update(player); - } - } - - @EventHandler + /*@EventHandler public void openShop(PlayerInteractEvent event) { if (!_shopEnabled) @@ -188,7 +164,7 @@ public class AchievementManager extends MiniPlugin openShop(event.getPlayer()); } - } + }*/ public boolean hasCategory(Player player, Achievement[] required) { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/personalServer/HostServerCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/personalServer/HostServerCommand.java index b09c4cc54..a087fd3f6 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/personalServer/HostServerCommand.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/personalServer/HostServerCommand.java @@ -10,7 +10,7 @@ public class HostServerCommand extends CommandBase { public HostServerCommand(PersonalServerManager plugin) { - super(plugin, Rank.LEGEND, "hostserver"); + super(plugin, Rank.LEGEND, "hostserver", "mps"); } @Override diff --git a/Plugins/Mineplex.Core/src/mineplex/core/personalServer/PersonalServerManager.java b/Plugins/Mineplex.Core/src/mineplex/core/personalServer/PersonalServerManager.java index 466a26d50..3438849f7 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/personalServer/PersonalServerManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/personalServer/PersonalServerManager.java @@ -59,7 +59,6 @@ public class PersonalServerManager extends MiniPlugin { if (_giveInterfaceItem) { - event.getPlayer().getInventory().setItem(_interfaceSlot, _interfaceItem); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/preferences/PreferencesManager.java b/Plugins/Mineplex.Core/src/mineplex/core/preferences/PreferencesManager.java index 6a96dcd16..c69ab7bed 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/preferences/PreferencesManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/preferences/PreferencesManager.java @@ -4,6 +4,19 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.Map.Entry; +import mineplex.core.MiniDbClientPlugin; +import mineplex.core.account.CoreClientManager; +import mineplex.core.common.util.C; +import mineplex.core.common.util.NautHashMap; +import mineplex.core.common.util.UtilGear; +import mineplex.core.common.util.UtilInv; +import mineplex.core.donation.DonationManager; +import mineplex.core.itemstack.ItemStackFactory; +import mineplex.core.preferences.command.PreferencesCommand; +import mineplex.core.preferences.ui.PreferencesShop; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; + import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; @@ -11,18 +24,10 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; import org.bukkit.plugin.java.JavaPlugin; -import mineplex.core.MiniDbClientPlugin; -import mineplex.core.account.CoreClientManager; -import mineplex.core.common.util.NautHashMap; -import mineplex.core.donation.DonationManager; -import mineplex.core.itemstack.ItemStackFactory; -import mineplex.core.preferences.command.PreferencesCommand; -import mineplex.core.preferences.ui.PreferencesShop; -import mineplex.core.updater.UpdateType; -import mineplex.core.updater.event.UpdateEvent; - public class PreferencesManager extends MiniDbClientPlugin { private PreferencesRepository _repository; @@ -53,6 +58,27 @@ public class PreferencesManager extends MiniDbClientPlugin _saveBuffer.put(caller.getUniqueId().toString(), Get(caller)); } + @EventHandler + public void givePlayerItem(PlayerJoinEvent event) + { + if (!GiveItem) + return; + + Player player = event.getPlayer(); + + if (!UtilGear.isMat(player.getInventory().getItem(8), Material.SKULL_ITEM)) + { + ItemStack item = ItemStackFactory.Instance.CreateStack(Material.SKULL_ITEM, (byte) 3, 1, ChatColor.RESET + C.cGreen + "My Profile"); + SkullMeta meta = ((SkullMeta) item.getItemMeta()); + meta.setOwner(player.getName()); + item.setItemMeta(meta); + + player.getInventory().setItem(8, item); + + UtilInv.Update(player); + } + } + @EventHandler public void storeBuffer(UpdateEvent event) { @@ -76,15 +102,6 @@ public class PreferencesManager extends MiniDbClientPlugin } }); } - - @EventHandler - public void givePlayerItem(PlayerJoinEvent event) - { - if (!GiveItem) - return; - - event.getPlayer().getInventory().setItem(8, ItemStackFactory.Instance.CreateStack(Material.REDSTONE_COMPARATOR.getId(), (byte)0, 1, ChatColor.GREEN + "/prefs")); - } @EventHandler(priority = EventPriority.LOWEST) public void playerInteract(PlayerInteractEvent event) diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java b/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java index 3da68540b..c99d09044 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java @@ -122,7 +122,9 @@ public class Hub extends JavaPlugin implements IRelation PartyManager partyManager = new PartyManager(this, portal, clientManager, preferenceManager); - HubManager hubManager = new HubManager(this, blockRestore, clientManager, donationManager, new ConditionManager(this), disguiseManager, new TaskManager(this, clientManager, webServerAddress), portal, partyManager, preferenceManager, petManager, pollManager, statsManager, achievementManager, new HologramManager(this), npcManager); + PersonalServerManager personalServerManager = new PersonalServerManager(this, clientManager); + + HubManager hubManager = new HubManager(this, blockRestore, clientManager, donationManager, new ConditionManager(this), disguiseManager, new TaskManager(this, clientManager, webServerAddress), portal, partyManager, preferenceManager, petManager, pollManager, statsManager, achievementManager, new HologramManager(this), npcManager, personalServerManager); QueueManager queueManager = new QueueManager(this, clientManager, donationManager, new EloManager(this, clientManager), partyManager); @@ -141,7 +143,7 @@ public class Hub extends JavaPlugin implements IRelation } }); //new Replay(this, packetHandler); - new PersonalServerManager(this, clientManager); + AprilFoolsManager.Initialize(this, clientManager, disguiseManager); diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java index 944e7d9b5..03ffee480 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java @@ -25,6 +25,7 @@ import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.player.AsyncPlayerChatEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent; +import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerQuitEvent; @@ -74,6 +75,7 @@ import mineplex.core.notifier.NotificationManager; import mineplex.core.npc.NpcManager; import mineplex.core.party.Party; import mineplex.core.party.PartyManager; +import mineplex.core.personalServer.PersonalServerManager; import mineplex.core.pet.PetManager; import mineplex.core.portal.Portal; import mineplex.core.preferences.PreferencesManager; @@ -97,6 +99,7 @@ import mineplex.hub.modules.ParkourManager; import mineplex.hub.modules.TextManager; import mineplex.hub.modules.WorldManager; import mineplex.hub.poll.PollManager; +import mineplex.hub.profile.gui.GUIProfile; import mineplex.hub.tutorial.TutorialManager; import mineplex.minecraft.game.classcombat.Skill.event.SkillTriggerEvent; import mineplex.minecraft.game.classcombat.item.event.ItemTriggerEvent; @@ -130,6 +133,7 @@ public class HubManager extends MiniClientPlugin private AchievementManager _achievementManager; private TreasureManager _treasureManager; private PetManager _petManager; + private PersonalServerManager _personalServerManager; private Location _spawn; private int _scoreboardTick = 0; @@ -150,7 +154,7 @@ public class HubManager extends MiniClientPlugin //Admin private boolean _gadgetsEnabled = true; - public HubManager(JavaPlugin plugin, BlockRestore blockRestore, CoreClientManager clientManager, DonationManager donationManager, ConditionManager conditionManager, DisguiseManager disguiseManager, TaskManager taskManager, Portal portal, PartyManager partyManager, PreferencesManager preferences, PetManager petManager, PollManager pollManager, StatsManager statsManager, AchievementManager achievementManager, HologramManager hologramManager, NpcManager npcManager) + public HubManager(JavaPlugin plugin, BlockRestore blockRestore, CoreClientManager clientManager, DonationManager donationManager, ConditionManager conditionManager, DisguiseManager disguiseManager, TaskManager taskManager, Portal portal, PartyManager partyManager, PreferencesManager preferences, PetManager petManager, PollManager pollManager, StatsManager statsManager, AchievementManager achievementManager, HologramManager hologramManager, NpcManager npcManager, PersonalServerManager personalServerManager) { super("Hub Manager", plugin); @@ -160,6 +164,7 @@ public class HubManager extends MiniClientPlugin _donationManager = donationManager; _disguiseManager = disguiseManager; _pollManager = pollManager; + _personalServerManager = personalServerManager; _portal = portal; @@ -1094,4 +1099,13 @@ public class HubManager extends MiniClientPlugin UtilPlayer.message(player, F.main("Game Mode", event.getPlayer().getName() + " left the game. Creative Mode: " + F.tf(false))); } } + + @EventHandler + public void openProfile(PlayerInteractEvent event) + { + if(event.getItem().getType() != Material.SKULL_ITEM) + return; + + new GUIProfile(getPlugin(), event.getPlayer(), _preferences, _achievementManager, _personalServerManager).openInventory();; + } } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/PollButton.java b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/PollButton.java index 5584e5b65..b5fe9dca1 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/PollButton.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/PollButton.java @@ -56,14 +56,14 @@ public class PollButton extends SimpleGui implements GuiItem { if (_poll != null) { - setItem(4, getQuestionItem(_poll.getQuestion())); + setItem(13, getQuestionItem(_poll.getQuestion())); int[] slots = even(9, _poll.getAnswers().length); for (int i = 0; i < slots.length; i++) { AnswerItem item = new AnswerItem(_poll, i); - setItem(9 * 2 + slots[i], item); + setItem(9 * 3 + slots[i], item); } } } @@ -80,16 +80,17 @@ public class PollButton extends SimpleGui implements GuiItem { } else { + lore.add(""); lore.add(C.cWhite + _poll.getQuestion()); lore.add(""); int i = 1; for(String str : _poll.getAnswers()) { - lore.add(C.cAqua + "" + i + ".) " + str); + lore.add(C.cAqua + "" + i + ".) " + C.cWhite + str); i++; } lore.add(""); - lore.add(C.cYellow + C.Bold + "Reward: 500 Gems"); + lore.add(C.cYellow + "Reward:" + C.cWhite + " 500 Gems"); lore.add(""); lore.add(C.cGreen + "Click to go to the vote page!"); return ItemStackFactory.Instance.CreateStack(Material.BOOK_AND_QUILL, (byte) 0, 1, C.cGreen + C.Bold + "Vote on Poll", lore); @@ -112,8 +113,24 @@ public class PollButton extends SimpleGui implements GuiItem { public GuiItem getQuestionItem(String question) { - return new SimpleGuiItem(ItemStackFactory.Instance.CreateStack(Material.BOOK_AND_QUILL, (byte) 0, 1, ChatColor.GREEN + "Question:", - wrap(question))); + + ArrayList lore = new ArrayList<>(); + lore.add(""); + lore.add(C.cWhite + wrap(question)); + lore.add(""); + int i = 1; + for(String str : _poll.getAnswers()) + { + lore.add(C.cAqua + "" + i + ".) " + C.cWhite + str); + i++; + } + lore.add(""); + lore.add(C.cYellow + "Reward:" + C.cWhite + " 500 Gems"); + lore.add(""); + lore.add(C.cGreen + "Click to go to the vote page!"); + + return new SimpleGuiItem(ItemStackFactory.Instance.CreateStack(Material.BOOK_AND_QUILL, (byte) 0, 1, ChatColor.GREEN + C.cGreen + C.Bold + "Vote on Poll", + lore)); } public static String[] wrap(String text) @@ -158,8 +175,10 @@ public class PollButton extends SimpleGui implements GuiItem { @Override public ItemStack getObject() { - return ItemStackFactory.Instance.CreateStack(Material.EMERALD, (byte) 0, 1, ChatColor.GREEN + "" + (num + 1) + ":", wrap(getPoll() - .getAnswers()[num])); + ArrayList lore = new ArrayList<>(); + lore.add(""); + lore.add(getPoll().getAnswers()[num]); + return ItemStackFactory.Instance.CreateStack(Material.EMERALD, (byte) 0, 1, ChatColor.GREEN + "Option " + (num + 1), lore); } @Override diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/RankBonusButton.java b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/RankBonusButton.java index 5cfb45207..14f43e9c6 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/RankBonusButton.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/bonuses/gui/buttons/RankBonusButton.java @@ -149,9 +149,9 @@ public class RankBonusButton implements GuiItem, Listener { lore.add(" "); lore.add(ChatColor.WHITE + "Players with a Rank get a Monthly Bonus!"); lore.add(ChatColor.WHITE + ""); - lore.add(ChatColor.AQUA + "Ultra: 7500 Coins"); - lore.add(ChatColor.LIGHT_PURPLE + "Hero: 15000 Coins"); - lore.add(ChatColor.GREEN + "Legend: 30000 Coins"); + lore.add(ChatColor.AQUA + "Ultra receives 7500 Coins Monthly"); + lore.add(ChatColor.LIGHT_PURPLE + "Hero receives 15000 Coins Monthly"); + lore.add(ChatColor.GREEN + "Legend receives 30000 Coins Monthly"); lore.add(ChatColor.WHITE + ""); lore.add(ChatColor.WHITE + "Purchase a Rank at;"); lore.add(ChatColor.WHITE + "www.mineplex.com/shop"); @@ -197,7 +197,15 @@ public class RankBonusButton implements GuiItem, Listener { public boolean isAvailable() { if (!hasRank) + { + UtilPlayer.message(getPlayer(), "----------------------------------------"); + UtilPlayer.message(getPlayer(), ""); + UtilPlayer.message(getPlayer(), "Purchase a Rank at the Mineplex Shop:"); + UtilPlayer.message(getPlayer(), C.cGreen + "www.mineplex.com/shop"); + UtilPlayer.message(getPlayer(), ""); + UtilPlayer.message(getPlayer(), "----------------------------------------"); return false; + } return (timeLeft() <= 0); } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/profile/buttons/ButtonMPS.java b/Plugins/Mineplex.Hub/src/mineplex/hub/profile/buttons/ButtonMPS.java new file mode 100644 index 000000000..f4e3b506a --- /dev/null +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/profile/buttons/ButtonMPS.java @@ -0,0 +1,51 @@ +package mineplex.hub.profile.buttons; + +import mineplex.core.common.util.C; +import mineplex.core.gui.GuiItem; +import mineplex.core.itemstack.ItemStackFactory; +import mineplex.hub.profile.gui.GUIProfile; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.ClickType; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; + +public class ButtonMPS implements GuiItem +{ + + private GUIProfile _profile; + private Player _player; + + public ButtonMPS(GUIProfile profile, Player player) + { + _profile = profile; + _player = player; + } + + @Override + public void click(ClickType clickType) + { + _profile.getPersonalManager().showHostMessage(_player); + } + + @Override + public ItemStack getObject() + { + return ItemStackFactory.Instance.CreateStack(Material.SPECKLED_MELON, (byte)0, 1, C.cGreen + "/hostserver"); + } + + @Override + public void setup() + { + + } + + @Override + public void close() + { + + } + +} diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/profile/buttons/ButtonPrefs.java b/Plugins/Mineplex.Hub/src/mineplex/hub/profile/buttons/ButtonPrefs.java new file mode 100644 index 000000000..8795cd2a5 --- /dev/null +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/profile/buttons/ButtonPrefs.java @@ -0,0 +1,51 @@ +package mineplex.hub.profile.buttons; + +import mineplex.core.common.util.C; +import mineplex.core.gui.GuiItem; +import mineplex.core.itemstack.ItemStackFactory; +import mineplex.hub.profile.gui.GUIProfile; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.ClickType; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; + +public class ButtonPrefs implements GuiItem +{ + + private GUIProfile _profile; + private Player _player; + + public ButtonPrefs(GUIProfile profile, Player player) + { + _profile = profile; + _player = player; + } + + @Override + public void click(ClickType clickType) + { + _profile.getPrefManager().openShop(_player); + } + + @Override + public ItemStack getObject() + { + return ItemStackFactory.Instance.CreateStack(Material.REDSTONE_COMPARATOR.getId(), (byte)0, 1, ChatColor.GREEN + "/prefs"); + } + + @Override + public void setup() + { + + } + + @Override + public void close() + { + + } + +} diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/profile/buttons/ButtonStats.java b/Plugins/Mineplex.Hub/src/mineplex/hub/profile/buttons/ButtonStats.java new file mode 100644 index 000000000..d5533a4ed --- /dev/null +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/profile/buttons/ButtonStats.java @@ -0,0 +1,55 @@ +package mineplex.hub.profile.buttons; + +import mineplex.core.common.util.C; +import mineplex.core.gui.GuiItem; +import mineplex.core.itemstack.ItemStackFactory; +import mineplex.hub.profile.gui.GUIProfile; + +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.ClickType; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; + +public class ButtonStats implements GuiItem +{ + + private GUIProfile _profile; + private Player _player; + + public ButtonStats(GUIProfile profile, Player player) + { + _profile = profile; + _player = player; + } + + @Override + public void click(ClickType clickType) + { + _profile.getAchievementManager().openShop(_player); + } + + @Override + public ItemStack getObject() + { + ItemStack item = ItemStackFactory.Instance.CreateStack(Material.SKULL_ITEM, (byte) 3, 1, ChatColor.RESET + C.cGreen + "/stats"); + SkullMeta meta = ((SkullMeta) item.getItemMeta()); + meta.setOwner(_player.getName()); + item.setItemMeta(meta); + return item; + } + + @Override + public void setup() + { + + } + + @Override + public void close() + { + + } + +} diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/profile/gui/GUIProfile.java b/Plugins/Mineplex.Hub/src/mineplex/hub/profile/gui/GUIProfile.java new file mode 100644 index 000000000..35c6ccf65 --- /dev/null +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/profile/gui/GUIProfile.java @@ -0,0 +1,48 @@ +package mineplex.hub.profile.gui; + +import org.bukkit.entity.Player; +import org.bukkit.plugin.Plugin; + +import mineplex.core.achievement.AchievementManager; +import mineplex.core.gui.SimpleGui; +import mineplex.core.personalServer.PersonalServerManager; +import mineplex.core.preferences.PreferencesManager; +import mineplex.hub.profile.buttons.ButtonMPS; +import mineplex.hub.profile.buttons.ButtonPrefs; +import mineplex.hub.profile.buttons.ButtonStats; + +public class GUIProfile extends SimpleGui +{ + + private PreferencesManager _preferencesManager; + private AchievementManager _achievementManager; + private PersonalServerManager _personalServerManager; + + public GUIProfile(Plugin plugin, Player player, PreferencesManager preferencesManager, AchievementManager achievementManager, PersonalServerManager personalServerManager) + { + super(plugin, player, "My Profile", 9*3); + _preferencesManager = preferencesManager; + _achievementManager = achievementManager; + _personalServerManager = personalServerManager; + + setItem(11, new ButtonStats(this, player)); + setItem(13, new ButtonMPS(this, player)); + setItem(15, new ButtonPrefs(this, player)); + } + + public PreferencesManager getPrefManager() + { + return _preferencesManager; + } + + public AchievementManager getAchievementManager() + { + return _achievementManager; + } + + public PersonalServerManager getPersonalManager() + { + return _personalServerManager; + } + +}