From 3687c7ad986d96067336dc6b02fee7cf2f3fb4e1 Mon Sep 17 00:00:00 2001 From: LCastr0 Date: Mon, 29 Aug 2016 21:32:11 -0300 Subject: [PATCH] PowerPlayClub update --- .../mineplex/core/common/skin/SkinData.java | 1 + .../mineplex/core/bonuses/BonusManager.java | 56 ++++++- .../bonuses/animations/AnimationCarl.java | 49 ++++-- .../bonuses/commands/PowerPlayCommand.java | 2 +- .../event/PowerPlayClubClaimEvent.java | 48 ++++++ .../mineplex/core/bonuses/gui/BonusGui.java | 4 +- .../gui/buttons/PowerPlayClubButton.java | 87 +++++++++- .../core/bonuses/powerplay/ClaimRegister.java | 46 ++++++ .../bonuses/powerplay/PowerPlayAnimation.java | 29 ++++ .../mineplex/core/gadget/GadgetManager.java | 31 +++- .../gadget/commands/LockCosmeticsCommand.java | 23 ++- .../gadget/event/PlayerToggleSwimEvent.java | 41 +++++ .../core/gadget/gadgets/morph/MorphSquid.java | 65 +++++++- .../gadgets/morph/swim/SwimManager.java | 30 ++++ .../powerplayclub/PowerPlayClubManager.java | 65 ++++++-- .../mineplex/core/reward/RewardManager.java | 150 ++++++++++++++++-- .../src/mineplex/core/treasure/Treasure.java | 39 ++--- .../core/treasure/TreasureLocation.java | 22 +-- .../core/treasure/TreasureManager.java | 6 +- .../animation/BlockChangeAnimation.java | 22 +++ .../animation/ChestSpawnAnimation.java | 52 +++--- .../core/treasure/gui/BuyChestButton.java | 11 +- .../core/treasure/gui/TreasurePage.java | 17 +- .../src/mineplex/hub/HubManager.java | 48 +----- 24 files changed, 755 insertions(+), 189 deletions(-) create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/bonuses/event/PowerPlayClubClaimEvent.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/bonuses/powerplay/ClaimRegister.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/bonuses/powerplay/PowerPlayAnimation.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/event/PlayerToggleSwimEvent.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/swim/SwimManager.java diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/skin/SkinData.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/skin/SkinData.java index 333019f04..dcac2d504 100644 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/skin/SkinData.java +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/skin/SkinData.java @@ -56,6 +56,7 @@ public class SkinData public final static SkinData TEDDY_BEAR = new SkinData("eyJ0aW1lc3RhbXAiOjE0NTUxMDkzOTE4MjYsInByb2ZpbGVJZCI6ImE5ZDBjMDcyYmYxOTQwYTFhMTkzNjhkMDlkNTAwMjZlIiwicHJvZmlsZU5hbWUiOiJTcGlyaXR1c1NhbmN0dXMiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzQ0OTU4ZDdjNjlhZTQ4NGM2NWYzMTM0N2NkY2M5MmM2OWY1NDA2ODA1YjUzNjUyYTc1YThlZDc5OWRmNyJ9fX0=", "sNTRV9jTjLszUmyaqyEG7N8d5RM1jbwMSXi34S2EkVmIjWsowfSMnHRQqqgZfxcyqBM5I7MljtB84IeQWu4rqhyFrM9blWvtowjijFIOgKCs97q2sswv9iauU6ohvgTpgN5B0Q16MJmMIgZU8d8TATtEaIzq2eg6Ve1AJlNnW4huGNsoNfm8WdVU1tZmsYAwtVP/ryvhyj7mHyVF27m0Sm4fZRf/lHH5gEJYB4JHSAoEhjPIQOdkgRMJRrWGOfhhiGs3kEWmsRGfIPFo2ZJfcu+TFV2rd4Q+A1LmY8kimnzdKX3InXeKbk8qzcgqGNro4XFnSiHo1d6/B+N0JeYOTITYRQ6u24rNSUh5ezbG01iikVFCfrgb7UR6utoLK15F4/fmhpex+BJpmyZoXAqk08tZws/5wsIWQ1okrGcbBKWEHhw2ekUc82US21/W53vd657UBg7FuqM4FhkAqmsYPvYLMpNYxxmDJaI8uJyU7cnGFYyBaFlqUxfJUfcFTwWo10JO3yp5FjqeCQa7rFvfpsqw3w2mBpJmlZ5HRjfS5pmhk0QiY0TRfwZfFemkuZYnNbO82qLUm+6zTm0fbC90Swt8nNr/42ajzEoUjnL6VsERIXS5/fPwjftbQAC60ujy8yo66Sp3sSAALNg5zjM+Uizkq2f9Axc+kind22hp10M="); public final static SkinData UNCLE_SAM = new SkinData("eyJ0aW1lc3RhbXAiOjE0NjYxODA0NjY4NTcsInByb2ZpbGVJZCI6IjlmY2FlZDhiMTRiNTRmN2ZhNjRjYjYwNDBlNzA1MjcyIiwicHJvZmlsZU5hbWUiOiJMQ2FzdHIxIiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS9jYzM1YWRmZTQ3ODBjNmU2NTk4YTJlYzk2ZjdhZGQ5ZDc4NjljMjBlZjRmYjEyNjk2NmJhOGFlMDRlOWRhIn19fQ==", "NmJ+hXmvwQlYFYY7YVQWRr11yBbAfJP+jk11SQ91gUUtJJjb4v8RFbNu5UXNCKxYj3BPtldqshG1maNB0NWJRud7ZyAdHc0JMmR1vtHEge9Hhet4fLyyaZ9rZn4BvD9Guqgv9H/mZzUzrft9TIho0Qbu/U++lVsbZXC2GrJDDMyLnYr9C7f+FUnr0z4WvkNcg23SHBOYkOYT95NSdykIka3c3v+/HvSvuwOnMsfVxqLyCZLpo20vamBJ1uK1dmx2+TVGnUPlofFHRdOXOpJc+YmicJvrsQR6a9zlvnTbU4MYClMOKvjLe6aX5Af+n8Gw3oKcm0PuR8CPLyf9kjcmUF6XMiEXAWWJtCgvhCiFV5/mQQH3cQ1kqk4BDLUxMVhG5tzjKLoQQy39cFM32ee+QFjXlzy59meC8jgvPmOVU3GpJ32XWOtaXMCyeJrhz2QVKRLEr2KZgz8Pd8VrHARXVZsNYEasj8z0cHjgSJqTU9kD90CC+4YpvdyRBRqbNQig5KuGCqUHKgflsEsM7YrFRKP5As1LgqYQfqRAMmLSo47eW0onOwchC9wCqqisPlYSuDRt4Mun/KFGqYh1Sghn8/gzu49La8BpwlekjVEoPEcDaIIgnFzOvgmmgMANkoJ3PzhHoHMoXtObe3eSTi+eYp4qAQVzkTxfF3WXY2fui1M="); public final static SkinData METAL_MAN = new SkinData("eyJ0aW1lc3RhbXAiOjE0Njg3ODAyMzk2ODYsInByb2ZpbGVJZCI6IjlmY2FlZDhiMTRiNTRmN2ZhNjRjYjYwNDBlNzA1MjcyIiwicHJvZmlsZU5hbWUiOiJMQ2FzdHIxIiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS9hNzc5YWEzYzk3OTc0Mzk1YTY3MTZkZmQ5MTI4YWM0N2E1MzdlMzljMzdmMGM0ZjZkZjQ1YjJmMGI4ZjVkMiJ9fX0=", "acwmrIdtzzkuntsvQqD+o9UYaI09xzQoPgRXFtvS1hvGgGRbApdG7YbQ3Itjg/8WUl0trAMMJa1IL8TlXaOwTeClOj6if3HW2lJ8yO7E+MXEJoDZcjkxVOK3322NRCBiPG+VbNCwHE7IvT8P4awExvV2nHLbCk7upawxK3oKfR5U+YEq/eLG/UCC1TAnHNLXE0mr+6ZtNut5qgz1u0Y+VNQKI/vdjVit1ttYeBjIWpSszhlP4bH8Iw3u3ZRuDqU4xSAWzj6Qhw9UYm2T3s2N9s2yW3wiagijUEq9stbaw97n3UCqBas58lTBy46w524lBvwbYC1U9jwxPxSUo6L6omhPKZSwgK/u2w4mELvfNI09A4C7RNThnz9wgrT0FPajjXYkt31Ba5qaP7HwcThQu02Bb3gmYfHfMvuDBt8xUk4lFyUuL+lwqUHXlKRkUPGVkDLDpmsnk+y4LvaymNHBBWpOyqpm8y1BTpux02GqCIgK7nHtsRNH3q3yHR1YyM0tc6PKXOst5ex1cGP654/Q0KEUSAvAV5ozj/q5izRlPJNiwu9zPqhfs8oWSBSo/Sfej6p7Fu9u0h0j/k0m86bfZObe2RsCEgBe8GSF35cyYRou0qTvk+00hEr+jpxeat0e9JHe163jI/Ew9XPeGd6eT8GTy4iyJM0O/y1MlsRjUec="); + public final static SkinData OMEGA_CHEST = new SkinData("eyJ0aW1lc3RhbXAiOjE0NzI1MTAzNzAwOTksInByb2ZpbGVJZCI6IjlmY2FlZDhiMTRiNTRmN2ZhNjRjYjYwNDBlNzA1MjcyIiwicHJvZmlsZU5hbWUiOiJMQ2FzdHIxIiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS85MDM2MjNjMmRkMjdhNWM0Y2NlYzY5MWY3NjM0YTNkMzVkNTRiNDg0YjIzNTdhNWQ1ZWFmYmYwNTRkY2NlIn19fQ==", "cQty4zNF2QgzNuVOHTGGX5YVofApKr01KkQ70bO1n+I9nlkc9qqhcigA+uBYdw4THANFsTRwIrskgTS3TTmuaXYmMUoNnj7gr2Gp7D2t7L53QyJJhIw0hHNDvQucf19SOxhtR9FvW+xnh1JcgOTF3VZxIeRaN4bCtqkeFitCJwts4Z7SlDxB4EFZVsifM+gK4iel9YWYGNnZiQm48lxU+dMFd0cCa4L00ngBExQoWC8zbJc3K9LGdqI1YOMh3bCt81F4jcrPnDycxWwOTj/tBri4yeXK1htq5dAixHwq1EF86gQMnfeIIk6D/BREtVKoXK9K4lstYPHLFiBqkwpijArbC0sZp8s/j88NYUz9PgSJ2z/b5jhPChH2OkoGQOL0/QrxqUZUet+WHaIQtvFoqmcFRCKJQembgJGZV0X86XQxEEtevkNgXPigJVyQ5GVuDCeowRkMGfSadQCBsnmdOVZNshS60tBSDcbd2oWeQUJn1+OJkmz+OktbMbP4ttN6x3+MPMSZoGT1bc1BSRNFRYOBZuNz1zLWsHFRyNLaVS3ep/ktE+Rt5sbapo+r4GjrKGV7Unx6pbfoxcnMVxWZ9X/sMgztQdwYEQlnvAxGvCY/1ZIm3/izqB2zAgG7ZfWzKjU2P5VseKokMjHXrzZX9Uqtn0zpITEaG5HjUpRSaJg="); // Comments this out for now, so it doesn't load the player profile // A better way to do this would check for the properties when getting the skull or the skin diff --git a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusManager.java b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusManager.java index a25da963c..d6ec86c1e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusManager.java @@ -17,11 +17,13 @@ import mineplex.core.bonuses.commands.GuiCommand; import mineplex.core.bonuses.commands.PowerPlayCommand; import mineplex.core.bonuses.commands.TicketCommand; import mineplex.core.bonuses.event.CarlSpinnerEvent; +import mineplex.core.bonuses.event.PowerPlayClubClaimEvent; import mineplex.core.bonuses.gui.BonusGui; import mineplex.core.bonuses.gui.SpinGui; +import mineplex.core.bonuses.gui.buttons.PowerPlayClubButton; +import mineplex.core.bonuses.powerplay.ClaimRegister; import mineplex.core.bonuses.redis.VoteHandler; import mineplex.core.bonuses.redis.VotifierCommand; -import mineplex.core.boosters.BoosterManager; import mineplex.core.common.Rank; import mineplex.core.common.util.*; import mineplex.core.common.util.UtilParticle.ParticleType; @@ -132,6 +134,7 @@ public class BonusManager extends MiniClientPlugin implements I private Npc _carlNpc; private AnimationCarl _animation; private int _visualTick; + private ClaimRegister _claimRegister; // Streak // private StreakRecord _dailyStreak; @@ -167,6 +170,8 @@ public class BonusManager extends MiniClientPlugin implements I _coinQueue = new LinkedList(); _gemQueue = new LinkedList(); + _claimRegister = new ClaimRegister(); + updateOffSet(); } @@ -181,8 +186,10 @@ public class BonusManager extends MiniClientPlugin implements I _inventoryManager = inventoryManager; _thankManager = thankManager; - System.out.print("HUB: "); - System.out.print("DONATION MANAGER - > " + _donationManager.toString()); + if (gadgetManager == null) + { + System.out.print("GM NULL"); + } _rewardManager = new RewardManager(_clientManager, _donationManager, _inventoryManager, petManager, statsManager, gadgetManager); @@ -202,6 +209,8 @@ public class BonusManager extends MiniClientPlugin implements I _coinQueue = new LinkedList(); _gemQueue = new LinkedList(); + _claimRegister = new ClaimRegister(); + if (npcManager != null) { @@ -522,7 +531,7 @@ public class BonusManager extends MiniClientPlugin implements I } else { - UtilPlayer.message(player, F.main("Carl", "There waa an error processing your request. Try again later")); + UtilPlayer.message(player, F.main("Carl", "There was an error processing your request. Try again later")); } } }); @@ -923,6 +932,7 @@ public class BonusManager extends MiniClientPlugin implements I if (getPollManager().getNextPoll(_pollManager.Get(player), _clientManager.Get(player).GetRank()) != null) availableRewards++; if (!_facebookManager.hasRedeemed(player)) availableRewards++; if (_thankManager.Get(player).getThankToClaim() > 0) availableRewards++; + if (PowerPlayClubButton.isAvailable(player, _powerPlayClubManager)) availableRewards++; Hologram hologram; @@ -1105,7 +1115,7 @@ public class BonusManager extends MiniClientPlugin implements I { if (Recharge.Instance.use(player, "Carl Inform", 240000, false, false)) { - if(_pollManager.hasPoll(player) || canVote(player) || (canRank(player) && _clientManager.hasRank(player, Rank.ULTRA) && isPastAugust()) || canDaily(player)) + if(_pollManager.hasPoll(player) || canVote(player) || (canRank(player) && _clientManager.hasRank(player, Rank.ULTRA) && isPastAugust()) || canDaily(player) || PowerPlayClubButton.isAvailable(player, _powerPlayClubManager)) { if(_showCarl.containsKey(player.getName())) { @@ -1114,9 +1124,40 @@ public class BonusManager extends MiniClientPlugin implements I } } } + if (Recharge.Instance.use(player, "Power Play Inform", 400000, false, false)) + { + if (PowerPlayClubButton.isAvailable(player, _powerPlayClubManager) && PowerPlayClubButton.getMonthsLeft(player, true, _powerPlayClubManager) == 1) + { + if (_showCarl.containsKey(player.getName())) + { + if (_plugin.getConfig().getString("serverstatus.group").equalsIgnoreCase("Lobby") || _plugin.getConfig().getString("serverstatus.group").equalsIgnoreCase("Testing")) + { + UtilPlayer.message(player, F.main("Power Play Club", "This is your last month of Power Play Club! Resubscribe at" + C.cAqua + " www.mineplex.com/shop" + C.Reset + " before you lose your subscription!")); + } + } + } + } } } + @EventHandler + public void removeClaims(UpdateEvent event) + { + if (event.getType() != UpdateType.SEC_05) + return; + + _claimRegister.removeAll(); + } + + @EventHandler + public void addClaims(PowerPlayClubClaimEvent event) + { + if (!event.isSuccessful()) + return; + + _claimRegister.registerEvent(event); + } + @EventHandler public void processQueue(UpdateEvent event) { @@ -1228,4 +1269,9 @@ public class BonusManager extends MiniClientPlugin implements I return _inventoryManager; } + public ClaimRegister getClaimRegister() + { + return _claimRegister; + } + } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/animations/AnimationCarl.java b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/animations/AnimationCarl.java index 4cc2ac529..6c966aedf 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/animations/AnimationCarl.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/animations/AnimationCarl.java @@ -2,33 +2,25 @@ package mineplex.core.bonuses.animations; import java.util.HashSet; import java.util.Iterator; -import java.util.Random; -import mineplex.core.common.util.UtilAction; -import mineplex.core.common.util.UtilFirework; -import mineplex.core.common.util.UtilMath; -import mineplex.core.common.util.UtilParticle; -import mineplex.core.common.util.UtilServer; +import mineplex.core.bonuses.powerplay.PowerPlayAnimation; +import mineplex.core.common.skin.SkinData; +import mineplex.core.common.util.*; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.reward.Reward; import mineplex.core.reward.RewardData; import mineplex.core.reward.RewardRarity; import mineplex.core.treasure.animation.Animation; -import mineplex.core.updater.UpdateType; -import mineplex.core.updater.event.UpdateEvent; - import org.bukkit.Color; +import org.bukkit.FireworkEffect.Type; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.Sound; -import org.bukkit.FireworkEffect.Type; import org.bukkit.block.Block; import org.bukkit.entity.Entity; import org.bukkit.entity.Item; import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; import org.bukkit.inventory.ItemStack; import org.bukkit.util.Vector; @@ -78,7 +70,7 @@ public class AnimationCarl extends Animation } } - if(!((String) _type).contentEquals("DAILY")&& !((String) _type).contentEquals("RANK")&& !((String) _type).contentEquals("POLL")) + if(!((String) _type).contentEquals("DAILY") && !((String) _type).contentEquals("RANK") && !((String) _type).contentEquals("POLL")) { Item paper = _creeper.getWorld().dropItem(_creeper.getLocation().add(0.5, 1.5, 0.5), ItemStackFactory.Instance.CreateStack(Material.PAPER, (byte) 0, 1, " " + 64)); @@ -130,6 +122,37 @@ public class AnimationCarl extends Animation finish(); } } + if (_type instanceof PowerPlayAnimation) + { + for (int i = 50; i < 65; i++) + { + // Gem amplifier + Item gem = _creeper.getWorld().dropItem(_creeper.getLocation().add(0.5, 1.5, 0.5), ItemStackFactory.Instance.CreateStack(Material.EMERALD, (byte) 0, 1, " " + i)); + _items.add(gem); + + Vector vel = new Vector(Math.sin(UtilMath.r(i) * 7/5d), 0, Math.cos(UtilMath.r(i) * 7/5d)); + UtilAction.velocity(gem, vel, Math.abs(Math.sin(UtilMath.r(i) * 7/3000d)), false, 0, 0.2 + Math.abs(Math.cos(UtilMath.r(i) * 7/3000d))*0.6, 1, false); + + // Omega chest + Item omega = _creeper.getWorld().dropItem(_creeper.getLocation().add(0.5, 1.5, 0.5), SkinData.OMEGA_CHEST.getSkull()); + _items.add(omega); + + vel = new Vector(Math.sin(UtilMath.r(i) * 7/5d), 0, Math.cos(UtilMath.r(i) * 7/5d)); + UtilAction.velocity(omega, vel, Math.abs(Math.sin(UtilMath.r(i) * 7/3000d)), false, 0, 0.2 + Math.abs(Math.cos(UtilMath.r(i) * 7/3000d))*0.6, 1, false); + + // Monthly items + PowerPlayAnimation powerPlayAnimation = (PowerPlayAnimation) _type; + for (ItemStack itemStack : powerPlayAnimation.getAnimationItems()) + { + Item monthly = _creeper.getWorld().dropItem(_creeper.getLocation().add(0.5, 1.5, 0.5), itemStack); + _items.add(monthly); + + vel = new Vector(Math.sin(UtilMath.r(i) * 7/5d), 0, Math.cos(UtilMath.r(i) * 7/5d)); + UtilAction.velocity(monthly, vel, Math.abs(Math.sin(UtilMath.r(i) * 7/3000d)), false, 0, 0.2 + Math.abs(Math.cos(UtilMath.r(i) * 7/3000d))*0.6, 1, false); + } + } + finish(); + } } @Override diff --git a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/commands/PowerPlayCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/commands/PowerPlayCommand.java index 64f9ca3b2..ff57ac804 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/commands/PowerPlayCommand.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/commands/PowerPlayCommand.java @@ -24,7 +24,7 @@ public class PowerPlayCommand extends CommandBase public PowerPlayCommand(BonusManager manager) { - super(manager, Rank.SNR_MODERATOR, "powerplay"); + super(manager, Rank.MODERATOR, "powerplay"); _bonusManager = manager; } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/event/PowerPlayClubClaimEvent.java b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/event/PowerPlayClubClaimEvent.java new file mode 100644 index 000000000..ba14bb42c --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/event/PowerPlayClubClaimEvent.java @@ -0,0 +1,48 @@ +package mineplex.core.bonuses.event; + +import org.bukkit.entity.Player; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; + +public class PowerPlayClubClaimEvent extends Event +{ + + private static final HandlerList handlers = new HandlerList(); + + private Player _player; + private long _time; + private boolean _successful; + + public PowerPlayClubClaimEvent(Player player, boolean successful) + { + _player = player; + _successful = successful; + _time = System.currentTimeMillis(); + } + + public Player getPlayer() + { + return _player; + } + + public boolean isSuccessful() + { + return _successful; + } + + public long getTime() + { + return _time; + } + + public HandlerList getHandlers() + { + return handlers; + } + + public static HandlerList getHandlerList() + { + return handlers; + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/gui/BonusGui.java b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/gui/BonusGui.java index db9d174f5..ef2a35046 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/gui/BonusGui.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/gui/BonusGui.java @@ -37,9 +37,9 @@ public class BonusGui extends SimpleGui setItem(25, new ClaimTipsButton(getPlugin(), player, this, manager, thankManager)); - setItem(33, new CarlSpinButton(getPlugin(), player, manager, rewardManager)); - setItem(29, new PowerPlayClubButton(player, manager)); + + setItem(33, new CarlSpinButton(getPlugin(), player, manager, rewardManager)); } @Override diff --git a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/gui/buttons/PowerPlayClubButton.java b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/gui/buttons/PowerPlayClubButton.java index 26fb15cbf..6a341719e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/gui/buttons/PowerPlayClubButton.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/gui/buttons/PowerPlayClubButton.java @@ -2,14 +2,20 @@ package mineplex.core.bonuses.gui.buttons; import java.util.ArrayList; import java.util.Calendar; +import java.util.List; import java.util.Locale; import mineplex.core.bonuses.BonusManager; +import mineplex.core.bonuses.event.PowerPlayClubClaimEvent; +import mineplex.core.bonuses.powerplay.PowerPlayAnimation; import mineplex.core.common.util.C; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilPlayer; import mineplex.core.gui.GuiItem; import mineplex.core.inventory.InventoryManager; import mineplex.core.powerplayclub.PowerPlayClubManager; import mineplex.core.shop.item.ShopItem; +import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.entity.Player; @@ -23,10 +29,12 @@ public class PowerPlayClubButton implements GuiItem private Player _player; private PowerPlayClubManager _powerPlayClubManager; private InventoryManager _inventoryManager; + private BonusManager _bonusManager; public PowerPlayClubButton(Player player, BonusManager manager) { _player = player; + _bonusManager = manager; _powerPlayClubManager = manager.getPowerPlayClubManager(); _inventoryManager = manager.getInventoryManager(); } @@ -46,16 +54,26 @@ public class PowerPlayClubButton implements GuiItem @Override public void click(ClickType clickType) { - if (isAvailable()) + if (isAvailable() && !_bonusManager.getClaimRegister().alreadyClaimed(_player.getUniqueId())) { _player.closeInventory(); _player.playSound(_player.getLocation(), Sound.NOTE_PLING, 1, 1.6f); getMonthlyRewards().giveAllItems(_player, _inventoryManager); updateLastClaimedMonth(); + Bukkit.getPluginManager().callEvent(new PowerPlayClubClaimEvent(_player, true)); } else { _player.playSound(_player.getLocation(), Sound.ITEM_BREAK, 1, 10); + if (getMonthsLeft(true) > 0) + { + UtilPlayer.message(_player, F.main("Power Play Club", "Already claimed!")); + } + else + { + UtilPlayer.message(_player, F.main("Power Play Club", "You have no months left! Buy more months at " + C.cAqua + "www.mineplex.com/shop" + C.Reset + "!")); + } + Bukkit.getPluginManager().callEvent(new PowerPlayClubClaimEvent(_player, false)); } } @@ -83,16 +101,29 @@ public class PowerPlayClubButton implements GuiItem { material = Material.REDSTONE_BLOCK; itemName = C.cRedB + "Power Play Club"; - lore.add(""); - lore.add(C.Reset + "Months left: " + _powerPlayClubManager.getPlayerMonths(_player.getUniqueId(), true) + "!"); } lore.add(C.cYellow + "Rewards"); - lore.add(" " + C.cWhite + "2x Game Amplifiers"); - lore.add(" " + C.cWhite + "1x Omega Chest"); + lore.add(" " + C.cWhite + "2 Game Amplifiers"); + lore.add(" " + C.cWhite + "1 Omega Chest"); for (PowerPlayClubManager.PowerPlayClubItem prize : getMonthlyRewards().getItems()) { - lore.add(" " + C.cWhite + prize.getPrize()); + lore.add(" " + C.cWhite + prize.getAmount() + " " + prize.getPrize()); + } + lore.add(" "); + lore.add(C.cYellow + "Months left: " + C.cWhite + getMonthsLeft(true)); + if (!isAvailable()) + { + lore.add(" "); + if (getMonthsLeft(true) > 0) + { + lore.add(C.cRed + "Already claimed!"); + } + else + { + lore.add(C.cRed + "Get Power Play Club months at"); + lore.add(C.cAqua + "mineplex.com/shop"); + } } _item = new ShopItem(material, data, itemName, lore.toArray(new String[0]), 1, false, false); @@ -100,13 +131,17 @@ public class PowerPlayClubButton implements GuiItem private boolean isAvailable() { - int monthsLeft = _powerPlayClubManager.getPlayerMonths(_player.getUniqueId(), true); + int monthsLeft = getMonthsLeft(true); int lastClaimed = _powerPlayClubManager.getLastClaimedMonth(_player.getUniqueId(), true); int month = Calendar.getInstance().get(Calendar.MONTH); + int actualYear = Calendar.getInstance().get(Calendar.YEAR); + int lastClaimedYear = _powerPlayClubManager.getLastClaimedYear(_player.getUniqueId(), true); if (monthsLeft > 0) { if (lastClaimed == -1) return true; + if (lastClaimedYear < actualYear) + return true; return lastClaimed != month; } return false; @@ -120,9 +155,47 @@ public class PowerPlayClubButton implements GuiItem private void updateLastClaimedMonth() { + // Send carl animation + List animationItems = new ArrayList<>(); + for (PowerPlayClubManager.PowerPlayClubItem prize : getMonthlyRewards().getItems()) + { + animationItems.add(prize.getDisplay()); + } + PowerPlayAnimation powerPlayAnimation = new PowerPlayAnimation(_player, animationItems); + _bonusManager.addPendingExplosion(_player, powerPlayAnimation); int month = Calendar.getInstance().get(Calendar.MONTH); + int year = Calendar.getInstance().get(Calendar.YEAR); _powerPlayClubManager.setLastClaimedMonth(_player.getUniqueId(), month); _powerPlayClubManager.decreasePlayerMonth(_player.getUniqueId()); + _powerPlayClubManager.setLastClaimedYear(_player.getUniqueId(), year); + } + + private int getMonthsLeft(boolean update) + { + return _powerPlayClubManager.getPlayerMonths(_player.getUniqueId(), update); + } + + public static int getMonthsLeft(Player player, boolean update, PowerPlayClubManager manager) + { + return manager.getPlayerMonths(player.getUniqueId(), update); + } + + public static boolean isAvailable(Player player, PowerPlayClubManager manager) + { + int monthsLeft = getMonthsLeft(player, true, manager); + int lastClaimed = manager.getLastClaimedMonth(player.getUniqueId(), true); + int month = Calendar.getInstance().get(Calendar.MONTH); + int actualYear = Calendar.getInstance().get(Calendar.YEAR); + int lastClaimedYear = manager.getLastClaimedYear(player.getUniqueId(), true); + if (monthsLeft > 0) + { + if (lastClaimed == -1) + return true; + if (lastClaimedYear < actualYear) + return true; + return lastClaimed != month; + } + return false; } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/powerplay/ClaimRegister.java b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/powerplay/ClaimRegister.java new file mode 100644 index 000000000..6d60b867c --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/powerplay/ClaimRegister.java @@ -0,0 +1,46 @@ +package mineplex.core.bonuses.powerplay; + +import java.util.*; + +import mineplex.core.bonuses.event.PowerPlayClubClaimEvent; + +public class ClaimRegister +{ + + /** + * Fixes the problem where the database isn't sync'd with the server so the player can still claim it if they try + * to click really quickly after it was already claimed. + * This stores the player information for 5 seconds, so if they try to claim again they won't be able to. + */ + + private Map _events = new HashMap<>(); + + public void registerEvent(PowerPlayClubClaimEvent event) + { + _events.put(event.getPlayer().getUniqueId(), event); + } + + public void removeAll() + { + List toRemove = new ArrayList<>(); + long currentTime = System.currentTimeMillis(); + for (Map.Entry eventEntry : _events.entrySet()) + { + PowerPlayClubClaimEvent event = eventEntry.getValue(); + if (currentTime - event.getTime() >= 5000) + { + toRemove.add(eventEntry.getKey()); + } + } + for (UUID uuid : toRemove) + { + _events.remove(uuid); + } + } + + public boolean alreadyClaimed(UUID uuid) + { + return _events.containsKey(uuid); + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/powerplay/PowerPlayAnimation.java b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/powerplay/PowerPlayAnimation.java new file mode 100644 index 000000000..8c77afe1c --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/powerplay/PowerPlayAnimation.java @@ -0,0 +1,29 @@ +package mineplex.core.bonuses.powerplay; + +import java.util.List; + +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +public class PowerPlayAnimation +{ + + private List _animationItems; + private Player _player; + + public PowerPlayAnimation(Player player, List animationItems) + { + _animationItems = animationItems; + _player = player; + } + + public List getAnimationItems() + { + return _animationItems; + } + + public Player getPlayer() + { + return _player; + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java index 1473890d7..708e2a6f1 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java @@ -1,12 +1,10 @@ package mineplex.core.gadget; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashSet; -import java.util.List; -import java.util.Set; +import java.util.*; import java.util.function.Predicate; +import mineplex.core.gadget.event.PlayerToggleSwimEvent; +import mineplex.core.gadget.gadgets.morph.swim.SwimManager; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; @@ -1131,4 +1129,27 @@ public class GadgetManager extends MiniPlugin { return _userGadgetPersistence; } + + @EventHandler + public void checkPlayerSwim(PlayerMoveEvent event) + { + Material material = event.getPlayer().getLocation().getBlock().getType(); + UUID uuid = event.getPlayer().getUniqueId(); + if (material == Material.WATER || material == Material.STATIONARY_WATER) + { + if (!SwimManager.isSwimming(uuid)) + { + SwimManager.addPlayer(uuid); + Bukkit.getPluginManager().callEvent(new PlayerToggleSwimEvent(event.getPlayer(), true)); + } + } + else + { + if (SwimManager.isSwimming(uuid)) + { + SwimManager.removePlayer(uuid); + Bukkit.getPluginManager().callEvent(new PlayerToggleSwimEvent(event.getPlayer(), false)); + } + } + } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/commands/LockCosmeticsCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/commands/LockCosmeticsCommand.java index 107471e3c..e6dd0484e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/commands/LockCosmeticsCommand.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/commands/LockCosmeticsCommand.java @@ -10,6 +10,7 @@ import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.types.Gadget; import mineplex.core.gadget.types.GadgetType; import mineplex.core.inventory.ClientInventory; +import mineplex.core.inventory.ClientItem; import mineplex.core.mount.Mount; import mineplex.core.pet.Pet; import org.bukkit.entity.Player; @@ -21,7 +22,7 @@ public class LockCosmeticsCommand extends CommandBase public LockCosmeticsCommand(GadgetManager plugin) { - super(plugin, Rank.JNR_DEV, new Rank[]{Rank.SNR_MODERATOR}, "lockCosmetics"); + super(plugin, Rank.JNR_DEV, new Rank[]{Rank.MODERATOR, Rank.SNR_MODERATOR}, "lockCosmetics"); _plugin = plugin; } @@ -71,6 +72,8 @@ public class LockCosmeticsCommand extends CommandBase { for (GadgetType type : GadgetType.values()) { + if (type == GadgetType.ITEM) + continue; removeCosmetics(type, caller); } removeMounts(caller); @@ -86,12 +89,16 @@ public class LockCosmeticsCommand extends CommandBase continue; if (gadget.ownsGadget(caller)) { - clientInventory.removeItem(clientInventory.getClientItem(gadget.getName())); - removed++; + ClientItem clientItem = clientInventory.getClientItem(gadget.getName()); + if (clientItem != null) + { + clientInventory.removeItem(clientItem); + removed++; + } } } UtilPlayer.message(caller, F.main("Cosmetics", "Removed all the " + gadgetType.name().toLowerCase() - .replace("_", " ") + "! (Removed " + C.cRed + removed + C.cGray + " " + + .replace("_", " ") + " gadgets! (Removed " + C.cRed + removed + C.cGray + " " + UtilText.plural("item", removed) + ")")); } @@ -103,8 +110,12 @@ public class LockCosmeticsCommand extends CommandBase { if (mount.hasMount(caller)) { - clientInventory.removeItem(clientInventory.getClientItem(mount.getName())); - removed++; + ClientItem clientItem = clientInventory.getClientItem(mount.getName()); + if (clientItem != null) + { + clientInventory.removeItem(clientInventory.getClientItem(mount.getName())); + removed++; + } } } UtilPlayer.message(caller, F.main("Cosmetics", "Removed " + C.cRed + removed + C.cGray + " " + diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/event/PlayerToggleSwimEvent.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/event/PlayerToggleSwimEvent.java new file mode 100644 index 000000000..2d5c5f00b --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/event/PlayerToggleSwimEvent.java @@ -0,0 +1,41 @@ +package mineplex.core.gadget.event; + +import org.bukkit.entity.Player; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; + +public class PlayerToggleSwimEvent extends Event +{ + + private static final HandlerList handlers = new HandlerList(); + + private Player _player; + private boolean _swimming; + + public PlayerToggleSwimEvent(Player player, boolean swimming) + { + _player = player; + _swimming = swimming; + } + + public Player getPlayer() + { + return _player; + } + + public boolean isSwimming() + { + return _swimming; + } + + public HandlerList getHandlers() + { + return handlers; + } + + public static HandlerList getHandlerList() + { + return handlers; + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSquid.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSquid.java index d5aa93c28..620b34454 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSquid.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSquid.java @@ -1,31 +1,42 @@ package mineplex.core.gadget.gadgets.morph; -import mineplex.core.common.util.LineFormat; -import mineplex.core.common.util.UtilAction; -import mineplex.core.common.util.UtilText; +import mineplex.core.common.util.*; import mineplex.core.disguise.disguises.DisguiseSquid; import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.event.PlayerToggleSwimEvent; +import mineplex.core.gadget.gadgets.morph.swim.SwimManager; import mineplex.core.gadget.types.MorphGadget; +import mineplex.core.gadget.types.OutfitGadget; import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.projectile.IThrown; import mineplex.core.projectile.ProjectileUser; import mineplex.core.recharge.Recharge; import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; import org.bukkit.Material; import org.bukkit.block.Block; +import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Item; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.player.PlayerToggleSneakEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; public class MorphSquid extends MorphGadget implements IThrown { public MorphSquid(GadgetManager manager) { - super(manager, "Squid Morph", UtilText.splitLinesToArray(new String[]{"Placeholder"}, LineFormat.LORE), - 0, Material.MONSTER_EGG, (byte) 0); + super(manager, "Squid Morph", UtilText.splitLinesToArray(new String[]{ + C.cGray + "It's more fun to be a squid than to eat one. They're really rubbery.", + C.blankLine, + C.cWhite + "Swim to enable Fast Swimming", + C.cWhite + "Sneak to shoot a fish above you" + }, LineFormat.LORE), + 0, Material.INK_SACK, (byte) 0); } @Override @@ -35,6 +46,7 @@ public class MorphSquid extends MorphGadget implements IThrown DisguiseSquid disguiseSquid = new DisguiseSquid(player); disguiseSquid.setName(player.getName(), Manager.getClientManager().Get(player).GetRank()); Manager.getDisguiseManager().disguise(disguiseSquid); + onToggleSwim(new PlayerToggleSwimEvent(player, SwimManager.isSwimming(player.getUniqueId()))); } @Override @@ -44,6 +56,47 @@ public class MorphSquid extends MorphGadget implements IThrown Manager.getDisguiseManager().undisguise(player); } + @EventHandler + public void onUpdate(UpdateEvent event) + { + if (event.getType() != UpdateType.TICK) + return; + + for (Player player : UtilServer.getPlayers()) + { + if (!isActive(player)) + continue; + UtilParticle.PlayParticle(UtilParticle.ParticleType.WATER_WAKE, player.getLocation().clone().add(0, .5, 0), 0.01f, 0.01f, 0.01f, + 0.001f, 1, UtilParticle.ViewDist.NORMAL); + } + } + + @EventHandler + public void onToggleSwim(PlayerToggleSwimEvent event) + { + if (!isActive(event.getPlayer())) + return; + + if (event.isSwimming()) + { + // Removes any costume player could be wearing + Manager.removeOutfit(event.getPlayer(), OutfitGadget.ArmorSlot.Boots); + + // Adds enchanted boot + ItemStack enchantedBoot = new ItemStack(Material.DIAMOND_BOOTS, 1); + enchantedBoot.addEnchantment(Enchantment.DEPTH_STRIDER, 3); + event.getPlayer().getInventory().setBoots(enchantedBoot); + + // Adds swiftness potion + event.getPlayer().addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 1000000, 3, true, true)); + } + else + { + event.getPlayer().getInventory().setBoots(new ItemStack(Material.AIR)); + event.getPlayer().removePotionEffect(PotionEffectType.SPEED); + } + } + @EventHandler public void onSneak(PlayerToggleSneakEvent event) { @@ -59,8 +112,6 @@ public class MorphSquid extends MorphGadget implements IThrown if (!Recharge.Instance.use(player, getName(), 1000, false, false, "Cosmetics")) return; - UtilAction.velocity(player, player.getLocation().getDirection(), 0.8, false, 0, 0.5, 0.8, true); - Item item = player.getWorld().dropItem(player.getEyeLocation().add(player.getLocation().getDirection()), ItemStackFactory.Instance.CreateStack(Material.RAW_FISH)); UtilAction.velocity(item, player.getLocation().getDirection(), diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/swim/SwimManager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/swim/SwimManager.java new file mode 100644 index 000000000..a1945d257 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/swim/SwimManager.java @@ -0,0 +1,30 @@ +package mineplex.core.gadget.gadgets.morph.swim; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +public class SwimManager +{ + + private static List _swimming = new ArrayList<>(); + + public static void addPlayer(UUID uuid) + { + _swimming.add(uuid); + } + + public static void removePlayer(UUID uuid) + { + if (_swimming.contains(uuid)) + { + _swimming.remove(uuid); + } + } + + public static boolean isSwimming(UUID uuid) + { + return _swimming.contains(uuid); + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/powerplayclub/PowerPlayClubManager.java b/Plugins/Mineplex.Core/src/mineplex/core/powerplayclub/PowerPlayClubManager.java index 8c15239a9..8e8ee4776 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/powerplayclub/PowerPlayClubManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/powerplayclub/PowerPlayClubManager.java @@ -4,18 +4,17 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.*; -import mineplex.core.common.util.BukkitFuture; -import mineplex.core.common.util.F; -import mineplex.core.common.util.UtilPlayer; -import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.*; import mineplex.core.database.PlayerKeyValueRepository; import mineplex.core.inventory.InventoryManager; import mineplex.core.inventory.data.Item; import org.bukkit.Bukkit; +import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.inventory.ItemStack; public class PowerPlayClubManager implements Listener { @@ -56,11 +55,34 @@ public class PowerPlayClubManager implements Listener public void setLastClaimedMonth(UUID uuid, int month) { _repository.put(uuid, "lastClaimed", month); + updatePlayer(uuid); PlayerMonths playerMonths = _playerMonths.get(uuid); playerMonths.setLastClaimed(month); _playerMonths.put(uuid, playerMonths); } + public int getLastClaimedYear(UUID uuid, boolean update) + { + if (update) + { + updatePlayer(uuid); + } + if (_playerMonths.containsKey(uuid)) + { + return _playerMonths.get(uuid).getYear(); + } + return Calendar.getInstance().get(Calendar.YEAR); + } + + public void setLastClaimedYear(UUID uuid, int year) + { + _repository.put(uuid, "year", year); + updatePlayer(uuid); + PlayerMonths playerMonths = _playerMonths.get(uuid); + playerMonths.setYear(year); + _playerMonths.put(uuid, playerMonths); + } + public int getPlayerMonths(UUID uuid, boolean update) { if (update) @@ -78,6 +100,7 @@ public class PowerPlayClubManager implements Listener { int currentMonths = getPlayerMonths(uuid, true); _repository.put(uuid, "monthsLeft", currentMonths + months); + updatePlayer(uuid); PlayerMonths playerMonths = _playerMonths.get(uuid); playerMonths.setMonths(currentMonths + months); _playerMonths.put(uuid, playerMonths); @@ -96,8 +119,13 @@ public class PowerPlayClubManager implements Listener { _repository.getAll(uuid).thenCompose(BukkitFuture.accept(values -> { + int year = Calendar.getInstance().get(Calendar.YEAR); int lastClaimed = -1; int months = 0; + if (values.containsKey("claimedYear")) + { + year = values.get("claimedYear"); + } if (values.containsKey("lastClaimed")) { lastClaimed = values.get("lastClaimed"); @@ -108,7 +136,7 @@ public class PowerPlayClubManager implements Listener months = values.get("monthsLeft"); } - PlayerMonths playerMonths = new PlayerMonths(months, lastClaimed); + PlayerMonths playerMonths = new PlayerMonths(months, lastClaimed, year); _playerMonths.put(uuid, playerMonths); })); } @@ -124,8 +152,8 @@ public class PowerPlayClubManager implements Listener APRIL, MAY, JUNE, - JULY(new PowerPlayClubItem("Squid Morph", 1)), - AUGUST(new PowerPlayClubItem("Squid Morph", 1)), + JULY(new PowerPlayClubItem("Squid Morph", 1, new ItemStack(Material.INK_SACK))), + AUGUST(new PowerPlayClubItem("Squid Morph", 1, new ItemStack(Material.INK_SACK))), SEPTEMBER, OCTOBER, NOVEMBER, @@ -196,11 +224,13 @@ public class PowerPlayClubManager implements Listener { private final String _prize; private final int _amount; + private final ItemStack _display; - public PowerPlayClubItem(String prize, int amount) + public PowerPlayClubItem(String prize, int amount, ItemStack display) { _prize = prize; _amount = amount; + _display = display; } public String getPrize() @@ -212,6 +242,11 @@ public class PowerPlayClubManager implements Listener { return _amount; } + + public ItemStack getDisplay() + { + return _display; + } } /** @@ -222,11 +257,13 @@ public class PowerPlayClubManager implements Listener private int _months; private int _lastClaimed; + private int _year; - public PlayerMonths(int months, int lastClaimed) + public PlayerMonths(int months, int lastClaimed, int year) { _months = months; _lastClaimed = lastClaimed; + _year = year; } public int getMonths() @@ -239,6 +276,11 @@ public class PowerPlayClubManager implements Listener return _lastClaimed; } + public int getYear() + { + return _year; + } + public void setMonths(int months) { _months = months; @@ -249,6 +291,11 @@ public class PowerPlayClubManager implements Listener _lastClaimed = lastClaimed; } + public void setYear(int year) + { + _year = year; + } + } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java index 1e035fea6..c4ca55dda 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java @@ -10,6 +10,7 @@ import mineplex.core.common.Rank; import mineplex.core.common.util.banner.CountryFlag; import mineplex.core.donation.DonationManager; import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.gadgets.arrowtrail.candycane.ArrowTrailCandyCane; import mineplex.core.gadget.gadgets.arrowtrail.cupidslove.ArrowTrailCupid; import mineplex.core.gadget.gadgets.arrowtrail.emerald.ArrowTrailEmerald; import mineplex.core.gadget.gadgets.arrowtrail.freedom.ArrowTrailFreedom; @@ -31,6 +32,7 @@ import mineplex.core.gadget.gadgets.death.party.DeathPinataBurst; import mineplex.core.gadget.gadgets.death.shadow.DeathShadow; import mineplex.core.gadget.gadgets.death.vampire.DeathBlood; import mineplex.core.gadget.gadgets.death.wisdom.DeathEnchant; +import mineplex.core.gadget.gadgets.doublejump.candycane.DoubleJumpCandyCane; import mineplex.core.gadget.gadgets.doublejump.cupidslove.DoubleJumpCupidsWings; import mineplex.core.gadget.gadgets.doublejump.emerald.DoubleJumpEmerald; import mineplex.core.gadget.gadgets.doublejump.freedom.DoubleJumpFreedom; @@ -212,6 +214,20 @@ public class RewardManager addHat(Type.WINTER_HOLIDAY, HatType.Present, rarity, 5); addHat(Type.WINTER_HOLIDAY, HatType.Snowman, rarity, 5); + // Omega items + addMusicReward(Type.OMEGA, "Block Disk", rarity, 25); + addMusicReward(Type.OMEGA, "Cat Disk", rarity, 25); + addMusicReward(Type.OMEGA, "Chirp Disk", rarity, 25); + addMusicReward(Type.OMEGA, "Far Disk", rarity, 25); + addMusicReward(Type.OMEGA, "Mall Disk", rarity, 25); + addMusicReward(Type.OMEGA, "Mellohi Disk", rarity, 25); + addMusicReward(Type.OMEGA, "Stal Disk", rarity, 25); + addMusicReward(Type.OMEGA, "Stard Disk", rarity, 25); + addMusicReward(Type.OMEGA, "Wait Disk", rarity, 25); + addMusicReward(Type.OMEGA, "Ward Disk", rarity, 25); + + addHat(Type.OMEGA, HatType.Present, rarity, 5); + addHat(Type.OMEGA, HatType.Snowman, rarity, 5); } @@ -307,6 +323,67 @@ public class RewardManager addGadget(Type.FREEDOM, getGadget(DoubleJumpFreedom.class), rarity, 50); addGadget(Type.FREEDOM, getGadget(ArrowTrailFreedom.class), rarity, 10); addGadget(Type.FREEDOM, getGadget(DeathFreedom.class), rarity, 75); + + // Omega Chest + addGadget(Type.OMEGA, getGadget(DoubleJumpFreedom.class), rarity, 5); + addGadget(Type.OMEGA, getGadget(DoubleJumpBlood.class), rarity, 50); + addGadget(Type.OMEGA, getGadget(DoubleJumpFirecracker.class), rarity, 33); + addGadget(Type.OMEGA, getGadget(DoubleJumpEmerald.class), rarity, 25); + addGadget(Type.OMEGA, getGadget(DoubleJumpMusic.class), rarity, 20); + addGadget(Type.OMEGA, getGadget(DoubleJumpShadow.class), rarity, 15); + addGadget(Type.OMEGA, getGadget(DoubleJumpStorm.class), rarity, 30); + addGadget(Type.OMEGA, getGadget(DoubleJumpCandyCane.class), rarity, 20); + + addGadget(Type.OMEGA, getGadget(DeathFreedom.class), rarity, 15); + addGadget(Type.OMEGA, getGadget(DeathStorm.class), rarity, 30); + addGadget(Type.OMEGA, getGadget(DeathBlood.class), rarity, 50); + addGadget(Type.OMEGA, getGadget(DeathEmerald.class), rarity, 25); + addGadget(Type.OMEGA, getGadget(DeathMusic.class), rarity, 20); + addGadget(Type.OMEGA, getGadget(DeathPinataBurst.class), rarity, 27); + addGadget(Type.OMEGA, getGadget(DeathShadow.class), rarity, 15); + addGadget(Type.OMEGA, getGadget(DeathCandyCane.class), rarity, 25); + + addGadget(Type.OMEGA, getGadget(ArrowTrailFreedom.class), rarity, 10); + addGadget(Type.OMEGA, getGadget(ArrowTrailConfetti.class), rarity, 27); + addGadget(Type.OMEGA, getGadget(ArrowTrailBlood.class), rarity, 50); + addGadget(Type.OMEGA, getGadget(ArrowTrailEmerald.class), rarity, 25); + addGadget(Type.OMEGA, getGadget(ArrowTrailMusic.class), rarity, 27); + addGadget(Type.OMEGA, getGadget(ArrowTrailStorm.class), rarity, 30); + addGadget(Type.OMEGA, getGadget(ArrowTrailShadow.class), rarity, 15); + addGadget(Type.OMEGA, getGadget(ArrowTrailCandyCane.class), rarity, 10); + + addHat(Type.OMEGA, HatType.Uncle_Sam, rarity, 25); + addHat(Type.OMEGA, HatType.Companion_Block, rarity, 15); + addHat(Type.OMEGA, HatType.Lovestruck, rarity, 20); + addHat(Type.OMEGA, HatType.Secret_Package, rarity, 25); + addHat(Type.OMEGA, HatType.Teddy_Bear, rarity, 25); + addHat(Type.OMEGA, HatType.Santa, rarity, 25); + addHat(Type.OMEGA, HatType.Rudolph, rarity, 25); + addHat(Type.OMEGA, HatType.Coal, rarity, 25); + + addGadget(Type.OMEGA, getGadget(MorphChicken.class), rarity, 50); + addGadget(Type.OMEGA, getGadget(MorphCow.class), rarity, 167); + addGadget(Type.OMEGA, getGadget(MorphEnderman.class), rarity, 33); + addGadget(Type.OMEGA, getGadget(MorphVillager.class), rarity, 83); + + addGadget(Type.OMEGA, getGadget(WinEffectFlames.class), rarity, 100); + addGadget(Type.OMEGA, getGadget(WinEffectSnowTrails.class), rarity, 100); + + addMount(Type.OMEGA, getMount(MountFrost.class), rarity, 50); + addMount(Type.OMEGA, getMount(MountCart.class), rarity, 100); + addMount(Type.OMEGA, getMount(MountMule.class), rarity, 200); + addMount(Type.OMEGA, getMount(MountSlime.class), rarity, 67); + + addGadget(Type.OMEGA, getGadget(OutfitRaveSuitBoots.class), rarity, 30); + addGadget(Type.OMEGA, getGadget(OutfitRaveSuitChestplate.class), rarity, 30); + addGadget(Type.OMEGA, getGadget(OutfitRaveSuitLeggings.class), rarity, 30); + addGadget(Type.OMEGA, getGadget(OutfitRaveSuitHelmet.class), rarity, 30); + addGadget(Type.OMEGA, getGadget(OutfitSpaceSuitBoots.class), rarity, 50); + addGadget(Type.OMEGA, getGadget(OutfitSpaceSuitChestplate.class), rarity, 50); + addGadget(Type.OMEGA, getGadget(OutfitSpaceSuitLeggings.class), rarity, 50); + addGadget(Type.OMEGA, getGadget(OutfitSpaceSuitHelmet.class), rarity, 50); + + addGadget(Type.OMEGA, getGadget(ParticleCandyCane.class), rarity, 25); } public void addLegendary() @@ -394,7 +471,65 @@ public class RewardManager addMount(Type.FREEDOM, getMount(MountFreedomHorse.class), rarity, 1); addGadget(Type.FREEDOM, getGadget(MorphUncleSam.class), rarity, 5); addGadget(Type.FREEDOM, getGadget(ParticleFreedom.class), rarity, 50); - + + // Omega items + addPetReward(Type.OMEGA, EntityType.VILLAGER, rarity, 1); + addPetReward(Type.OMEGA, EntityType.ZOMBIE, rarity, 10); + addPetReward(Type.OMEGA, EntityType.PIG_ZOMBIE, rarity, 1); + + addGadget(Type.OMEGA, getGadget(MorphBunny.class), rarity, 1); + addGadget(Type.OMEGA, getGadget(MorphUncleSam.class), rarity, 5); + addGadget(Type.OMEGA, getGadget(MorphPumpkinKing.class), rarity, 1); + addGadget(Type.OMEGA, getGadget(MorphBat.class), rarity, 25); + addGadget(Type.OMEGA, getGadget(MorphSlime.class), rarity, 10); + addGadget(Type.OMEGA, getGadget(MorphBlock.class), rarity, 20); + addGadget(Type.OMEGA, getGadget(MorphSnowman.class), rarity, 10); + + addGadget(Type.OMEGA, getGadget(ParticleFreedom.class), rarity, 15); + addGadget(Type.OMEGA, getGadget(ParticleWingsAngel.class), rarity, 15); + addGadget(Type.OMEGA, getGadget(ParticleBlood.class), rarity, 10); + addGadget(Type.OMEGA, getGadget(ParticleWingsDemons.class), rarity, 15); + addGadget(Type.OMEGA, getGadget(ParticleEnchant.class), rarity, 25); + addGadget(Type.OMEGA, getGadget(ParticleFairy.class), rarity, 4); + addGadget(Type.OMEGA, getGadget(ParticleFireRings.class), rarity, 17); + addGadget(Type.OMEGA, getGadget(ParticleEmerald.class), rarity, 8); + addGadget(Type.OMEGA, getGadget(ParticleHeart.class), rarity, 2); + addGadget(Type.OMEGA, getGadget(ParticleWingsInfernal.class), rarity, 4); + addGadget(Type.OMEGA, getGadget(ParticleMusic.class), rarity, 15); + addGadget(Type.OMEGA, getGadget(ParticleWingsPixie.class), rarity, 4); + addGadget(Type.OMEGA, getGadget(ParticleRain.class), rarity, 13); + addGadget(Type.OMEGA, getGadget(ParticleFoot.class), rarity, 33); + addGadget(Type.OMEGA, getGadget(ParticleYinYang.class), rarity, 20); + addGadget(Type.OMEGA, getGadget(ParticleCoalFumes.class), rarity, 1); + addGadget(Type.OMEGA, getGadget(ParticleFrostLord.class), rarity, 10); + addGadget(Type.OMEGA, getGadget(ParticlePartyTime.class), rarity, 25); + + addMount(Type.OMEGA, getMount(MountFreedomHorse.class), rarity, 1); + addMount(Type.OMEGA, getMount(MountZombie.class), rarity, 1); + addMount(Type.OMEGA, getMount(MountSpider.class), rarity, 1); + addMount(Type.OMEGA, getMount(MountUndead.class), rarity, 1); + addMount(Type.OMEGA, getMount(MountValentinesSheep.class), rarity, 33); + addMount(Type.OMEGA, getMount(MountBabyReindeer.class), rarity, 1); + + addGadget(Type.OMEGA, getGadget(WinEffectBabyChicken.class), rarity, 10); + addGadget(Type.OMEGA, getGadget(WinEffectLavaTrap.class), rarity, 20); + addGadget(Type.OMEGA, getGadget(WinEffectRiseOfTheElderGuardian.class), rarity, 4); + addGadget(Type.OMEGA, getGadget(WinEffectLightningStrike.class), rarity, 20); + addGadget(Type.OMEGA, getGadget(WinEffectMrPunchMan.class), rarity, 33); + + addGadget(Type.OMEGA, getGadget(DeathEnchant.class), rarity, 10); + addGadget(Type.OMEGA, getGadget(DeathCupidsBrokenHeart.class), rarity, 25); + addGadget(Type.OMEGA, getGadget(DeathFrostLord.class), rarity, 20); + + addGadget(Type.OMEGA, getGadget(DoubleJumpEnchant.class), rarity, 10); + addGadget(Type.OMEGA, getGadget(DoubleJumpCupidsWings.class), rarity, 5); + addGadget(Type.OMEGA, getGadget(DoubleJumpFrostLord.class), rarity, 10); + + addGadget(Type.OMEGA, getGadget(ArrowTrailEnchant.class), rarity, 10); + addGadget(Type.OMEGA, getGadget(ArrowTrailFrostLord.class), rarity, 20); + addGadget(Type.OMEGA, getGadget(ArrowTrailCupid.class), rarity, 15); + + addHat(Type.OMEGA, HatType.Grinch, rarity, 25); } @@ -599,19 +734,6 @@ public class RewardManager _rewardPools.get(Type.ILLUMINATED).add(reward); } } - // OMEGA ITEMS - if (reward instanceof UnknownPackageReward) - { - UnknownPackageReward unknownPackageReward = (UnknownPackageReward) reward; - if (!unknownPackageReward.getHeader().equalsIgnoreCase("Game Modifiers")) - { - _rewardPools.get(Type.OMEGA).add(reward); - } - } - else if (!(reward instanceof InventoryReward) && !(reward instanceof TreasureShardReward)) - { - _rewardPools.get(Type.OMEGA).add(reward); - } _rewardPools.get(pool).add(reward); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java index 3540a8c96..eee0c5fbe 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java @@ -1,39 +1,29 @@ package mineplex.core.treasure; import java.awt.*; -import java.awt.Color; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.LinkedList; +import java.util.*; import java.util.List; -import java.util.Random; -import java.util.Set; import java.util.concurrent.ConcurrentHashMap; -import mineplex.core.common.skin.SkinData; -import mineplex.core.common.util.*; -import mineplex.core.common.util.particles.ColoredParticle; -import mineplex.core.common.util.particles.DustSpellColor; -import mineplex.core.treasure.animation.*; -import org.bukkit.*; -import org.bukkit.block.Block; -import org.bukkit.block.Skull; -import org.bukkit.craftbukkit.v1_8_R3.util.CraftMagicNumbers; -import org.bukkit.entity.Player; - import mineplex.core.blockrestore.BlockRestore; import mineplex.core.common.Rank; +import mineplex.core.common.util.*; import mineplex.core.common.util.UtilParticle.ViewDist; +import mineplex.core.common.util.particles.ColoredParticle; +import mineplex.core.common.util.particles.DustSpellColor; import mineplex.core.hologram.HologramManager; -import mineplex.core.reward.RankRewardData; -import mineplex.core.reward.Reward; -import mineplex.core.reward.RewardData; -import mineplex.core.reward.RewardRarity; -import mineplex.core.reward.RewardType; +import mineplex.core.reward.*; import mineplex.core.status.ServerStatusManager; import mineplex.core.titangiveaway.redis.TitanChestGiveawayMessage; +import mineplex.core.treasure.animation.*; import net.minecraft.server.v1_8_R3.BlockPosition; import net.minecraft.server.v1_8_R3.PacketPlayOutBlockAction; +import org.bukkit.Bukkit; +import org.bukkit.Effect; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.craftbukkit.v1_8_R3.util.CraftMagicNumbers; +import org.bukkit.entity.Player; /** * Created by Shaun on 8/27/2014. @@ -92,8 +82,9 @@ public class Treasure _rewardType = rewardType; _rewards = rewards; - _chestData = new ChestData[chestBlocks.length]; - for (int i = 0; i < _chestData.length; i++) + int max = chestBlocks.length; + _chestData = new ChestData[max]; + for (int i = 0; i < max; i++) { _chestData[i] = new ChestData(chestBlocks[i]); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureLocation.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureLocation.java index 9f292996f..bfacf8bb0 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureLocation.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureLocation.java @@ -1,21 +1,9 @@ package mineplex.core.treasure; -<<<<<<< HEAD import java.util.List; import mineplex.core.account.CoreClientManager; import mineplex.core.common.util.*; -======= -import mineplex.core.account.CoreClientManager; -import mineplex.core.common.util.C; -import mineplex.core.common.util.Callback; -import mineplex.core.common.util.F; -import mineplex.core.common.util.UtilAction; -import mineplex.core.common.util.UtilAlg; -import mineplex.core.common.util.UtilPlayer; -import mineplex.core.common.util.UtilText; -import mineplex.core.common.util.UtilTextMiddle; ->>>>>>> e9ea8320890301d21c721216ab46bd4dcd98ca06 import mineplex.core.donation.DonationManager; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.event.GadgetBlockEvent; @@ -47,11 +35,6 @@ import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerVelocityEvent; -<<<<<<< HEAD -======= -import java.util.List; - ->>>>>>> e9ea8320890301d21c721216ab46bd4dcd98ca06 public class TreasureLocation implements Listener { private TreasureManager _treasureManager; @@ -169,7 +152,10 @@ public class TreasureLocation implements Listener if (treasureType != TreasureType.OLD) { - Bukkit.broadcastMessage(F.main("Treasure", F.name(player.getName()) + " is opening " + UtilText.prefixPronoun(treasureType.getName()))); + String pron = "a "; + if (treasureType == TreasureType.ANCIENT || treasureType == TreasureType.ILLUMINATED || treasureType == TreasureType.OMEGA) + pron = "an "; + Bukkit.broadcastMessage(F.main("Treasure", F.name(player.getName()) + " is opening " + pron + treasureType.getName())); } Treasure treasure = new Treasure(player, rewards, treasureType.getRewardType(), _chestBlock, _chestSpawns, treasureType, _treasureManager.getBlockRestore(), _hologramManager, _statusManager); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java index 3827c26e6..5ac5bcf68 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java @@ -1,5 +1,8 @@ package mineplex.core.treasure; +import java.util.ArrayList; +import java.util.List; + import com.google.common.collect.Lists; import mineplex.core.MiniPlugin; import mineplex.core.account.CoreClientManager; @@ -23,9 +26,6 @@ import org.bukkit.entity.Player; import org.bukkit.event.HandlerList; import org.bukkit.plugin.java.JavaPlugin; -import java.util.ArrayList; -import java.util.List; - /** * Created by Shaun on 8/27/2014. */ 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 092821c53..64c41c636 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/BlockChangeAnimation.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/BlockChangeAnimation.java @@ -70,6 +70,11 @@ public class BlockChangeAnimation extends Animation mat = Material.WOOL; data = 11; } + else if (getTreasure().getTreasureType() == TreasureType.OMEGA) + { + mat = Material.ENDER_STONE; + data = 0; + } else continue; @@ -97,6 +102,11 @@ public class BlockChangeAnimation extends Animation mat = Material.WOOL; data = 14; } + else if (getTreasure().getTreasureType() == TreasureType.OMEGA) + { + mat = Material.ENDER_STONE; + data = 0; + } else continue; @@ -129,6 +139,18 @@ public class BlockChangeAnimation extends Animation } } } + else if (getTreasure().getTreasureType() == TreasureType.FREEDOM) + { + for(Block c : _chests) + { + if(c.equals(b)) + { + _blockInfoList.add(new BlockInfo(b)); + b.setType(Material.ENDER_PORTAL_FRAME); + b.setData((byte) 0); + } + } + } } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/ChestSpawnAnimation.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/ChestSpawnAnimation.java index 29d6a816f..217059f36 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/ChestSpawnAnimation.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/ChestSpawnAnimation.java @@ -3,32 +3,22 @@ package mineplex.core.treasure.animation; import java.awt.*; import java.util.List; +import mineplex.core.common.util.*; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.common.util.particles.ColoredParticle; import mineplex.core.common.util.particles.DustSpellColor; import mineplex.core.gadget.gadgets.particle.unrelated.BabyFireworkEffect; -import org.bukkit.Bukkit; -import org.bukkit.Effect; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.Sound; -import org.bukkit.block.Block; -import org.bukkit.block.BlockFace; -import org.bukkit.craftbukkit.v1_8_R3.CraftWorld; -import org.bukkit.plugin.java.JavaPlugin; -import org.bukkit.util.Vector; - -import net.minecraft.server.v1_8_R3.BlockPosition; -import net.minecraft.server.v1_8_R3.MathHelper; -import mineplex.core.common.util.UtilAlg; -import mineplex.core.common.util.UtilBlock; -import mineplex.core.common.util.UtilMath; -import mineplex.core.common.util.UtilParticle; -import mineplex.core.common.util.UtilParticle.ParticleType; -import mineplex.core.common.util.UtilServer; -import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.treasure.BlockInfo; import mineplex.core.treasure.Treasure; import mineplex.core.treasure.TreasureType; +import net.minecraft.server.v1_8_R3.BlockPosition; +import net.minecraft.server.v1_8_R3.MathHelper; +import org.bukkit.Location; +import org.bukkit.block.Block; +import org.bukkit.craftbukkit.v1_8_R3.CraftWorld; +import org.bukkit.plugin.java.JavaPlugin; +import org.bukkit.util.Vector; /** * Created by Shaun on 8/29/2014. @@ -50,6 +40,8 @@ public class ChestSpawnAnimation extends Animation private JavaPlugin _javaPlugin; private int _babyFireworks = 0; + private int _circleAmount = 0; + public ChestSpawnAnimation(Treasure treasure, Block block, List chestBlockInfo, Block openingCenter, double radialOffset, JavaPlugin javaPlugin) { @@ -164,6 +156,25 @@ public class ChestSpawnAnimation extends Animation _babyFireworks++; } } + else if (getTreasure().getTreasureType() == TreasureType.OMEGA) + { + if (_circleAmount <= 15) + { + int particles = 50; + int radius = 1; + + for (int i = 0; i < particles; i++) + { + double angle = (double) 2 * Math.PI * i / particles; + double x = Math.cos(angle) * radius; + double z = Math.sin(angle) * radius; + Location loc = _centerLocation.clone().add(x, .1 * _circleAmount, z); + UtilParticle.PlayParticleToAll(ParticleType.PORTAL, loc, null, 0, 2, ViewDist.NORMAL); + } + } + + _circleAmount++; + } //Spawn Chest if (getTicks() >= ANIMATION_DURATION) @@ -172,6 +183,7 @@ public class ChestSpawnAnimation extends Animation { UtilBlock.setQuick(_block.getWorld(), _block.getX(), _block.getY(), _block.getZ(), 0, (byte) 0); } + _chestBlockInfo.add(new BlockInfo(_block)); getTreasure().setBlock(_block, getTreasure().getTreasureType().getMaterial(), _direction); _block.getLocation().getWorld().playSound(_centerLocation, getTreasure().getTreasureType().getStyle().getChestSpawnSound(), 0.5f, 1f); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/BuyChestButton.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/BuyChestButton.java index eb4b44b01..1815e7b15 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/BuyChestButton.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/BuyChestButton.java @@ -2,7 +2,6 @@ package mineplex.core.treasure.gui; import mineplex.core.common.currency.GlobalCurrency; import mineplex.core.common.util.F; -import mineplex.core.common.util.UtilPlayer; import mineplex.core.inventory.InventoryManager; import mineplex.core.recharge.Recharge; import mineplex.core.shop.confirmation.ConfirmationPage; @@ -60,18 +59,12 @@ public class BuyChestButton implements IButton return; } } - if (!_page.getPlugin().hasItemsToGivePlayer(TreasureType.OMEGA.getRewardPool(), player) - && _chestType == TreasureType.OMEGA) + if (!_page.getPlugin().hasItemsToGivePlayer(_chestType.getRewardPool(), player) + && (_chestType == TreasureType.ILLUMINATED || _chestType == TreasureType.OMEGA)) { player.sendMessage(F.main("Treasure", "You seem to have all treasures for this chest unlocked already!")); return; } - if (!_page.getPlugin().hasItemsToGivePlayer(TreasureType.ILLUMINATED.getRewardPool(), player) - && _chestType == TreasureType.ILLUMINATED) - { - player.sendMessage(F.main("Treasure", "You seem to have all treasures for this chest unlocked already!")); - return; - } SalesPackageBase salesPackage = new ChestPackage(_chestName, _chestMat, _chestCost); _page.getShop().openPageForPlayer(player, new ConfirmationPage<>(player, _page, new SalesPackageProcessor(player, GlobalCurrency.TREASURE_SHARD, salesPackage, _page.getDonationManager(), () -> { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/TreasurePage.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/TreasurePage.java index 792a283a9..8d23c05d5 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/TreasurePage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/TreasurePage.java @@ -178,7 +178,19 @@ public class TreasurePage extends ShopPageBase freedomLore.add(ChatColor.RESET + C.cGreen + getFreedomUnlockedAmount(getPlayer()) + "/7 Unlocked"); List omegaLore = new ArrayList<>(); - omegaLore.add("PLACEHOLDER"); + omegaLore.add(" "); + omegaLore.add(F.value("Omega Chests Owned", "" + omegaCount)); + omegaLore.add(" "); + omegaLore.add(C.cGray + "The most powerful of all chests,"); + omegaLore.add(C.cGray + "it is able to go back in time to find"); + omegaLore.add(C.cGray + "loot that has been lost..."); + omegaLore.add(" "); + if (omegaCount > 0) + omegaLore.add(ChatColor.RESET + C.cGreen + "Click to Open!"); + else + { + + } ShopItem shards = new ShopItem(Material.PRISMARINE_SHARD, C.cAqua + C.Bold + treasureShards + " Treasure Shards", shardLore.toArray(new String[0]), 0, false); ShopItem basic = new ShopItem(Material.CHEST, C.cGreen + C.Bold + "Old Treasure", basicLore.toArray(new String[0]), 0, false, false); @@ -187,7 +199,8 @@ public class TreasurePage extends ShopPageBase ItemStack christmas = SkinData.PRESENT.getSkull(C.cDGreen + C.Bold + "Winter Holiday Treasure", christmasLore); ItemStack illuminated = new ShopItem(Material.SEA_LANTERN, C.cDAqua + C.Bold + "Illuminated Treasure", illuminatedLore.toArray(new String[0]), 0, false, false); ItemStack freedom = SkinData.FREEDOM_CHEST.getSkull(C.cRedB + "Freedom " + C.cBlueB + "Treasure", freedomLore); - ShopItem omega = new ShopItem(Material.NETHER_STAR, C.cAquaB + "Omega Treasure", omegaLore.toArray(new String[0]), 0, false, false); + //ShopItem omega = new ShopItem(Material.NETHER_STAR, C.cAquaB + "Omega Treasure", omegaLore.toArray(new String[0]), 0, false, false); + ItemStack omega = SkinData.OMEGA_CHEST.getSkull(C.cAquaB + "Omega Treasure", omegaLore); addItem(40, shards); diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java index 977e47fe8..63e84b024 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java @@ -19,15 +19,7 @@ import mineplex.core.boosters.BoosterManager; import mineplex.core.botspam.BotSpamManager; import mineplex.core.common.Rank; import mineplex.core.common.currency.GlobalCurrency; -import mineplex.core.common.util.C; -import mineplex.core.common.util.F; -import mineplex.core.common.util.UtilInv; -import mineplex.core.common.util.UtilMath; -import mineplex.core.common.util.UtilPlayer; -import mineplex.core.common.util.UtilServer; -import mineplex.core.common.util.UtilTextBottom; -import mineplex.core.common.util.UtilTime; -import mineplex.core.common.util.UtilWorld; +import mineplex.core.common.util.*; import mineplex.core.cosmetic.CosmeticManager; import mineplex.core.customdata.CustomDataManager; import mineplex.core.disguise.DisguiseManager; @@ -80,15 +72,7 @@ import mineplex.hub.commands.ForcefieldRadius; import mineplex.hub.commands.GadgetToggle; import mineplex.hub.commands.GameModeCommand; import mineplex.hub.commands.NewsCommand; -import mineplex.hub.modules.ForcefieldManager; -import mineplex.hub.modules.HubVisibilityManager; -import mineplex.hub.modules.JumpManager; -import mineplex.hub.modules.KothManager; -import mineplex.hub.modules.NewsManager; -import mineplex.hub.modules.ParkourManager; -import mineplex.hub.modules.SoccerManager; -import mineplex.hub.modules.ValentinesManager; -import mineplex.hub.modules.WorldManager; +import mineplex.hub.modules.*; import mineplex.hub.modules.nonpremium.NonPremiumManager; import mineplex.hub.profile.gui.GUIProfile; import mineplex.minecraft.game.classcombat.Skill.event.SkillTriggerEvent; @@ -102,11 +86,7 @@ import net.md_5.bungee.api.chat.HoverEvent.Action; import net.md_5.bungee.api.chat.TextComponent; import net.minecraft.server.v1_8_R3.EntityInsentient; import net.minecraft.server.v1_8_R3.EntityPlayer; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.GameMode; -import org.bukkit.Location; -import org.bukkit.Material; +import org.bukkit.*; import org.bukkit.craftbukkit.v1_8_R3.CraftWorld; import org.bukkit.entity.Egg; import org.bukkit.entity.Entity; @@ -120,31 +100,11 @@ import org.bukkit.event.entity.EntityTargetEvent.TargetReason; import org.bukkit.event.entity.ItemSpawnEvent; 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; -import org.bukkit.event.player.PlayerRespawnEvent; -import org.bukkit.event.player.PlayerVelocityEvent; +import org.bukkit.event.player.*; import org.bukkit.event.server.ServerListPingEvent; import org.bukkit.event.world.ChunkLoadEvent; import org.bukkit.plugin.java.JavaPlugin; -<<<<<<< HEAD -======= -import java.io.DataInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Random; -import java.util.UUID; - ->>>>>>> e9ea8320890301d21c721216ab46bd4dcd98ca06 public class HubManager extends MiniClientPlugin { // ☃❅ Snowman!