From d819671d1646e838f7218cbdad798ae9bdf24f71 Mon Sep 17 00:00:00 2001 From: Teddy Date: Tue, 5 Jan 2016 16:21:34 +0000 Subject: [PATCH 01/10] Queue implemented for duplicate shard reward --- .../reward/rewards/TreasureShardReward.java | 35 +++++++++++++++---- 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java index a931d2311..ad66b8354 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java @@ -1,9 +1,13 @@ package mineplex.core.reward.rewards; +import java.util.LinkedList; +import java.util.Queue; + import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; +import mineplex.core.bonuses.GiveDonorData; import mineplex.core.common.util.Callback; import mineplex.core.donation.DonationManager; import mineplex.core.reward.Reward; @@ -17,6 +21,8 @@ public class TreasureShardReward extends Reward private Reward _otherReward; private int _shards; + private Queue _rewardQueue; + public TreasureShardReward(DonationManager donationManager, Reward otherReward, int weight, RewardRarity rarity) { super(rarity, weight, 0); @@ -24,6 +30,8 @@ public class TreasureShardReward extends Reward _donationManager = donationManager; _otherReward = otherReward; + _rewardQueue = new LinkedList(); + _shards = (int) (otherReward.getShardValue() + (Math.random() * otherReward.getShardValue() / 2.0)); } @@ -32,15 +40,29 @@ public class TreasureShardReward extends Reward { RewardData fakeData = _otherReward.getFakeRewardData(player); RewardData rewardData = new RewardData(fakeData.getHeader(), fakeData.getFriendlyName(), fakeData.getDisplayItem(), fakeData.getRarity(), _shards); + _rewardQueue.add(new GiveDonorData(player.getName(), _donationManager.getClientManager().Get(player).getAccountId(), player.getUniqueId(), _shards)); - _donationManager.RewardCoins(new Callback() + final GiveDonorData coinData = _rewardQueue.poll(); + if (coinData != null && coinData.getAttempts() < 10) { - @Override - public void run(Boolean data) + _donationManager.RewardCoins(new Callback() { - - } - }, "Treasure Chest", player.getName(), _donationManager.getClientManager().Get(player).getAccountId(), _shards); + @Override + public void run(Boolean data) + { + if (!data) + { + coinData.incrementAttempts(); + System.out.println("Failed to process coins for " + coinData.getPlayerName() + " adding to back of queue. Attempts: " + coinData.getAttempts()); + _rewardQueue.add(coinData); + } + else + { + System.out.println("process of " + _shards + " Shards successful"); + } + } + }, "Treasure Chest", player.getName(), _donationManager.getClientManager().Get(player).getAccountId(), _shards); + } return rewardData; } @@ -66,3 +88,4 @@ public class TreasureShardReward extends Reward return false; } } + From d4fd6a6bf7ab073a751fbccec67d2f4e9e1b786a Mon Sep 17 00:00:00 2001 From: Teddy Date: Tue, 5 Jan 2016 21:00:43 +0000 Subject: [PATCH 02/10] Treasure not giving Shards when dupes occur, fixed. --- .../src/mineplex/core/reward/RewardData.java | 7 ++- .../reward/rewards/TreasureShardReward.java | 50 ++++++++++++------- .../src/mineplex/core/treasure/Treasure.java | 5 +- 3 files changed, 43 insertions(+), 19 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardData.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardData.java index b23f91c85..8179dbb98 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardData.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardData.java @@ -12,7 +12,7 @@ public class RewardData private final ItemStack _displayItem; private final RewardRarity _rarity; private final boolean _rewardedShards; - private final int _shards; + private int _shards; public RewardData(String header, String friendlyName, ItemStack displayItem, RewardRarity rarity, int shards) { @@ -63,4 +63,9 @@ public class RewardData { return _shards; } + + public void setShards(int value) + { + _shards = value; + } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java index ad66b8354..8e84c4a54 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java @@ -3,9 +3,11 @@ package mineplex.core.reward.rewards; import java.util.LinkedList; import java.util.Queue; +import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; +import org.bukkit.scheduler.BukkitRunnable; import mineplex.core.bonuses.GiveDonorData; import mineplex.core.common.util.Callback; @@ -19,7 +21,8 @@ public class TreasureShardReward extends Reward { private DonationManager _donationManager; private Reward _otherReward; - private int _shards; + private int _shards = 0; + private int _task; private Queue _rewardQueue; @@ -32,7 +35,7 @@ public class TreasureShardReward extends Reward _rewardQueue = new LinkedList(); - _shards = (int) (otherReward.getShardValue() + (Math.random() * otherReward.getShardValue() / 2.0)); + _shards += (int) (otherReward.getShardValue() + (Math.random() * otherReward.getShardValue() / 2.0)); } @Override @@ -43,26 +46,39 @@ public class TreasureShardReward extends Reward _rewardQueue.add(new GiveDonorData(player.getName(), _donationManager.getClientManager().Get(player).getAccountId(), player.getUniqueId(), _shards)); final GiveDonorData coinData = _rewardQueue.poll(); - if (coinData != null && coinData.getAttempts() < 10) + _task = Bukkit.getScheduler().scheduleSyncRepeatingTask(_donationManager.getPlugin(), new Runnable() { - _donationManager.RewardCoins(new Callback() + @Override + public void run() { - @Override - public void run(Boolean data) + if (coinData != null && coinData.getAttempts() < 10) { - if (!data) + _donationManager.RewardCoins(new Callback() { - coinData.incrementAttempts(); - System.out.println("Failed to process coins for " + coinData.getPlayerName() + " adding to back of queue. Attempts: " + coinData.getAttempts()); - _rewardQueue.add(coinData); - } - else - { - System.out.println("process of " + _shards + " Shards successful"); - } + @Override + public void run(Boolean data) + { + if (!data) + { + coinData.incrementAttempts(); + System.out.println("Failed to process shards for " + coinData.getPlayerName() + " adding to back of queue. Attempts: " + coinData.getAttempts()); + _rewardQueue.add(coinData); + } + else + { + System.out.println("process of " + _shards + " shards successful"); + Bukkit.getScheduler().cancelTask(_task); + } + } + }, "Treasure Chest", player.getName(), _donationManager.getClientManager().Get(player).getAccountId(), _shards); } - }, "Treasure Chest", player.getName(), _donationManager.getClientManager().Get(player).getAccountId(), _shards); - } + else + { + System.out.println("Failed to process shards for " + coinData.getPlayerName() + ", Too many attempts taken place. (10)"); + Bukkit.getScheduler().cancelTask(_task); + } + } + }, 0, 20L); return rewardData; } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java index a9eecb3f7..c75e7c625 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java @@ -113,11 +113,13 @@ public class Treasure for (int i = 0; i < _rewards.length; i++) { Reward reward = _rewards[i]; + System.out.println(reward.getFakeRewardData(player).getDisplayItem()); final int count = i; reward.giveReward(_rewardType, player, new Callback() { @Override - public void run(RewardData data) { + public void run(RewardData data) + { _rewardData.put(count, data); } }); @@ -350,6 +352,7 @@ public class Treasure public void run(RewardData data) { // Do nothing + System.out.println("Shards: " + data.getShards()); } }); } From e2824dd0e0ec127f212ee9b829f2281cb7874e7b Mon Sep 17 00:00:00 2001 From: Teddy Date: Tue, 5 Jan 2016 21:01:51 +0000 Subject: [PATCH 03/10] Debugs removed --- .../src/mineplex/core/reward/rewards/TreasureShardReward.java | 4 ++-- .../Mineplex.Core/src/mineplex/core/treasure/Treasure.java | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java index 8e84c4a54..27c3b360b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java @@ -61,12 +61,12 @@ public class TreasureShardReward extends Reward if (!data) { coinData.incrementAttempts(); - System.out.println("Failed to process shards for " + coinData.getPlayerName() + " adding to back of queue. Attempts: " + coinData.getAttempts()); +// System.out.println("Failed to process shards for " + coinData.getPlayerName() + " adding to back of queue. Attempts: " + coinData.getAttempts()); _rewardQueue.add(coinData); } else { - System.out.println("process of " + _shards + " shards successful"); +// System.out.println("process of " + _shards + " shards successful"); Bukkit.getScheduler().cancelTask(_task); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java index c75e7c625..d7c4b5303 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java @@ -113,7 +113,6 @@ public class Treasure for (int i = 0; i < _rewards.length; i++) { Reward reward = _rewards[i]; - System.out.println(reward.getFakeRewardData(player).getDisplayItem()); final int count = i; reward.giveReward(_rewardType, player, new Callback() { From 99f0404fff8c8eb7424ec41323338f87512bb734 Mon Sep 17 00:00:00 2001 From: Teddy Date: Tue, 5 Jan 2016 21:05:02 +0000 Subject: [PATCH 04/10] Queue speed up --- .../src/mineplex/core/reward/rewards/TreasureShardReward.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java index 27c3b360b..72001d25b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java @@ -78,7 +78,7 @@ public class TreasureShardReward extends Reward Bukkit.getScheduler().cancelTask(_task); } } - }, 0, 20L); + }, 0, 5L); return rewardData; } From 6bf0970dbe72bca20cc645ea6c93d4f71b4ee212 Mon Sep 17 00:00:00 2001 From: Teddy Date: Thu, 7 Jan 2016 19:52:04 +0000 Subject: [PATCH 05/10] Unused import removed --- .../src/mineplex/core/reward/rewards/TreasureShardReward.java | 1 - 1 file changed, 1 deletion(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java index 72001d25b..0a35fe2eb 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java @@ -7,7 +7,6 @@ import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -import org.bukkit.scheduler.BukkitRunnable; import mineplex.core.bonuses.GiveDonorData; import mineplex.core.common.util.Callback; From 78405749a43f8acd8ef4256d96976d09ff758b4f Mon Sep 17 00:00:00 2001 From: Teddy Date: Fri, 8 Jan 2016 13:46:39 +0000 Subject: [PATCH 06/10] Changed TreasureShard rewarding, removed Queue --- .../reward/rewards/TreasureShardReward.java | 52 +++++++------------ 1 file changed, 18 insertions(+), 34 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java index 0a35fe2eb..9063e8f8c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java @@ -20,10 +20,8 @@ public class TreasureShardReward extends Reward { private DonationManager _donationManager; private Reward _otherReward; - private int _shards = 0; - private int _task; - - private Queue _rewardQueue; + private int _shards = 0, _task; + private boolean _success = true; public TreasureShardReward(DonationManager donationManager, Reward otherReward, int weight, RewardRarity rarity) { @@ -32,8 +30,6 @@ public class TreasureShardReward extends Reward _donationManager = donationManager; _otherReward = otherReward; - _rewardQueue = new LinkedList(); - _shards += (int) (otherReward.getShardValue() + (Math.random() * otherReward.getShardValue() / 2.0)); } @@ -42,46 +38,34 @@ public class TreasureShardReward extends Reward { RewardData fakeData = _otherReward.getFakeRewardData(player); RewardData rewardData = new RewardData(fakeData.getHeader(), fakeData.getFriendlyName(), fakeData.getDisplayItem(), fakeData.getRarity(), _shards); - _rewardQueue.add(new GiveDonorData(player.getName(), _donationManager.getClientManager().Get(player).getAccountId(), player.getUniqueId(), _shards)); - final GiveDonorData coinData = _rewardQueue.poll(); _task = Bukkit.getScheduler().scheduleSyncRepeatingTask(_donationManager.getPlugin(), new Runnable() { @Override public void run() { - if (coinData != null && coinData.getAttempts() < 10) - { - _donationManager.RewardCoins(new Callback() - { - @Override - public void run(Boolean data) - { - if (!data) - { - coinData.incrementAttempts(); -// System.out.println("Failed to process shards for " + coinData.getPlayerName() + " adding to back of queue. Attempts: " + coinData.getAttempts()); - _rewardQueue.add(coinData); - } - else - { -// System.out.println("process of " + _shards + " shards successful"); - Bukkit.getScheduler().cancelTask(_task); - } - } - }, "Treasure Chest", player.getName(), _donationManager.getClientManager().Get(player).getAccountId(), _shards); - } - else - { - System.out.println("Failed to process shards for " + coinData.getPlayerName() + ", Too many attempts taken place. (10)"); + if(hasRewarded(fakeData, player)) Bukkit.getScheduler().cancelTask(_task); - } } - }, 0, 5L); + }, 0, 3); return rewardData; } + public boolean hasRewarded(RewardData fakeData, Player player) + { + _donationManager.RewardCoins(new Callback() + { + @Override + public void run(Boolean data) + { + _success = data; + } + }, "Treasure Chest", player.getName(), _donationManager.getClientManager().Get(player).getAccountId(), _shards); + + return _success; + } + @Override public RewardData getFakeRewardData(Player player) { From 43fb04b4826d58423bd2cf241456596685a814d8 Mon Sep 17 00:00:00 2001 From: Teddy Date: Fri, 8 Jan 2016 13:46:57 +0000 Subject: [PATCH 07/10] Import clean up --- .../src/mineplex/core/reward/rewards/TreasureShardReward.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java index 9063e8f8c..384a3aeae 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java @@ -1,14 +1,10 @@ package mineplex.core.reward.rewards; -import java.util.LinkedList; -import java.util.Queue; - import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; -import mineplex.core.bonuses.GiveDonorData; import mineplex.core.common.util.Callback; import mineplex.core.donation.DonationManager; import mineplex.core.reward.Reward; From ace7d1764c68f6ea679ae60b3104d1af96e1869c Mon Sep 17 00:00:00 2001 From: Mysticate Date: Sun, 31 Jan 2016 10:22:59 -0500 Subject: [PATCH 08/10] Fixed various ways of players going invisible through Spec mode. --- .../nautilus/game/arcade/ArcadeManager.java | 3 ++ .../game/games/paintball/Paintball.java | 5 ++ .../arcade/game/games/wither/WitherGame.java | 5 ++ .../arcade/managers/GameSpectatorManager.java | 48 ++++++++++--------- 4 files changed, 38 insertions(+), 23 deletions(-) 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 4e574f3cf..1c803d15a 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java @@ -861,6 +861,9 @@ public class ArcadeManager extends MiniPlugin implements IRelation public void Clear(Player player) { + if (player.getGameMode() == GameMode.SPECTATOR) + player.setSpectatorTarget(null); + player.setGameMode(GameMode.SURVIVAL); player.setAllowFlight(false); player.setFlySpeed(0.1F); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/paintball/Paintball.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/paintball/Paintball.java index 5f4d7b2b4..0d51c64a0 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/paintball/Paintball.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/paintball/Paintball.java @@ -8,6 +8,7 @@ import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Color; import org.bukkit.Effect; +import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.Sound; @@ -481,6 +482,10 @@ public class Paintball extends TeamGame } //Settings + if (player.getGameMode() == GameMode.SPECTATOR) + player.setSpectatorTarget(null); + + player.setGameMode(GameMode.SURVIVAL); player.setAllowFlight(false); player.setFlying(false); ((CraftPlayer)player).getHandle().spectating = false; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/wither/WitherGame.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/wither/WitherGame.java index efa9c8342..6a6749d96 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/wither/WitherGame.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/wither/WitherGame.java @@ -9,6 +9,7 @@ import java.util.Set; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.EntityEffect; +import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.Sound; @@ -820,6 +821,10 @@ public class WitherGame extends TeamGame implements IBlockRestorer } // Settings + if (player.getGameMode() == GameMode.SPECTATOR) + player.setSpectatorTarget(null); + + player.setGameMode(GameMode.SURVIVAL); player.setAllowFlight(false); player.setFlying(false); ((CraftPlayer) player).getHandle().spectating = false; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameSpectatorManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameSpectatorManager.java index 0082fc1ce..4515bcf47 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameSpectatorManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameSpectatorManager.java @@ -2,6 +2,19 @@ package nautilus.game.arcade.managers; import java.util.List; +import org.bukkit.GameMode; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.block.Action; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.player.PlayerInteractEntityEvent; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.event.player.PlayerToggleSneakEvent; +import org.bukkit.event.vehicle.VehicleDamageEvent; + import mineplex.core.common.util.C; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilMath; @@ -13,23 +26,6 @@ import mineplex.core.updater.event.UpdateEvent; import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.game.Game.GameState; -import org.bukkit.Bukkit; -import org.bukkit.GameMode; -import org.bukkit.Material; -import org.bukkit.entity.Entity; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.block.Action; -import org.bukkit.event.entity.PlayerDeathEvent; -import org.bukkit.event.player.PlayerInteractEntityEvent; -import org.bukkit.event.player.PlayerInteractEvent; -import org.bukkit.event.player.PlayerMoveEvent; -import org.bukkit.event.player.PlayerToggleSneakEvent; -import org.bukkit.event.vehicle.VehicleDamageEvent; -import org.bukkit.inventory.ItemStack; - public class GameSpectatorManager implements Listener { ArcadeManager Manager; @@ -228,19 +224,25 @@ public class GameSpectatorManager implements Listener @Override public void run() { - if(target instanceof Player) + Player ptarget = null; + if (target instanceof Player) + ptarget = (Player) target; + + if (ptarget != null) { - if(!Manager.GetGame().IsAlive(target)) + if (!Manager.GetGame().IsAlive(ptarget)) return; } + player.setGameMode(GameMode.SPECTATOR); player.setSpectatorTarget(target); - if(target instanceof Player) - UtilTextBottom.display(C.cYellow + "You are spectating " + F.game(((Player) target).getName()), player); - UtilPlayer.message(player, F.main("Game", "Sneak to stop spectating")); + if (ptarget != null) + UtilTextBottom.display(C.cGray + "You are spectating " + F.elem(Manager.GetGame().GetTeam(ptarget).GetColor() + ptarget.getName()) + ".", player); + + UtilPlayer.message(player, F.main("Game", "Sneak to stop spectating.")); } - }, 3); + }, 1); } @EventHandler(priority = EventPriority.LOW) From af27944a39129454b2963707c27799643d2440f1 Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Tue, 2 Feb 2016 05:34:33 -0500 Subject: [PATCH 09/10] add a shard queue to DonationManager, use that for TreasureShardReward --- .../mineplex/core/bonuses/BonusManager.java | 9 +-- .../mineplex/core/bonuses/GiveDonorData.java | 50 ------------- .../core/donation/DonationManager.java | 64 +++++++++++++++++ .../mineplex/core/donation/GiveDonorData.java | 71 +++++++++++++++++++ .../mineplex/core/reward/RewardManager.java | 2 +- .../reward/rewards/TreasureShardReward.java | 32 +++------ 6 files changed, 150 insertions(+), 78 deletions(-) delete mode 100644 Plugins/Mineplex.Core/src/mineplex/core/bonuses/GiveDonorData.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/donation/GiveDonorData.java diff --git a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusManager.java b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusManager.java index 0aa8652cf..8f5879b6f 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusManager.java @@ -7,8 +7,6 @@ import java.sql.Timestamp; import java.util.ArrayList; import java.util.Calendar; import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; import java.util.LinkedList; import java.util.Queue; import java.util.TimeZone; @@ -17,7 +15,6 @@ import mineplex.core.MiniClientPlugin; import mineplex.core.account.CoreClient; import mineplex.core.account.CoreClientManager; import mineplex.core.account.ILoginProcessor; -import mineplex.core.account.IQuerylessLoginProcessor; import mineplex.core.account.event.ClientUnloadEvent; import mineplex.core.bonuses.redis.VoteHandler; import mineplex.core.bonuses.redis.VotifierCommand; @@ -32,6 +29,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.donation.GiveDonorData; import mineplex.core.facebook.FacebookManager; import mineplex.core.giveaway.GiveawayManager; import mineplex.core.hologram.Hologram; @@ -59,7 +57,6 @@ import mineplex.core.bonuses.gui.SpinGui; import mineplex.core.poll.PollManager; import mineplex.serverdata.commands.ServerCommandManager; -import org.jooq.DSLContext; import org.jooq.SQLDialect; import org.jooq.impl.DSL; import org.bukkit.Bukkit; @@ -755,7 +752,7 @@ public class BonusManager extends MiniClientPlugin implements I if (gems > 0) { UtilPlayer.message(player, F.main("Carl", "Rewarded " + F.elem(gems + " Gems"))); - _gemQueue.add(new GiveDonorData(player.getName(), coreClient.getAccountId(), player.getUniqueId(), gems)); + _gemQueue.add(new GiveDonorData(null, player.getName(), "Treasure", player.getUniqueId(), coreClient.getAccountId(), gems)); } if (gold > 0) @@ -780,7 +777,7 @@ public class BonusManager extends MiniClientPlugin implements I if (coins > 0) { UtilPlayer.message(player, F.main("Carl", "Rewarded " + F.elem(coins + " Treasure Shards"))); - _coinQueue.add(new GiveDonorData(player.getName(), coreClient.getAccountId(), player.getUniqueId(), coins)); + _coinQueue.add(new GiveDonorData(null, player.getName(), "Treasure", player.getUniqueId(), coreClient.getAccountId(), coins)); } if (tickets > 0) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/GiveDonorData.java b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/GiveDonorData.java deleted file mode 100644 index 1aa07d0d5..000000000 --- a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/GiveDonorData.java +++ /dev/null @@ -1,50 +0,0 @@ -package mineplex.core.bonuses; - -import java.util.UUID; - -public class GiveDonorData -{ - private String _playerName; - private int _accountId; - private UUID _uuid; - private int _giveAmount; - private int _attempts; - - public GiveDonorData(String playerName, int accountId, UUID uuid, int giveAmount) - { - _playerName = playerName; - _accountId = accountId; - _uuid = uuid; - _giveAmount = giveAmount; - } - - public String getPlayerName() - { - return _playerName; - } - - public int getAccountId() - { - return _accountId; - } - - public UUID getUuid() - { - return _uuid; - } - - public int getGiveAmount() - { - return _giveAmount; - } - - public int getAttempts() - { - return _attempts; - } - - public void incrementAttempts() - { - _attempts++; - } -} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/donation/DonationManager.java b/Plugins/Mineplex.Core/src/mineplex/core/donation/DonationManager.java index 91a071484..379d048bc 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/donation/DonationManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/donation/DonationManager.java @@ -2,6 +2,8 @@ package mineplex.core.donation; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.LinkedList; +import java.util.Queue; import java.util.UUID; import org.bukkit.Bukkit; @@ -30,17 +32,23 @@ import mineplex.core.updater.event.UpdateEvent; public class DonationManager extends MiniDbClientPlugin { + private final int MAX_GIVE_ATTEMPTS = 10; + private DonationRepository _repository; private NautHashMap> _gemQueue = new NautHashMap>(); private NautHashMap> _coinQueue = new NautHashMap>(); private NautHashMap> _goldQueue = new NautHashMap>(); + + private Queue _coinAttemptQueue; public DonationManager(JavaPlugin plugin, CoreClientManager clientManager, String webAddress) { super("Donation", plugin, clientManager); _repository = new DonationRepository(plugin, webAddress); + + _coinAttemptQueue = new LinkedList<>(); } @Override @@ -204,6 +212,11 @@ public class DonationManager extends MiniDbClientPlugin _gemQueue.clear(); } + public void rewardCoinsUntilSuccess(Callback callback, String caller, String name, int accountId, int amount) + { + _coinAttemptQueue.add(new GiveDonorData(callback, name, caller, accountId, amount)); + } + public void RewardCoins(Callback callback, String caller, String name, int accountId, int amount) { RewardCoins(callback, caller, name, accountId, amount, true); @@ -298,6 +311,57 @@ public class DonationManager extends MiniDbClientPlugin //Clean _coinQueue.clear(); } + + @EventHandler + public void processCoinAttemptQueue(UpdateEvent event) + { + if (event.getType() != UpdateType.FAST) + return; + + GiveDonorData data = _coinAttemptQueue.poll(); + + if (data != null) + { + _repository.rewardCoins(new Callback() + { + @Override + public void run(Boolean success) + { + if (success) + { + Donor donor = Get(data.getPlayerName()); + + if (donor != null) + { + donor.addCoins(data.getGiveAmount()); + } + + if (data.getCallback() != null) data.getCallback().run(true); + + System.out.println("Successfully rewarded shards to player " + data.getPlayerName()); + } + else + { + data.incrementAttempts(); + + if (data.getAttempts() >= MAX_GIVE_ATTEMPTS) + { + // Admit Defeat! + if (data.getCallback() != null) data.getCallback().run(false); + System.out.println("Gave up giving shards to player " + data.getPlayerName()); + } + else + { + // Add again to the back of queue + _coinAttemptQueue.add(data); + System.out.println("Failed to reward shards to player " + data.getPlayerName() + ". Attempts: " + data.getAttempts()); + } + } + } + }, data.getCaller(), data.getPlayerName(), data.getAccountId(), data.getGiveAmount()); + } + + } public void rewardGold(Callback callback, String caller, Player player, int amount) { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/donation/GiveDonorData.java b/Plugins/Mineplex.Core/src/mineplex/core/donation/GiveDonorData.java new file mode 100644 index 000000000..eb8f382b8 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/donation/GiveDonorData.java @@ -0,0 +1,71 @@ +package mineplex.core.donation; + +import mineplex.core.common.util.Callback; + +import java.util.UUID; + +public class GiveDonorData +{ + private final String _playerName; + private final String _caller; + private final UUID _uuid; + private final int _accountId; + private final int _giveAmount; + private final Callback _callback; + private int _attempts; + + public GiveDonorData(Callback callback, String playerName, String caller, UUID uuid, int accountId, int giveAmount) + { + _callback = callback; + _playerName = playerName; + _caller = caller; + _uuid = uuid; + _accountId = accountId; + _giveAmount = giveAmount; + } + + public GiveDonorData(Callback callback, String playerName, String caller, int accountId, int giveAmount) + { + this(callback, playerName, caller, null, accountId, giveAmount); + } + + public UUID getUuid() + { + return _uuid; + } + + public Callback getCallback() + { + return _callback; + } + + public String getPlayerName() + { + return _playerName; + } + + public String getCaller() + { + return _caller; + } + + public int getAccountId() + { + return _accountId; + } + + public int getGiveAmount() + { + return _giveAmount; + } + + public int getAttempts() + { + return _attempts; + } + + public void incrementAttempts() + { + _attempts++; + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java index b5a69e120..6a8507a5e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java @@ -513,7 +513,7 @@ public class RewardManager if (reward.canGiveReward(player)) return reward; else - return new TreasureShardReward(_donationManager, reward, 1, reward.getRarity()); + return new TreasureShardReward(_clientManager, _donationManager, reward, 1, reward.getRarity()); } } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java index 384a3aeae..2fcb04e18 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java @@ -1,5 +1,6 @@ package mineplex.core.reward.rewards; +import mineplex.core.account.CoreClientManager; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Player; @@ -14,15 +15,16 @@ import mineplex.core.reward.RewardType; public class TreasureShardReward extends Reward { + private CoreClientManager _clientManager; private DonationManager _donationManager; private Reward _otherReward; - private int _shards = 0, _task; - private boolean _success = true; + private int _shards = 0; - public TreasureShardReward(DonationManager donationManager, Reward otherReward, int weight, RewardRarity rarity) + public TreasureShardReward(CoreClientManager clientManager, DonationManager donationManager, Reward otherReward, int weight, RewardRarity rarity) { super(rarity, weight, 0); + _clientManager = clientManager; _donationManager = donationManager; _otherReward = otherReward; @@ -35,33 +37,21 @@ public class TreasureShardReward extends Reward RewardData fakeData = _otherReward.getFakeRewardData(player); RewardData rewardData = new RewardData(fakeData.getHeader(), fakeData.getFriendlyName(), fakeData.getDisplayItem(), fakeData.getRarity(), _shards); - _task = Bukkit.getScheduler().scheduleSyncRepeatingTask(_donationManager.getPlugin(), new Runnable() + int accountId = _clientManager.getAccountId(player); + + // Give shards 5 seconds later for better effect + Bukkit.getScheduler().runTaskLater(_donationManager.getPlugin(), new Runnable() { @Override public void run() { - if(hasRewarded(fakeData, player)) - Bukkit.getScheduler().cancelTask(_task); + _donationManager.rewardCoinsUntilSuccess(null, "Treasure", player.getName(), accountId, _shards); } - }, 0, 3); + }, 100); return rewardData; } - public boolean hasRewarded(RewardData fakeData, Player player) - { - _donationManager.RewardCoins(new Callback() - { - @Override - public void run(Boolean data) - { - _success = data; - } - }, "Treasure Chest", player.getName(), _donationManager.getClientManager().Get(player).getAccountId(), _shards); - - return _success; - } - @Override public RewardData getFakeRewardData(Player player) { From 86917fb1463f018a1f00f80ffd919d1a4afadbb1 Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Tue, 2 Feb 2016 05:50:03 -0500 Subject: [PATCH 10/10] Fix treasure stair orientation --- .../mineplex/core/treasure/animation/BlockChangeAnimation.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/BlockChangeAnimation.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/BlockChangeAnimation.java index 2d6e42d38..f319264e9 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/BlockChangeAnimation.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/BlockChangeAnimation.java @@ -77,7 +77,9 @@ public class BlockChangeAnimation extends Animation continue; _blockInfoList.add(new BlockInfo(b)); + byte data = b.getData(); b.setType(mat); + b.setData(data); } } }