diff --git a/Plugins/.idea/dataSources.xml b/Plugins/.idea/dataSources.xml
index 16b134887..8c71c7a5f 100644
--- a/Plugins/.idea/dataSources.xml
+++ b/Plugins/.idea/dataSources.xml
@@ -1,6 +1,6 @@
-
+
mysql
true
@@ -13,7 +13,6 @@
-
\ No newline at end of file
diff --git a/Plugins/.idea/encodings.xml b/Plugins/.idea/encodings.xml
index d82104827..f75895965 100644
--- a/Plugins/.idea/encodings.xml
+++ b/Plugins/.idea/encodings.xml
@@ -1,4 +1,6 @@
-
+
+
+
\ No newline at end of file
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusManager.java b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusManager.java
index c6188442c..92a3f2d13 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusManager.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusManager.java
@@ -32,6 +32,7 @@ import mineplex.core.common.util.UtilParticle.ParticleType;
import mineplex.core.common.util.UtilParticle.ViewDist;
import mineplex.core.database.DBPool;
import mineplex.core.donation.DonationManager;
+import mineplex.core.giveaway.GiveawayManager;
import mineplex.core.hologram.Hologram;
import mineplex.core.hologram.HologramManager;
import mineplex.core.inventory.InventoryManager;
@@ -165,7 +166,7 @@ public class BonusManager extends MiniClientPlugin implements I
updateOffSet();
}
- public BonusManager(JavaPlugin plugin, CoreClientManager clientManager, ServerStatusManager statusManager, DonationManager donationManager, PollManager pollManager, NpcManager npcManager, HologramManager hologramManager, StatsManager statsManager, InventoryManager inventoryManager, PetManager petManager)
+ public BonusManager(JavaPlugin plugin, CoreClientManager clientManager, ServerStatusManager statusManager, DonationManager donationManager, PollManager pollManager, NpcManager npcManager, HologramManager hologramManager, StatsManager statsManager, InventoryManager inventoryManager, PetManager petManager, GiveawayManager giveawayManager)
{
super("Bonus", plugin);
_repository = new BonusRepository(plugin, this, donationManager);
@@ -174,7 +175,7 @@ public class BonusManager extends MiniClientPlugin implements I
_npcManager = npcManager;
_hologramManager = hologramManager;
- _rewardManager = new RewardManager(clientManager, statusManager, donationManager, inventoryManager, petManager, statsManager,
+ _rewardManager = new RewardManager(clientManager, statusManager, donationManager, inventoryManager, petManager, statsManager, giveawayManager,
100, 250,
500, 1000,
4000, 6000,
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/gui/SpinGui.java b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/gui/SpinGui.java
index c111054bf..3f7d56312 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/gui/SpinGui.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/gui/SpinGui.java
@@ -3,6 +3,7 @@ package mineplex.core.bonuses.gui;
import java.util.ArrayList;
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.gui.DisplayItem;
@@ -109,7 +110,14 @@ public class SpinGui extends SimpleGui
}
}
- _rewardData = _reward.giveReward(RewardType.SpinnerReal, getPlayer());
+ _reward.giveReward(RewardType.SpinnerReal, getPlayer(), new Callback()
+ {
+ @Override
+ public void run(RewardData data)
+ {
+ _rewardData = data;
+ }
+ });
}
private void tick()
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/giveaway/Giveaway.java b/Plugins/Mineplex.Core/src/mineplex/core/giveaway/Giveaway.java
new file mode 100644
index 000000000..eb8817526
--- /dev/null
+++ b/Plugins/Mineplex.Core/src/mineplex/core/giveaway/Giveaway.java
@@ -0,0 +1,51 @@
+package mineplex.core.giveaway;
+
+public class Giveaway
+{
+ private int _id;
+ private String _name;
+ private String _header;
+ private String _message;
+ private boolean _notifyNetwork;
+ private int _notifyCooldown;
+
+ public Giveaway(int id, String name, String header, String message, boolean notifyNetwork, int notifyCooldown)
+ {
+ _id = id;
+ _name = name;
+ _header = header;
+ _message = message;
+ _notifyNetwork = notifyNetwork;
+ _notifyCooldown = notifyCooldown;
+ }
+
+ public int getId()
+ {
+ return _id;
+ }
+
+ public String getName()
+ {
+ return _name;
+ }
+
+ public String getMessage()
+ {
+ return _message;
+ }
+
+ public String getHeader()
+ {
+ return _header;
+ }
+
+ public boolean isNotifyNetwork()
+ {
+ return _notifyNetwork;
+ }
+
+ public int getNotifyCooldown()
+ {
+ return _notifyCooldown;
+ }
+}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/giveaway/GiveawayCooldown.java b/Plugins/Mineplex.Core/src/mineplex/core/giveaway/GiveawayCooldown.java
new file mode 100644
index 000000000..896a777e6
--- /dev/null
+++ b/Plugins/Mineplex.Core/src/mineplex/core/giveaway/GiveawayCooldown.java
@@ -0,0 +1,30 @@
+package mineplex.core.giveaway;
+
+public class GiveawayCooldown
+{
+ private int _id;
+ private String _name;
+ private int _cooldown;
+
+ public GiveawayCooldown(int id, String name, int cooldown)
+ {
+ _id = id;
+ _name = name;
+ _cooldown = cooldown;
+ }
+
+ public int getId()
+ {
+ return _id;
+ }
+
+ public String getName()
+ {
+ return _name;
+ }
+
+ public int getCooldown()
+ {
+ return _cooldown;
+ }
+}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/giveaway/GiveawayManager.java b/Plugins/Mineplex.Core/src/mineplex/core/giveaway/GiveawayManager.java
new file mode 100644
index 000000000..03e912133
--- /dev/null
+++ b/Plugins/Mineplex.Core/src/mineplex/core/giveaway/GiveawayManager.java
@@ -0,0 +1,104 @@
+package mineplex.core.giveaway;
+
+import java.util.HashMap;
+import java.util.UUID;
+
+import org.bukkit.entity.Player;
+import org.bukkit.plugin.java.JavaPlugin;
+
+import mineplex.core.MiniPlugin;
+import mineplex.core.account.CoreClientManager;
+import mineplex.core.common.util.Callback;
+import mineplex.core.giveaway.redis.GiveawayMessage;
+import mineplex.core.giveaway.redis.GiveawayMessageHandler;
+import mineplex.serverdata.Region;
+import mineplex.serverdata.commands.ServerCommandManager;
+
+public class GiveawayManager extends MiniPlugin
+{
+ private CoreClientManager _clientManager;
+ private GiveawayRepository _repository;
+ private HashMap _giveawayMap;
+ private HashMap _cooldownMap;
+
+ public GiveawayManager(JavaPlugin plugin, CoreClientManager clientManager)
+ {
+ super("Giveaway Manager", plugin);
+ _clientManager = clientManager;
+ _repository = new GiveawayRepository(plugin);
+ _giveawayMap = _repository.loadGiveaways();
+ _cooldownMap = _repository.loadCooldowns();
+
+ ServerCommandManager.getInstance().registerCommandType("GiveawayMessage", GiveawayMessage.class, new GiveawayMessageHandler());
+ }
+
+ public void attemptToGiveaway(final String giveawayName, final String cooldownName, Player player, final Callback callback)
+ {
+ final int accountId = _clientManager.getAccountId(player);
+
+ if (accountId == -1)
+ {
+ callback.run(new GiveawayResponse(GiveawayResponse.FailReason.INVALID_ACCOUNT_ID));
+ return;
+ }
+
+ if (!hasGiveaway(giveawayName))
+ {
+ callback.run(new GiveawayResponse(GiveawayResponse.FailReason.INVALID_GIVEAWAY));
+ return;
+ }
+
+ if (!hasCooldown(cooldownName))
+ {
+ callback.run(new GiveawayResponse(GiveawayResponse.FailReason.INVALID_COOLDOWN));
+ return;
+ }
+
+ final Giveaway giveaway = _giveawayMap.get(giveawayName);
+ final GiveawayCooldown cooldown = _cooldownMap.get(cooldownName);
+ runAsync(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ final GiveawayResponse response;
+
+ if (_repository.canGiveaway(accountId, giveawayName))
+ {
+ UUID uuid = UUID.randomUUID();
+ if (_repository.addGiveaway(accountId, giveaway.getId(), cooldown.getId(), Region.US, "", uuid))
+ {
+ response = new GiveawayResponse(uuid);
+ }
+ else
+ {
+ response = new GiveawayResponse(GiveawayResponse.FailReason.QUERY_FAILED);
+ }
+ }
+ else
+ {
+ response = new GiveawayResponse(GiveawayResponse.FailReason.CANNOT_GIVEAWAY);
+ }
+
+ runSync(new Runnable()
+ {
+ @Override
+ public void run()
+ {
+ if (callback != null) callback.run(response);
+ }
+ });
+ }
+ });
+ }
+
+ public boolean hasGiveaway(String name)
+ {
+ return _giveawayMap.containsKey(name);
+ }
+
+ public boolean hasCooldown(String name)
+ {
+ return _cooldownMap.containsKey(name);
+ }
+}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/giveaway/GiveawayRepository.java b/Plugins/Mineplex.Core/src/mineplex/core/giveaway/GiveawayRepository.java
new file mode 100644
index 000000000..6564882ab
--- /dev/null
+++ b/Plugins/Mineplex.Core/src/mineplex/core/giveaway/GiveawayRepository.java
@@ -0,0 +1,116 @@
+package mineplex.core.giveaway;
+
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Types;
+import java.util.HashMap;
+import java.util.UUID;
+
+import org.bukkit.plugin.java.JavaPlugin;
+
+import mineplex.core.database.DBPool;
+import mineplex.core.database.RepositoryBase;
+import mineplex.core.database.ResultSetCallable;
+import mineplex.core.database.column.ColumnInt;
+import mineplex.core.database.column.ColumnVarChar;
+import mineplex.serverdata.Region;
+
+public class GiveawayRepository extends RepositoryBase
+{
+ private static final String INSERT_GIVEAWAY = "INSERT INTO Account.accountGiveaway (giveawayId, accountId, cooldownId, region, serverName, time, uuid) VALUES (?, ?, ?, ?, ?, now(), ?)";
+ private static final String LOAD_GIVEAWAY = "SELECT id, name, header, message, max, notifyNetwork, notifyCooldown, canWinTwice FROM Account.giveaway WHERE enabled = TRUE";
+ private static final String LOAD_COOLDOWN = "SELECT id, name, cooldown FROM Account.giveawayCooldown";
+
+ public GiveawayRepository(JavaPlugin plugin)
+ {
+ super(plugin, DBPool.ACCOUNT);
+ }
+
+ public boolean canGiveaway(int accountId, String giveawayName)
+ {
+ try (Connection connection = getConnection();
+ CallableStatement callableStatement = connection.prepareCall("{call check_giveaway(?, ?, ?)}"))
+ {
+ callableStatement.setInt(1, accountId);
+ callableStatement.setString(2, giveawayName);
+ callableStatement.registerOutParameter(3, Types.BOOLEAN);
+ callableStatement.executeUpdate();
+
+ boolean pass = callableStatement.getBoolean(3);
+ return pass;
+ }
+ catch (Exception e)
+ {
+ }
+ return false;
+ }
+
+ public boolean addGiveaway(int accountId, int giveawayId, int cooldownId, Region region, String serverName, UUID uuid)
+ {
+ return 1 == executeUpdate(INSERT_GIVEAWAY, new ColumnInt("giveawayId", giveawayId), new ColumnInt("accountId", accountId),
+ new ColumnInt("cooldownId", cooldownId), new ColumnVarChar("region", 10, region.name()), new ColumnVarChar("serverName", 64, serverName),
+ new ColumnVarChar("uuid", 32, uuid.toString().replaceAll("-", "")));
+ }
+
+ public HashMap loadGiveaways()
+ {
+ final HashMap map = new HashMap();
+ executeQuery(LOAD_GIVEAWAY, new ResultSetCallable()
+ {
+ @Override
+ public void processResultSet(ResultSet resultSet) throws SQLException
+ {
+ while (resultSet.next())
+ {
+ int id = resultSet.getInt(1);
+ String name = resultSet.getString(2);
+ String header = resultSet.getString(3);
+ String message = resultSet.getString(4);
+ int max = resultSet.getInt(5);
+ boolean notifyNetwork = resultSet.getBoolean(6);
+ int notifyCooldown = resultSet.getInt(7);
+ boolean canWinTwice = resultSet.getBoolean(8);
+
+ Giveaway giveaway = new Giveaway(id, name, header, message, notifyNetwork, notifyCooldown);
+ map.put(name, giveaway);
+ }
+ }
+ });
+ return map;
+ }
+
+ public HashMap loadCooldowns()
+ {
+ final HashMap map = new HashMap();
+ executeQuery(LOAD_COOLDOWN, new ResultSetCallable()
+ {
+ @Override
+ public void processResultSet(ResultSet resultSet) throws SQLException
+ {
+ while (resultSet.next())
+ {
+ int id = resultSet.getInt(1);
+ String name = resultSet.getString(2);
+ int cooldown = resultSet.getInt(3);
+ GiveawayCooldown cd = new GiveawayCooldown(id, name, cooldown);
+ map.put(name, cd);
+ }
+ }
+ });
+ return map;
+ }
+
+ @Override
+ protected void initialize()
+ {
+
+ }
+
+ @Override
+ protected void update()
+ {
+
+ }
+}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/giveaway/GiveawayResponse.java b/Plugins/Mineplex.Core/src/mineplex/core/giveaway/GiveawayResponse.java
new file mode 100644
index 000000000..872cf87a2
--- /dev/null
+++ b/Plugins/Mineplex.Core/src/mineplex/core/giveaway/GiveawayResponse.java
@@ -0,0 +1,52 @@
+package mineplex.core.giveaway;
+
+import java.util.UUID;
+
+public class GiveawayResponse
+{
+ private boolean _success;
+ private FailReason _failReason;
+ private UUID _giveawayId;
+
+ /**
+ * Success Constructor
+ * @param giveawayId
+ */
+ protected GiveawayResponse(UUID giveawayId)
+ {
+ _success = true;
+ _failReason = null;
+ _giveawayId = giveawayId;
+ }
+
+ /**
+ * Faulure constructor
+ * @param failReason
+ */
+ protected GiveawayResponse(FailReason failReason)
+ {
+ _success = false;
+ _failReason = failReason;
+ _giveawayId = null;
+ }
+
+ public boolean isSuccess()
+ {
+ return _success;
+ }
+
+ public UUID getGiveawayId()
+ {
+ return _giveawayId;
+ }
+
+ public FailReason getFailReason()
+ {
+ return _failReason;
+ }
+
+ public static enum FailReason
+ {
+ INVALID_GIVEAWAY, INVALID_COOLDOWN, CANNOT_GIVEAWAY, INVALID_ACCOUNT_ID, QUERY_FAILED;
+ }
+}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/giveaway/redis/GiveawayMessage.java b/Plugins/Mineplex.Core/src/mineplex/core/giveaway/redis/GiveawayMessage.java
new file mode 100644
index 000000000..619cd7a33
--- /dev/null
+++ b/Plugins/Mineplex.Core/src/mineplex/core/giveaway/redis/GiveawayMessage.java
@@ -0,0 +1,39 @@
+package mineplex.core.giveaway.redis;
+
+import mineplex.serverdata.commands.ServerCommand;
+
+public class GiveawayMessage extends ServerCommand
+{
+ private String _giveawayName;
+ private String _playerName;
+ private String _giveawayHeader;
+ private String _giveawayMessage;
+
+ public GiveawayMessage(String giveawayName, String playerName, String giveawayMessage, String giveawayHeader)
+ {
+ _giveawayName = giveawayName;
+ _playerName = playerName;
+ _giveawayMessage = giveawayMessage;
+ _giveawayHeader = giveawayHeader;
+ }
+
+ public String getPlayerName()
+ {
+ return _playerName;
+ }
+
+ public String getGiveawayMessage()
+ {
+ return _giveawayMessage;
+ }
+
+ public String getGiveawayHeader()
+ {
+ return _giveawayHeader;
+ }
+
+ public String getGiveawayName()
+ {
+ return _giveawayName;
+ }
+}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/giveaway/redis/GiveawayMessageHandler.java b/Plugins/Mineplex.Core/src/mineplex/core/giveaway/redis/GiveawayMessageHandler.java
new file mode 100644
index 000000000..d01e14858
--- /dev/null
+++ b/Plugins/Mineplex.Core/src/mineplex/core/giveaway/redis/GiveawayMessageHandler.java
@@ -0,0 +1,45 @@
+package mineplex.core.giveaway.redis;
+
+import java.util.HashMap;
+
+import org.bukkit.ChatColor;
+import org.bukkit.Sound;
+import org.bukkit.entity.Player;
+
+import mineplex.core.common.util.UtilServer;
+import mineplex.core.common.util.UtilTextMiddle;
+import mineplex.serverdata.commands.CommandCallback;
+import mineplex.serverdata.commands.ServerCommand;
+
+public class GiveawayMessageHandler implements CommandCallback
+{
+ private HashMap _cooldownMap;
+
+ public GiveawayMessageHandler()
+ {
+ _cooldownMap = new HashMap();
+ }
+
+ @Override
+ public void run(ServerCommand command)
+ {
+ if (command instanceof GiveawayMessage)
+ {
+ GiveawayMessage message = ((GiveawayMessage) command);
+
+ // %p - player name
+ String headerText = message.getGiveawayHeader();
+ String chatMessage = message.getGiveawayMessage().replaceAll("%p", message.getPlayerName());
+
+ // Chat Colors
+ headerText = ChatColor.translateAlternateColorCodes('&', headerText);
+ chatMessage = ChatColor.translateAlternateColorCodes('&', chatMessage);
+
+ UtilTextMiddle.display(headerText, chatMessage, 20, 80, 20);
+ for (Player player : UtilServer.getPlayers())
+ {
+ player.playSound(player.getEyeLocation(), Sound.AMBIENCE_CAVE, 1, 1);
+ }
+ }
+ }
+}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/Reward.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/Reward.java
index d15bce608..8e5ab89e1 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/reward/Reward.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/Reward.java
@@ -4,6 +4,8 @@ import java.util.Random;
import org.bukkit.entity.Player;
+import mineplex.core.common.util.Callback;
+
/**
* Created by Shaun on 9/2/2014.
*/
@@ -13,16 +15,31 @@ public abstract class Reward
private RewardRarity _rarity;
private int _weight;
+ private boolean _requiresCallback;
public Reward(RewardRarity rarity, int weight)
{
- _rarity = rarity;
- _weight = weight;
+ this(rarity, weight, false);
}
- public final RewardData giveReward(RewardType rewardType, Player player)
+ public Reward(RewardRarity rarity, int weight, boolean requiresCallback)
{
- return giveRewardCustom(player, rewardType);
+ _rarity = rarity;
+ _weight = weight;
+ _requiresCallback = requiresCallback;
+ }
+
+ public final void giveReward(RewardType rewardType, Player player, Callback rewardDataCallback)
+ {
+ if (_requiresCallback)
+ giveRewardCallback(rewardType, player, rewardDataCallback);
+ else
+ rewardDataCallback.run(giveRewardCustom(player, rewardType));
+ }
+
+ protected void giveRewardCallback(RewardType rewardType, Player player, Callback rewardDataCallback)
+ {
+ // do nothing
}
protected abstract RewardData giveRewardCustom(Player player, RewardType rewardType);
@@ -40,4 +57,9 @@ public abstract class Reward
{
return _weight;
}
+
+ public boolean isRequiresCallback()
+ {
+ return _requiresCallback;
+ }
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java
index 5b89aa562..591788557 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java
@@ -14,12 +14,15 @@ import org.bukkit.plugin.java.JavaPlugin;
import mineplex.core.account.CoreClientManager;
import mineplex.core.common.Rank;
+import mineplex.core.common.util.C;
import mineplex.core.donation.DonationManager;
+import mineplex.core.giveaway.GiveawayManager;
import mineplex.core.inventory.InventoryManager;
import mineplex.core.pet.PetManager;
import mineplex.core.reward.rewards.CoinReward;
import mineplex.core.reward.rewards.ExperienceReward;
import mineplex.core.reward.rewards.GemReward;
+import mineplex.core.reward.rewards.GiveawayReward;
import mineplex.core.reward.rewards.InventoryReward;
import mineplex.core.reward.rewards.PetReward;
import mineplex.core.reward.rewards.RankReward;
@@ -36,11 +39,13 @@ public class RewardManager
private boolean _carlSpinner;
private CoreClientManager _clientManager;
+ private DonationManager _donationManager;
private ServerStatusManager _statusManager;
+ private GiveawayManager _giveawayManager;
private boolean _doubleGadgetValue;
- public RewardManager(CoreClientManager clientManager, ServerStatusManager statusManager, DonationManager donationManager, InventoryManager inventoryManager, PetManager petManager, StatsManager statsManager,
+ public RewardManager(CoreClientManager clientManager, ServerStatusManager statusManager, DonationManager donationManager, InventoryManager inventoryManager, PetManager petManager, StatsManager statsManager, GiveawayManager giveawayManager,
int commonValueMin, int commonValueMax,
int uncommonValueMin, int uncommonValueMax,
int rareValueMin, int rareValueMax,
@@ -58,6 +63,8 @@ public class RewardManager
_clientManager = clientManager;
_statusManager = statusManager;
+ _donationManager = donationManager;
+ _giveawayManager = giveawayManager;
_doubleGadgetValue = doubleGadgetValue;
_carlSpinner = carlSpinner;
@@ -393,6 +400,10 @@ public class RewardManager
//Dont give Rank Upgrade if already has Titan
if (rarity == RewardRarity.MYTHICAL)
{
+ if (canGiveMythical && type == RewardType.MythicalChest/* && Math.random() <= 0.1*/)
+ {
+ return getLogitechPrize();
+ }
if (canGiveMythical && type == RewardType.MythicalChest && !_clientManager.Get(player).GetRank().has(Rank.TITAN))
{
return new RankReward(_clientManager, _statusManager, 0, rarity);
@@ -462,4 +473,37 @@ public class RewardManager
return null;
}
+
+ private Reward getLogitechPrize()
+ {
+ double rand = Math.random();
+
+ String name;
+ String cooldown = "logitech";
+ Material mat = Material.DIAMOND;
+ String displayName;
+
+ if (rand < 0.2)
+ {
+ name = "logitechKeyboard";
+ displayName = C.cRed + "Logitech G910 RGB Keyboard";
+ }
+ else if (rand < 0.4)
+ {
+ name = "logitechMouse";
+ displayName = C.cRed + "Logitech G303 Gaming Mouse";
+ }
+ else if (rand < 0.6)
+ {
+ name = "logitechHeadset";
+ displayName = C.cRed + "Logitech G430 Gaming Headset";
+ }
+ else
+ {
+ name = "logitechMousePad";
+ displayName = C.cRed + "Logitech G240 Gaming Mousepad";
+ }
+
+ return new GiveawayReward(_giveawayManager, _clientManager, _donationManager, _statusManager, name, cooldown, displayName , mat, (byte) 0, RewardRarity.MYTHICAL, 0);
+ }
}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/GiveawayReward.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/GiveawayReward.java
new file mode 100644
index 000000000..ef5b439fe
--- /dev/null
+++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/GiveawayReward.java
@@ -0,0 +1,95 @@
+package mineplex.core.reward.rewards;
+
+import org.bukkit.Material;
+import org.bukkit.entity.Player;
+import org.bukkit.inventory.ItemStack;
+
+import mineplex.core.account.CoreClientManager;
+import mineplex.core.common.Rank;
+import mineplex.core.common.util.Callback;
+import mineplex.core.donation.DonationManager;
+import mineplex.core.giveaway.GiveawayManager;
+import mineplex.core.giveaway.GiveawayResponse;
+import mineplex.core.reward.Reward;
+import mineplex.core.reward.RewardData;
+import mineplex.core.reward.RewardRarity;
+import mineplex.core.reward.RewardType;
+import mineplex.core.status.ServerStatusManager;
+
+public class GiveawayReward extends Reward
+{
+ private GiveawayManager _giveawayManager;
+ private CoreClientManager _clientManager;
+ private DonationManager _donationManager;
+ private ServerStatusManager _serverStatusManager;
+ private String _giveawayName;
+ private String _cooldownName;
+ private String _displayName;
+ private Material _icon;
+ private byte _data;
+
+ public GiveawayReward(GiveawayManager giveawayManager, CoreClientManager clientManager, DonationManager donationManager, ServerStatusManager serverStatusManager, String giveawayName, String cooldownName, String displayName, Material icon, byte data, RewardRarity rarity, int weight)
+ {
+ super(rarity, weight, true);
+ _giveawayManager = giveawayManager;
+ _clientManager = clientManager;
+ _donationManager = donationManager;
+ _serverStatusManager = serverStatusManager;
+ _giveawayName = giveawayName;
+ _cooldownName = cooldownName;
+ _displayName = displayName;
+ _icon = icon;
+ _data = data;
+ }
+
+ @Override
+ protected void giveRewardCallback(final RewardType rewardType, final Player player, final Callback rewardDataCallback)
+ {
+ _giveawayManager.attemptToGiveaway(_giveawayName, _cooldownName, player, new Callback()
+ {
+ @Override
+ public void run(GiveawayResponse data)
+ {
+ if (data.isSuccess())
+ {
+ RewardData rewardData = new RewardData(_displayName, new ItemStack(_icon, 1, (short) 0, _data), getRarity());
+ if (rewardDataCallback != null) rewardDataCallback.run(rewardData);
+ }
+ else
+ {
+ // Dang, I guess we failed!
+ if (!_clientManager.hasRank(player, Rank.TITAN))
+ {
+ Reward reward = new RankReward(_clientManager, _serverStatusManager, 0, getRarity());
+ reward.giveReward(rewardType, player, rewardDataCallback);
+ }
+ else
+ {
+ Reward reward = new CoinReward(_donationManager, 20000, 30000, 0, getRarity());
+ reward.giveReward(rewardType, player, rewardDataCallback);
+ }
+ }
+ }
+ });
+ }
+
+ @Override
+ protected RewardData giveRewardCustom(Player player, RewardType rewardType)
+ {
+ // This is a little hacky, this should never be called!
+ return null;
+ }
+
+ @Override
+ public RewardData getFakeRewardData(Player player)
+ {
+ // Let's pretend we are coins!
+ return new RewardData(getRarity().getColor() + "Coins", new ItemStack(175), getRarity());
+ }
+
+ @Override
+ public boolean canGiveReward(Player player)
+ {
+ return true;
+ }
+}
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java
index 86806edb7..1e7f103ed 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java
@@ -17,6 +17,7 @@ import org.bukkit.entity.Player;
import net.minecraft.server.v1_7_R4.PacketPlayOutBlockAction;
import mineplex.core.blockrestore.BlockRestore;
import mineplex.core.common.util.C;
+import mineplex.core.common.util.Callback;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilParticle;
import mineplex.core.common.util.UtilServer;
@@ -193,53 +194,60 @@ public class Treasure
openChest(block, true);
}
- public void openChest(Block block, boolean swapList)
+ public void openChest(final Block block, final boolean swapList)
{
- ChestData data = getChestData(block);
+ // This is very experimental! Pray to god that this works
+ final ChestData data = getChestData(block);
if (data != null && !data.isOpened() && _currentReward < _rewards.length)
{
- Reward reward = _rewards[_currentReward];
- RewardData rewardData = reward.giveReward(_rewardType, _player);
- _currentReward++;
-
- if (swapList)
- {
- BlockInfo info = getBlockInfo(block);
- _chestBlockInfo.remove(info);
- _openedChestBlockInfo.add(info);
- }
-
+ final Reward reward = _rewards[_currentReward];
data.setOpened(true);
- ChestOpenAnimation chestOpenTask = new ChestOpenAnimation(this, data, rewardData, _hologramManager);
- _animations.add(chestOpenTask);
+ reward.giveReward(_rewardType, _player, new Callback()
+ {
+ @Override
+ public void run(RewardData rewardData)
+ {
+ _currentReward++;
- // Extra effects based off the rarity of the treasure
- if (reward.getRarity() == RewardRarity.UNCOMMON)
- {
- _animations.add(new LootUncommonAnimation(this, data.getBlock()));
- }
- else if (reward.getRarity() == RewardRarity.RARE)
- {
- _animations.add(new LootRareAnimation(this, data.getBlock().getLocation().add(0.5, 1.5, 0.5)));
- Bukkit.broadcastMessage(F.main("Treasure", F.name(_player.getName()) + " found " + C.cPurple + "Rare " + rewardData.getFriendlyName()));
- }
- else if (reward.getRarity() == RewardRarity.LEGENDARY)
- {
- _animations.add(new LootLegendaryAnimation(this, data.getBlock()));
- Bukkit.broadcastMessage(F.main("Treasure", F.name(_player.getName()) + " found " + C.cGreen + "Legendary " + rewardData.getFriendlyName()));
- }
- else if (reward.getRarity() == RewardRarity.MYTHICAL)
- {
- _animations.add(new LootMythicalAnimation(this, data.getBlock()));
- Bukkit.broadcastMessage(F.main("Treasure", F.name(_player.getName()) + " found " + C.cRed + "Mythical " + rewardData.getFriendlyName()));
- }
+ if (swapList)
+ {
+ BlockInfo info = getBlockInfo(block);
+ _chestBlockInfo.remove(info);
+ _openedChestBlockInfo.add(info);
+ }
- if (isFinished())
- {
- TreasureRemoveAnimation animation = new TreasureRemoveAnimation(this, _openedChestBlockInfo, _chestBlockInfo);
- _animations.add(animation);
- _finished = true;
- }
+ ChestOpenAnimation chestOpenTask = new ChestOpenAnimation(Treasure.this, data, rewardData, _hologramManager);
+ _animations.add(chestOpenTask);
+
+ // Extra effects based off the rarity of the treasure
+ if (reward.getRarity() == RewardRarity.UNCOMMON)
+ {
+ _animations.add(new LootUncommonAnimation(Treasure.this, data.getBlock()));
+ }
+ else if (reward.getRarity() == RewardRarity.RARE)
+ {
+ _animations.add(new LootRareAnimation(Treasure.this, data.getBlock().getLocation().add(0.5, 1.5, 0.5)));
+ Bukkit.broadcastMessage(F.main("Treasure", F.name(_player.getName()) + " found " + C.cPurple + "Rare " + rewardData.getFriendlyName()));
+ }
+ else if (reward.getRarity() == RewardRarity.LEGENDARY)
+ {
+ _animations.add(new LootLegendaryAnimation(Treasure.this, data.getBlock()));
+ Bukkit.broadcastMessage(F.main("Treasure", F.name(_player.getName()) + " found " + C.cGreen + "Legendary " + rewardData.getFriendlyName()));
+ }
+ else if (reward.getRarity() == RewardRarity.MYTHICAL)
+ {
+ _animations.add(new LootMythicalAnimation(Treasure.this, data.getBlock()));
+ Bukkit.broadcastMessage(F.main("Treasure", F.name(_player.getName()) + " found " + C.cRed + "Mythical " + rewardData.getFriendlyName()));
+ }
+
+ if (isFinished())
+ {
+ TreasureRemoveAnimation animation = new TreasureRemoveAnimation(Treasure.this, _openedChestBlockInfo, _chestBlockInfo);
+ _animations.add(animation);
+ _finished = true;
+ }
+ }
+ });
}
}
@@ -299,7 +307,14 @@ public class Treasure
for (int i = _currentReward; i < _rewards.length; i++)
{
- _rewards[_currentReward].giveReward(_rewardType, _player);
+ _rewards[_currentReward].giveReward(_rewardType, _player, new Callback()
+ {
+ @Override
+ public void run(RewardData data)
+ {
+ // Do nothing
+ }
+ });
}
_currentReward = _rewards.length;
diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java
index 92ced2a3d..c5e6aacac 100644
--- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java
+++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java
@@ -14,6 +14,7 @@ import mineplex.core.MiniPlugin;
import mineplex.core.account.CoreClientManager;
import mineplex.core.blockrestore.BlockRestore;
import mineplex.core.donation.DonationManager;
+import mineplex.core.giveaway.GiveawayManager;
import mineplex.core.hologram.HologramManager;
import mineplex.core.inventory.InventoryManager;
import mineplex.core.pet.PetManager;
@@ -35,7 +36,7 @@ public class TreasureManager extends MiniPlugin
private StatsManager _statsManager;
private List _treasureLocations;
- public TreasureManager(JavaPlugin plugin, CoreClientManager clientManager, ServerStatusManager statusManager, DonationManager donationManager, InventoryManager inventoryManager, PetManager petManager, BlockRestore blockRestore, HologramManager hologramManager, StatsManager statsManager)
+ public TreasureManager(JavaPlugin plugin, CoreClientManager clientManager, ServerStatusManager statusManager, DonationManager donationManager, InventoryManager inventoryManager, PetManager petManager, BlockRestore blockRestore, HologramManager hologramManager, StatsManager statsManager, GiveawayManager giveawayManager)
{
super("Treasure", plugin);
@@ -43,7 +44,7 @@ public class TreasureManager extends MiniPlugin
_blockRestore = blockRestore;
_hologramManager = hologramManager;
_statsManager = statsManager;
- _rewardManager = new RewardManager(clientManager, statusManager, donationManager, _inventoryManager, petManager, statsManager,
+ _rewardManager = new RewardManager(clientManager, statusManager, donationManager, _inventoryManager, petManager, statsManager, giveawayManager,
100, 250,
500, 1000,
4000, 6000,
diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java b/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java
index 979745883..9a2f3e30d 100644
--- a/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java
+++ b/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java
@@ -19,6 +19,7 @@ import mineplex.core.elo.EloManager;
import mineplex.core.energy.Energy;
import mineplex.core.friend.FriendManager;
import mineplex.core.give.Give;
+import mineplex.core.giveaway.GiveawayManager;
import mineplex.core.globalpacket.GlobalPacketManager;
import mineplex.core.hologram.HologramManager;
import mineplex.core.ignore.IgnoreManager;
@@ -111,6 +112,7 @@ public class Hub extends JavaPlugin implements IRelation
//Main Modules
ServerStatusManager serverStatusManager = new ServerStatusManager(this, clientManager, new LagMeter(this, clientManager));
+ GiveawayManager giveawayManager = new GiveawayManager(this, clientManager);
new TitanGiveawayManager(this, clientManager, serverStatusManager);
Portal portal = new Portal(this, clientManager, serverStatusManager.getCurrentServerName());
@@ -127,7 +129,7 @@ public class Hub extends JavaPlugin implements IRelation
PartyManager partyManager = new PartyManager(this, portal, clientManager, preferenceManager);
PersonalServerManager personalServerManager = new PersonalServerManager(this, clientManager);
- HubManager hubManager = new HubManager(this, blockRestore, clientManager, donationManager, inventoryManager, new ConditionManager(this), disguiseManager, new TaskManager(this, clientManager, webServerAddress), portal, partyManager, preferenceManager, petManager, pollManager, statsManager, achievementManager, new HologramManager(this), npcManager, personalServerManager, packetHandler, punish, serverStatusManager);
+ HubManager hubManager = new HubManager(this, blockRestore, clientManager, donationManager, inventoryManager, new ConditionManager(this), disguiseManager, new TaskManager(this, clientManager, webServerAddress), portal, partyManager, preferenceManager, petManager, pollManager, statsManager, achievementManager, new HologramManager(this), npcManager, personalServerManager, packetHandler, punish, serverStatusManager, giveawayManager);
QueueManager queueManager = new QueueManager(this, clientManager, donationManager, new EloManager(this, clientManager), partyManager);
diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java
index 4f76875d2..a9fb8b9e2 100644
--- a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java
+++ b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java
@@ -30,6 +30,7 @@ import mineplex.core.donation.DonationManager;
import mineplex.core.gadget.GadgetManager;
import mineplex.core.gadget.event.GadgetActivateEvent;
import mineplex.core.gadget.event.GadgetCollideEntityEvent;
+import mineplex.core.giveaway.GiveawayManager;
import mineplex.core.hologram.HologramManager;
import mineplex.core.inventory.InventoryManager;
import mineplex.core.message.PrivateMessageEvent;
@@ -163,7 +164,7 @@ public class HubManager extends MiniClientPlugin
//Admin
private boolean _gadgetsEnabled = true;
- public HubManager(JavaPlugin plugin, BlockRestore blockRestore, CoreClientManager clientManager, DonationManager donationManager, InventoryManager inventoryManager, 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, PacketHandler packetHandler, Punish punish, ServerStatusManager serverStatusManager)
+ public HubManager(JavaPlugin plugin, BlockRestore blockRestore, CoreClientManager clientManager, DonationManager donationManager, InventoryManager inventoryManager, 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, PacketHandler packetHandler, Punish punish, ServerStatusManager serverStatusManager, GiveawayManager giveawayManager)
{
super("Hub Manager", plugin);
@@ -196,7 +197,7 @@ public class HubManager extends MiniClientPlugin
new BenefitManager(plugin, clientManager, _inventoryManager);
_gadgetManager = new GadgetManager(_plugin, clientManager, donationManager, _inventoryManager, _mountManager, petManager, preferences, disguiseManager, blockRestore, new ProjectileManager(plugin), achievementManager);
- _treasureManager = new TreasureManager(_plugin, clientManager, serverStatusManager, donationManager, _inventoryManager, petManager, _blockRestore, hologramManager, statsManager);
+ _treasureManager = new TreasureManager(_plugin, clientManager, serverStatusManager, donationManager, _inventoryManager, petManager, _blockRestore, hologramManager, statsManager, giveawayManager);
new CosmeticManager(_plugin, clientManager, donationManager, _inventoryManager, _gadgetManager, _mountManager, petManager, _treasureManager);
new SoccerManager(this, _gadgetManager);
@@ -224,7 +225,7 @@ public class HubManager extends MiniClientPlugin
((CraftWorld)Bukkit.getWorlds().get(0)).getHandle().pvpMode = true;
- new BonusManager(plugin, clientManager, serverStatusManager, donationManager, pollManager , npcManager, hologramManager, statsManager, _inventoryManager, petManager);
+ new BonusManager(plugin, clientManager, serverStatusManager, donationManager, pollManager , npcManager, hologramManager, statsManager, _inventoryManager, petManager, giveawayManager);
// _halloweenManager = new HalloweenSpookinessManager(this);
diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java
index 08a7f2bec..875ee38e3 100644
--- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java
+++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java
@@ -6,6 +6,8 @@ import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import mineplex.core.FoodDupeFix;
+import mineplex.core.account.CoreClient;
+import mineplex.core.giveaway.GiveawayManager;
import mineplex.core.globalpacket.GlobalPacketManager;
import net.minecraft.server.v1_7_R4.BiomeBase;
@@ -145,10 +147,12 @@ public class Arcade extends JavaPlugin
cosmeticManager.disableTeamArmor();
new GlobalPacketManager(this, _clientManager, serverStatusManager);
+
+ GiveawayManager giveawayManager = new GiveawayManager(this, _clientManager);
//Arcade Manager
PollManager pollManager = new PollManager(this, _clientManager, _donationManager);
- _gameManager = new ArcadeManager(this, serverStatusManager, ReadServerConfig(), _clientManager, _donationManager, _damageManager, statsManager, achievementManager, disguiseManager, creature, teleport, new Blood(this), chat, portal, preferenceManager, inventoryManager, packetHandler, cosmeticManager, projectileManager, petManager, hologramManager, webServerAddress, pollManager, npcmanager);
+ _gameManager = new ArcadeManager(this, serverStatusManager, ReadServerConfig(), _clientManager, _donationManager, _damageManager, statsManager, achievementManager, disguiseManager, creature, teleport, new Blood(this), chat, portal, preferenceManager, inventoryManager, packetHandler, cosmeticManager, projectileManager, petManager, hologramManager, webServerAddress, pollManager, npcmanager, giveawayManager);
new MemoryFix(this);
new CustomTagFix(this, packetHandler);
diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java
index 61e1dca19..445b017d2 100644
--- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java
+++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java
@@ -17,6 +17,7 @@ import mineplex.core.common.Rank;
import mineplex.core.common.jsonchat.ClickEvent;
import mineplex.core.common.jsonchat.JsonMessage;
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;
@@ -33,6 +34,7 @@ import mineplex.core.elo.EloManager;
import mineplex.core.energy.Energy;
import mineplex.core.explosion.Explosion;
import mineplex.core.explosion.ExplosionEvent;
+import mineplex.core.giveaway.GiveawayManager;
import mineplex.core.hologram.HologramManager;
import mineplex.core.inventory.InventoryManager;
import mineplex.core.itemstack.ItemStackFactory;
@@ -53,6 +55,7 @@ import mineplex.core.projectile.ProjectileManager;
import mineplex.core.resourcepack.ResPackManager;
import mineplex.core.resourcepack.ResUnloadCheck;
import mineplex.core.resourcepack.redis.RedisUnloadResPack;
+import mineplex.core.reward.RewardData;
import mineplex.core.reward.RewardRarity;
import mineplex.core.reward.rewards.PetReward;
import mineplex.core.stats.StatsManager;
@@ -189,6 +192,7 @@ public class ArcadeManager extends MiniPlugin implements IRelation
private StatsManager _statsManager;
private PartyManager _partyManager;
private PreferencesManager _preferencesManager;
+ private GiveawayManager _giveawayManager;
private TaskManager _taskManager;
private PacketHandler _packetHandler;
@@ -219,7 +223,7 @@ public class ArcadeManager extends MiniPlugin implements IRelation
CoreClientManager clientManager, DonationManager donationManager, DamageManager damageManager,
StatsManager statsManager, AchievementManager achievementManager, DisguiseManager disguiseManager, Creature creature, Teleport teleport, Blood blood, Chat chat,
Portal portal, PreferencesManager preferences, InventoryManager inventoryManager, PacketHandler packetHandler,
- CosmeticManager cosmeticManager, ProjectileManager projectileManager, PetManager petManager, HologramManager hologramManager, String webAddress, PollManager pollManager, NpcManager npcManager)
+ CosmeticManager cosmeticManager, ProjectileManager projectileManager, PetManager petManager, HologramManager hologramManager, String webAddress, PollManager pollManager, NpcManager npcManager, GiveawayManager giveawayManager)
{
super("Game Manager", plugin);
@@ -272,6 +276,7 @@ public class ArcadeManager extends MiniPlugin implements IRelation
_portal = portal;
_petManager = petManager;
_eventManager = new EventModule(this, getPlugin());
+ _giveawayManager = giveawayManager;
// Shop
_arcadeShop = new ArcadeShop(this, clientManager, donationManager);
@@ -304,7 +309,7 @@ public class ArcadeManager extends MiniPlugin implements IRelation
new NotificationManager(getPlugin(), clientManager);
- new BonusManager(plugin, clientManager, serverStatusManager, donationManager, pollManager , npcManager, hologramManager, statsManager, _inventoryManager, petManager);
+ new BonusManager(plugin, clientManager, serverStatusManager, donationManager, pollManager , npcManager, hologramManager, statsManager, _inventoryManager, petManager, giveawayManager);
//Champions Modules
_energy = new Energy(plugin);
@@ -518,6 +523,11 @@ public class ArcadeManager extends MiniPlugin implements IRelation
return _explosionManager;
}
+ public GiveawayManager getGiveawayManager()
+ {
+ return _giveawayManager;
+ }
+
public Fire GetFire()
{
return _fire;
@@ -1328,7 +1338,14 @@ public class ArcadeManager extends MiniPlugin implements IRelation
PetReward reward = new PetReward(_petManager, _inventoryManager, _donationManager, pet, pet, type, RewardRarity.OTHER, 0);
if (reward.canGiveReward(player))
- reward.giveReward(null, player);
+ reward.giveReward(null, player, new Callback()
+ {
+ @Override
+ public void run(RewardData data)
+ {
+
+ }
+ });
}
public void toggleChampionsModules(GameType gameType)
diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameLootManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameLootManager.java
index b630bbe6a..ba57f7f18 100644
--- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameLootManager.java
+++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameLootManager.java
@@ -18,11 +18,13 @@ import org.bukkit.inventory.ItemStack;
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.UtilAlg;
import mineplex.core.common.util.UtilFirework;
import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilTextMiddle;
+import mineplex.core.giveaway.GiveawayManager;
import mineplex.core.pet.PetManager;
import mineplex.core.reward.Reward;
import mineplex.core.reward.RewardData;
@@ -50,7 +52,7 @@ public class GameLootManager implements Listener
Manager.getPluginManager().registerEvents(this, Manager.getPlugin());
- _rewardManager = new RewardManager(Manager.GetClients(), Manager.GetServerStatusManager(), Manager.GetDonation(), Manager.getInventoryManager(), petManager, Manager.GetStatsManager(),
+ _rewardManager = new RewardManager(Manager.GetClients(), Manager.GetServerStatusManager(), Manager.GetDonation(), Manager.getInventoryManager(), petManager, Manager.GetStatsManager(), Manager.getGiveawayManager(),
100, 250,
500, 1000,
1500, 2500,
@@ -133,7 +135,7 @@ public class GameLootManager implements Listener
//Delay after Achievements
}
- public boolean giveReward(Player player, boolean force)
+ public boolean giveReward(final Player player, boolean force)
{
if (!force)
{
@@ -162,56 +164,60 @@ public class GameLootManager implements Listener
return false;
}
- Reward reward = _rewardManager.nextReward(player, null, false, RewardType.GameLoot, true);
-
- RewardData rewardData = reward.giveReward(RewardType.GameLoot, player);
-
- String outputName = reward.getRarity().getColor() + rewardData.getFriendlyName();
-
- String rarityName = "";
- if (reward.getRarity() != RewardRarity.COMMON)
- rarityName = " " + reward.getRarity().getColor() + reward.getRarity().getName();
-
- //Log
- System.out.println(F.name(player.getName()) + " found" + rarityName + " " + outputName);
-
- //Self Display
- UtilTextMiddle.display(C.cGreen + "Game Loot", "You found " + outputName, 20, 120, 20, player);
- //if (reward.getRarity() == RewardRarity.COMMON)
- // UtilPlayer.message(player, F.main("Loot", "You found " + rarityName + outputName));
-
- Random _random = new Random();
-
- //Announce
- //if (reward.getRarity() != RewardRarity.COMMON)
+ final Reward reward = _rewardManager.nextReward(player, null, false, RewardType.GameLoot, true);
+ reward.giveReward(RewardType.GameLoot, player, new Callback()
{
- Bukkit.broadcastMessage(F.main("Loot", F.name(player.getName()) + " found" + rarityName + " " + outputName));
- }
-
- //Effect
- if (reward.getRarity() == RewardRarity.UNCOMMON)
- {
- FireworkEffect effect = FireworkEffect.builder().withColor(Color.fromRGB(_random.nextInt(255), _random.nextInt(255), _random.nextInt(255)))
- .withFade(Color.fromRGB(_random.nextInt(255), _random.nextInt(255), _random.nextInt(255)))
- .with(FireworkEffect.Type.STAR)
- .build();
+ @Override
+ public void run(RewardData rewardData)
+ {
+ String outputName = reward.getRarity().getColor() + rewardData.getFriendlyName();
- UtilFirework.playFirework(player.getEyeLocation(), effect);
- }
- else if (reward.getRarity() == RewardRarity.RARE)
- {
- FireworkEffect effect = FireworkEffect.builder().with(FireworkEffect.Type.BALL).withColor(Color.YELLOW).withFade(Color.WHITE).build();
- UtilFirework.playFirework(player.getEyeLocation(), effect);
-
- player.getWorld().playSound(player.getEyeLocation().add(0.5, 0.5, 0.5), Sound.WITHER_SPAWN, 5F, 1.2F);
- }
- else if (reward.getRarity() == RewardRarity.LEGENDARY)
- {
- FireworkEffect effect = FireworkEffect.builder().with(FireworkEffect.Type.BALL_LARGE).withColor(Color.RED).withFade(Color.BLACK).build();
- UtilFirework.playFirework(player.getEyeLocation(), effect);
-
- player.getWorld().playSound(player.getEyeLocation().add(0.5, 0.5, 0.5), Sound.ENDERDRAGON_DEATH, 10F, 2.0F);
- }
+ String rarityName = "";
+ if (reward.getRarity() != RewardRarity.COMMON)
+ rarityName = " " + reward.getRarity().getColor() + reward.getRarity().getName();
+
+ //Log
+ System.out.println(F.name(player.getName()) + " found" + rarityName + " " + outputName);
+
+ //Self Display
+ UtilTextMiddle.display(C.cGreen + "Game Loot", "You found " + outputName, 20, 120, 20, player);
+ //if (reward.getRarity() == RewardRarity.COMMON)
+ // UtilPlayer.message(player, F.main("Loot", "You found " + rarityName + outputName));
+
+ Random _random = new Random();
+
+ //Announce
+ //if (reward.getRarity() != RewardRarity.COMMON)
+ {
+ Bukkit.broadcastMessage(F.main("Loot", F.name(player.getName()) + " found" + rarityName + " " + outputName));
+ }
+
+ //Effect
+ if (reward.getRarity() == RewardRarity.UNCOMMON)
+ {
+ FireworkEffect effect = FireworkEffect.builder().withColor(Color.fromRGB(_random.nextInt(255), _random.nextInt(255), _random.nextInt(255)))
+ .withFade(Color.fromRGB(_random.nextInt(255), _random.nextInt(255), _random.nextInt(255)))
+ .with(FireworkEffect.Type.STAR)
+ .build();
+
+ UtilFirework.playFirework(player.getEyeLocation(), effect);
+ }
+ else if (reward.getRarity() == RewardRarity.RARE)
+ {
+ FireworkEffect effect = FireworkEffect.builder().with(FireworkEffect.Type.BALL).withColor(Color.YELLOW).withFade(Color.WHITE).build();
+ UtilFirework.playFirework(player.getEyeLocation(), effect);
+
+ player.getWorld().playSound(player.getEyeLocation().add(0.5, 0.5, 0.5), Sound.WITHER_SPAWN, 5F, 1.2F);
+ }
+ else if (reward.getRarity() == RewardRarity.LEGENDARY)
+ {
+ FireworkEffect effect = FireworkEffect.builder().with(FireworkEffect.Type.BALL_LARGE).withColor(Color.RED).withFade(Color.BLACK).build();
+ UtilFirework.playFirework(player.getEyeLocation(), effect);
+
+ player.getWorld().playSound(player.getEyeLocation().add(0.5, 0.5, 0.5), Sound.ENDERDRAGON_DEATH, 10F, 2.0F);
+ }
+ }
+ });
return true;
}