From 4a5366753996d33d5276a46d870347c55d0e2551 Mon Sep 17 00:00:00 2001 From: Cheese Date: Sat, 5 Dec 2015 10:22:00 +1100 Subject: [PATCH 01/81] gadget restructure converted frost lord and titan particles into 4 subcategories. --- .../core/cosmetic/CosmeticManager.java | 2 +- .../core/cosmetic/ui/page/GadgetPage.java | 4 +- .../mineplex/core/gadget/GadgetManager.java | 61 ++++------ .../core/gadget/gadgets/ItemKothSword.java | 5 - .../arrowtrail/ArrowTrailFrostLord.java | 43 +++++++ .../gadgets/arrowtrail/ArrowTrailTitan.java | 55 +++++++++ .../gadget/gadgets/death/DeathFrostLord.java | 41 +++++++ .../core/gadget/gadgets/death/DeathTitan.java | 52 +++++++++ .../doublejump/DoubleJumpFrostLord.java | 38 ++++++ .../gadgets/doublejump/DoubleJumpTitan.java | 63 ++++++++++ .../gadget/gadgets/{ => item}/ItemBatGun.java | 3 +- .../gadgets/{ => item}/ItemCoinBomb.java | 3 +- .../gadgets/{ => item}/ItemDuelingSword.java | 3 +- .../gadgets/{ => item}/ItemEtherealPearl.java | 3 +- .../gadgets/{ => item}/ItemFirework.java | 3 +- .../gadgets/{ => item}/ItemFleshHook.java | 3 +- .../gadgets/{ => item}/ItemFootball.java | 3 +- .../gadgets/{ => item}/ItemGemBomb.java | 3 +- .../gadget/gadgets/item/ItemKothSword.java | 5 + .../gadgets/{ => item}/ItemMelonLauncher.java | 3 +- .../gadgets/{ => item}/ItemPaintballGun.java | 3 +- .../gadgets/{ => item}/ItemPaintbrush.java | 3 +- .../gadget/gadgets/{ => item}/ItemTNT.java | 3 +- .../gadget/gadgets/{ => morph}/BlockForm.java | 2 +- .../gadget/gadgets/{ => morph}/MorphBat.java | 2 +- .../gadgets/{ => morph}/MorphBlaze.java | 2 +- .../gadgets/{ => morph}/MorphBlock.java | 2 +- .../gadgets/{ => morph}/MorphBunny.java | 2 +- .../gadgets/{ => morph}/MorphChicken.java | 2 +- .../gadget/gadgets/{ => morph}/MorphCow.java | 2 +- .../gadgets/{ => morph}/MorphCreeper.java | 2 +- .../gadgets/{ => morph}/MorphEnderman.java | 2 +- .../gadget/gadgets/{ => morph}/MorphGeno.java | 2 +- .../gadgets/{ => morph}/MorphNotch.java | 2 +- .../gadget/gadgets/{ => morph}/MorphPig.java | 2 +- .../gadgets/{ => morph}/MorphPumpkinKing.java | 2 +- .../gadgets/{ => morph}/MorphSlime.java | 2 +- .../gadgets/{ => morph}/MorphTitan.java | 2 +- .../gadgets/{ => morph}/MorphVillager.java | 2 +- .../gadgets/{ => morph}/MorphWither.java | 2 +- .../gadgets/{ => outfit}/OutfitRaveSuit.java | 2 +- .../gadgets/{ => outfit}/OutfitSpaceSuit.java | 2 +- .../gadgets/{ => outfit}/OutfitTeam.java | 2 +- .../{ => particle}/ParticleEnchant.java | 2 +- .../gadgets/{ => particle}/ParticleFairy.java | 2 +- .../{ => particle}/ParticleFairyData.java | 2 +- .../{ => particle}/ParticleFireRings.java | 2 +- .../gadgets/{ => particle}/ParticleFoot.java | 2 +- .../ParticleFrostLord.java} | 83 +------------ .../gadgets/{ => particle}/ParticleGreen.java | 2 +- .../gadgets/{ => particle}/ParticleHeart.java | 2 +- .../gadgets/{ => particle}/ParticleHelix.java | 2 +- .../{ => particle}/ParticleKronos.java | 2 +- .../{ => particle}/ParticleKronosData.java | 2 +- .../{ => particle}/ParticleLegend.java | 2 +- .../gadgets/{ => particle}/ParticleRain.java | 2 +- .../gadgets/{ => particle}/ParticleTitan.java | 96 +-------------- .../core/gadget/types/ArrowEffectGadget.java | 110 ++++++++++++++++++ .../core/gadget/types/DeathEffectGadget.java | 44 +++++++ .../gadget/types/DoubleJumpEffectGadget.java | 65 +++++++++++ .../core/gadget/types/GadgetType.java | 3 + .../src/mineplex/hub/modules/KothManager.java | 4 +- .../src/mineplex/hub/modules/NewsManager.java | 2 +- .../mineplex/hub/modules/SoccerManager.java | 2 +- .../mineplex/hub/modules/StackerManager.java | 2 +- .../arcade/game/games/event/EventModule.java | 2 +- .../game/arcade/managers/GameManager.java | 2 +- 67 files changed, 612 insertions(+), 272 deletions(-) delete mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemKothSword.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailFrostLord.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailTitan.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathFrostLord.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathTitan.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpFrostLord.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpTitan.java rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => item}/ItemBatGun.java (98%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => item}/ItemCoinBomb.java (98%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => item}/ItemDuelingSword.java (93%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => item}/ItemEtherealPearl.java (97%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => item}/ItemFirework.java (96%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => item}/ItemFleshHook.java (97%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => item}/ItemFootball.java (97%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => item}/ItemGemBomb.java (98%) create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemKothSword.java rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => item}/ItemMelonLauncher.java (98%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => item}/ItemPaintballGun.java (97%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => item}/ItemPaintbrush.java (98%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => item}/ItemTNT.java (97%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => morph}/BlockForm.java (99%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => morph}/MorphBat.java (99%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => morph}/MorphBlaze.java (98%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => morph}/MorphBlock.java (98%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => morph}/MorphBunny.java (99%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => morph}/MorphChicken.java (98%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => morph}/MorphCow.java (97%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => morph}/MorphCreeper.java (99%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => morph}/MorphEnderman.java (98%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => morph}/MorphGeno.java (97%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => morph}/MorphNotch.java (97%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => morph}/MorphPig.java (99%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => morph}/MorphPumpkinKing.java (97%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => morph}/MorphSlime.java (98%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => morph}/MorphTitan.java (99%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => morph}/MorphVillager.java (99%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => morph}/MorphWither.java (99%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => outfit}/OutfitRaveSuit.java (98%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => outfit}/OutfitSpaceSuit.java (94%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => outfit}/OutfitTeam.java (99%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => particle}/ParticleEnchant.java (97%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => particle}/ParticleFairy.java (97%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => particle}/ParticleFairyData.java (97%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => particle}/ParticleFireRings.java (98%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => particle}/ParticleFoot.java (98%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ParticleBlizzard.java => particle/ParticleFrostLord.java} (57%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => particle}/ParticleGreen.java (97%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => particle}/ParticleHeart.java (95%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => particle}/ParticleHelix.java (97%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => particle}/ParticleKronos.java (97%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => particle}/ParticleKronosData.java (98%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => particle}/ParticleLegend.java (97%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => particle}/ParticleRain.java (97%) rename Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/{ => particle}/ParticleTitan.java (55%) create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ArrowEffectGadget.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/types/DeathEffectGadget.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/types/DoubleJumpEffectGadget.java diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/CosmeticManager.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/CosmeticManager.java index 48e7d35f2..9394628ae 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/CosmeticManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/CosmeticManager.java @@ -19,7 +19,7 @@ import mineplex.core.common.util.UtilServer; import mineplex.core.cosmetic.ui.CosmeticShop; import mineplex.core.donation.DonationManager; import mineplex.core.gadget.GadgetManager; -import mineplex.core.gadget.gadgets.OutfitTeam; +import mineplex.core.gadget.gadgets.outfit.OutfitTeam; import mineplex.core.gadget.types.Gadget; import mineplex.core.gadget.types.GadgetType; import mineplex.core.inventory.InventoryManager; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java index 6a75916e6..cebfad6bd 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java @@ -19,8 +19,8 @@ import mineplex.core.cosmetic.ui.button.ActivateGadgetButton; import mineplex.core.cosmetic.ui.button.DeactivateGadgetButton; import mineplex.core.cosmetic.ui.button.GadgetButton; import mineplex.core.donation.DonationManager; -import mineplex.core.gadget.gadgets.MorphBlock; -import mineplex.core.gadget.gadgets.MorphNotch; +import mineplex.core.gadget.gadgets.morph.MorphBlock; +import mineplex.core.gadget.gadgets.morph.MorphNotch; import mineplex.core.gadget.types.Gadget; import mineplex.core.gadget.types.GadgetType; import mineplex.core.gadget.types.ItemGadget; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java index 7494e9fa6..e612c3350 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java @@ -15,44 +15,13 @@ import mineplex.core.common.util.UtilTime; import mineplex.core.disguise.DisguiseManager; import mineplex.core.donation.DonationManager; import mineplex.core.gadget.event.GadgetCollideEntityEvent; -import mineplex.core.gadget.gadgets.ItemBatGun; -import mineplex.core.gadget.gadgets.ItemCoinBomb; -import mineplex.core.gadget.gadgets.ItemDuelingSword; -import mineplex.core.gadget.gadgets.ItemEtherealPearl; -import mineplex.core.gadget.gadgets.ItemFirework; -import mineplex.core.gadget.gadgets.ItemFleshHook; -import mineplex.core.gadget.gadgets.ItemMelonLauncher; -import mineplex.core.gadget.gadgets.ItemPaintballGun; -import mineplex.core.gadget.gadgets.ItemPaintbrush; -import mineplex.core.gadget.gadgets.ItemTNT; -import mineplex.core.gadget.gadgets.MorphBat; -import mineplex.core.gadget.gadgets.MorphBlaze; -import mineplex.core.gadget.gadgets.MorphBlock; -import mineplex.core.gadget.gadgets.MorphBunny; -import mineplex.core.gadget.gadgets.MorphChicken; -import mineplex.core.gadget.gadgets.MorphCow; -import mineplex.core.gadget.gadgets.MorphCreeper; -import mineplex.core.gadget.gadgets.MorphEnderman; -import mineplex.core.gadget.gadgets.MorphPig; -import mineplex.core.gadget.gadgets.MorphPumpkinKing; -import mineplex.core.gadget.gadgets.MorphSlime; -import mineplex.core.gadget.gadgets.MorphTitan; -import mineplex.core.gadget.gadgets.MorphVillager; -import mineplex.core.gadget.gadgets.MorphWither; -import mineplex.core.gadget.gadgets.OutfitRaveSuit; -import mineplex.core.gadget.gadgets.OutfitSpaceSuit; -import mineplex.core.gadget.gadgets.OutfitTeam; -import mineplex.core.gadget.gadgets.ParticleBlizzard; -import mineplex.core.gadget.gadgets.ParticleEnchant; -import mineplex.core.gadget.gadgets.ParticleFairy; -import mineplex.core.gadget.gadgets.ParticleFireRings; -import mineplex.core.gadget.gadgets.ParticleFoot; -import mineplex.core.gadget.gadgets.ParticleGreen; -import mineplex.core.gadget.gadgets.ParticleHeart; -import mineplex.core.gadget.gadgets.ParticleHelix; -import mineplex.core.gadget.gadgets.ParticleLegend; -import mineplex.core.gadget.gadgets.ParticleRain; -import mineplex.core.gadget.gadgets.ParticleTitan; +import mineplex.core.gadget.gadgets.arrowtrail.*; +import mineplex.core.gadget.gadgets.death.*; +import mineplex.core.gadget.gadgets.doublejump.*; +import mineplex.core.gadget.gadgets.item.*; +import mineplex.core.gadget.gadgets.morph.*; +import mineplex.core.gadget.gadgets.outfit.*; +import mineplex.core.gadget.gadgets.particle.*; import mineplex.core.gadget.types.Gadget; import mineplex.core.gadget.types.GadgetType; import mineplex.core.gadget.types.ItemGadget; @@ -177,9 +146,21 @@ public class GadgetManager extends MiniPlugin addGadget(new ParticleHeart(this)); addGadget(new ParticleFairy(this)); addGadget(new ParticleLegend(this)); - addGadget(new ParticleBlizzard(this)); + addGadget(new ParticleFrostLord(this)); addGadget(new ParticleTitan(this)); - //addGadget(new ParticleKronos(this)); + + // Arrow Trails + addGadget(new ArrowTrailFrostLord(this)); + addGadget(new ArrowTrailTitan(this)); + + // Death Effect + addGadget(new DeathFrostLord(this)); + addGadget(new DeathTitan(this)); + + // Double Jump + addGadget(new DoubleJumpFrostLord(this)); + addGadget(new DoubleJumpTitan(this)); + // Music addGadget(new MusicGadget(this, "13 Disc", new String[] {""}, -2, 2256, 178000)); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemKothSword.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemKothSword.java deleted file mode 100644 index 6bb5d66a0..000000000 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemKothSword.java +++ /dev/null @@ -1,5 +0,0 @@ -package mineplex.core.gadget.gadgets; - -public class ItemKothSword { - -} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailFrostLord.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailFrostLord.java new file mode 100644 index 000000000..90659d76e --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailFrostLord.java @@ -0,0 +1,43 @@ +package mineplex.core.gadget.gadgets.arrowtrail; + +import org.bukkit.Material; +import org.bukkit.entity.Arrow; + +import mineplex.core.common.util.C; +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilParticle.ViewDist; +import mineplex.core.gadget.types.ArrowEffectGadget; +import mineplex.core.gadget.GadgetManager; + +public class ArrowTrailFrostLord extends ArrowEffectGadget +{ + public ArrowTrailFrostLord(GadgetManager manager) + { + super(manager, "Frost Lord", new String[] + { + C.cWhite + "You are a mighty frost lord.", + C.cWhite + "Your double jumps and arrows", + C.cWhite + "are enchanted with snow powers.", + " ", + C.cPurple + "No longer available", + }, + -1, + Material.SNOW_BALL, (byte)0); + } + + @Override + public void doTrail(Arrow arrow) + { + UtilParticle.PlayParticle(ParticleType.SNOW_SHOVEL, arrow.getLocation(), 0f, 0f, 0f, 0f, 1, + ViewDist.LONGER, UtilServer.getPlayers()); + } + + @Override + public void doHitEffect(Arrow arrow) + { + UtilParticle.PlayParticle(ParticleType.SNOW_SHOVEL, arrow.getLocation(), 0f, 0f, 0f, 0.4f, 12, + ViewDist.LONGER, UtilServer.getPlayers()); + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailTitan.java new file mode 100644 index 000000000..534d7f3b0 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailTitan.java @@ -0,0 +1,55 @@ +package mineplex.core.gadget.gadgets.arrowtrail; + +import org.bukkit.Material; +import org.bukkit.entity.Arrow; +import org.bukkit.event.EventHandler; +import org.bukkit.event.player.PlayerJoinEvent; + +import mineplex.core.common.Rank; +import mineplex.core.common.util.C; +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilParticle.ViewDist; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.types.ArrowEffectGadget; + +public class ArrowTrailTitan extends ArrowEffectGadget +{ + public ArrowTrailTitan(GadgetManager manager) + { + super(manager, "Arrows of the Titans", new String[] + { + C.cWhite + "These flames are said to be the", + C.cWhite + "souls of a lost civilisation of", + C.cWhite + "Titans, forgotten by time.", + " ", + C.cRed + "Unlocked with Titan Rank", + }, + -3, + Material.FIREBALL, (byte)0); + } + + @Override + public void doTrail(Arrow arrow) + { + UtilParticle.PlayParticle(ParticleType.FLAME, arrow.getLocation(), 0f, 0f, 0f, 0f, 1, + ViewDist.LONGER, UtilServer.getPlayers()); + } + + @Override + public void doHitEffect(Arrow arrow) + { + UtilParticle.PlayParticle(ParticleType.LAVA, arrow.getLocation(), 0f, 0f, 0f, 0f, 24, + ViewDist.LONGER, UtilServer.getPlayers()); + } + + @EventHandler + public void titanOwner(PlayerJoinEvent event) + { + if (Manager.getClientManager().Get(event.getPlayer()).GetRank().has(Rank.TITAN)) + { + Manager.getDonationManager().Get(event.getPlayer().getName()).AddUnknownSalesPackagesOwned(GetName()); + } + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathFrostLord.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathFrostLord.java new file mode 100644 index 000000000..a0ec45f09 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathFrostLord.java @@ -0,0 +1,41 @@ +package mineplex.core.gadget.gadgets.death; + +import org.bukkit.Material; +import org.bukkit.event.EventHandler; + +import mineplex.core.blood.BloodEvent; +import mineplex.core.common.util.C; +import mineplex.core.gadget.types.DeathEffectGadget; +import mineplex.core.gadget.GadgetManager; + +public class DeathFrostLord extends DeathEffectGadget +{ + public DeathFrostLord(GadgetManager manager) + { + super(manager, "Frost Lord", new String[] + { + C.cWhite + "You are a mighty frost lord.", + C.cWhite + "Your double jumps and arrows", + C.cWhite + "are enchanted with snow powers.", + " ", + C.cPurple + "No longer available", + }, + -1, + Material.SNOW_BALL, (byte)0); + } + + @EventHandler + public void death(BloodEvent event) + { + if (event.getPlayer() == null) + return; + + if (!IsActive(event.getPlayer())) + return; + + if (!shouldDisplay(event.getPlayer())) + return; + + event.setItem(Material.SNOW_BALL, (byte)0); + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathTitan.java new file mode 100644 index 000000000..e7f205cf6 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathTitan.java @@ -0,0 +1,52 @@ +package mineplex.core.gadget.gadgets.death; + +import org.bukkit.Material; +import org.bukkit.event.EventHandler; +import org.bukkit.event.player.PlayerJoinEvent; + +import mineplex.core.blood.BloodEvent; +import mineplex.core.common.Rank; +import mineplex.core.common.util.C; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.types.DeathEffectGadget; + +public class DeathTitan extends DeathEffectGadget +{ + public DeathTitan(GadgetManager manager) + { + super(manager, "Ashes of the Titans", new String[] + { + C.cWhite + "These flames are said to be the", + C.cWhite + "souls of a lost civilisation of", + C.cWhite + "Titans, forgotten by time.", + " ", + C.cRed + "Unlocked with Titan Rank", + }, + -3, + Material.FIREBALL, (byte)0); + } + + @EventHandler + public void death(BloodEvent event) + { + if (event.getPlayer() == null) + return; + + if (!IsActive(event.getPlayer())) + return; + + if (!shouldDisplay(event.getPlayer())) + return; + + event.setItem(Material.FIREBALL, (byte)0); + } + + @EventHandler + public void titanOwner(PlayerJoinEvent event) + { + if (Manager.getClientManager().Get(event.getPlayer()).GetRank().has(Rank.TITAN)) + { + Manager.getDonationManager().Get(event.getPlayer().getName()).AddUnknownSalesPackagesOwned(GetName()); + } + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpFrostLord.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpFrostLord.java new file mode 100644 index 000000000..9c7cdc726 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpFrostLord.java @@ -0,0 +1,38 @@ +package mineplex.core.gadget.gadgets.doublejump; + +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.player.PlayerToggleFlightEvent; + +import mineplex.core.common.util.C; +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilParticle.ViewDist; +import mineplex.core.gadget.types.DoubleJumpEffectGadget; +import mineplex.core.gadget.GadgetManager; + +public class DoubleJumpFrostLord extends DoubleJumpEffectGadget +{ + public DoubleJumpFrostLord(GadgetManager manager) + { + super(manager, "Frost Lord", new String[] + { + C.cWhite + "You are a mighty frost lord.", + C.cWhite + "Your double jumps and arrows", + C.cWhite + "are enchanted with snow powers.", + " ", + C.cPurple + "No longer available", + }, + -1, + Material.SNOW_BALL, (byte)0); + } + + @Override + public void doEffect(Player player) + { + UtilParticle.PlayParticle(ParticleType.SNOW_SHOVEL, player.getLocation(), 0f, 0f, 0f, 0.6f, 100, + ViewDist.LONGER, UtilServer.getPlayers()); + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpTitan.java new file mode 100644 index 000000000..f0ecce644 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpTitan.java @@ -0,0 +1,63 @@ +package mineplex.core.gadget.gadgets.doublejump; + +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerToggleFlightEvent; + +import mineplex.core.common.Rank; +import mineplex.core.common.util.C; +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilParticle.ViewDist; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.types.DoubleJumpEffectGadget; + +public class DoubleJumpTitan extends DoubleJumpEffectGadget +{ + public DoubleJumpTitan(GadgetManager manager) + { + super(manager, "Leap of the Titans", new String[] + { + C.cWhite + "These flames are said to be the", + C.cWhite + "souls of a lost civilisation of", + C.cWhite + "Titans, forgotten by time.", + " ", + C.cRed + "Unlocked with Titan Rank", + }, + -3, + Material.FIREBALL, (byte)0); + } + + @Override + public void doEffect(Player player) + { + UtilParticle.PlayParticle(ParticleType.LAVA, player.getLocation(), 0f, 0f, 0f, 0.2f, 40, + ViewDist.NORMAL, UtilServer.getPlayers()); + } + + @EventHandler + public void jump(PlayerToggleFlightEvent event) + { + if (!shouldDisplay(event.getPlayer())) + return; + + if (!event.getPlayer().isFlying()) + if (IsActive(event.getPlayer())) + { + UtilParticle.PlayParticle(ParticleType.LAVA, event.getPlayer().getLocation(), 0f, 0f, 0f, 0.2f, 40, + ViewDist.NORMAL, UtilServer.getPlayers()); + } + } + + @EventHandler + public void titanOwner(PlayerJoinEvent event) + { + if (Manager.getClientManager().Get(event.getPlayer()).GetRank().has(Rank.TITAN)) + { + Manager.getDonationManager().Get(event.getPlayer().getName()).AddUnknownSalesPackagesOwned(GetName()); + } + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemBatGun.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemBatGun.java similarity index 98% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemBatGun.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemBatGun.java index 990221e3c..8cfcae673 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemBatGun.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemBatGun.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.item; import java.util.ArrayList; import java.util.HashMap; @@ -23,6 +23,7 @@ import mineplex.core.common.util.UtilTime; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.gadgets.Ammo; import mineplex.core.gadget.types.ItemGadget; import mineplex.core.recharge.Recharge; import mineplex.core.updater.UpdateType; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemCoinBomb.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoinBomb.java similarity index 98% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemCoinBomb.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoinBomb.java index ce4f2e781..e68345215 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemCoinBomb.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoinBomb.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.item; import java.util.HashMap; import java.util.HashSet; @@ -23,6 +23,7 @@ import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilTime; import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.gadgets.Ammo; import mineplex.core.gadget.types.ItemGadget; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemDuelingSword.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemDuelingSword.java similarity index 93% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemDuelingSword.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemDuelingSword.java index 94d4bfea3..07456110c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemDuelingSword.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemDuelingSword.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.item; import org.bukkit.Material; import org.bukkit.entity.Player; @@ -7,6 +7,7 @@ import org.bukkit.event.player.PlayerInteractEvent; import mineplex.core.common.util.C; import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.gadgets.Ammo; import mineplex.core.gadget.types.ItemGadget; import mineplex.core.itemstack.ItemStackFactory; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemEtherealPearl.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemEtherealPearl.java similarity index 97% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemEtherealPearl.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemEtherealPearl.java index bb7ef9c8f..2c07ba486 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemEtherealPearl.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemEtherealPearl.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.item; import java.util.ArrayList; import java.util.HashSet; @@ -24,6 +24,7 @@ import mineplex.core.common.util.UtilInv; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.gadgets.Ammo; import mineplex.core.gadget.types.ItemGadget; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemFirework.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFirework.java similarity index 96% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemFirework.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFirework.java index 114fbeeff..0462dd311 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemFirework.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFirework.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.item; import org.bukkit.Color; import org.bukkit.FireworkEffect; @@ -15,6 +15,7 @@ import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilFirework; import mineplex.core.common.util.UtilPlayer; import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.gadgets.Ammo; import mineplex.core.gadget.types.ItemGadget; import mineplex.core.recharge.Recharge; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemFleshHook.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFleshHook.java similarity index 97% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemFleshHook.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFleshHook.java index a439aca63..e4bd3554a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemFleshHook.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFleshHook.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.item; import org.bukkit.EntityEffect; import org.bukkit.Material; @@ -16,6 +16,7 @@ import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.gadgets.Ammo; import mineplex.core.gadget.types.ItemGadget; import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.projectile.IThrown; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemFootball.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFootball.java similarity index 97% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemFootball.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFootball.java index 12537a599..b44dfd504 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemFootball.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFootball.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.item; import java.util.HashSet; @@ -23,6 +23,7 @@ import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.gadgets.Ammo; import mineplex.core.gadget.types.ItemGadget; import mineplex.core.recharge.Recharge; import mineplex.core.updater.UpdateType; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemGemBomb.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemGemBomb.java similarity index 98% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemGemBomb.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemGemBomb.java index 0c2e75b77..0510dbf11 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemGemBomb.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemGemBomb.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.item; import java.util.ArrayList; import java.util.Arrays; @@ -36,6 +36,7 @@ import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilTime; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.event.ItemGadgetOutOfAmmoEvent; +import mineplex.core.gadget.gadgets.Ammo; import mineplex.core.gadget.types.ItemGadget; import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.recharge.Recharge; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemKothSword.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemKothSword.java new file mode 100644 index 000000000..6c694ba4c --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemKothSword.java @@ -0,0 +1,5 @@ +package mineplex.core.gadget.gadgets.item; + +public class ItemKothSword { + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemMelonLauncher.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemMelonLauncher.java similarity index 98% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemMelonLauncher.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemMelonLauncher.java index 0692aa661..ebe4d779e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemMelonLauncher.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemMelonLauncher.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.item; import java.util.ArrayList; import java.util.Iterator; @@ -25,6 +25,7 @@ import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilPlayer; import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.gadgets.Ammo; import mineplex.core.gadget.types.ItemGadget; import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.projectile.IThrown; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemPaintballGun.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPaintballGun.java similarity index 97% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemPaintballGun.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPaintballGun.java index 68fba27a0..ce6f5d28e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemPaintballGun.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPaintballGun.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.item; import java.util.ArrayList; import java.util.HashSet; @@ -29,6 +29,7 @@ import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.common.util.UtilServer; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.event.GadgetBlockEvent; +import mineplex.core.gadget.gadgets.Ammo; import mineplex.core.gadget.types.ItemGadget; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemPaintbrush.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPaintbrush.java similarity index 98% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemPaintbrush.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPaintbrush.java index ba0fd0d76..93070d3ad 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemPaintbrush.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPaintbrush.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.item; import java.util.ArrayList; import java.util.Arrays; @@ -27,6 +27,7 @@ import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.gadgets.Ammo; import mineplex.core.gadget.types.ItemGadget; import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.updater.UpdateType; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemTNT.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemTNT.java similarity index 97% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemTNT.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemTNT.java index 0bf3531b7..0bf4a04d3 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ItemTNT.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemTNT.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.item; import java.util.HashMap; import java.util.HashSet; @@ -20,6 +20,7 @@ import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.gadgets.Ammo; import mineplex.core.gadget.types.ItemGadget; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/BlockForm.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/BlockForm.java similarity index 99% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/BlockForm.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/BlockForm.java index 7fb434ae2..4a4be4ccd 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/BlockForm.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/BlockForm.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.morph; import java.util.ArrayList; import java.util.List; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphBat.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBat.java similarity index 99% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphBat.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBat.java index 22cf5855e..77e253f93 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphBat.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBat.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.morph; import org.bukkit.EntityEffect; import org.bukkit.GameMode; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphBlaze.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBlaze.java similarity index 98% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphBlaze.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBlaze.java index d7b73309d..67afa8bcb 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphBlaze.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBlaze.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.morph; import org.bukkit.ChatColor; import org.bukkit.Material; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphBlock.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBlock.java similarity index 98% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphBlock.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBlock.java index dd5e22071..208618c10 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphBlock.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBlock.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.morph; import java.util.HashMap; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphBunny.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBunny.java similarity index 99% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphBunny.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBunny.java index 78e502bc5..056f1e33a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphBunny.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBunny.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.morph; import java.util.HashMap; import java.util.HashSet; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphChicken.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphChicken.java similarity index 98% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphChicken.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphChicken.java index 6e3be5fce..dcf03e51c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphChicken.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphChicken.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.morph; import org.bukkit.ChatColor; import org.bukkit.EntityEffect; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphCow.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphCow.java similarity index 97% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphCow.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphCow.java index 96dcda738..f16a35bce 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphCow.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphCow.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.morph; import org.bukkit.Material; import org.bukkit.Sound; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphCreeper.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphCreeper.java similarity index 99% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphCreeper.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphCreeper.java index 8c9419476..d2d5b0954 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphCreeper.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphCreeper.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.morph; import java.util.HashMap; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphEnderman.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphEnderman.java similarity index 98% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphEnderman.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphEnderman.java index 72c6518d6..e6341e98b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphEnderman.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphEnderman.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.morph; import org.bukkit.Color; import org.bukkit.Effect; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphGeno.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphGeno.java similarity index 97% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphGeno.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphGeno.java index 628531f40..0eb48894d 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphGeno.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphGeno.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.morph; import org.bukkit.ChatColor; import org.bukkit.Material; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphNotch.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphNotch.java similarity index 97% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphNotch.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphNotch.java index a262c149e..7671cd11c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphNotch.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphNotch.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.morph; import org.bukkit.Material; import org.bukkit.entity.Player; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphPig.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphPig.java similarity index 99% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphPig.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphPig.java index d42b43023..5a44e8322 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphPig.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphPig.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.morph; import java.util.HashSet; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphPumpkinKing.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphPumpkinKing.java similarity index 97% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphPumpkinKing.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphPumpkinKing.java index 13c83e5d9..1e155f20c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphPumpkinKing.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphPumpkinKing.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.morph; import org.bukkit.Bukkit; import org.bukkit.Material; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphSlime.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSlime.java similarity index 98% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphSlime.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSlime.java index 4737cf7ad..6813bbcb3 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphSlime.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSlime.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.morph; import org.bukkit.Material; import org.bukkit.Sound; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphTitan.java similarity index 99% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphTitan.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphTitan.java index ed61f6511..1e36b454e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphTitan.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphTitan.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.morph; import java.util.HashMap; import java.util.HashSet; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphVillager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphVillager.java similarity index 99% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphVillager.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphVillager.java index 985247b53..def1ee383 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphVillager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphVillager.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.morph; import java.util.HashSet; import java.util.Iterator; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphWither.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphWither.java similarity index 99% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphWither.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphWither.java index 506ffc717..1d2bde3bb 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/MorphWither.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphWither.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.morph; import java.util.ArrayList; import java.util.HashMap; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/OutfitRaveSuit.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitRaveSuit.java similarity index 98% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/OutfitRaveSuit.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitRaveSuit.java index 2834498a4..cd43be616 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/OutfitRaveSuit.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitRaveSuit.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.outfit; import java.util.HashMap; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/OutfitSpaceSuit.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuit.java similarity index 94% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/OutfitSpaceSuit.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuit.java index fe25b7843..c634500b2 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/OutfitSpaceSuit.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuit.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.outfit; import org.bukkit.ChatColor; import org.bukkit.Material; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/OutfitTeam.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitTeam.java similarity index 99% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/OutfitTeam.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitTeam.java index 9090eb81e..c994f299c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/OutfitTeam.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitTeam.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.outfit; import java.util.HashMap; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleEnchant.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleEnchant.java similarity index 97% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleEnchant.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleEnchant.java index 1225728a4..38a505914 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleEnchant.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleEnchant.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.particle; import org.bukkit.GameMode; import org.bukkit.Material; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleFairy.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFairy.java similarity index 97% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleFairy.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFairy.java index 2c6c70091..742355fe0 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleFairy.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFairy.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.particle; import java.util.HashMap; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleFairyData.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFairyData.java similarity index 97% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleFairyData.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFairyData.java index 00d4cd895..424f61382 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleFairyData.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFairyData.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.particle; import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilMath; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleFireRings.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFireRings.java similarity index 98% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleFireRings.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFireRings.java index 3537558d2..ba639675a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleFireRings.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFireRings.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.particle; import org.bukkit.GameMode; import org.bukkit.Material; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleFoot.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFoot.java similarity index 98% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleFoot.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFoot.java index 1e68a3d93..e156de492 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleFoot.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFoot.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.particle; import java.util.HashMap; import java.util.Iterator; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleBlizzard.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFrostLord.java similarity index 57% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleBlizzard.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFrostLord.java index b6f57d15b..1b0c142f8 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleBlizzard.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFrostLord.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.particle; import java.util.HashSet; import java.util.Iterator; @@ -24,11 +24,11 @@ import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import mineplex.core.gadget.GadgetManager; -public class ParticleBlizzard extends ParticleGadget +public class ParticleFrostLord extends ParticleGadget { private HashSet _arrows = new HashSet(); - public ParticleBlizzard(GadgetManager manager) + public ParticleFrostLord(GadgetManager manager) { super(manager, "Frost Lord", new String[] { @@ -84,81 +84,4 @@ public class ParticleBlizzard extends ParticleGadget } } } - - @EventHandler - public void jump(PlayerToggleFlightEvent event) - { - if (!shouldDisplay(event.getPlayer())) - return; - - if (!event.getPlayer().isFlying()) - if (IsActive(event.getPlayer())) - UtilParticle.PlayParticle(ParticleType.SNOW_SHOVEL, event.getPlayer().getLocation(), 0f, 0f, 0f, 0.6f, 100, - ViewDist.LONGER, UtilServer.getPlayers()); - } - - @EventHandler - public void arrow(ProjectileLaunchEvent event) - { - if (Manager.hideParticles()) - return; - - if (event.getEntity() instanceof Arrow) - { - if (event.getEntity().getShooter() != null) - { - if (GetActive().contains(event.getEntity().getShooter())) - { - _arrows.add((Arrow)event.getEntity()); - } - } - } - } - - @EventHandler - public void arrow(ProjectileHitEvent event) - { - if (!_arrows.remove(event.getEntity())) - return; - - UtilParticle.PlayParticle(ParticleType.SNOW_SHOVEL, event.getEntity().getLocation(), 0f, 0f, 0f, 0.4f, 12, - ViewDist.LONGER, UtilServer.getPlayers()); - } - - @EventHandler - public void arrowClean(UpdateEvent event) - { - if (event.getType() != UpdateType.TICK) - return; - - for (Iterator arrowIterator = _arrows.iterator(); arrowIterator.hasNext();) - { - Arrow arrow = arrowIterator.next(); - - if (arrow.isDead() || !arrow.isValid() || arrow.isOnGround()) - { - arrowIterator.remove(); - } - else - { - UtilParticle.PlayParticle(ParticleType.SNOW_SHOVEL, arrow.getLocation(), 0f, 0f, 0f, 0f, 1, - ViewDist.LONGER, UtilServer.getPlayers()); - } - } - } - - @EventHandler - public void death(BloodEvent event) - { - if (event.getPlayer() == null) - return; - - if (!IsActive(event.getPlayer())) - return; - - if (!shouldDisplay(event.getPlayer())) - return; - - event.setItem(Material.SNOW_BALL, (byte)0); - } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleGreen.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleGreen.java similarity index 97% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleGreen.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleGreen.java index 9a370fad1..920de097b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleGreen.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleGreen.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.particle; import org.bukkit.GameMode; import org.bukkit.Material; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleHeart.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleHeart.java similarity index 95% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleHeart.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleHeart.java index 61d602440..d4160c997 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleHeart.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleHeart.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.particle; import java.util.HashMap; import java.util.Iterator; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleHelix.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleHelix.java similarity index 97% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleHelix.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleHelix.java index f573629ee..cc4a4882e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleHelix.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleHelix.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.particle; import org.bukkit.GameMode; import org.bukkit.Material; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleKronos.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleKronos.java similarity index 97% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleKronos.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleKronos.java index dd74addb9..02ed4ac3b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleKronos.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleKronos.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.particle; import java.util.HashMap; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleKronosData.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleKronosData.java similarity index 98% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleKronosData.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleKronosData.java index 5d78b2b3d..289a60099 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleKronosData.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleKronosData.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.particle; import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilParticle.ParticleType; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleLegend.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleLegend.java similarity index 97% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleLegend.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleLegend.java index 76e4d277f..6c510f664 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleLegend.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleLegend.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.particle; import org.bukkit.Effect; import org.bukkit.Material; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleRain.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleRain.java similarity index 97% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleRain.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleRain.java index 4300b5369..8d6755b3c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleRain.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleRain.java @@ -1,4 +1,4 @@ -package mineplex.core.gadget.gadgets; +package mineplex.core.gadget.gadgets.particle; import org.bukkit.GameMode; import org.bukkit.Material; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleTitan.java similarity index 55% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleTitan.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleTitan.java index 9ed2bbb06..8431e6f7c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/ParticleTitan.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleTitan.java @@ -1,24 +1,15 @@ -package mineplex.core.gadget.gadgets; - -import java.util.HashSet; -import java.util.Iterator; +package mineplex.core.gadget.gadgets.particle; import org.bukkit.Location; import org.bukkit.Material; -import org.bukkit.entity.Arrow; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; -import org.bukkit.event.entity.ProjectileHitEvent; -import org.bukkit.event.entity.ProjectileLaunchEvent; import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.event.player.PlayerToggleFlightEvent; import org.bukkit.util.Vector; -import mineplex.core.blood.BloodEvent; import mineplex.core.common.Rank; import mineplex.core.common.util.C; import mineplex.core.common.util.UtilParticle; -import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.gadget.GadgetManager; @@ -28,8 +19,7 @@ import mineplex.core.updater.event.UpdateEvent; public class ParticleTitan extends ParticleGadget { - private HashSet _arrows = new HashSet(); - + private int _tick; public ParticleTitan(GadgetManager manager) @@ -112,87 +102,7 @@ public class ParticleTitan extends ParticleGadget } @EventHandler - public void jump(PlayerToggleFlightEvent event) - { - if (!shouldDisplay(event.getPlayer())) - return; - - if (!event.getPlayer().isFlying()) - if (IsActive(event.getPlayer())) - { - UtilParticle.PlayParticle(ParticleType.LAVA, event.getPlayer().getLocation(), 0f, 0f, 0f, 0.2f, 40, - ViewDist.NORMAL, UtilServer.getPlayers()); - } - - } - - @EventHandler - public void arrow(ProjectileLaunchEvent event) - { - if (Manager.hideParticles()) - return; - - if (event.getEntity() instanceof Arrow) - { - if (event.getEntity().getShooter() != null) - { - if (GetActive().contains(event.getEntity().getShooter())) - { - _arrows.add((Arrow)event.getEntity()); - } - } - } - } - - @EventHandler - public void arrow(ProjectileHitEvent event) - { - if (!_arrows.remove(event.getEntity())) - return; - - UtilParticle.PlayParticle(ParticleType.LAVA, event.getEntity().getLocation(), 0f, 0f, 0f, 0f, 24, - ViewDist.LONGER, UtilServer.getPlayers()); - } - - @EventHandler - public void arrowClean(UpdateEvent event) - { - if (event.getType() != UpdateType.TICK) - return; - - for (Iterator arrowIterator = _arrows.iterator(); arrowIterator.hasNext();) - { - Arrow arrow = arrowIterator.next(); - - if (arrow.isDead() || !arrow.isValid() || arrow.isOnGround()) - { - arrowIterator.remove(); - } - else - { - UtilParticle.PlayParticle(ParticleType.FLAME, arrow.getLocation(), 0f, 0f, 0f, 0f, 1, - ViewDist.LONGER, UtilServer.getPlayers()); - } - } - } - - @EventHandler - public void death(BloodEvent event) - { - if (event.getPlayer() == null) - return; - - if (!IsActive(event.getPlayer())) - return; - - if (!shouldDisplay(event.getPlayer())) - return; - - event.setItem(Material.FIREBALL, (byte)0); - } - - @EventHandler - public void legendOwner(PlayerJoinEvent event) + public void titanOwner(PlayerJoinEvent event) { if (Manager.getClientManager().Get(event.getPlayer()).GetRank().has(Rank.TITAN)) { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ArrowEffectGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ArrowEffectGadget.java new file mode 100644 index 000000000..de0705c04 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ArrowEffectGadget.java @@ -0,0 +1,110 @@ +package mineplex.core.gadget.types; + +import java.util.HashSet; +import java.util.Iterator; + +import org.bukkit.Material; +import org.bukkit.entity.Arrow; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.entity.ProjectileHitEvent; +import org.bukkit.event.entity.ProjectileLaunchEvent; + +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilParticle.ViewDist; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; + +public abstract class ArrowEffectGadget extends Gadget +{ + protected HashSet _arrows = new HashSet(); + + public ArrowEffectGadget(GadgetManager manager, String name, String[] desc, int cost, Material mat, byte data) + { + super(manager, GadgetType.ArrowTrail, name, desc, cost, mat, data); + } + + @Override + public void EnableCustom(Player player) + { + Manager.RemoveParticle(player); + + _active.add(player); + + UtilPlayer.message(player, F.main("Gadget", "You enabled " + F.elem(GetName()) + ".")); + } + + @Override + public void DisableCustom(Player player) + { + if (_active.remove(player)) + UtilPlayer.message(player, F.main("Gadget", "You disabled " + F.elem(GetName()) + ".")); + } + + public boolean shouldDisplay(Player player) + { + if (UtilPlayer.isSpectator(player)) + return false; + + if (Manager.hideParticles()) + return false; + + return true; + } + + @EventHandler + public void arrowLaunch(ProjectileLaunchEvent event) + { + if (Manager.hideParticles()) + return; + + if (event.getEntity() instanceof Arrow) + { + if (event.getEntity().getShooter() != null) + { + if (GetActive().contains(event.getEntity().getShooter())) + { + _arrows.add((Arrow)event.getEntity()); + } + } + } + } + + @EventHandler + public void clean(UpdateEvent event) + { + if (event.getType() != UpdateType.TICK) + return; + + for (Iterator arrowIterator = _arrows.iterator(); arrowIterator.hasNext();) + { + Arrow arrow = arrowIterator.next(); + + if (arrow.isDead() || !arrow.isValid() || arrow.isOnGround()) + { + arrowIterator.remove(); + } + else + { + doTrail(arrow); + } + } + } + + @EventHandler + public void arrowHit(ProjectileHitEvent event) + { + if (!_arrows.remove(event.getEntity())) + return; + + doHitEffect((Arrow)event.getEntity()); + } + + public abstract void doTrail(Arrow arrow); + public abstract void doHitEffect(Arrow arrow); +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/DeathEffectGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/DeathEffectGadget.java new file mode 100644 index 000000000..fe5b96f0f --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/DeathEffectGadget.java @@ -0,0 +1,44 @@ +package mineplex.core.gadget.types; + +import org.bukkit.Material; +import org.bukkit.entity.Player; + +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.gadget.GadgetManager; + +public abstract class DeathEffectGadget extends Gadget +{ + public DeathEffectGadget(GadgetManager manager, String name, String[] desc, int cost, Material mat, byte data) + { + super(manager, GadgetType.Death, name, desc, cost, mat, data); + } + + @Override + public void EnableCustom(Player player) + { + Manager.RemoveParticle(player); + + _active.add(player); + + UtilPlayer.message(player, F.main("Gadget", "You enabled " + F.elem(GetName()) + ".")); + } + + @Override + public void DisableCustom(Player player) + { + if (_active.remove(player)) + UtilPlayer.message(player, F.main("Gadget", "You disabled " + F.elem(GetName()) + ".")); + } + + public boolean shouldDisplay(Player player) + { + if (UtilPlayer.isSpectator(player)) + return false; + + if (Manager.hideParticles()) + return false; + + return true; + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/DoubleJumpEffectGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/DoubleJumpEffectGadget.java new file mode 100644 index 000000000..a9e3ecfbf --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/DoubleJumpEffectGadget.java @@ -0,0 +1,65 @@ +package mineplex.core.gadget.types; + +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.player.PlayerToggleFlightEvent; + +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilParticle.ViewDist; +import mineplex.core.gadget.GadgetManager; + +public abstract class DoubleJumpEffectGadget extends Gadget +{ + public DoubleJumpEffectGadget(GadgetManager manager, String name, String[] desc, int cost, Material mat, byte data) + { + super(manager, GadgetType.DoubleJump, name, desc, cost, mat, data); + } + + @Override + public void EnableCustom(Player player) + { + Manager.RemoveParticle(player); + + _active.add(player); + + UtilPlayer.message(player, F.main("Gadget", "You enabled " + F.elem(GetName()) + ".")); + } + + @Override + public void DisableCustom(Player player) + { + if (_active.remove(player)) + UtilPlayer.message(player, F.main("Gadget", "You disabled " + F.elem(GetName()) + ".")); + } + + public boolean shouldDisplay(Player player) + { + if (UtilPlayer.isSpectator(player)) + return false; + + if (Manager.hideParticles()) + return false; + + return true; + } + + @EventHandler + public void jump(PlayerToggleFlightEvent event) + { + if (!shouldDisplay(event.getPlayer())) + return; + + if (!event.getPlayer().isFlying()) + if (IsActive(event.getPlayer())) + { + doEffect(event.getPlayer()); + } + } + + public abstract void doEffect(Player player); +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetType.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetType.java index 11b014b32..22de296e7 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetType.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetType.java @@ -7,4 +7,7 @@ public enum GadgetType Particle, MusicDisc, Costume, + DoubleJump, + ArrowTrail, + Death } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/KothManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/KothManager.java index 373bb1e5d..6f69a5782 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/KothManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/KothManager.java @@ -23,8 +23,8 @@ import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.event.GadgetActivateEvent; -import mineplex.core.gadget.gadgets.ItemDuelingSword; -import mineplex.core.gadget.gadgets.OutfitTeam; +import mineplex.core.gadget.gadgets.item.ItemDuelingSword; +import mineplex.core.gadget.gadgets.outfit.OutfitTeam; import mineplex.core.gadget.types.Gadget; import mineplex.core.gadget.types.GadgetType; import mineplex.core.mount.event.MountActivateEvent; diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/NewsManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/NewsManager.java index 943acdd63..977bada57 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/NewsManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/NewsManager.java @@ -15,7 +15,7 @@ import mineplex.core.common.util.UtilTextTop; import mineplex.core.common.util.UtilTime; import mineplex.core.disguise.disguises.DisguiseBase; import mineplex.core.disguise.disguises.DisguiseWither; -import mineplex.core.gadget.gadgets.MorphWither; +import mineplex.core.gadget.gadgets.morph.MorphWither; import mineplex.core.gadget.types.Gadget; import mineplex.core.gadget.types.GadgetType; import mineplex.core.mount.Mount; diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/SoccerManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/SoccerManager.java index 1d55d9f03..687bf534c 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/SoccerManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/SoccerManager.java @@ -42,7 +42,7 @@ import mineplex.core.common.util.UtilTextMiddle; import mineplex.core.common.util.UtilTime; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.event.GadgetActivateEvent; -import mineplex.core.gadget.gadgets.OutfitTeam; +import mineplex.core.gadget.gadgets.outfit.OutfitTeam; import mineplex.core.gadget.types.Gadget; import mineplex.core.gadget.types.GadgetType; import mineplex.core.mount.event.MountActivateEvent; diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/StackerManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/StackerManager.java index bf5b654ea..0fa87552c 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/StackerManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/StackerManager.java @@ -28,7 +28,7 @@ import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.common.util.UtilGear; import mineplex.core.common.util.UtilPlayer; import mineplex.core.event.StackerEvent; -import mineplex.core.gadget.gadgets.MorphBlock; +import mineplex.core.gadget.gadgets.morph.MorphBlock; import mineplex.core.gadget.types.GadgetType; import mineplex.core.projectile.IThrown; import mineplex.core.projectile.ProjectileManager; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/event/EventModule.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/event/EventModule.java index dd31d4703..b38a8f6af 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/event/EventModule.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/event/EventModule.java @@ -20,7 +20,7 @@ import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.creature.event.CreatureKillEntitiesEvent; import mineplex.core.event.StackerEvent; -import mineplex.core.gadget.gadgets.MorphBlock; +import mineplex.core.gadget.gadgets.morph.MorphBlock; import mineplex.core.gadget.types.Gadget; import mineplex.core.gadget.types.GadgetType; import mineplex.core.give.Give; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameManager.java index 7f65cc868..dd35974de 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameManager.java @@ -16,7 +16,7 @@ import mineplex.core.common.util.UtilTime; import mineplex.core.disguise.disguises.DisguiseBase; import mineplex.core.disguise.disguises.DisguiseLiving; import mineplex.core.disguise.disguises.DisguiseWither; -import mineplex.core.gadget.gadgets.MorphWither; +import mineplex.core.gadget.gadgets.morph.MorphWither; import mineplex.core.gadget.types.Gadget; import mineplex.core.gadget.types.GadgetType; import mineplex.minecraft.game.core.condition.Condition.ConditionType; From 49c735e43cdb8c3c269bc1bc200e2c4821c67b86 Mon Sep 17 00:00:00 2001 From: Cheese Date: Sat, 5 Dec 2015 10:34:06 +1100 Subject: [PATCH 02/81] removed duplicate code --- .../gadget/gadgets/doublejump/DoubleJumpTitan.java | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpTitan.java index f0ecce644..618c8eff3 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpTitan.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpTitan.java @@ -38,20 +38,6 @@ public class DoubleJumpTitan extends DoubleJumpEffectGadget ViewDist.NORMAL, UtilServer.getPlayers()); } - @EventHandler - public void jump(PlayerToggleFlightEvent event) - { - if (!shouldDisplay(event.getPlayer())) - return; - - if (!event.getPlayer().isFlying()) - if (IsActive(event.getPlayer())) - { - UtilParticle.PlayParticle(ParticleType.LAVA, event.getPlayer().getLocation(), 0f, 0f, 0f, 0.2f, 40, - ViewDist.NORMAL, UtilServer.getPlayers()); - } - } - @EventHandler public void titanOwner(PlayerJoinEvent event) { From c36182b8d4403f648eb2b9bd72a985f4b9b18fac Mon Sep 17 00:00:00 2001 From: xGamingDudex Date: Mon, 7 Dec 2015 02:53:14 +0100 Subject: [PATCH 03/81] Cosmetic Update New: + New GUI System + Candy Cane Particle + Candy Cane Double Jump + Candy Cane Death Effect + Candy Cane Arrow Trail + Snowman Morph + Baby Reindeer Mount + Pet Coal Apparition Fixed/Updated: * Added getTick to UpdateEvent and UtilTime * Added more methods to UtilParticle * Gadget manager isMoving now counts flying as moving * Updated some cosmetics --- .../core/common/util/UtilParticle.java | 13 ++ .../mineplex/core/common/util/UtilTime.java | 11 ++ .../cosmetic/ui/button/OpenArrowTrails.java | 23 +++ .../ui/button/OpenDeathAnimations.java | 23 +++ .../cosmetic/ui/button/OpenDoubleJump.java | 23 +++ .../core/cosmetic/ui/button/OpenHats.java | 23 +++ .../core/cosmetic/ui/page/ArrowTrailPage.java | 53 +++++++ .../cosmetic/ui/page/DeathEffectPage.java | 53 +++++++ .../core/cosmetic/ui/page/DoubleJumpPage.java | 53 +++++++ .../core/cosmetic/ui/page/HatPage.java | 57 ++++++++ .../mineplex/core/cosmetic/ui/page/Menu.java | 133 ++++++++++-------- .../core/cosmetic/ui/page/MorphPage.java | 2 + .../core/cosmetic/ui/page/TauntPage.java | 57 ++++++++ .../mineplex/core/gadget/GadgetManager.java | 132 ++++++++++++----- .../arrowtrail/ArrowTrailCandyCane.java | 48 +++++++ .../arrowtrail/ArrowTrailFrostLord.java | 6 +- .../gadget/gadgets/death/DeathCandyCane.java | 49 +++++++ .../gadget/gadgets/death/DeathFrostLord.java | 6 +- .../doublejump/DoubleJumpCandyCane.java | 36 +++++ .../doublejump/DoubleJumpFrostLord.java | 10 +- .../gadgets/doublejump/DoubleJumpTitan.java | 1 + .../gadget/gadgets/item/ItemDuelingSword.java | 3 +- .../gadget/gadgets/item/ItemPaintbrush.java | 3 +- .../gadget/gadgets/morph/MorphSnowman.java | 127 +++++++++++++++++ .../gadget/gadgets/outfit/OutfitTeam.java | 3 +- .../gadgets/particle/ParticleCandyCane.java | 93 ++++++++++++ .../gadgets/particle/ParticleFrostLord.java | 6 +- .../core/gadget/types/ArrowEffectGadget.java | 6 +- .../core/gadget/types/DeathEffectGadget.java | 2 +- .../gadget/types/DoubleJumpEffectGadget.java | 2 +- .../core/gadget/types/GadgetType.java | 4 +- .../core/gadget/types/ItemGadget.java | 4 +- .../core/gadget/types/MorphGadget.java | 2 +- .../core/gadget/types/OutfitGadget.java | 2 +- .../core/gadget/types/ParticleGadget.java | 3 +- .../src/mineplex/core/mount/MountManager.java | 2 + .../core/mount/types/MountBabyReindeer.java | 92 ++++++++++++ .../mineplex/core/mount/types/MountTitan.java | 6 + .../src/mineplex/core/pet/PetFactory.java | 16 +-- .../src/mineplex/core/pet/PetManager.java | 99 ++++++++----- .../core/pet/types/PetCoalApparition.java | 14 ++ .../core/updater/event/UpdateEvent.java | 6 + .../game/arcade/command/DisguiseCommand.java | 2 +- 43 files changed, 1132 insertions(+), 177 deletions(-) create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenArrowTrails.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenDeathAnimations.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenDoubleJump.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenHats.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/ArrowTrailPage.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/DeathEffectPage.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/DoubleJumpPage.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/HatPage.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/TauntPage.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailCandyCane.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathCandyCane.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpCandyCane.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSnowman.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCandyCane.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountBabyReindeer.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/pet/types/PetCoalApparition.java diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilParticle.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilParticle.java index d7896c943..bacca401f 100644 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilParticle.java +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilParticle.java @@ -283,4 +283,17 @@ public class UtilParticle UtilPlayer.sendPacket(player, packet); } } + + public static void PlayParticleToAll(String particle, Location location, Vector offset, float speed, int count, ViewDist dist) + { + PlayParticle(particle, location, (float) offset.getX(), (float) offset.getY(), (float) offset.getZ(), speed, count, dist, UtilServer.getPlayers()); + } + + public static void PlayParticleToAll(String particle, Location location, float offsetX, float offsetY, float offsetZ, + float speed, int count, ViewDist dist) + { + PlayParticle(particle, location, offsetX, offsetY, offsetZ, speed, count, dist, UtilServer.getPlayers()); + } + + } \ No newline at end of file diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilTime.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilTime.java index 908272bc6..5d5174f16 100644 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilTime.java +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilTime.java @@ -3,6 +3,8 @@ package mineplex.core.common.util; import java.text.SimpleDateFormat; import java.util.Calendar; +import net.minecraft.server.v1_8_R3.MinecraftServer; + public class UtilTime { public static final String DATE_FORMAT_NOW = "MM-dd-yyyy HH:mm:ss"; @@ -41,6 +43,15 @@ public class UtilTime default: return "th"; } } + + /** + * + * @return Returns the current global server tick. Is reset on server restart. Starts out negative. Counts upwards. + */ + public static int getServerTick() + { + return MinecraftServer.currentTick; + } public enum TimeUnit { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenArrowTrails.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenArrowTrails.java new file mode 100644 index 000000000..2664fb9c7 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenArrowTrails.java @@ -0,0 +1,23 @@ +package mineplex.core.cosmetic.ui.button; + +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.ClickType; + +import mineplex.core.cosmetic.ui.page.ArrowTrailPage; +import mineplex.core.cosmetic.ui.page.Menu; +import mineplex.core.shop.item.IButton; + +public class OpenArrowTrails implements IButton +{ + private Menu _page; + + public OpenArrowTrails(Menu page) + { + _page = page; + } + + public void onClick(Player player, ClickType clickType) + { + _page.getShop().openPageForPlayer(player, new ArrowTrailPage(_page.getPlugin(), _page.getShop(), _page.getClientManager(), _page.getDonationManager(), "Arrow Trails", player)); + } +} \ No newline at end of file diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenDeathAnimations.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenDeathAnimations.java new file mode 100644 index 000000000..fad54be30 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenDeathAnimations.java @@ -0,0 +1,23 @@ +package mineplex.core.cosmetic.ui.button; + +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.ClickType; + +import mineplex.core.cosmetic.ui.page.DeathEffectPage; +import mineplex.core.cosmetic.ui.page.Menu; +import mineplex.core.shop.item.IButton; + +public class OpenDeathAnimations implements IButton +{ + private Menu _page; + + public OpenDeathAnimations(Menu page) + { + _page = page; + } + + public void onClick(Player player, ClickType clickType) + { + _page.getShop().openPageForPlayer(player, new DeathEffectPage(_page.getPlugin(), _page.getShop(), _page.getClientManager(), _page.getDonationManager(), "Death Animations", player)); + } +} \ No newline at end of file diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenDoubleJump.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenDoubleJump.java new file mode 100644 index 000000000..b433181c8 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenDoubleJump.java @@ -0,0 +1,23 @@ +package mineplex.core.cosmetic.ui.button; + +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.ClickType; + +import mineplex.core.cosmetic.ui.page.DoubleJumpPage; +import mineplex.core.cosmetic.ui.page.Menu; +import mineplex.core.shop.item.IButton; + +public class OpenDoubleJump implements IButton +{ + private Menu _page; + + public OpenDoubleJump(Menu page) + { + _page = page; + } + + public void onClick(Player player, ClickType clickType) + { + _page.getShop().openPageForPlayer(player, new DoubleJumpPage(_page.getPlugin(), _page.getShop(), _page.getClientManager(), _page.getDonationManager(), "Double Jump Effects", player)); + } +} \ No newline at end of file diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenHats.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenHats.java new file mode 100644 index 000000000..48cd8a98c --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenHats.java @@ -0,0 +1,23 @@ +package mineplex.core.cosmetic.ui.button; + +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.ClickType; + +import mineplex.core.cosmetic.ui.page.HatPage; +import mineplex.core.cosmetic.ui.page.Menu; +import mineplex.core.shop.item.IButton; + +public class OpenHats implements IButton +{ + private Menu _page; + + public OpenHats(Menu page) + { + _page = page; + } + + public void onClick(Player player, ClickType clickType) + { + _page.getShop().openPageForPlayer(player, new HatPage(_page.getPlugin(), _page.getShop(), _page.getClientManager(), _page.getDonationManager(), "Hats", player)); + } +} \ No newline at end of file diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/ArrowTrailPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/ArrowTrailPage.java new file mode 100644 index 000000000..09ee4c247 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/ArrowTrailPage.java @@ -0,0 +1,53 @@ +package mineplex.core.cosmetic.ui.page; + +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.ClickType; + +import mineplex.core.account.CoreClientManager; +import mineplex.core.common.util.C; +import mineplex.core.cosmetic.CosmeticManager; +import mineplex.core.cosmetic.ui.CosmeticShop; +import mineplex.core.donation.DonationManager; +import mineplex.core.gadget.types.Gadget; +import mineplex.core.gadget.types.GadgetType; +import mineplex.core.shop.item.IButton; +import mineplex.core.shop.item.ShopItem; + +public class ArrowTrailPage extends GadgetPage +{ + + public ArrowTrailPage(CosmeticManager plugin, CosmeticShop shop, CoreClientManager clientManager, DonationManager donationManager, String name, + Player player) + { + super(plugin, shop, clientManager, donationManager, name, player); + } + + @Override + protected void buildPage() + { + int slot = 19; + + for (Gadget gadget : getPlugin().getGadgetManager().getGadgets(GadgetType.ArrowTrail)) + { + addGadget(gadget, slot); + + if (getPlugin().getGadgetManager().getActive(getPlayer(), GadgetType.Morph) == gadget) + addGlow(slot); + + slot++; + + if (slot == 26) + slot = 28; + } + + addButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[]{}, 1, false), new IButton() + { + public void onClick(Player player, ClickType clickType) + { + getShop().openPageForPlayer(getPlayer(), new Menu(getPlugin(), getShop(), getClientManager(), getDonationManager(), player)); + } + }); + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/DeathEffectPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/DeathEffectPage.java new file mode 100644 index 000000000..838c60806 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/DeathEffectPage.java @@ -0,0 +1,53 @@ +package mineplex.core.cosmetic.ui.page; + +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.ClickType; + +import mineplex.core.account.CoreClientManager; +import mineplex.core.common.util.C; +import mineplex.core.cosmetic.CosmeticManager; +import mineplex.core.cosmetic.ui.CosmeticShop; +import mineplex.core.donation.DonationManager; +import mineplex.core.gadget.types.Gadget; +import mineplex.core.gadget.types.GadgetType; +import mineplex.core.shop.item.IButton; +import mineplex.core.shop.item.ShopItem; + +public class DeathEffectPage extends GadgetPage +{ + + public DeathEffectPage(CosmeticManager plugin, CosmeticShop shop, CoreClientManager clientManager, DonationManager donationManager, + String name, Player player) + { + super(plugin, shop, clientManager, donationManager, name, player); + } + + @Override + protected void buildPage() + { + int slot = 19; + + for (Gadget gadget : getPlugin().getGadgetManager().getGadgets(GadgetType.Death)) + { + addGadget(gadget, slot); + + if (getPlugin().getGadgetManager().getActive(getPlayer(), GadgetType.Morph) == gadget) + addGlow(slot); + + slot++; + + if (slot == 26) + slot = 28; + } + + addButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[]{}, 1, false), new IButton() + { + public void onClick(Player player, ClickType clickType) + { + getShop().openPageForPlayer(getPlayer(), new Menu(getPlugin(), getShop(), getClientManager(), getDonationManager(), player)); + } + }); + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/DoubleJumpPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/DoubleJumpPage.java new file mode 100644 index 000000000..43efbee35 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/DoubleJumpPage.java @@ -0,0 +1,53 @@ +package mineplex.core.cosmetic.ui.page; + +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.ClickType; + +import mineplex.core.account.CoreClientManager; +import mineplex.core.common.util.C; +import mineplex.core.cosmetic.CosmeticManager; +import mineplex.core.cosmetic.ui.CosmeticShop; +import mineplex.core.donation.DonationManager; +import mineplex.core.gadget.types.Gadget; +import mineplex.core.gadget.types.GadgetType; +import mineplex.core.shop.item.IButton; +import mineplex.core.shop.item.ShopItem; + +public class DoubleJumpPage extends GadgetPage +{ + + public DoubleJumpPage(CosmeticManager plugin, CosmeticShop shop, CoreClientManager clientManager, DonationManager donationManager, String name, + Player player) + { + super(plugin, shop, clientManager, donationManager, name, player); + } + + @Override + protected void buildPage() + { + int slot = 19; + + for (Gadget gadget : getPlugin().getGadgetManager().getGadgets(GadgetType.DoubleJump)) + { + addGadget(gadget, slot); + + if (getPlugin().getGadgetManager().getActive(getPlayer(), GadgetType.Morph) == gadget) + addGlow(slot); + + slot++; + + if (slot == 26) + slot = 28; + } + + addButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[]{}, 1, false), new IButton() + { + public void onClick(Player player, ClickType clickType) + { + getShop().openPageForPlayer(getPlayer(), new Menu(getPlugin(), getShop(), getClientManager(), getDonationManager(), player)); + } + }); + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/HatPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/HatPage.java new file mode 100644 index 000000000..8ea9fff22 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/HatPage.java @@ -0,0 +1,57 @@ +package mineplex.core.cosmetic.ui.page; + +import java.util.List; + +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.ClickType; + +import mineplex.core.account.CoreClientManager; +import mineplex.core.common.util.C; +import mineplex.core.cosmetic.CosmeticManager; +import mineplex.core.cosmetic.ui.CosmeticShop; +import mineplex.core.donation.DonationManager; +import mineplex.core.gadget.types.Gadget; +import mineplex.core.gadget.types.GadgetType; +import mineplex.core.shop.item.IButton; +import mineplex.core.shop.item.ShopItem; + +public class HatPage extends GadgetPage +{ + + + public HatPage(CosmeticManager plugin, CosmeticShop shop, CoreClientManager clientManager, DonationManager donationManager, String name, + Player player) + { + super(plugin, shop, clientManager, donationManager, name, player); + } + + @Override + protected void buildPage() + { + int slot = 19; + + List list = getPlugin().getGadgetManager().getGadgets(GadgetType.Hat); + if(list != null) + for (Gadget gadget : list) + { + addGadget(gadget, slot); + + if (getPlugin().getGadgetManager().getActive(getPlayer(), GadgetType.Morph) == gadget) + addGlow(slot); + + slot++; + + if (slot == 26) + slot = 28; + } + + addButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[]{}, 1, false), new IButton() + { + public void onClick(Player player, ClickType clickType) + { + getShop().openPageForPlayer(getPlayer(), new Menu(getPlugin(), getShop(), getClientManager(), getDonationManager(), player)); + } + }); + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java index e77751779..143794f24 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java @@ -6,15 +6,19 @@ import org.bukkit.entity.Creature; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; -import org.bukkit.inventory.ItemStack; import mineplex.core.account.CoreClientManager; import mineplex.core.common.CurrencyType; import mineplex.core.common.util.C; +import mineplex.core.common.util.F; import mineplex.core.cosmetic.CosmeticManager; import mineplex.core.cosmetic.ui.CosmeticShop; +import mineplex.core.cosmetic.ui.button.OpenArrowTrails; import mineplex.core.cosmetic.ui.button.OpenCostumes; +import mineplex.core.cosmetic.ui.button.OpenDeathAnimations; +import mineplex.core.cosmetic.ui.button.OpenDoubleJump; import mineplex.core.cosmetic.ui.button.OpenGadgets; +import mineplex.core.cosmetic.ui.button.OpenHats; import mineplex.core.cosmetic.ui.button.OpenMorphs; import mineplex.core.cosmetic.ui.button.OpenMounts; import mineplex.core.cosmetic.ui.button.OpenMusic; @@ -66,67 +70,80 @@ public class Menu extends ShopPageBase ChatColor.RESET + "Receives 30000 Coins per Month" }, 1, false)); -// addItem(6, new ShopItem(Material.GOLD_INGOT, donor.getGold() + " Gold", new String[] { -// " " -// }, 1, false)); - - addButton(18, new ShopItem(Material.NETHER_STAR, "Particle Effects", 1, false), new OpenParticles(this)); - addButton(20, new ShopItem(Material.BOW, "Gadgets", 1, false), new OpenGadgets(this)); - addButton(22, new ShopItem(Material.LEATHER, "Morphs", 1, false), new OpenMorphs(this)); - addButton(24, new ShopItem(Material.IRON_BARDING, "Mounts", 1, false), new OpenMounts(this)); - addButton(26, new ShopItem(Material.BONE, "Pets", 1, false), new OpenPets(this)); - // - addButton(48, new ShopItem(Material.GOLD_CHESTPLATE, "Costumes", 1, false), new OpenCostumes(this)); - addButton(50, new ShopItem(Material.GREEN_RECORD, "Music", 1, false), new OpenMusic(this)); - - if (getPlugin().getGadgetManager().getActive(getPlayer(), GadgetType.Particle) != null) - { - final Gadget gadget = getPlugin().getGadgetManager().getActive(getPlayer(), GadgetType.Particle); - - addButton(18 + 9, - new ShopItem(gadget.GetDisplayMaterial(), gadget.GetDisplayData(), ChatColor.RESET + C.mItem + gadget.GetName(), new String[]{}, 1, false, false), - new IButton() - { - public void onClick(Player player, ClickType clickType) - { - playAcceptSound(player); - gadget.Disable(player); - refresh(); - } - }); - } - - if (getPlugin().getGadgetManager().getActive(getPlayer(), GadgetType.Item) != null) - { - final Gadget gadget = getPlugin().getGadgetManager().getActive(getPlayer(), GadgetType.Item); - - addButton(20 + 9, - new ShopItem(gadget.GetDisplayMaterial(), gadget.GetDisplayData(), ChatColor.RESET + C.mItem + gadget.GetName(), new String[]{}, 1, false, false), - new IButton() - { - public void onClick(Player player, ClickType clickType) - { - playAcceptSound(player); - gadget.Disable(player); - refresh(); - } - }); - } + addButton(10, new ShopItem(Material.NETHER_STAR, "Particle Effects", 1, false), new OpenParticles(this)); + addButton(12, new ShopItem(Material.ARROW, "Arrow Trails", 1, false), new OpenArrowTrails(this)); + addButton(14, new ShopItem(Material.GOLD_BOOTS, "Double Jump Effects", 1, false), new OpenDoubleJump(this)); + addButton(16, new ShopItem(Material.SKULL_ITEM, "Death Animations", 1, false), new OpenDeathAnimations(this)); - if (getPlugin().getGadgetManager().getActive(getPlayer(), GadgetType.Morph) != null) + addButton(28, new ShopItem(Material.MELON_BLOCK, "Gadgets", 1, false), new OpenGadgets(this)); + addButton(30, new ShopItem(Material.LEATHER, "Morphs", 1, false), new OpenMorphs(this)); + addButton(32, new ShopItem(Material.IRON_BARDING, "Mounts", 1, false), new OpenMounts(this)); + addButton(34, new ShopItem(Material.BONE, "Pets", 1, false), new OpenPets(this)); + + addButton(46, new ShopItem(Material.GOLD_HELMET, "Hats", 1, false), new OpenHats(this)); + addButton(48, new ShopItem(Material.DIAMOND_CHESTPLATE, "Costumes", 1, false), new OpenCostumes(this)); + addButton(50, new ShopItem(Material.GREEN_RECORD, "Music", 1, false), new OpenMusic(this)); + addButton(52, new ShopItem(Material.NAME_TAG, "Taunts", 1, false), new IButton() { - final Gadget gadget = getPlugin().getGadgetManager().getActive(getPlayer(), GadgetType.Morph); - - addButton(22 + 9, - new ShopItem(gadget.GetDisplayMaterial(), gadget.GetDisplayData(), ChatColor.RESET + C.mItem + gadget.GetName(), new String[]{}, 1, false, false), + @Override + public void onClick(Player player, ClickType clickType) + { + player.sendMessage(F.main("Shop", "Comming soon!")); + } + }); + + for(GadgetType type : GadgetType.values()) + { + final Gadget gadget = getPlugin().getGadgetManager().getActive(getPlayer(), type); + if(gadget == null) continue; + + int slot = 10; + switch (type) + { + case Particle: + slot = 10; + break; + case ArrowTrail: + slot = 12; + break; + case DoubleJump: + slot = 14; + break; + case Death: + slot = 16; + break; + case Item: + slot = 28; + break; + case Morph: + slot = 30; + break; + case Hat: + slot = 46; + break; + case Costume: + slot = 48; + break; + case MusicDisc: + slot = 50; + break; + case Taunt: + slot = 52; + break; + default: + slot = 10; + break; + } + slot += 9; + + addButton(slot, new ShopItem(gadget.GetDisplayMaterial(), gadget.GetDisplayData(), C.mItem + gadget.GetName(), new String[0], 1, false, false), new IButton() { - public void onClick(Player player, ClickType clickType) - { + public void onClick(Player player, ClickType clickType) { playAcceptSound(player); gadget.Disable(player); refresh(); - } + }; }); } @@ -134,8 +151,8 @@ public class Menu extends ShopPageBase { final Mount mount = getPlugin().getMountManager().getActive(getPlayer()); - addButton(24 + 9, - new ShopItem(mount.GetDisplayMaterial(), mount.GetDisplayData(), ChatColor.RESET + C.mItem + mount.GetName(), new String[]{}, 1, false, false), + addButton(32 + 9, + new ShopItem(mount.GetDisplayMaterial(), mount.GetDisplayData(), C.mItem + mount.GetName(), new String[0], 1, false, false), new IButton() { public void onClick(Player player, ClickType clickType) @@ -151,7 +168,7 @@ public class Menu extends ShopPageBase { Creature activePet = getPlugin().getPetManager().getActivePet(getPlayer().getName()); String petName = activePet.getType() == EntityType.WITHER ? "Widder" : activePet.getCustomName(); - addButton(26 + 9, new ShopItem(Material.MONSTER_EGG, (byte) getPlugin().getPetManager().getActivePet(getPlayer().getName()).getType().getTypeId(), ChatColor.RESET + C.mItem + petName, new String[]{}, 1, false, false), + addButton(34 + 9, new ShopItem(Material.MONSTER_EGG, (byte) getPlugin().getPetManager().getActivePet(getPlayer().getName()).getType().getTypeId(), C.mItem + petName, new String[0], 1, false, false), new IButton() { public void onClick(Player player, ClickType clickType) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/MorphPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/MorphPage.java index 508a58276..fb425172d 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/MorphPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/MorphPage.java @@ -37,6 +37,8 @@ public class MorphPage extends GadgetPage if (slot == 26) slot = 28; + if (slot == 35) + slot = 37; } addButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[]{}, 1, false), new IButton() diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/TauntPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/TauntPage.java new file mode 100644 index 000000000..93aeac8d5 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/TauntPage.java @@ -0,0 +1,57 @@ +package mineplex.core.cosmetic.ui.page; + +import java.util.List; + +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.ClickType; + +import mineplex.core.account.CoreClientManager; +import mineplex.core.common.util.C; +import mineplex.core.cosmetic.CosmeticManager; +import mineplex.core.cosmetic.ui.CosmeticShop; +import mineplex.core.donation.DonationManager; +import mineplex.core.gadget.types.Gadget; +import mineplex.core.gadget.types.GadgetType; +import mineplex.core.shop.item.IButton; +import mineplex.core.shop.item.ShopItem; + +public class TauntPage extends GadgetPage +{ + + + public TauntPage(CosmeticManager plugin, CosmeticShop shop, CoreClientManager clientManager, DonationManager donationManager, String name, + Player player) + { + super(plugin, shop, clientManager, donationManager, name, player); + } + + @Override + protected void buildPage() + { + int slot = 19; + + List list = getPlugin().getGadgetManager().getGadgets(GadgetType.Taunt); + if(list != null) + for (Gadget gadget : list) + { + addGadget(gadget, slot); + + if (getPlugin().getGadgetManager().getActive(getPlayer(), GadgetType.Morph) == gadget) + addGlow(slot); + + slot++; + + if (slot == 26) + slot = 28; + } + + addButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[]{}, 1, false), new IButton() + { + public void onClick(Player player, ClickType clickType) + { + getShop().openPageForPlayer(getPlayer(), new Menu(getPlugin(), getShop(), getClientManager(), getDonationManager(), player)); + } + }); + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java index e612c3350..836cc0aec 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java @@ -3,39 +3,6 @@ package mineplex.core.gadget; import java.util.ArrayList; import java.util.List; -import mineplex.core.MiniPlugin; -import mineplex.core.account.CoreClientManager; -import mineplex.core.achievement.AchievementManager; -import mineplex.core.blockrestore.BlockRestore; -import mineplex.core.common.Rank; -import mineplex.core.common.util.NautHashMap; -import mineplex.core.common.util.UtilMath; -import mineplex.core.common.util.UtilServer; -import mineplex.core.common.util.UtilTime; -import mineplex.core.disguise.DisguiseManager; -import mineplex.core.donation.DonationManager; -import mineplex.core.gadget.event.GadgetCollideEntityEvent; -import mineplex.core.gadget.gadgets.arrowtrail.*; -import mineplex.core.gadget.gadgets.death.*; -import mineplex.core.gadget.gadgets.doublejump.*; -import mineplex.core.gadget.gadgets.item.*; -import mineplex.core.gadget.gadgets.morph.*; -import mineplex.core.gadget.gadgets.outfit.*; -import mineplex.core.gadget.gadgets.particle.*; -import mineplex.core.gadget.types.Gadget; -import mineplex.core.gadget.types.GadgetType; -import mineplex.core.gadget.types.ItemGadget; -import mineplex.core.gadget.types.MorphGadget; -import mineplex.core.gadget.types.MusicGadget; -import mineplex.core.gadget.types.OutfitGadget; -import mineplex.core.gadget.types.OutfitGadget.ArmorSlot; -import mineplex.core.gadget.types.ParticleGadget; -import mineplex.core.inventory.InventoryManager; -import mineplex.core.mount.MountManager; -import mineplex.core.pet.PetManager; -import mineplex.core.preferences.PreferencesManager; -import mineplex.core.projectile.ProjectileManager; - import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; @@ -49,6 +16,82 @@ import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerToggleSneakEvent; import org.bukkit.plugin.java.JavaPlugin; +import mineplex.core.MiniPlugin; +import mineplex.core.account.CoreClientManager; +import mineplex.core.achievement.AchievementManager; +import mineplex.core.blockrestore.BlockRestore; +import mineplex.core.common.Rank; +import mineplex.core.common.util.NautHashMap; +import mineplex.core.common.util.UtilEnt; +import mineplex.core.common.util.UtilMath; +import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilTime; +import mineplex.core.disguise.DisguiseManager; +import mineplex.core.donation.DonationManager; +import mineplex.core.gadget.event.GadgetCollideEntityEvent; +import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailCandyCane; +import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailFrostLord; +import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailTitan; +import mineplex.core.gadget.gadgets.death.DeathCandyCane; +import mineplex.core.gadget.gadgets.death.DeathFrostLord; +import mineplex.core.gadget.gadgets.death.DeathTitan; +import mineplex.core.gadget.gadgets.doublejump.DoubleJumpCandyCane; +import mineplex.core.gadget.gadgets.doublejump.DoubleJumpFrostLord; +import mineplex.core.gadget.gadgets.doublejump.DoubleJumpTitan; +import mineplex.core.gadget.gadgets.item.ItemBatGun; +import mineplex.core.gadget.gadgets.item.ItemCoinBomb; +import mineplex.core.gadget.gadgets.item.ItemDuelingSword; +import mineplex.core.gadget.gadgets.item.ItemEtherealPearl; +import mineplex.core.gadget.gadgets.item.ItemFirework; +import mineplex.core.gadget.gadgets.item.ItemFleshHook; +import mineplex.core.gadget.gadgets.item.ItemMelonLauncher; +import mineplex.core.gadget.gadgets.item.ItemPaintballGun; +import mineplex.core.gadget.gadgets.item.ItemPaintbrush; +import mineplex.core.gadget.gadgets.item.ItemPartyPopper; +import mineplex.core.gadget.gadgets.item.ItemTNT; +import mineplex.core.gadget.gadgets.morph.MorphBat; +import mineplex.core.gadget.gadgets.morph.MorphBlaze; +import mineplex.core.gadget.gadgets.morph.MorphBlock; +import mineplex.core.gadget.gadgets.morph.MorphBunny; +import mineplex.core.gadget.gadgets.morph.MorphChicken; +import mineplex.core.gadget.gadgets.morph.MorphCow; +import mineplex.core.gadget.gadgets.morph.MorphCreeper; +import mineplex.core.gadget.gadgets.morph.MorphEnderman; +import mineplex.core.gadget.gadgets.morph.MorphPig; +import mineplex.core.gadget.gadgets.morph.MorphPumpkinKing; +import mineplex.core.gadget.gadgets.morph.MorphSlime; +import mineplex.core.gadget.gadgets.morph.MorphSnowman; +import mineplex.core.gadget.gadgets.morph.MorphTitan; +import mineplex.core.gadget.gadgets.morph.MorphVillager; +import mineplex.core.gadget.gadgets.morph.MorphWither; +import mineplex.core.gadget.gadgets.outfit.OutfitRaveSuit; +import mineplex.core.gadget.gadgets.outfit.OutfitSpaceSuit; +import mineplex.core.gadget.gadgets.outfit.OutfitTeam; +import mineplex.core.gadget.gadgets.particle.ParticleCandyCane; +import mineplex.core.gadget.gadgets.particle.ParticleEnchant; +import mineplex.core.gadget.gadgets.particle.ParticleFairy; +import mineplex.core.gadget.gadgets.particle.ParticleFireRings; +import mineplex.core.gadget.gadgets.particle.ParticleFoot; +import mineplex.core.gadget.gadgets.particle.ParticleFrostLord; +import mineplex.core.gadget.gadgets.particle.ParticleGreen; +import mineplex.core.gadget.gadgets.particle.ParticleHeart; +import mineplex.core.gadget.gadgets.particle.ParticleHelix; +import mineplex.core.gadget.gadgets.particle.ParticleLegend; +import mineplex.core.gadget.gadgets.particle.ParticleRain; +import mineplex.core.gadget.gadgets.particle.ParticleTitan; +import mineplex.core.gadget.types.Gadget; +import mineplex.core.gadget.types.GadgetType; +import mineplex.core.gadget.types.ItemGadget; +import mineplex.core.gadget.types.MusicGadget; +import mineplex.core.gadget.types.OutfitGadget; +import mineplex.core.gadget.types.OutfitGadget.ArmorSlot; +import mineplex.core.gadget.types.ParticleGadget; +import mineplex.core.inventory.InventoryManager; +import mineplex.core.mount.MountManager; +import mineplex.core.pet.PetManager; +import mineplex.core.preferences.PreferencesManager; +import mineplex.core.projectile.ProjectileManager; + public class GadgetManager extends MiniPlugin { private CoreClientManager _clientManager; @@ -103,6 +146,7 @@ public class GadgetManager extends MiniPlugin addGadget(new ItemCoinBomb(this)); addGadget(new ItemPaintbrush(this)); addGadget(new ItemDuelingSword(this)); + addGadget(new ItemPartyPopper(this)); // Costume addGadget(new OutfitRaveSuit(this, "Rave Hat", -2, ArmorSlot.Helmet, Material.LEATHER_HELMET, (byte)0)); @@ -135,6 +179,7 @@ public class GadgetManager extends MiniPlugin addGadget(new MorphBunny(this)); addGadget(new MorphSlime(this, _achievementManager)); addGadget(new MorphTitan(this)); + addGadget(new MorphSnowman(this)); // Particles addGadget(new ParticleFoot(this)); @@ -148,18 +193,22 @@ public class GadgetManager extends MiniPlugin addGadget(new ParticleLegend(this)); addGadget(new ParticleFrostLord(this)); addGadget(new ParticleTitan(this)); + addGadget(new ParticleCandyCane(this)); // Arrow Trails addGadget(new ArrowTrailFrostLord(this)); addGadget(new ArrowTrailTitan(this)); + addGadget(new ArrowTrailCandyCane(this)); // Death Effect addGadget(new DeathFrostLord(this)); addGadget(new DeathTitan(this)); + addGadget(new DeathCandyCane(this)); // Double Jump addGadget(new DoubleJumpFrostLord(this)); addGadget(new DoubleJumpTitan(this)); + addGadget(new DoubleJumpCandyCane(this)); // Music @@ -207,6 +256,7 @@ public class GadgetManager extends MiniPlugin return _gadgets.get(gadgetType); } + // Disallows two armor gadgets in same slot. public void RemoveOutfit(Player player, ArmorSlot slot) { @@ -227,6 +277,7 @@ public class GadgetManager extends MiniPlugin } } + /* public void RemoveItem(Player player) { for (GadgetType gadgetType : _gadgets.keySet()) @@ -274,6 +325,17 @@ public class GadgetManager extends MiniPlugin } } } + */ + + public void removeGadetType(Player player, GadgetType type) + { + List gadgets = _gadgets.get(type); + if(gadgets == null) return; + for(Gadget g : gadgets) + { + g.Disable(player); + } + } public void DisableAll() { @@ -367,7 +429,7 @@ public class GadgetManager extends MiniPlugin @EventHandler public void setMoving(PlayerMoveEvent event) { - if (UtilMath.offset(event.getFrom(), event.getTo()) <= 0) + if (UtilMath.offset(event.getFrom(), event.getTo()) <= 0.1) return; _lastMove.put(event.getPlayer(), System.currentTimeMillis()); @@ -375,6 +437,8 @@ public class GadgetManager extends MiniPlugin public boolean isMoving(Player player) { + if (!UtilEnt.isGrounded(player)) return true; + if (!_lastMove.containsKey(player)) return false; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailCandyCane.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailCandyCane.java new file mode 100644 index 000000000..1b9741cfe --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailCandyCane.java @@ -0,0 +1,48 @@ +package mineplex.core.gadget.gadgets.arrowtrail; + +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.entity.Arrow; + +import mineplex.core.common.util.C; +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilParticle.ViewDist; +import mineplex.core.common.util.UtilTime; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.types.ArrowEffectGadget; + +public class ArrowTrailCandyCane extends ArrowEffectGadget +{ + + public ArrowTrailCandyCane(GadgetManager manager) + { + super(manager, "Candy Cane Arrow Effect", new String[] + { + C.cWhite + "We whish you a marry " + C.Scramble + "christmas" + C.cWhite + ".", + }, + 1, + Material.SNOW_BALL, (byte)0); + } + + @Override + public void doTrail(Arrow arrow) + { + int data = 15; + int tick = Math.abs(UtilTime.getServerTick()%3); + if(tick == 1) data = 1; + if(tick == 2) data = 2; + Location loc = arrow.getLocation(); + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.INK_SACK, data), loc, 0, 0, 0, 0.0f, 1, ViewDist.NORMAL); + } + + @Override + public void doHitEffect(Arrow arrow) + { + Location loc = arrow.getLocation(); + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.INK_SACK, 15), loc, 0, 0, 0, 0.1f, 20, ViewDist.NORMAL); + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.INK_SACK, 1), loc, 0, 0, 0, 0.1f, 20, ViewDist.NORMAL); + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.INK_SACK, 2), loc, 0, 0, 0, 0.1f, 20, ViewDist.NORMAL); + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailFrostLord.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailFrostLord.java index 90659d76e..658c25e72 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailFrostLord.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailFrostLord.java @@ -15,15 +15,13 @@ public class ArrowTrailFrostLord extends ArrowEffectGadget { public ArrowTrailFrostLord(GadgetManager manager) { - super(manager, "Frost Lord", new String[] + super(manager, "Frost Lord Arrow Trail", new String[] { C.cWhite + "You are a mighty frost lord.", C.cWhite + "Your double jumps and arrows", C.cWhite + "are enchanted with snow powers.", - " ", - C.cPurple + "No longer available", }, - -1, + 10, Material.SNOW_BALL, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathCandyCane.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathCandyCane.java new file mode 100644 index 000000000..524b45244 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathCandyCane.java @@ -0,0 +1,49 @@ +package mineplex.core.gadget.gadgets.death; + +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.event.EventHandler; + +import mineplex.core.blood.BloodEvent; +import mineplex.core.common.util.C; +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilParticle.ViewDist; +import mineplex.core.gadget.types.DeathEffectGadget; +import mineplex.core.gadget.GadgetManager; + +public class DeathCandyCane extends DeathEffectGadget +{ + public DeathCandyCane(GadgetManager manager) + { + super(manager, "Candy Cane Effect", new String[] + { + C.cWhite + "COLORS FTW!", + C.cWhite + "Take damage with SWAG B)", + }, + 10, + Material.SNOW_BALL, (byte)0); + } + + @EventHandler + public void death(BloodEvent event) + { + if (event.getPlayer() == null) + return; + + if (!IsActive(event.getPlayer())) + return; + + if (!shouldDisplay(event.getPlayer())) + return; + + event.setCancelled(true); + + event.setItem(Material.INK_SACK, (byte) 15); + + Location loc = event.getLocation(); + int a = event.getParticles(); + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.INK_SACK, 1), loc, 0, 0, 0, 0.1f, a, ViewDist.NORMAL); + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.INK_SACK, 2), loc, 0, 0, 0, 0.1f, a, ViewDist.NORMAL); + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathFrostLord.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathFrostLord.java index a0ec45f09..91cc05ad6 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathFrostLord.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathFrostLord.java @@ -12,15 +12,13 @@ public class DeathFrostLord extends DeathEffectGadget { public DeathFrostLord(GadgetManager manager) { - super(manager, "Frost Lord", new String[] + super(manager, "Frost Lord Death Effect", new String[] { C.cWhite + "You are a mighty frost lord.", C.cWhite + "Your double jumps and arrows", C.cWhite + "are enchanted with snow powers.", - " ", - C.cPurple + "No longer available", }, - -1, + 10, Material.SNOW_BALL, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpCandyCane.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpCandyCane.java new file mode 100644 index 000000000..090963762 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpCandyCane.java @@ -0,0 +1,36 @@ +package mineplex.core.gadget.gadgets.doublejump; + +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.entity.Player; + +import mineplex.core.common.util.C; +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilParticle.ViewDist; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.types.DoubleJumpEffectGadget; + +public class DoubleJumpCandyCane extends DoubleJumpEffectGadget +{ + + public DoubleJumpCandyCane(GadgetManager manager) + { + super(manager, "Candy Cane Jump Effect", new String[] + { + C.cWhite + "We whish you a marry " + C.Scramble + "christmas" + C.cWhite + ".", + }, + 1, + Material.SNOW_BALL, (byte)0); + } + + @Override + public void doEffect(Player player) + { + Location loc = player.getLocation(); + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.INK_SACK, 15), loc, 0, 0, 0, 0.15f, 100, ViewDist.NORMAL); + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.INK_SACK, 1), loc, 0, 0, 0, 0.15f, 100, ViewDist.NORMAL); + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.INK_SACK, 2), loc, 0, 0, 0, 0.15f, 100, ViewDist.NORMAL); + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpFrostLord.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpFrostLord.java index 9c7cdc726..365d6d1ce 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpFrostLord.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpFrostLord.java @@ -17,15 +17,11 @@ public class DoubleJumpFrostLord extends DoubleJumpEffectGadget { public DoubleJumpFrostLord(GadgetManager manager) { - super(manager, "Frost Lord", new String[] + super(manager, "Frost Lord Jump Effect", new String[] { - C.cWhite + "You are a mighty frost lord.", - C.cWhite + "Your double jumps and arrows", - C.cWhite + "are enchanted with snow powers.", - " ", - C.cPurple + "No longer available", + C.cWhite + "More snow incomming.", }, - -1, + 1, Material.SNOW_BALL, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpTitan.java index 618c8eff3..ed418db96 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpTitan.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpTitan.java @@ -36,6 +36,7 @@ public class DoubleJumpTitan extends DoubleJumpEffectGadget { UtilParticle.PlayParticle(ParticleType.LAVA, player.getLocation(), 0f, 0f, 0f, 0.2f, 40, ViewDist.NORMAL, UtilServer.getPlayers()); + UtilParticle.PlayParticleToAll(ParticleType.FLAME, player.getLocation(), 0, 0, 0, 0.2f, 40, ViewDist.NORMAL); } @EventHandler diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemDuelingSword.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemDuelingSword.java index 07456110c..99a7d217f 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemDuelingSword.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemDuelingSword.java @@ -8,6 +8,7 @@ import org.bukkit.event.player.PlayerInteractEvent; import mineplex.core.common.util.C; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.gadgets.Ammo; +import mineplex.core.gadget.types.GadgetType; import mineplex.core.gadget.types.ItemGadget; import mineplex.core.itemstack.ItemStackFactory; @@ -27,7 +28,7 @@ public class ItemDuelingSword extends ItemGadget @Override public void ApplyItem(Player player, boolean inform) { - Manager.RemoveItem(player); + Manager.removeGadetType(player, GadgetType.Item); _active.add(player); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPaintbrush.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPaintbrush.java index 93070d3ad..a7cbba607 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPaintbrush.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPaintbrush.java @@ -28,6 +28,7 @@ import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.gadgets.Ammo; +import mineplex.core.gadget.types.GadgetType; import mineplex.core.gadget.types.ItemGadget; import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.updater.UpdateType; @@ -56,7 +57,7 @@ public class ItemPaintbrush extends ItemGadget @Override public void ApplyItem(Player player, boolean inform) { - Manager.RemoveItem(player); + Manager.removeGadetType(player, GadgetType.Item); _active.add(player); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSnowman.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSnowman.java new file mode 100644 index 000000000..6e7d29b8e --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSnowman.java @@ -0,0 +1,127 @@ +package mineplex.core.gadget.gadgets.morph; + +import java.util.WeakHashMap; + +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.entity.Projectile; +import org.bukkit.entity.Snowball; +import org.bukkit.event.EventHandler; +import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.util.Vector; + +import mineplex.core.common.util.C; +import mineplex.core.common.util.F; +import mineplex.core.common.util.NautHashMap; +import mineplex.core.common.util.UtilAction; +import mineplex.core.common.util.UtilEvent; +import mineplex.core.common.util.UtilEvent.ActionType; +import mineplex.core.common.util.UtilMath; +import mineplex.core.disguise.disguises.DisguiseSnowman; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.event.GadgetCollideEntityEvent; +import mineplex.core.gadget.types.MorphGadget; +import mineplex.core.recharge.Recharge; +import mineplex.core.recharge.RechargeData; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; + +public class MorphSnowman extends MorphGadget +{ + + private WeakHashMap _snowball = new WeakHashMap(); + + public MorphSnowman(GadgetManager manager) + { + super(manager, "Snowman Morph", + new String[]{ C.cWhite + "Do you wanna build a snowman?", C.cWhite + "It doesn't have to be a snowman...", + C.cWhite + "Or... it kind of does...", " ", C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Snowball", }, + 6000, Material.SNOW_BALL, (byte) 0); + } + + @Override + public void EnableCustom(Player player) + { + this.ApplyArmor(player); + + DisguiseSnowman disguise = new DisguiseSnowman(player); + disguise.setName(player.getName(), Manager.getClientManager().Get(player).GetRank()); + disguise.setCustomNameVisible(true); + Manager.getDisguiseManager().disguise(disguise); + } + + @Override + public void DisableCustom(Player player) + { + this.RemoveArmor(player); + Manager.getDisguiseManager().undisguise(player); + } + + @EventHandler + public void onInteract(PlayerInteractEvent event) + { + if(!IsActive(event.getPlayer())) return; + + if(!UtilEvent.isAction(event, ActionType.L)) return; + + if(event.getItem() != null && event.getItem().getType() != Material.AIR) return; + + if(Recharge.Instance.use(event.getPlayer(), "Blizzard", 12000, true, true)) + { + event.getPlayer().sendMessage(F.main("Recharge", "You used " + F.skill("Blizzard") + ".")); + } + } + + @EventHandler + public void Snow(UpdateEvent event) + { + if (event.getType() != UpdateType.FASTEST) + return; + + for (Player player : GetActive()) + { + NautHashMap map = Recharge.Instance.Get(player); + if(map == null) continue; + + RechargeData data = map.get("Blizzard"); + if(data == null) continue; + if(data.GetRemaining() < 10000) continue; + + for (int i=0 ; i<4 ; i++) + { + Snowball snow = player.getWorld().spawn(player.getEyeLocation().add(player.getLocation().getDirection()), Snowball.class); + double x = 0.1 - (UtilMath.r(20)/100d); + double y = UtilMath.r(20)/100d; + double z = 0.1 - (UtilMath.r(20)/100d); + snow.setShooter(player); + snow.setVelocity(player.getLocation().getDirection().add(new Vector(x,y,z)).multiply(2)); + _snowball.put(snow, player); + } + + //Effect + player.getWorld().playSound(player.getLocation(), Sound.STEP_SNOW, 0.2f, 0.5f); + } + } + + @EventHandler + public void Snowball(EntityDamageByEntityEvent event) + { + if (!(event.getDamager() instanceof Snowball)) + return; + + Snowball proj = (Snowball) event.getDamager(); + + if (!_snowball.containsKey(proj)) + return; + + GadgetCollideEntityEvent gevent = new GadgetCollideEntityEvent(this, event.getEntity()); + + if(gevent.isCancelled()) return; + + UtilAction.velocity(event.getEntity(), proj.getVelocity().multiply(0.15).add(new Vector(0, 0.15, 0))); + } + + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitTeam.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitTeam.java index c994f299c..2e65b7ae5 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitTeam.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitTeam.java @@ -20,6 +20,7 @@ import mineplex.core.common.util.UtilGear; import mineplex.core.common.util.UtilPlayer; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.event.GadgetActivateEvent; +import mineplex.core.gadget.types.GadgetType; import mineplex.core.gadget.types.OutfitGadget; import mineplex.core.gadget.types.OutfitGadget.ArmorSlot; import mineplex.core.itemstack.ItemStackFactory; @@ -55,7 +56,7 @@ public class OutfitTeam extends OutfitGadget @Override public void ApplyArmor(Player player) { - Manager.RemoveMorph(player); + Manager.removeGadetType(player, GadgetType.Morph); Manager.RemoveOutfit(player, _slot); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCandyCane.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCandyCane.java new file mode 100644 index 000000000..110cbc4e8 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCandyCane.java @@ -0,0 +1,93 @@ +package mineplex.core.gadget.gadgets.particle; + +import java.util.HashMap; +import java.util.UUID; + +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.util.Vector; + +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilParticle.ViewDist; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.types.ParticleGadget; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; + +public class ParticleCandyCane extends ParticleGadget +{ + + private HashMap _map = new HashMap(); + + public ParticleCandyCane(GadgetManager manager) + { + super(manager, "Candy Cane Particle", new String[]{"Christmas. Nuf said."}, 10, Material.CHEST, (byte)0); + } + + @EventHandler + public void onUpdate(UpdateEvent event) + { + if (event.getType() != UpdateType.TICK) + return; + + for(Player player : GetActive()) + { + if (!shouldDisplay(player)) + continue; + + boolean moving = Manager.isMoving(player); + Location loc = player.getLocation(); + float y = moving? 0.2f : 0.15f; + double yadd = getY(player); + if(!moving && yadd < 2.1) + { + yadd += 0.05; + setY(player, yadd); + } + if(moving && yadd > 0.7) + { + yadd = 0.7; + setY(player, yadd); + } + loc.add(0, yadd, 0); + + float w = 0.2f; + int a = moving? 2 : 6; + + if(!moving) + { + double d = Math.PI*2 * (event.getTick()/50.0); + Vector v = new Vector(Math.sin(d), 0, Math.cos(d)); + loc.add(v); + } + + + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.INK_SACK, 15), loc, w, y, w, 0, a, ViewDist.NORMAL); + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.INK_SACK, 1), loc, w, y, w, 0, a, ViewDist.NORMAL); + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.INK_SACK, 2), loc, w, y, w, 0, a, ViewDist.NORMAL); + } + } + + @EventHandler + public void onQuit(PlayerQuitEvent event) + { + _map.remove(event.getPlayer().getUniqueId()); + } + + private void setY(Player p, double y) + { + _map.put(p.getUniqueId(), y); + } + + private double getY(Player p) + { + Double y = _map.get(p.getUniqueId()); + if(y == null) return 3; + return y.doubleValue(); + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFrostLord.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFrostLord.java index 1b0c142f8..7d7a01928 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFrostLord.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFrostLord.java @@ -30,15 +30,13 @@ public class ParticleFrostLord extends ParticleGadget public ParticleFrostLord(GadgetManager manager) { - super(manager, "Frost Lord", new String[] + super(manager, "Frost Lord Particle", new String[] { C.cWhite + "You are a mighty frost lord.", C.cWhite + "Your double jumps and arrows", C.cWhite + "are enchanted with snow powers.", - " ", - C.cPurple + "No longer available", }, - -1, + 10, Material.SNOW_BALL, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ArrowEffectGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ArrowEffectGadget.java index de0705c04..596a1e3f7 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ArrowEffectGadget.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ArrowEffectGadget.java @@ -11,11 +11,7 @@ import org.bukkit.event.entity.ProjectileHitEvent; import org.bukkit.event.entity.ProjectileLaunchEvent; import mineplex.core.common.util.F; -import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilPlayer; -import mineplex.core.common.util.UtilServer; -import mineplex.core.common.util.UtilParticle.ParticleType; -import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.gadget.GadgetManager; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; @@ -32,7 +28,7 @@ public abstract class ArrowEffectGadget extends Gadget @Override public void EnableCustom(Player player) { - Manager.RemoveParticle(player); + Manager.removeGadetType(player, GadgetType.ArrowTrail); _active.add(player); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/DeathEffectGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/DeathEffectGadget.java index fe5b96f0f..031406193 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/DeathEffectGadget.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/DeathEffectGadget.java @@ -17,7 +17,7 @@ public abstract class DeathEffectGadget extends Gadget @Override public void EnableCustom(Player player) { - Manager.RemoveParticle(player); + Manager.removeGadetType(player, GadgetType.Death); _active.add(player); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/DoubleJumpEffectGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/DoubleJumpEffectGadget.java index a9e3ecfbf..84b02523a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/DoubleJumpEffectGadget.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/DoubleJumpEffectGadget.java @@ -23,7 +23,7 @@ public abstract class DoubleJumpEffectGadget extends Gadget @Override public void EnableCustom(Player player) { - Manager.RemoveParticle(player); + Manager.removeGadetType(player, GadgetType.DoubleJump); _active.add(player); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetType.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetType.java index 22de296e7..5daff04b2 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetType.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetType.java @@ -9,5 +9,7 @@ public enum GadgetType Costume, DoubleJump, ArrowTrail, - Death + Death, + Hat, + Taunt } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ItemGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ItemGadget.java index 232abb0eb..212964745 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ItemGadget.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ItemGadget.java @@ -64,7 +64,7 @@ public abstract class ItemGadget extends Gadget public void ApplyItem(Player player, boolean inform) { - Manager.RemoveItem(player); + Manager.removeGadetType(player, GadgetType.Item); _active.add(player); @@ -157,7 +157,7 @@ public abstract class ItemGadget extends Gadget { UtilInv.Update(player); return; - } + } Manager.getInventoryManager().addItemToInventory(player, GetName(), -1); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/MorphGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/MorphGadget.java index 47e121979..c90606af7 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/MorphGadget.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/MorphGadget.java @@ -19,7 +19,7 @@ public abstract class MorphGadget extends Gadget public void ApplyArmor(Player player) { - Manager.RemoveMorph(player); + Manager.removeGadetType(player, GadgetType.Morph); _active.add(player); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/OutfitGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/OutfitGadget.java index fabae966d..83c54ac96 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/OutfitGadget.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/OutfitGadget.java @@ -34,7 +34,7 @@ public abstract class OutfitGadget extends Gadget public void ApplyArmor(Player player) { - Manager.RemoveMorph(player); + Manager.removeGadetType(player, GadgetType.Morph); Manager.RemoveOutfit(player, _slot); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ParticleGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ParticleGadget.java index 3dadb6995..499972786 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ParticleGadget.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ParticleGadget.java @@ -1,6 +1,5 @@ package mineplex.core.gadget.types; -import org.bukkit.GameMode; import org.bukkit.Material; import org.bukkit.entity.Player; @@ -18,7 +17,7 @@ public abstract class ParticleGadget extends Gadget @Override public void EnableCustom(Player player) { - Manager.RemoveParticle(player); + Manager.removeGadetType(player, GadgetType.Particle); _active.add(player); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/MountManager.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/MountManager.java index 4de2d6666..814280180 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/MountManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/MountManager.java @@ -23,6 +23,7 @@ import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; import mineplex.core.disguise.DisguiseManager; import mineplex.core.donation.DonationManager; +import mineplex.core.mount.types.MountBabyReindeer; import mineplex.core.mount.types.MountCart; import mineplex.core.mount.types.MountDragon; import mineplex.core.mount.types.MountFrost; @@ -68,6 +69,7 @@ public class MountManager extends MiniPlugin _types.add(new MountSpider(this)); _types.add(new MountZombie(this)); _types.add(new MountTitan(this)); + _types.add(new MountBabyReindeer(this)); //_types.add(new MountSheep(this)); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountBabyReindeer.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountBabyReindeer.java new file mode 100644 index 000000000..0c5b84e98 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountBabyReindeer.java @@ -0,0 +1,92 @@ +package mineplex.core.mount.types; + +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.entity.Horse; +import org.bukkit.entity.Horse.Color; +import org.bukkit.entity.Horse.Style; +import org.bukkit.entity.Horse.Variant; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.entity.HorseJumpEvent; +import org.bukkit.event.player.PlayerInteractEntityEvent; +import org.bukkit.util.Vector; + +import mineplex.core.common.util.C; +import mineplex.core.common.util.UtilEnt; +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilParticle.ViewDist; +import mineplex.core.mount.HorseMount; +import mineplex.core.mount.MountManager; +import mineplex.core.mount.SingleEntityMountData; +import mineplex.core.recharge.Recharge; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; + +public class MountBabyReindeer extends HorseMount +{ + + public MountBabyReindeer(MountManager manager) + { + super(manager, "Baby Rainder", new String[] + { + C.cWhite + "One of Santa's baby reindeers", + C.cWhite + "Still trying to learn how to fly" + }, Material.SNOW_BALL, (byte) 0, 10, Color.CREAMY, Style.WHITEFIELD, Variant.HORSE, 0, null); + } + + @EventHandler + public void EnableCustom(Player player) { + super.EnableCustom(player); + Horse horse = GetActive().get(player).getEntity(); + horse.setBaby(); + horse.setMaxHealth(20); + } + + @EventHandler + public void fly(UpdateEvent event) + { + if(event.getType() != UpdateType.TICK) return; + + for(SingleEntityMountData horse : GetActive().values()) + { + if(horse.getEntity().getPassenger() != horse.getOwner()) continue; + + if(Recharge.Instance.usable(horse.getOwner(), "Reindeer Fly")) continue; + + horse.getEntity().setVelocity(horse.getOwner().getLocation().getDirection().normalize().add(new Vector(0,0.4,0))); + + horse.getEntity().getWorld().playSound(horse.getEntity().getLocation(), Sound.HORSE_BREATHE, 0.3f, 0.5f); + + UtilParticle.PlayParticleToAll(ParticleType.EXPLODE, horse.getEntity().getLocation(), 0.2f,0.0f,0.2f, 0.0f, 10, ViewDist.NORMAL); + } + } + + @EventHandler + public void onClick(PlayerInteractEntityEvent event) + { + if(!IsActive(event.getPlayer())) return; + SingleEntityMountDatadata = getMountData(event.getRightClicked()); + if(data == null) return; + if(data.getOwner() != event.getPlayer()) return; + data.getEntity().setPassenger(data.getOwner()); + } + + @EventHandler + public void onJump(HorseJumpEvent event) + { + SingleEntityMountData data = getMountData(event.getEntity()); + if(data == null) return; + + event.setCancelled(true); + if(UtilEnt.isGrounded(event.getEntity())) + { + if(Recharge.Instance.use(data.getOwner(), "Reindeer Fly", 1000, false, false)) + { + event.getEntity().getWorld().playSound(event.getEntity().getLocation(), Sound.HORSE_ANGRY, 1f, 1f); + } + } + + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountTitan.java index 4001f5184..49bd13513 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountTitan.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountTitan.java @@ -36,6 +36,12 @@ public class MountTitan extends Mount @Override public void EnableCustom(Player player) { + if(GetActive().size() >= 3) + { + UtilPlayer.message(player, F.main("Mount", "The maximum amount of simultaneous " + F.elem(GetName()) + " in this lobby has been reached.")); + return; + } + player.leaveVehicle(); player.eject(); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/pet/PetFactory.java b/Plugins/Mineplex.Core/src/mineplex/core/pet/PetFactory.java index 56cab2079..de3a66e5e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/pet/PetFactory.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/pet/PetFactory.java @@ -1,19 +1,16 @@ package mineplex.core.pet; -import java.util.ArrayList; import java.util.Collection; -import java.util.List; - -import mineplex.core.common.util.NautHashMap; -import mineplex.core.pet.repository.PetRepository; -import mineplex.core.pet.repository.token.PetExtraToken; -import mineplex.core.pet.repository.token.PetSalesToken; -import mineplex.core.pet.types.Elf; -import mineplex.core.pet.types.Pumpkin; import org.bukkit.Material; import org.bukkit.entity.EntityType; +import mineplex.core.common.util.NautHashMap; +import mineplex.core.pet.repository.PetRepository; +import mineplex.core.pet.types.Elf; +import mineplex.core.pet.types.PetCoalApparition; +import mineplex.core.pet.types.Pumpkin; + public class PetFactory { private PetRepository _repository; @@ -33,6 +30,7 @@ public class PetFactory private void CreatePets() { _pets.put(EntityType.ZOMBIE, new Pumpkin()); + _pets.put(EntityType.PIG_ZOMBIE, new PetCoalApparition()); _pets.put(EntityType.VILLAGER, new Elf()); _pets.put(EntityType.PIG, new Pet("Pig", EntityType.PIG, 5000)); _pets.put(EntityType.SHEEP, new Pet("Sheep", EntityType.SHEEP, 3000)); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/pet/PetManager.java b/Plugins/Mineplex.Core/src/mineplex/core/pet/PetManager.java index d111bc6a7..8ca696f34 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/pet/PetManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/pet/PetManager.java @@ -4,11 +4,38 @@ import java.util.Collection; import java.util.Iterator; import java.util.Map.Entry; +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.block.Block; +import org.bukkit.craftbukkit.v1_8_R3.entity.CraftCreature; +import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPigZombie; +import org.bukkit.entity.Ageable; +import org.bukkit.entity.Creature; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.PigZombie; +import org.bukkit.entity.Player; +import org.bukkit.entity.Skeleton; +import org.bukkit.entity.Villager; +import org.bukkit.entity.Zombie; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.entity.EntityDamageEvent; +import org.bukkit.event.entity.EntityDamageEvent.DamageCause; +import org.bukkit.event.entity.EntityTargetEvent; +import org.bukkit.event.player.PlayerInteractEntityEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.plugin.java.JavaPlugin; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import com.google.gson.Gson; + import mineplex.core.MiniClientPlugin; -import mineplex.core.pet.repository.PetRepository; -import mineplex.core.pet.repository.token.ClientPetTokenWrapper; -import mineplex.core.updater.event.UpdateEvent; -import mineplex.core.updater.UpdateType; import mineplex.core.account.CoreClientManager; import mineplex.core.account.event.ClientWebResponseEvent; import mineplex.core.blockrestore.BlockRestore; @@ -17,50 +44,22 @@ import mineplex.core.common.util.NautHashMap; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilEnt; +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.common.util.UtilServer; import mineplex.core.disguise.DisguiseManager; import mineplex.core.disguise.disguises.DisguiseGuardian; import mineplex.core.disguise.disguises.DisguiseWither; import mineplex.core.donation.DonationManager; import mineplex.core.inventory.InventoryManager; +import mineplex.core.pet.repository.PetRepository; +import mineplex.core.pet.repository.token.ClientPetTokenWrapper; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; import net.minecraft.server.v1_8_R3.EntityCreature; -import net.minecraft.server.v1_8_R3.EntityWither; -import net.minecraft.server.v1_8_R3.Navigation; import net.minecraft.server.v1_8_R3.NavigationAbstract; -import org.bukkit.Bukkit; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.block.Block; - -import com.google.gson.Gson; - -import org.bukkit.craftbukkit.v1_8_R3.CraftWorld; -import org.bukkit.craftbukkit.v1_8_R3.entity.CraftCreature; -import org.bukkit.entity.Ageable; -import org.bukkit.entity.Creature; -import org.bukkit.entity.Entity; -import org.bukkit.entity.EntityType; -import org.bukkit.entity.Guardian; -import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Player; -import org.bukkit.entity.Skeleton; -import org.bukkit.entity.Villager; -import org.bukkit.entity.Zombie; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.entity.EntityDamageEvent; -import org.bukkit.event.entity.EntityTargetEvent; -import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason; -import org.bukkit.event.entity.EntityDamageEvent.DamageCause; -import org.bukkit.event.player.PlayerInteractEntityEvent; -import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.event.player.PlayerQuitEvent; -import org.bukkit.inventory.ItemStack; -import org.bukkit.plugin.java.JavaPlugin; -import org.bukkit.potion.PotionEffect; -import org.bukkit.potion.PotionEffectType; - public class PetManager extends MiniClientPlugin { private static Object _petOwnerSynch = new Object(); @@ -228,6 +227,12 @@ public class PetManager extends MiniClientPlugin pet.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, 99999999, 0)); UtilEnt.silence(pet, true); } + if (pet instanceof PigZombie) + { + ((PigZombie)pet).setBaby(true); + pet.getEquipment().setHelmet(new ItemStack(Material.SKULL_ITEM, 1, (short)0, (byte) 1)); + pet.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, 99999999, 0)); + } else if (pet instanceof Villager) { ((Villager) pet).setBaby(); @@ -342,6 +347,22 @@ public class PetManager extends MiniClientPlugin @EventHandler public void onUpdate(UpdateEvent event) { + if (event.getType() == UpdateType.TICK) + { + for(Creature pet : _activePetOwners.values()) + { + if(pet instanceof PigZombie) + { + UtilParticle.PlayParticleToAll(ParticleType.LARGE_SMOKE, pet.getLocation(), 0.2f,0.0f,0.2f, 0.0f, 4, ViewDist.NORMAL); + if(event.getTick()%3 == 0) pet.getWorld().playSound(pet.getLocation(), Sound.BLAZE_BREATH, 0.1f, 0f); + if(!((CraftPigZombie)pet).getHandle().isSilent()) + { + ((CraftPigZombie)pet).getHandle().setSilent(true); + } + } + } + } + if (event.getType() != UpdateType.FAST) return; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/pet/types/PetCoalApparition.java b/Plugins/Mineplex.Core/src/mineplex/core/pet/types/PetCoalApparition.java new file mode 100644 index 000000000..5c0b7ed82 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/pet/types/PetCoalApparition.java @@ -0,0 +1,14 @@ +package mineplex.core.pet.types; + +import org.bukkit.entity.EntityType; + +import mineplex.core.pet.Pet; + +public class PetCoalApparition extends Pet +{ + public PetCoalApparition() + { + super("Coal Apparition", EntityType.PIG_ZOMBIE, 10); + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/updater/event/UpdateEvent.java b/Plugins/Mineplex.Core/src/mineplex/core/updater/event/UpdateEvent.java index 59400f196..60c7f0bb8 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/updater/event/UpdateEvent.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/updater/event/UpdateEvent.java @@ -1,6 +1,7 @@ package mineplex.core.updater.event; import mineplex.core.updater.UpdateType; +import net.minecraft.server.v1_8_R3.MinecraftServer; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; @@ -19,6 +20,11 @@ public class UpdateEvent extends Event { return _type; } + + public int getTick() + { + return MinecraftServer.currentTick; + } public HandlerList getHandlers() { diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/DisguiseCommand.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/DisguiseCommand.java index c35fc9ab5..5b7237994 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/DisguiseCommand.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/DisguiseCommand.java @@ -169,7 +169,7 @@ public class DisguiseCommand extends CommandBase implements Liste changeName(caller, args[0], true); - Plugin.getCosmeticManager().getGadgetManager().RemoveItem(caller); + Plugin.getCosmeticManager().getGadgetManager().removeGadetType(caller, GadgetType.Item); Bukkit.broadcastMessage(ChatColor.DARK_GRAY + "Quit> " + ChatColor.GRAY + _disguisedPlayersNames.get(caller)); UtilPlayer.message(caller, C.cGreen + C.Bold + "Disguise Active: " + ChatColor.RESET + args[0]); From b1536547d36ce13ad8913e6a5edaaf3b4135032b Mon Sep 17 00:00:00 2001 From: xGamingDudex Date: Tue, 8 Dec 2015 00:50:08 +0100 Subject: [PATCH 04/81] Cosmetic Update 2 + Item Coal + Freeze Cannon + Party Popper / Party Bomb + Snowball + Coal Fumes Particle + Snowman sneak trail/glide + Teaked stuff --- .../core/common/util/UtilParticle.java | 33 ++- .../mineplex/core/gadget/GadgetManager.java | 8 + .../core/gadget/gadgets/item/ItemCoal.java | 126 +++++++++++ .../gadget/gadgets/item/ItemFirework.java | 3 +- .../gadget/gadgets/item/ItemFreezeCannon.java | 197 ++++++++++++++++++ .../gadget/gadgets/item/ItemPartyPopper.java | 141 +++++++++++++ .../gadget/gadgets/item/ItemSnowball.java | 61 ++++++ .../gadget/gadgets/morph/MorphSnowman.java | 64 ++++-- .../gadgets/particle/ParticleCoalFumes.java | 45 ++++ .../src/mineplex/core/pet/PetManager.java | 2 +- .../src/mineplex/core/updater/UpdateType.java | 66 ++++++ .../src/mineplex/hub/HubManager.java | 3 +- .../hub/commands/DisguiseCommand.java | 2 +- 13 files changed, 720 insertions(+), 31 deletions(-) create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFreezeCannon.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPartyPopper.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemSnowball.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCoalFumes.java diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilParticle.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilParticle.java index bacca401f..a1b747a9e 100644 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilParticle.java +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilParticle.java @@ -249,12 +249,30 @@ public class UtilParticle public static void PlayParticleToAll(ParticleType type, Location location, Vector offset, float speed, int count, ViewDist dist) { - PlayParticle(type, location, (float) offset.getX(), (float) offset.getY(), (float) offset.getZ(), speed, count, dist, UtilServer.getPlayers()); + float x = 0; + float y = 0; + float z = 0; + if(offset != null) + { + x = (float) offset.getX(); + y = (float) offset.getY(); + z = (float) offset.getZ(); + } + PlayParticle(type, location, x, y, z, speed, count, dist, UtilServer.getPlayers()); } public static void PlayParticle(ParticleType type, Location location, Vector offset, float speed, int count, ViewDist dist, Player... players) { - PlayParticle(type, location, (float) offset.getX(), (float) offset.getY(), (float) offset.getZ(), speed, count, dist, players); + float x = 0; + float y = 0; + float z = 0; + if(offset != null) + { + x = (float) offset.getX(); + y = (float) offset.getY(); + z = (float) offset.getZ(); + } + PlayParticle(type, location, x, y, z, speed, count, dist, players); } public static void PlayParticleToAll(ParticleType type, Location location, float offsetX, float offsetY, float offsetZ, @@ -286,7 +304,16 @@ public class UtilParticle public static void PlayParticleToAll(String particle, Location location, Vector offset, float speed, int count, ViewDist dist) { - PlayParticle(particle, location, (float) offset.getX(), (float) offset.getY(), (float) offset.getZ(), speed, count, dist, UtilServer.getPlayers()); + float x = 0; + float y = 0; + float z = 0; + if(offset != null) + { + x = (float) offset.getX(); + y = (float) offset.getY(); + z = (float) offset.getZ(); + } + PlayParticle(particle, location, x, y, z, speed, count, dist, UtilServer.getPlayers()); } public static void PlayParticleToAll(String particle, Location location, float offsetX, float offsetY, float offsetZ, diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java index 836cc0aec..e799d89e9 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java @@ -39,15 +39,18 @@ import mineplex.core.gadget.gadgets.doublejump.DoubleJumpCandyCane; import mineplex.core.gadget.gadgets.doublejump.DoubleJumpFrostLord; import mineplex.core.gadget.gadgets.doublejump.DoubleJumpTitan; import mineplex.core.gadget.gadgets.item.ItemBatGun; +import mineplex.core.gadget.gadgets.item.ItemCoal; import mineplex.core.gadget.gadgets.item.ItemCoinBomb; import mineplex.core.gadget.gadgets.item.ItemDuelingSword; import mineplex.core.gadget.gadgets.item.ItemEtherealPearl; import mineplex.core.gadget.gadgets.item.ItemFirework; import mineplex.core.gadget.gadgets.item.ItemFleshHook; +import mineplex.core.gadget.gadgets.item.ItemFreezeCannon; import mineplex.core.gadget.gadgets.item.ItemMelonLauncher; import mineplex.core.gadget.gadgets.item.ItemPaintballGun; import mineplex.core.gadget.gadgets.item.ItemPaintbrush; import mineplex.core.gadget.gadgets.item.ItemPartyPopper; +import mineplex.core.gadget.gadgets.item.ItemSnowball; import mineplex.core.gadget.gadgets.item.ItemTNT; import mineplex.core.gadget.gadgets.morph.MorphBat; import mineplex.core.gadget.gadgets.morph.MorphBlaze; @@ -68,6 +71,7 @@ import mineplex.core.gadget.gadgets.outfit.OutfitRaveSuit; import mineplex.core.gadget.gadgets.outfit.OutfitSpaceSuit; import mineplex.core.gadget.gadgets.outfit.OutfitTeam; import mineplex.core.gadget.gadgets.particle.ParticleCandyCane; +import mineplex.core.gadget.gadgets.particle.ParticleCoalFumes; import mineplex.core.gadget.gadgets.particle.ParticleEnchant; import mineplex.core.gadget.gadgets.particle.ParticleFairy; import mineplex.core.gadget.gadgets.particle.ParticleFireRings; @@ -147,6 +151,9 @@ public class GadgetManager extends MiniPlugin addGadget(new ItemPaintbrush(this)); addGadget(new ItemDuelingSword(this)); addGadget(new ItemPartyPopper(this)); + addGadget(new ItemCoal(this)); + addGadget(new ItemFreezeCannon(this)); + addGadget(new ItemSnowball(this)); // Costume addGadget(new OutfitRaveSuit(this, "Rave Hat", -2, ArmorSlot.Helmet, Material.LEATHER_HELMET, (byte)0)); @@ -194,6 +201,7 @@ public class GadgetManager extends MiniPlugin addGadget(new ParticleFrostLord(this)); addGadget(new ParticleTitan(this)); addGadget(new ParticleCandyCane(this)); + addGadget(new ParticleCoalFumes(this)); // Arrow Trails addGadget(new ArrowTrailFrostLord(this)); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java new file mode 100644 index 000000000..38ff604cc --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java @@ -0,0 +1,126 @@ +package mineplex.core.gadget.gadgets.item; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.block.Action; +import org.bukkit.event.player.PlayerInteractEvent; + +import mineplex.core.common.util.C; +import mineplex.core.common.util.Callback; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilBlock; +import mineplex.core.common.util.UtilGear; +import mineplex.core.common.util.UtilInv; +import mineplex.core.common.util.UtilMath; +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilParticle.ViewDist; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.event.ItemGadgetOutOfAmmoEvent; +import mineplex.core.gadget.gadgets.Ammo; +import mineplex.core.gadget.types.ItemGadget; +import mineplex.core.itemstack.ItemStackFactory; +import mineplex.core.recharge.Recharge; + +public class ItemCoal extends ItemGadget +{ + + public String[] Messages = new String[] + { + "Maybe you could.... eat it?", + "Yep, you're holding some coal...", + "This sure is a nice piece of coal!", + "Na na na na Na na na na " + C.cDGray + "BLACK COAL" + C.mBody + "!", + "Did you know that coal can be used for " + C.Scramble + "nothing" + C.mBody + "!", + }; + + public ItemCoal(GadgetManager manager) + { + super(manager, "Coal", new String[] + { + C.cDGray + "Exclusive Coal!", + C.cDGray + "Earned by beeing naughty" + } + , -1, Material.COAL, (byte) 0, 1000, new Ammo("Coal", "1 Piece of Coal", Material.COAL, (byte) 0, new String[] + { + C.cDGray + "Exclusive Coal!", + C.cDGray + "Earned by beeing naughty" + } + , 100, 100)); + } + + @Override + public void ActivateCustom(final Player player) + { + if(Manager.getInventoryManager().Get(player).getItemCount(GetName()) >= 1000) + { + player.sendMessage(F.main("Coal", "You unlocked " + C.cDGray + "COAL FUMES!")); + UtilParticle.PlayParticleToAll(ParticleType.LARGE_SMOKE, player.getLocation().add(0, 0.5, 0), 0.2f, 0.5f, 0.2f, 0, 500, ViewDist.LONG); + UtilParticle.PlayParticleToAll(ParticleType.LARGE_SMOKE, player.getLocation(), 1.5f, 0.0f, 1.5f, 0, 500, ViewDist.LONG); + player.getWorld().playSound(player.getLocation(), Sound.WITHER_DEATH, 0.8f, 0); + Manager.getInventoryManager().addItemToInventory(new Callback() + { + @Override + public void run(Boolean data) + { + Manager.getInventoryManager().addItemToInventory(player, GetName(), -1000); + player.getInventory().setItem(Manager.getActiveItemSlot(), ItemStackFactory.Instance.CreateStack(GetDisplayMaterial(), GetDisplayData(), 1, F.item(Manager.getInventoryManager().Get(player).getItemCount(GetName()) + " " + GetName()))); + } + }, player, "Coal Fumes", 1); + return; + } + + int i = UtilMath.r(Messages.length); + String msg = Messages[i]; + player.sendMessage(F.main("Coal", msg)); + player.playSound(player.getLocation(), Sound.GHAST_FIREBALL, 0.2f, 1.5f*(i/(float)Messages.length)); + } + + @EventHandler @Override + public void Activate(PlayerInteractEvent event) + { + if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK) + return; + + if (UtilBlock.usable(event.getClickedBlock())) + return; + + if (!UtilGear.isMat(event.getPlayer().getItemInHand(), this.GetDisplayMaterial())) + return; + + Player player = event.getPlayer(); + + if (!IsActive(player)) + return; + + event.setCancelled(true); + + //Stock + if (Manager.getInventoryManager().Get(player).getItemCount(GetName()) <= 0) + { + + UtilPlayer.message(player, F.main("Gadget", "You do not have any " + GetName() + " left.")); + + ItemGadgetOutOfAmmoEvent ammoEvent = new ItemGadgetOutOfAmmoEvent(event.getPlayer(), this); + Bukkit.getServer().getPluginManager().callEvent(ammoEvent); + + return; + } + + //Recharge + if (!Recharge.Instance.use(player, GetName(), GetName(), _recharge, _recharge > 1000, true, false, true, "Cosmetics")) + { + UtilInv.Update(player); + return; + } + + player.getInventory().setItem(Manager.getActiveItemSlot(), ItemStackFactory.Instance.CreateStack(GetDisplayMaterial(), GetDisplayData(), 1, F.item(Manager.getInventoryManager().Get(player).getItemCount(GetName()) + " " + GetName()))); + + ActivateCustom(event.getPlayer()); + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFirework.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFirework.java index 0462dd311..1f7463054 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFirework.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFirework.java @@ -2,9 +2,9 @@ package mineplex.core.gadget.gadgets.item; import org.bukkit.Color; import org.bukkit.FireworkEffect; +import org.bukkit.FireworkEffect.Type; import org.bukkit.Location; import org.bukkit.Material; -import org.bukkit.FireworkEffect.Type; import org.bukkit.block.Block; import org.bukkit.entity.Player; import org.bukkit.util.Vector; @@ -17,7 +17,6 @@ import mineplex.core.common.util.UtilPlayer; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.gadgets.Ammo; import mineplex.core.gadget.types.ItemGadget; -import mineplex.core.recharge.Recharge; public class ItemFirework extends ItemGadget { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFreezeCannon.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFreezeCannon.java new file mode 100644 index 000000000..d8ac3177e --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFreezeCannon.java @@ -0,0 +1,197 @@ +package mineplex.core.gadget.gadgets.item; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; + +import org.bukkit.Bukkit; +import org.bukkit.Effect; +import org.bukkit.EntityEffect; +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.entity.Entity; +import org.bukkit.entity.Item; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.entity.EntityDamageEvent; +import org.bukkit.event.entity.EntityDamageEvent.DamageCause; +import org.bukkit.event.player.PlayerMoveEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import mineplex.core.common.util.C; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilAction; +import mineplex.core.common.util.UtilBlock; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilServer; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.gadgets.Ammo; +import mineplex.core.gadget.types.ItemGadget; +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; + +public class ItemFreezeCannon extends ItemGadget implements IThrown +{ + + private HashMap _playerMap = new HashMap<>(); + + public ItemFreezeCannon(GadgetManager manager) + { + super(manager, "Freeze Cannon", new String[] + { + C.cWhite + "Freeze your nemesis inside a block of ice!" + } + , -1, Material.ICE, (byte) 0, 2000, new Ammo("Freeze Cannon", "100 Ice Blocks", Material.ICE, (byte) 0, new String[] + { + C.cWhite + "100 Ice Blocks for you to launch!" + }, 500, 100)); + } + + @Override + public void ActivateCustom(Player player) + { + Item item = player.getWorld().dropItem(player.getEyeLocation().add(player.getLocation().getDirection()), new ItemStack(Material.ICE)); + UtilAction.velocity(item, player.getLocation().getDirection(), + 1, false, 0, 0.2, 10, false); + + Manager.getProjectileManager().AddThrow(item, player, this, 5000, true, true, true, true, + null, 1f, 1f, null, null, 0, UpdateType.TICK, 0.5f); + + //Inform + UtilPlayer.message(player, F.main("Skill", "You used " + F.skill(GetName()) + ".")); + + //Effect + item.getWorld().playSound(item.getLocation(), Sound.EXPLODE, 0.5f, 0.5f); + } + + @Override + public void Collide(LivingEntity target, Block block, ProjectileUser data) + { + if (target instanceof Player) + { + Player p = (Player) target; + + int ticks = 4 * 20; + if(isClear(p.getLocation())) + { + Manager.getBlockRestore().add(p.getLocation().getBlock(), Material.STAINED_GLASS.getId(), (byte)5, 0, (byte)0, ticks*50); + Manager.getBlockRestore().add(p.getLocation().getBlock().getRelative(BlockFace.UP), Material.STAINED_GLASS.getId(), (byte)5, 0, (byte)0, ticks*50); + if(p.getLocation().getBlock().getRelative(BlockFace.DOWN).getType() == Material.AIR) + { + Manager.getBlockRestore().add(p.getLocation().getBlock().getRelative(BlockFace.DOWN), Material.STAINED_GLASS.getId(), (byte)5, 0, (byte)0, ticks*50); + } + p.setWalkSpeed(0); + _playerMap.put(p, System.currentTimeMillis() + (ticks * 50)); + p.addPotionEffect(new PotionEffect(PotionEffectType.JUMP, ticks, 250, true, false)); + p.teleport(target.getLocation().getBlock().getLocation().add(0.5, 0, 0.5)); + Recharge.Instance.useForce(p, "Double Jump", ticks*50); + p.setAllowFlight(false); + p.getWorld().playSound(p.getLocation(), Sound.FIZZ, 0.25f, 0.75f); + } + + //Effect + target.playEffect(EntityEffect.HURT); + } + + smash(data.GetThrown()); + } + + @EventHandler + public void onMove(PlayerMoveEvent event) + { + if(!_playerMap.containsKey(event.getPlayer())) return; + + if(event.getFrom().distanceSquared(event.getTo()) > 0.3) + { + event.setCancelled(true); + } + } + + public boolean isClear(Location loc) + { + Block b = loc.getBlock(); + ArrayList blocks = UtilBlock.getInBoundingBox(b.getLocation().subtract(1, 0, 1), b.getLocation().add(1, 1, 1)); + for(Block test : blocks) + { + if(test.getType() == Material.PORTAL) return false; + } + if(b.getType() != Material.AIR) return false; + if(b.getRelative(BlockFace.UP).getType() != Material.AIR) return false; + + return true; + } + + @EventHandler + public void cleanup(UpdateEvent event) + { + if(event.getType() == UpdateType.FAST) + { + for(Iterator it = _playerMap.keySet().iterator(); it.hasNext();) + { + Player p = it.next(); + Long time = _playerMap.get(p); + if(time == null) + { + p.setWalkSpeed(0.2f); + p.setAllowFlight(false); + it.remove(); + continue; + } + if(time < System.currentTimeMillis()) + { + p.setWalkSpeed(0.2f); + p.setAllowFlight(false); + it.remove(); + continue; + } + } + } + if(event.getType() == UpdateType.TICK) + { + for(Player p : _playerMap.keySet()) + { + Long time = _playerMap.get(p); + if(time <= System.currentTimeMillis()) continue; + + for(Player op : UtilServer.getPlayers()) + { + if(op.equals(p)) continue; + op.sendBlockChange(p.getLocation(), Material.ICE, (byte) 0); + op.sendBlockChange(p.getLocation().add(0, 1, 0), Material.ICE, (byte) 0); + } + } + } + } + + @Override + public void Idle(ProjectileUser data) + { + smash(data.GetThrown()); + } + + @Override + public void Expire(ProjectileUser data) + { + smash(data.GetThrown()); + } + + public void smash(Entity ent) + { + //Effect + ent.getWorld().playEffect(ent.getLocation(), Effect.STEP_SOUND, Material.ICE); + + //Remove + ent.remove(); + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPartyPopper.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPartyPopper.java new file mode 100644 index 000000000..2a44e16da --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPartyPopper.java @@ -0,0 +1,141 @@ +package mineplex.core.gadget.gadgets.item; + +import java.util.HashSet; + +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.block.Block; +import org.bukkit.entity.Item; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; + +import mineplex.core.common.util.C; +import mineplex.core.common.util.UtilAction; +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilParticle.ViewDist; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.gadgets.Ammo; +import mineplex.core.gadget.types.ItemGadget; +import mineplex.core.itemstack.ItemStackFactory; +import mineplex.core.projectile.IThrown; +import mineplex.core.projectile.ProjectileUser; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; + +public class ItemPartyPopper extends ItemGadget implements IThrown +{ + HashSet _items = new HashSet<>(); + + public ItemPartyPopper(GadgetManager manager) + { + super(manager, "Confetti Bomb", new String[] + { + C.cWhite + "POP BANG!", + }, -1, Material.GOLDEN_CARROT, (byte) 0, 1000, new Ammo("Confetti Bomb", "100 Party Poppers", Material.DIAMOND_BARDING, + (byte) 0, new String[] + { + C.cWhite + "100 Party Poppers for you to shoot!" + }, 500, 100)); + } + + @Override + public void ActivateCustom(Player player) + { + + Item ent = player.getWorld().dropItem(player.getEyeLocation().add(player.getLocation().getDirection()), + ItemStackFactory.Instance.CreateStack(Material.REDSTONE_LAMP_OFF, (byte)0, 1, "Lamp" + Math.random())); + + UtilAction.velocity(ent, player.getLocation().getDirection().normalize().multiply(0.1), 1, false, 0, 0.2, 10, false); + + Manager.getProjectileManager().AddThrow(ent, player, this, 3000, false, false, true, true, 0.5f); + + /* + for(int data : new int[]{1,2,4,5,6,9,10,11,12,13,14,15}) + { + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.INK_SACK, data), player.getEyeLocation(), null, 0.4f, 50, ViewDist.LONG); + /* + for(int i = 0; i < 10; i++) + { + Vector v = new Vector(Math.random() - 0.5, Math.random() - 0.3, Math.random() - 0.5); + v.normalize(); + v.multiply(0.2); + v.add(player.getLocation().getDirection()); + v.normalize().multiply(Math.random()*0.4 + 0.4); + + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.INK_SACK, data), player.getEyeLocation(), v, 1, 0, ViewDist.LONG); + } + + /* + Item ent = player.getWorld().dropItem(player.getEyeLocation().add(player.getLocation().getDirection()), + ItemStackFactory.Instance.CreateStack(Material.INK_SACK, (byte)data, 1, "Ink" + Math.random())); + _items.add(ent); + + Vector random = new Vector(Math.random() - 0.5, Math.random() - 0.3, Math.random() - 0.5); + random.normalize(); + random.multiply(0.05); + + UtilAction.velocity(ent, player.getLocation().getDirection().normalize().multiply(0.3).add(random), 1 + 0.4 * Math.random(), false, 0, 0.2, 10, false); + + Manager.getProjectileManager().AddThrow(ent, player, this, 3000, false, false, true, true, 0.5f); + */ +// } + // Sound + for(int i = 0; i < 3; i++) + { + player.getWorld().playSound(player.getLocation(), Sound.CHICKEN_EGG_POP, 2.0f, 0.8f); + } + } + + @Override + public void Collide(LivingEntity target, Block block, ProjectileUser data) + { + Explode(data); + } + + @Override + public void Idle(ProjectileUser data) + { + Explode(data); + } + + @Override + public void Expire(ProjectileUser data) + { + Explode(data); + } + + @EventHandler + public void particleTrail(UpdateEvent event) + { + if(event.getType() != UpdateType.TICK) return; + + for(Item item : _items) + { + byte data = item.getItemStack().getData().getData(); + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.INK_SACK, data), item.getLocation(), 0, 0, 0, 0.0f, 3, ViewDist.LONG); + } + } + + public void Explode(ProjectileUser data) + { + for(int type : new int[]{1,2,4,5,6,9,10,11,12,13,14,15}) + { + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.INK_SACK, type), data.GetThrown().getLocation(), null, 0.4f, 50, ViewDist.LONG); + } + data.GetThrown().getWorld().playSound(data.GetThrown().getLocation(), Sound.LAVA_POP, 0.75f, 1.25f); + data.GetThrown().remove(); + /* + if (data.GetThrown() instanceof Item) + { + Item item = (Item) data.GetThrown(); + byte b = item.getItemStack().getData().getData(); + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.INK_SACK, b), item.getLocation(), 0, 0, 0, 0.2f, 80, ViewDist.LONG); + _items.remove(item); + } + data.GetThrown().getWorld().playSound(data.GetThrown().getLocation(), Sound.LAVA_POP, 0.75f, 1.25f); + data.GetThrown().remove(); + */ + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemSnowball.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemSnowball.java new file mode 100644 index 000000000..ce1f5dc79 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemSnowball.java @@ -0,0 +1,61 @@ +package mineplex.core.gadget.gadgets.item; + +import java.util.HashSet; + +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.entity.Player; +import org.bukkit.entity.Snowball; +import org.bukkit.event.EventHandler; +import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.bukkit.util.Vector; + +import mineplex.core.common.util.C; +import mineplex.core.common.util.UtilAction; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.event.GadgetCollideEntityEvent; +import mineplex.core.gadget.gadgets.Ammo; +import mineplex.core.gadget.types.ItemGadget; + +public class ItemSnowball extends ItemGadget +{ + + private HashSet _snowballs = new HashSet<>(); + + public ItemSnowball(GadgetManager manager) + { + super(manager, "Snowball", new String[] + { + C.cWhite + "Throw snowball!", + C.cWhite + "Start epic snowfights!" + } + , -1, Material.SNOW_BALL, (byte) 0, 1, new Ammo("Snowball", "50 Snowballs", Material.SNOW_BALL, (byte) 0, new String[] + { + C.cWhite + "50 Snowballs for you to throw!" + } + , 100, 50)); + + } + + @Override + public void ActivateCustom(Player player) + { + Snowball ball = player.launchProjectile(Snowball.class); + _snowballs.add(ball); + ball.getWorld().playSound(ball.getLocation(), Sound.CHICKEN_EGG_POP, 1f, 0.3f); + } + + @EventHandler + public void onHit(EntityDamageByEntityEvent event) + { + if(!_snowballs.contains(event.getDamager())) return; + + GadgetCollideEntityEvent gevent = new GadgetCollideEntityEvent(this, event.getEntity()); + + if(gevent.isCancelled()) return; + + UtilAction.velocity(event.getEntity(), event.getDamager().getVelocity().normalize().add(new Vector(0,0.5,0))); + event.getDamager().getWorld().playSound(event.getDamager().getLocation(), Sound.STEP_SNOW, 1, 0.5f); + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSnowman.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSnowman.java index 6e7d29b8e..40a7ff8cd 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSnowman.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSnowman.java @@ -16,9 +16,13 @@ import mineplex.core.common.util.C; import mineplex.core.common.util.F; import mineplex.core.common.util.NautHashMap; import mineplex.core.common.util.UtilAction; +import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilEvent; import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.common.util.UtilMath; +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.disguise.disguises.DisguiseSnowman; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.event.GadgetCollideEntityEvent; @@ -77,31 +81,45 @@ public class MorphSnowman extends MorphGadget @EventHandler public void Snow(UpdateEvent event) { - if (event.getType() != UpdateType.FASTEST) - return; - - for (Player player : GetActive()) + if (event.getType() == UpdateType.FASTEST) { - NautHashMap map = Recharge.Instance.Get(player); - if(map == null) continue; - - RechargeData data = map.get("Blizzard"); - if(data == null) continue; - if(data.GetRemaining() < 10000) continue; - - for (int i=0 ; i<4 ; i++) - { - Snowball snow = player.getWorld().spawn(player.getEyeLocation().add(player.getLocation().getDirection()), Snowball.class); - double x = 0.1 - (UtilMath.r(20)/100d); - double y = UtilMath.r(20)/100d; - double z = 0.1 - (UtilMath.r(20)/100d); - snow.setShooter(player); - snow.setVelocity(player.getLocation().getDirection().add(new Vector(x,y,z)).multiply(2)); - _snowball.put(snow, player); - } - //Effect - player.getWorld().playSound(player.getLocation(), Sound.STEP_SNOW, 0.2f, 0.5f); + for (Player player : GetActive()) + { + NautHashMap map = Recharge.Instance.Get(player); + if(map == null) continue; + + RechargeData data = map.get("Blizzard"); + if(data == null) continue; + if(data.GetRemaining() < 10000) continue; + + for (int i=0 ; i<4 ; i++) + { + Snowball snow = player.getWorld().spawn(player.getEyeLocation().add(player.getLocation().getDirection()), Snowball.class); + double x = 0.1 - (UtilMath.r(20)/100d); + double y = UtilMath.r(20)/100d; + double z = 0.1 - (UtilMath.r(20)/100d); + snow.setShooter(player); + snow.setVelocity(player.getLocation().getDirection().add(new Vector(x,y,z)).multiply(2)); + _snowball.put(snow, player); + } + + //Effect + player.getWorld().playSound(player.getLocation(), Sound.STEP_SNOW, 0.2f, 0.5f); + } + } + + if(event.getType() == UpdateType.TICK) + { + for (Player player : GetActive()) + { + if(player.isSneaking() && UtilEnt.isGrounded(player)) + { + player.setVelocity(player.getLocation().getDirection().setY(0).normalize()); + UtilParticle.PlayParticle(ParticleType.SNOW_SHOVEL, player.getLocation(), 0.3f, 0.1f, 0.3f, 0, 10, ViewDist.NORMAL); + player.getWorld().playSound(player.getLocation(), Sound.STEP_SNOW, 0.3f, 0.3f); + } + } } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCoalFumes.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCoalFumes.java new file mode 100644 index 000000000..04ccec81d --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCoalFumes.java @@ -0,0 +1,45 @@ +package mineplex.core.gadget.gadgets.particle; + +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; + +import mineplex.core.common.util.C; +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilParticle.ViewDist; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.types.ParticleGadget; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; + +public class ParticleCoalFumes extends ParticleGadget +{ + + public ParticleCoalFumes(GadgetManager manager) + { + super(manager, "Coal Fumes", new String[] + { + C.cDGray + "Nothing to read here. Please move on." + }, -1, Material.COAL, (byte) 0); + } + + @EventHandler + public void onUpdate(UpdateEvent event) + { + if(event.getType() != UpdateType.TICK) return; + + int dur = 200; + int tick = Math.abs(event.getTick()%dur); + + + double d = tick/(double)dur; + float xz = (float) Math.sin(d*Math.PI); + + for(Player p : GetActive()) + { + UtilParticle.PlayParticleToAll(ParticleType.LARGE_SMOKE, p.getLocation(), xz, 0, xz, 0, 5, ViewDist.NORMAL); + } + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/pet/PetManager.java b/Plugins/Mineplex.Core/src/mineplex/core/pet/PetManager.java index 8ca696f34..4e609930f 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/pet/PetManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/pet/PetManager.java @@ -354,7 +354,7 @@ public class PetManager extends MiniClientPlugin if(pet instanceof PigZombie) { UtilParticle.PlayParticleToAll(ParticleType.LARGE_SMOKE, pet.getLocation(), 0.2f,0.0f,0.2f, 0.0f, 4, ViewDist.NORMAL); - if(event.getTick()%3 == 0) pet.getWorld().playSound(pet.getLocation(), Sound.BLAZE_BREATH, 0.1f, 0f); + if(event.getTick()%3 == 0) pet.getWorld().playSound(pet.getLocation(), Sound.BLAZE_BREATH, 0.03f, 0f); if(!((CraftPigZombie)pet).getHandle().isSilent()) { ((CraftPigZombie)pet).getHandle().setSilent(true); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/updater/UpdateType.java b/Plugins/Mineplex.Core/src/mineplex/core/updater/UpdateType.java index 0b6c89cfb..52d63e2a1 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/updater/UpdateType.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/updater/UpdateType.java @@ -4,27 +4,93 @@ import mineplex.core.common.util.UtilTime; public enum UpdateType { + /** + * Once every 64 minutes + */ MIN_64(3840000), + /** + * Once every 60 minutes + */ HOUR_01(3600000), + /** + * Once every 32 minutes + */ MIN_32(1920000), + /** + * Once every 30 minutes + */ MIN_30(1800000), + /** + * Once every 16 minutes + */ MIN_16(960000), + /** + * Once every 10 minutes + */ MIN_10(600000), + /** + * Once every 8 minutes + */ MIN_08(480000), + /** + * Once every 5 minutes + */ MIN_05(300000), + /** + * Once every 4 minutes + */ MIN_04(240000), + /** + * Once every 2 minutes + */ MIN_02(120000), + /** + * Once every minute + */ MIN_01(60000), + /** + * Once every 32 seconds + */ SLOWEST(32000), + /** + * ONce every 30 seconds + */ SEC_30(30000), + /** + * Once every 16 seconds + */ SLOWER(16000), + /** + * Once every 8 seconds + */ SEC_08(8000), + /** + * Once every 4 seconds + */ SLOW(4000), + /** + * Once every 40 ticks + */ TWOSEC(2000), + /** + * Once every 20 ticks + */ SEC(1000), + /** + * Once every 10 ticks + */ FAST(500), + /** + * Once every 5 ticks + */ FASTER(250), + /** + * Once every 3 ticks + */ FASTEST(125), + /** + * Once every tick + */ TICK(49); private long _time; diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java index 4ae6eea74..ad5f421a0 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java @@ -30,6 +30,7 @@ import mineplex.core.donation.DonationManager; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.event.GadgetActivateEvent; import mineplex.core.gadget.event.GadgetCollideEntityEvent; +import mineplex.core.gadget.types.GadgetType; import mineplex.core.giveaway.GiveawayManager; import mineplex.core.hologram.HologramManager; import mineplex.core.inventory.InventoryManager; @@ -279,7 +280,7 @@ public class HubManager extends MiniClientPlugin Player player = event.getPlayer(); - _gadgetManager.RemoveItem(player); + _gadgetManager.removeGadetType(player, GadgetType.Item); player.getInventory().setItem(3, new ItemStack(Material.SNOW_BALL, 16)); } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/commands/DisguiseCommand.java b/Plugins/Mineplex.Hub/src/mineplex/hub/commands/DisguiseCommand.java index d76e0db30..cc55696c8 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/commands/DisguiseCommand.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/commands/DisguiseCommand.java @@ -176,7 +176,7 @@ public class DisguiseCommand extends CommandBase implements Listener changeName(caller, args[0]); - Plugin.GetGadget().RemoveItem(caller); + Plugin.GetGadget().removeGadetType(caller, GadgetType.Item); UtilPlayer.message(caller, C.cGreen + C.Bold + "Disguise Active: " + ChatColor.RESET + args[0]); } catch(Exception e) From d16d9a36e9e86d95ed904016d90b320dff2eec32 Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Thu, 10 Dec 2015 17:25:39 -0500 Subject: [PATCH 05/81] Use Account ID from client manager instead of PlayerCache --- .../src/mineplex/core/inventory/InventoryManager.java | 3 ++- .../src/mineplex/core/treasure/TreasureStyle.java | 10 +++++++++- .../src/mineplex/core/treasure/TreasureType.java | 4 +++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/inventory/InventoryManager.java b/Plugins/Mineplex.Core/src/mineplex/core/inventory/InventoryManager.java index 82becc622..0a32aa977 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/inventory/InventoryManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/inventory/InventoryManager.java @@ -93,6 +93,7 @@ public class InventoryManager extends MiniDbClientPlugin public void addItemToInventory(final Callback callback, final Player player, final String item, final int count) { + int accountId = getClientManager().getAccountId(player); addItemToInventoryForOffline(new Callback() { public void run(Boolean success) @@ -105,7 +106,7 @@ public class InventoryManager extends MiniDbClientPlugin if (callback != null) callback.run(success); } - }, player.getUniqueId(), item, count); + }, accountId, item, count); } public boolean validItem(String item) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureStyle.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureStyle.java index 8875cac4a..38828ee6b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureStyle.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureStyle.java @@ -25,7 +25,15 @@ public enum TreasureStyle ParticleType.LARGE_EXPLODE, ParticleType.INSTANT_SPELL, Sound.PORTAL_TRAVEL, - Sound.ANVIL_LAND); + Sound.ANVIL_LAND), + + CHRISTMAS( + ParticleType.SNOW_SHOVEL, + ParticleType.SNOWBALL_POOF, + ParticleType.FIREWORKS_SPARK, + Sound.FIZZ, + Sound.CHICKEN_EGG_POP + ); private ParticleType _secondaryParticle; private ParticleType _chestSpawnParticle; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureType.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureType.java index 1d6a5a399..ab8660490 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureType.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureType.java @@ -11,7 +11,9 @@ public enum TreasureType ANCIENT(C.cGold + "Ancient Chest", "Ancient Chest", "Ancient", RewardType.AncientChest, Material.TRAPPED_CHEST, TreasureStyle.ANCIENT), - MYTHICAL(C.cRed + "Mythical Chest", "Mythical Chest", "Mythical", RewardType.MythicalChest, Material.ENDER_CHEST, TreasureStyle.MYTHICAL); + MYTHICAL(C.cRed + "Mythical Chest", "Mythical Chest", "Mythical", RewardType.MythicalChest, Material.ENDER_CHEST, TreasureStyle.MYTHICAL), + + CHRISTMAS(C.cAqua + "Christmas Chest", "Christmas Chest", "Christmas", RewardType.MythicalChest, Material.CHEST, TreasureStyle.CHRISTMAS); private final String _name; private final RewardType _rewardType; From a6a4c8be361bf8303b614d10dbad9f7ed8c694eb Mon Sep 17 00:00:00 2001 From: xGamingDudex Date: Fri, 11 Dec 2015 01:05:32 +0100 Subject: [PATCH 06/81] Cosmetic Update + Added GadgetDisable Event + Renamed GadgetActivateEvent to GadgetEnable event + Added hat framework, and some example hats + Added sets and Frost Lord set + Fixed some imports + Added new way of checking ownership of gadgets + Added some utility methods to GadgetManager + Added support for alternative package name of gadgets + Fixed coal + New Blood Helix particle --- .../core/cosmetic/ui/page/CostumePage.java | 3 + .../core/cosmetic/ui/page/GadgetPage.java | 2 +- .../core/cosmetic/ui/page/HatPage.java | 11 ++ .../mineplex/core/gadget/GadgetManager.java | 107 ++++++++++-------- .../core/gadget/event/GadgetDisableEvent.java | 43 +++++++ ...ivateEvent.java => GadgetEnableEvent.java} | 7 +- .../arrowtrail/ArrowTrailFrostLord.java | 4 +- .../gadget/gadgets/death/DeathFrostLord.java | 2 +- .../doublejump/DoubleJumpFrostLord.java | 10 +- .../core/gadget/gadgets/hat/HatCoal.java | 18 +++ .../core/gadget/gadgets/hat/HatPresent.java | 15 +++ .../core/gadget/gadgets/hat/HatSanta.java | 15 +++ .../core/gadget/gadgets/hat/HatSnowman.java | 15 +++ .../core/gadget/gadgets/item/ItemCoal.java | 18 ++- .../gadget/gadgets/outfit/OutfitTeam.java | 4 +- .../gadgets/particle/ParticleFrostLord.java | 28 +++-- .../gadgets/particle/ParticleHelix.java | 59 +++++++++- .../gadgets/particle/ParticleTitan.java | 7 +- .../core/gadget/set/SetFrostLord.java | 38 +++++++ .../core/gadget/types/ArrowEffectGadget.java | 4 +- .../core/gadget/types/DeathEffectGadget.java | 4 +- .../gadget/types/DoubleJumpEffectGadget.java | 8 +- .../mineplex/core/gadget/types/Gadget.java | 31 ++++- .../mineplex/core/gadget/types/GadgetSet.java | 93 +++++++++++++++ .../mineplex/core/gadget/types/HatGadget.java | 92 +++++++++++++++ .../core/gadget/types/MusicGadget.java | 4 +- .../core/gadget/types/ParticleGadget.java | 4 +- .../game/arcade/command/DisguiseCommand.java | 4 +- .../arcade/game/games/event/EventGame.java | 8 +- 29 files changed, 546 insertions(+), 112 deletions(-) create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/event/GadgetDisableEvent.java rename Plugins/Mineplex.Core/src/mineplex/core/gadget/event/{GadgetActivateEvent.java => GadgetEnableEvent.java} (88%) create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatCoal.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatPresent.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSanta.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSnowman.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetFrostLord.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetSet.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/types/HatGadget.java diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/CostumePage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/CostumePage.java index 144131e81..803f8705f 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/CostumePage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/CostumePage.java @@ -3,11 +3,14 @@ package mineplex.core.cosmetic.ui.page; import java.util.ArrayList; import java.util.List; +import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; +import com.sun.org.glassfish.gmbal.ManagedAttribute; + import mineplex.core.account.CoreClientManager; import mineplex.core.common.util.C; import mineplex.core.cosmetic.CosmeticManager; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java index cebfad6bd..317f6503c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java @@ -109,7 +109,7 @@ public class GadgetPage extends ShopPageBase itemLore.add(C.cWhite + "Your Ammo : " + C.cGreen + getPlugin().getInventoryManager().Get(getPlayer()).getItemCount(gadget.GetName())); } - if (gadget.IsFree() || getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage(gadget.GetName()) || getPlugin().getInventoryManager().Get(getPlayer()).getItemCount(gadget.GetName()) > 0) + if (gadget.ownsGadget(getPlayer())) { if (gadget.GetActive().contains(getPlayer())) { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/HatPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/HatPage.java index 8ea9fff22..4ff3ded5a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/HatPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/HatPage.java @@ -5,6 +5,8 @@ import java.util.List; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; import mineplex.core.account.CoreClientManager; import mineplex.core.common.util.C; @@ -13,6 +15,7 @@ import mineplex.core.cosmetic.ui.CosmeticShop; import mineplex.core.donation.DonationManager; import mineplex.core.gadget.types.Gadget; import mineplex.core.gadget.types.GadgetType; +import mineplex.core.gadget.types.HatGadget; import mineplex.core.shop.item.IButton; import mineplex.core.shop.item.ShopItem; @@ -37,6 +40,14 @@ public class HatPage extends GadgetPage { addGadget(gadget, slot); + ItemStack item = getItem(slot); + if(item.getType() == Material.SKULL_ITEM) + { + SkullMeta data = (SkullMeta) item.getItemMeta(); + data.setOwner(((SkullMeta)((HatGadget)gadget).getHelmetItem().getItemMeta()).getOwner()); + item.setItemMeta(data); + } + if (getPlugin().getGadgetManager().getActive(getPlayer(), GadgetType.Morph) == gadget) addGlow(slot); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java index e799d89e9..7af09dfe5 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java @@ -1,7 +1,9 @@ package mineplex.core.gadget; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; import org.bukkit.Bukkit; import org.bukkit.Location; @@ -38,6 +40,10 @@ import mineplex.core.gadget.gadgets.death.DeathTitan; import mineplex.core.gadget.gadgets.doublejump.DoubleJumpCandyCane; import mineplex.core.gadget.gadgets.doublejump.DoubleJumpFrostLord; import mineplex.core.gadget.gadgets.doublejump.DoubleJumpTitan; +import mineplex.core.gadget.gadgets.hat.HatCoal; +import mineplex.core.gadget.gadgets.hat.HatPresent; +import mineplex.core.gadget.gadgets.hat.HatSanta; +import mineplex.core.gadget.gadgets.hat.HatSnowman; import mineplex.core.gadget.gadgets.item.ItemBatGun; import mineplex.core.gadget.gadgets.item.ItemCoal; import mineplex.core.gadget.gadgets.item.ItemCoinBomb; @@ -83,7 +89,9 @@ import mineplex.core.gadget.gadgets.particle.ParticleHelix; import mineplex.core.gadget.gadgets.particle.ParticleLegend; import mineplex.core.gadget.gadgets.particle.ParticleRain; import mineplex.core.gadget.gadgets.particle.ParticleTitan; +import mineplex.core.gadget.set.SetFrostLord; import mineplex.core.gadget.types.Gadget; +import mineplex.core.gadget.types.GadgetSet; import mineplex.core.gadget.types.GadgetType; import mineplex.core.gadget.types.ItemGadget; import mineplex.core.gadget.types.MusicGadget; @@ -113,6 +121,8 @@ public class GadgetManager extends MiniPlugin private NautHashMap _lastMove = new NautHashMap(); private NautHashMap> _playerActiveGadgetMap = new NautHashMap>(); + private HashSet _sets = new HashSet<>(); + private boolean _hideParticles = false; private int _activeItemSlot = 3; @@ -133,6 +143,12 @@ public class GadgetManager extends MiniPlugin _achievementManager = achievementManager; CreateGadgets(); + createSets(); + } + + private void createSets() + { + addSet(new SetFrostLord(this)); } private void CreateGadgets() @@ -218,6 +234,11 @@ public class GadgetManager extends MiniPlugin addGadget(new DoubleJumpTitan(this)); addGadget(new DoubleJumpCandyCane(this)); + // Hat + addGadget(new HatSanta(this)); + addGadget(new HatSnowman(this)); + addGadget(new HatPresent(this)); + addGadget(new HatCoal(this)); // Music addGadget(new MusicGadget(this, "13 Disc", new String[] {""}, -2, 2256, 178000)); @@ -233,6 +254,42 @@ public class GadgetManager extends MiniPlugin addGadget(new MusicGadget(this, "Wait Disc", new String[] {""}, -2, 2267, 238000)); } + public Gadget getGadget(Class c) + { + for(GadgetType type : GadgetType.values()) + { + for(Gadget gadget : getGadgets(type)) + { + if(gadget.getClass().equals(c)) return gadget; + } + } + return null; + } + + public Set getSets(Gadget gadget) + { + HashSet hset = new HashSet<>(); + for(GadgetSet set : _sets) + { + if(set.isPartOfSet(gadget)) hset.add(set); + } + return hset; + } + + public GadgetSet getGadgetSet(Class c) + { + for(GadgetSet set : _sets) + { + if(set.getClass().equals(c)) return set; + } + return null; + } + + private void addSet(GadgetSet set) + { + _sets.add(set); + } + private void addGadget(Gadget gadget) { if (!_gadgets.containsKey(gadget.getGadgetType())) @@ -284,56 +341,6 @@ public class GadgetManager extends MiniPlugin } } } - - /* - public void RemoveItem(Player player) - { - for (GadgetType gadgetType : _gadgets.keySet()) - { - for (Gadget gadget : _gadgets.get(gadgetType)) - { - if (gadget instanceof ItemGadget) - { - ItemGadget item = (ItemGadget) gadget; - - item.RemoveItem(player); - } - } - } - } - - public void RemoveParticle(Player player) - { - for (GadgetType gadgetType : _gadgets.keySet()) - { - for (Gadget gadget : _gadgets.get(gadgetType)) - { - if (gadget instanceof ParticleGadget) - { - ParticleGadget part = (ParticleGadget) gadget; - - part.Disable(player); - } - } - } - } - - public void RemoveMorph(Player player) - { - for (GadgetType gadgetType : _gadgets.keySet()) - { - for (Gadget gadget : _gadgets.get(gadgetType)) - { - if (gadget instanceof MorphGadget) - { - MorphGadget part = (MorphGadget) gadget; - - part.Disable(player); - } - } - } - } - */ public void removeGadetType(Player player, GadgetType type) { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/event/GadgetDisableEvent.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/event/GadgetDisableEvent.java new file mode 100644 index 000000000..000eace62 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/event/GadgetDisableEvent.java @@ -0,0 +1,43 @@ +package mineplex.core.gadget.event; + +import org.bukkit.entity.Player; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; + +import mineplex.core.gadget.types.Gadget; + +public class GadgetDisableEvent extends Event +{ + + private static final HandlerList handlers = new HandlerList(); + + private Player _player; + private Gadget _gadget; + + public GadgetDisableEvent(Player player, Gadget gadget) + { + _player = player; + _gadget = gadget; + } + + public Player getPlayer() + { + return _player; + } + + public Gadget getGadget() + { + return _gadget; + } + + public static HandlerList getHandlerList() + { + return handlers; + } + + public HandlerList getHandlers() + { + return handlers; + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/event/GadgetActivateEvent.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/event/GadgetEnableEvent.java similarity index 88% rename from Plugins/Mineplex.Core/src/mineplex/core/gadget/event/GadgetActivateEvent.java rename to Plugins/Mineplex.Core/src/mineplex/core/gadget/event/GadgetEnableEvent.java index 913d4860a..05112dfbf 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/event/GadgetActivateEvent.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/event/GadgetEnableEvent.java @@ -7,16 +7,17 @@ import org.bukkit.entity.Player; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; -public class GadgetActivateEvent extends Event +public class GadgetEnableEvent extends Event { private static final HandlerList handlers = new HandlerList(); private Player _player; private Gadget _gadget; + private boolean _cancelled = false; - public GadgetActivateEvent(Player player, Gadget gadget) + public GadgetEnableEvent(Player player, Gadget gadget) { _player = player; _gadget = gadget; @@ -41,7 +42,7 @@ public class GadgetActivateEvent extends Event { return _player; } - + public void setCancelled(boolean cancel) { _cancelled = cancel; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailFrostLord.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailFrostLord.java index 658c25e72..41659abca 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailFrostLord.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailFrostLord.java @@ -15,14 +15,14 @@ public class ArrowTrailFrostLord extends ArrowEffectGadget { public ArrowTrailFrostLord(GadgetManager manager) { - super(manager, "Frost Lord Arrow Trail", new String[] + super(manager, "Arrows of the Frost Lord", new String[] { C.cWhite + "You are a mighty frost lord.", C.cWhite + "Your double jumps and arrows", C.cWhite + "are enchanted with snow powers.", }, 10, - Material.SNOW_BALL, (byte)0); + Material.SNOW_BALL, (byte)0, "Frost Lord"); } @Override diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathFrostLord.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathFrostLord.java index 91cc05ad6..f0e5d5d42 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathFrostLord.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathFrostLord.java @@ -19,7 +19,7 @@ public class DeathFrostLord extends DeathEffectGadget C.cWhite + "are enchanted with snow powers.", }, 10, - Material.SNOW_BALL, (byte)0); + Material.SNOW_BALL, (byte)0, "Frost Lord"); } @EventHandler diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpFrostLord.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpFrostLord.java index 365d6d1ce..ab1047715 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpFrostLord.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpFrostLord.java @@ -2,27 +2,25 @@ package mineplex.core.gadget.gadgets.doublejump; import org.bukkit.Material; import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.player.PlayerToggleFlightEvent; import mineplex.core.common.util.C; import mineplex.core.common.util.UtilParticle; -import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; -import mineplex.core.gadget.types.DoubleJumpEffectGadget; +import mineplex.core.common.util.UtilServer; import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.types.DoubleJumpEffectGadget; public class DoubleJumpFrostLord extends DoubleJumpEffectGadget { public DoubleJumpFrostLord(GadgetManager manager) { - super(manager, "Frost Lord Jump Effect", new String[] + super(manager, "Boots of the Frost Lord", new String[] { C.cWhite + "More snow incomming.", }, 1, - Material.SNOW_BALL, (byte)0); + Material.SNOW_BALL, (byte)0, "Frost Lord"); } @Override diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatCoal.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatCoal.java new file mode 100644 index 000000000..5a58edd2e --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatCoal.java @@ -0,0 +1,18 @@ +package mineplex.core.gadget.gadgets.hat; + +import org.bukkit.Material; +import org.bukkit.inventory.ItemStack; + +import mineplex.core.common.util.C; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.types.HatGadget; + +public class HatCoal extends HatGadget +{ + + public HatCoal(GadgetManager manager) + { + super(manager, "Coal Hat", new String[]{C.cWhite + "Coal Hat"}, 10, new ItemStack(Material.COAL_BLOCK)); + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatPresent.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatPresent.java new file mode 100644 index 000000000..393f956b2 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatPresent.java @@ -0,0 +1,15 @@ +package mineplex.core.gadget.gadgets.hat; + +import mineplex.core.common.util.C; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.types.HatGadget; + +public class HatPresent extends HatGadget +{ + + public HatPresent(GadgetManager manager) + { + super(manager, "Present Hat", new String[]{C.cWhite + "Present Hat"}, 10, "christmasgift"); + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSanta.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSanta.java new file mode 100644 index 000000000..618e1005e --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSanta.java @@ -0,0 +1,15 @@ +package mineplex.core.gadget.gadgets.hat; + +import mineplex.core.common.util.C; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.types.HatGadget; + +public class HatSanta extends HatGadget +{ + + public HatSanta(GadgetManager manager) + { + super(manager, "Santa Hat", new String[]{C.cWhite + "Santa Hat"}, 10, "Presents"); + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSnowman.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSnowman.java new file mode 100644 index 000000000..69a2ca1f5 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSnowman.java @@ -0,0 +1,15 @@ +package mineplex.core.gadget.gadgets.hat; + +import mineplex.core.common.util.C; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.types.HatGadget; + +public class HatSnowman extends HatGadget +{ + + public HatSnowman(GadgetManager manager) + { + super(manager, "Snowman Hat", new String[]{C.cWhite + "Snowman Hat"}, 10, "snowman002"); + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java index 38ff604cc..b0fae1e93 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java @@ -58,17 +58,23 @@ public class ItemCoal extends ItemGadget { if(Manager.getInventoryManager().Get(player).getItemCount(GetName()) >= 1000) { - player.sendMessage(F.main("Coal", "You unlocked " + C.cDGray + "COAL FUMES!")); - UtilParticle.PlayParticleToAll(ParticleType.LARGE_SMOKE, player.getLocation().add(0, 0.5, 0), 0.2f, 0.5f, 0.2f, 0, 500, ViewDist.LONG); - UtilParticle.PlayParticleToAll(ParticleType.LARGE_SMOKE, player.getLocation(), 1.5f, 0.0f, 1.5f, 0, 500, ViewDist.LONG); - player.getWorld().playSound(player.getLocation(), Sound.WITHER_DEATH, 0.8f, 0); Manager.getInventoryManager().addItemToInventory(new Callback() { @Override public void run(Boolean data) { - Manager.getInventoryManager().addItemToInventory(player, GetName(), -1000); - player.getInventory().setItem(Manager.getActiveItemSlot(), ItemStackFactory.Instance.CreateStack(GetDisplayMaterial(), GetDisplayData(), 1, F.item(Manager.getInventoryManager().Get(player).getItemCount(GetName()) + " " + GetName()))); + if(data) + { + player.sendMessage(F.main("Coal", "You unlocked " + C.cDGray + "COAL FUMES!")); + UtilParticle.PlayParticleToAll(ParticleType.LARGE_SMOKE, player.getLocation().add(0, 0.5, 0), 0.2f, 0.5f, 0.2f, 0, 500, ViewDist.LONG); + UtilParticle.PlayParticleToAll(ParticleType.LARGE_SMOKE, player.getLocation(), 1.5f, 0.0f, 1.5f, 0, 500, ViewDist.LONG); + player.getWorld().playSound(player.getLocation(), Sound.WITHER_DEATH, 0.8f, 0); + + Manager.getInventoryManager().addItemToInventory(player, GetName(), -1000); + player.getInventory().setItem(Manager.getActiveItemSlot(), ItemStackFactory.Instance.CreateStack(GetDisplayMaterial(), GetDisplayData(), 1, F.item(Manager.getInventoryManager().Get(player).getItemCount(GetName()) + " " + GetName()))); + } else { + player.sendMessage("Something went wrong..."); + } } }, player, "Coal Fumes", 1); return; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitTeam.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitTeam.java index 2e65b7ae5..6b598c419 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitTeam.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitTeam.java @@ -19,7 +19,7 @@ import mineplex.core.common.util.F; import mineplex.core.common.util.UtilGear; import mineplex.core.common.util.UtilPlayer; import mineplex.core.gadget.GadgetManager; -import mineplex.core.gadget.event.GadgetActivateEvent; +import mineplex.core.gadget.event.GadgetEnableEvent; import mineplex.core.gadget.types.GadgetType; import mineplex.core.gadget.types.OutfitGadget; import mineplex.core.gadget.types.OutfitGadget.ArmorSlot; @@ -41,7 +41,7 @@ public class OutfitTeam extends OutfitGadget @Override public void Enable(Player player) { - GadgetActivateEvent gadgetEvent = new GadgetActivateEvent(player, this); + GadgetEnableEvent gadgetEvent = new GadgetEnableEvent(player, this); Bukkit.getServer().getPluginManager().callEvent(gadgetEvent); if (gadgetEvent.isCancelled()) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFrostLord.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFrostLord.java index 7d7a01928..e01e24201 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFrostLord.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFrostLord.java @@ -1,28 +1,25 @@ package mineplex.core.gadget.gadgets.particle; import java.util.HashSet; -import java.util.Iterator; import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.entity.Arrow; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; -import org.bukkit.event.entity.ProjectileHitEvent; -import org.bukkit.event.entity.ProjectileLaunchEvent; -import org.bukkit.event.player.PlayerToggleFlightEvent; -import mineplex.core.blood.BloodEvent; import mineplex.core.common.util.C; import mineplex.core.common.util.UtilParticle; -import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; +import mineplex.core.common.util.UtilServer; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.set.SetFrostLord; +import mineplex.core.gadget.types.GadgetSet; import mineplex.core.gadget.types.ParticleGadget; import mineplex.core.recharge.Recharge; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; -import mineplex.core.gadget.GadgetManager; public class ParticleFrostLord extends ParticleGadget { @@ -30,14 +27,14 @@ public class ParticleFrostLord extends ParticleGadget public ParticleFrostLord(GadgetManager manager) { - super(manager, "Frost Lord Particle", new String[] + super(manager, "Wind of the Frost Lord", new String[] { C.cWhite + "You are a mighty frost lord.", C.cWhite + "Your double jumps and arrows", C.cWhite + "are enchanted with snow powers.", }, 10, - Material.SNOW_BALL, (byte)0); + Material.SNOW_BALL, (byte)0, "Frost Lord"); } @EventHandler @@ -62,12 +59,19 @@ public class ParticleFrostLord extends ParticleGadget double scale = (double)(player.getTicksLived() % 50) / 50d; - for (int i = 0 ; i < 8 ; i++) + int amount = 4; + + GadgetSet set = Manager.getGadgetSet(SetFrostLord.class); + if(set.isActive(player)) amount = 6; + + double ang = Math.PI*2/amount; + + for (int i = 0 ; i < amount ; i++) { double r = (1d-scale) * Math.PI * 2; - double x = Math.sin(r + (i * (Math.PI/4))) * (r%(Math.PI * 4)) * 0.4; - double z = Math.cos(r + (i * (Math.PI/4))) * (r%(Math.PI * 4)) * 0.4; + double x = Math.sin(r + (i * ang)) * (r%(Math.PI * 4)) * 0.4; + double z = Math.cos(r + (i * ang)) * (r%(Math.PI * 4)) * 0.4; UtilParticle.PlayParticle(ParticleType.SNOW_SHOVEL, player.getLocation().add(x, scale * 3, z), 0f, 0f, 0f, 0, 1, ViewDist.NORMAL, UtilServer.getPlayers()); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleHelix.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleHelix.java index cc4a4882e..26e47dae7 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleHelix.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleHelix.java @@ -1,20 +1,20 @@ package mineplex.core.gadget.gadgets.particle; -import org.bukkit.GameMode; +import org.bukkit.Location; import org.bukkit.Material; -import org.bukkit.Sound; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; +import org.bukkit.util.Vector; import mineplex.core.common.util.C; import mineplex.core.common.util.UtilParticle; -import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; +import mineplex.core.common.util.UtilServer; +import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.types.ParticleGadget; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; -import mineplex.core.gadget.GadgetManager; public class ParticleHelix extends ParticleGadget { @@ -49,6 +49,56 @@ public class ParticleHelix extends ParticleGadget } else { + + int ticks = 10; + int hticks = 40; + boolean up = player.getTicksLived()%(hticks*2) < hticks; + int tick = player.getTicksLived()%ticks; + double htick = player.getTicksLived()%hticks; + int splits = 4; + + Location loc = player.getLocation().add(0, 2, 0); + + for(double d = tick*(Math.PI*2/splits)/ticks; d < Math.PI*2; d += Math.PI*2/splits) + { + Vector v = new Vector(Math.sin(d), 0, Math.cos(d)); + v.normalize().multiply(Math.max(0.2, Math.sin((htick/hticks)*Math.PI)*1.0)); + v.setY((htick/hticks) * -2); + if(up) v.setY(-2 + 2*(htick/hticks)); + + +// v.multiply(2).subtract(v.clone().multiply(htick/hticks)); +// v.multiply(2*(htick/hticks)); + + Location lloc = loc.clone().add(v); + + UtilParticle.PlayParticleToAll(ParticleType.RED_DUST, lloc, null, 0f, 2, ViewDist.NORMAL); + } + +// UtilParticle.PlayParticle(ParticleType.RED_DUST, player.getLocation().add(0, 0.1, 0), 0.5f, 0.1f, 0.5f, 0, 20, +// ViewDist.NORMAL, UtilServer.getPlayers()); + + /* + * With Flame + int ticks = 10; + int tick = player.getTicksLived()%ticks; + int splits = 3; + + Location loc = player.getLocation().add(0, 3, 0); + + for(double d = tick*(Math.PI*2/splits)/ticks; d < Math.PI*2; d += Math.PI*2/splits) + { + Vector v = new Vector(Math.sin(d), 0, Math.cos(d)); + + v.setY(-1.5); + + UtilParticle.PlayParticleToAll(ParticleType.FLAME, loc, v, 0.1f, 0, ViewDist.NORMAL); + } + + UtilParticle.PlayParticle(ParticleType.RED_DUST, player.getLocation().add(0, 0.1, 0), 0.5f, 0.1f, 0.5f, 0, 20, + ViewDist.NORMAL, UtilServer.getPlayers()); + */ + /* for (int height=0 ; height <= 20 ; height++) { for (int i=0 ; i < 2 ; i++) @@ -73,6 +123,7 @@ public class ParticleHelix extends ParticleGadget //Sound player.getWorld().playSound(player.getLocation(), Sound.LAVA, 0.3f, 1f); + */ } } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleTitan.java index 8431e6f7c..12353e872 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleTitan.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleTitan.java @@ -59,8 +59,11 @@ public class ParticleTitan extends ParticleGadget double r = 3; boolean redstone = false; - if(Manager.isMoving(player)) - r = 0.5; + if(Manager.isMoving(player)) + { + UtilParticle.PlayParticleToAll(ParticleType.FLAME, player.getLocation().add(0, 0.1, 0), 0.2f, 0.1f, 0.2f, 0.015f, 3, ViewDist.NORMAL); + continue; + } for(int i = 0; i < total; i++) { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetFrostLord.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetFrostLord.java new file mode 100644 index 000000000..ce34dfc65 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetFrostLord.java @@ -0,0 +1,38 @@ +package mineplex.core.gadget.set; + +import org.bukkit.entity.Player; + +import mineplex.core.common.util.F; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailFrostLord; +import mineplex.core.gadget.gadgets.death.DeathFrostLord; +import mineplex.core.gadget.gadgets.doublejump.DoubleJumpFrostLord; +import mineplex.core.gadget.gadgets.particle.ParticleFrostLord; +import mineplex.core.gadget.types.GadgetSet; + +public class SetFrostLord extends GadgetSet +{ + + public SetFrostLord(GadgetManager manager) + { + super(manager, + manager.getGadget(ArrowTrailFrostLord.class), + manager.getGadget(DeathFrostLord.class), + manager.getGadget(DoubleJumpFrostLord.class), + manager.getGadget(ParticleFrostLord.class)); + } + + @Override + public void customEnable(Player player) + { + player.sendMessage(F.main("GadgetSet", "Enabled full set of " + F.elem("Frost Lord"))); + } + + @Override + public void customDisable(Player player) + { + player.sendMessage(F.main("GadgetSet", "Disabled full set of " + F.elem("Frost Lord"))); + + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ArrowEffectGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ArrowEffectGadget.java index 596a1e3f7..3513506a9 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ArrowEffectGadget.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ArrowEffectGadget.java @@ -20,9 +20,9 @@ public abstract class ArrowEffectGadget extends Gadget { protected HashSet _arrows = new HashSet(); - public ArrowEffectGadget(GadgetManager manager, String name, String[] desc, int cost, Material mat, byte data) + public ArrowEffectGadget(GadgetManager manager, String name, String[] desc, int cost, Material mat, byte data, String...altNames) { - super(manager, GadgetType.ArrowTrail, name, desc, cost, mat, data); + super(manager, GadgetType.ArrowTrail, name, desc, cost, mat, data, 1, altNames); } @Override diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/DeathEffectGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/DeathEffectGadget.java index 031406193..4e04cb807 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/DeathEffectGadget.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/DeathEffectGadget.java @@ -9,9 +9,9 @@ import mineplex.core.gadget.GadgetManager; public abstract class DeathEffectGadget extends Gadget { - public DeathEffectGadget(GadgetManager manager, String name, String[] desc, int cost, Material mat, byte data) + public DeathEffectGadget(GadgetManager manager, String name, String[] desc, int cost, Material mat, byte data, String...altNames) { - super(manager, GadgetType.Death, name, desc, cost, mat, data); + super(manager, GadgetType.Death, name, desc, cost, mat, data, 1, altNames); } @Override diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/DoubleJumpEffectGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/DoubleJumpEffectGadget.java index 84b02523a..59575b97f 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/DoubleJumpEffectGadget.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/DoubleJumpEffectGadget.java @@ -6,18 +6,14 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.player.PlayerToggleFlightEvent; import mineplex.core.common.util.F; -import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilPlayer; -import mineplex.core.common.util.UtilServer; -import mineplex.core.common.util.UtilParticle.ParticleType; -import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.gadget.GadgetManager; public abstract class DoubleJumpEffectGadget extends Gadget { - public DoubleJumpEffectGadget(GadgetManager manager, String name, String[] desc, int cost, Material mat, byte data) + public DoubleJumpEffectGadget(GadgetManager manager, String name, String[] desc, int cost, Material mat, byte data, String...altNames) { - super(manager, GadgetType.DoubleJump, name, desc, cost, mat, data); + super(manager, GadgetType.DoubleJump, name, desc, cost, mat, data, 1, altNames); } @Override diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/Gadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/Gadget.java index 063495f54..fae816a3f 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/Gadget.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/Gadget.java @@ -7,7 +7,8 @@ import mineplex.core.common.util.F; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; import mineplex.core.gadget.GadgetManager; -import mineplex.core.gadget.event.GadgetActivateEvent; +import mineplex.core.gadget.event.GadgetEnableEvent; +import mineplex.core.gadget.event.GadgetDisableEvent; import mineplex.core.shop.item.SalesPackageBase; import org.bukkit.Bukkit; @@ -25,18 +26,23 @@ public abstract class Gadget extends SalesPackageBase implements Listener protected HashSet _active = new HashSet(); + private String[] _alternativePackageNames; + public Gadget(GadgetManager manager, GadgetType gadgetType, String name, String[] desc, int cost, Material mat, byte data) { this(manager, gadgetType, name, desc, cost, mat, data, 1); } - public Gadget(GadgetManager manager, GadgetType gadgetType, String name, String[] desc, int cost, Material mat, byte data, int quantity) + public Gadget(GadgetManager manager, GadgetType gadgetType, String name, String[] desc, int cost, Material mat, byte data, int quantity, String... alternativesalepackageNames) { super(name, mat, data, desc, cost, quantity); _gadgetType = gadgetType; KnownPackage = false; + _alternativePackageNames = alternativesalepackageNames; + if(_alternativePackageNames == null) _alternativePackageNames = new String[0]; + Manager = manager; Manager.getPlugin().getServer().getPluginManager().registerEvents(this, Manager.getPlugin()); @@ -65,7 +71,7 @@ public abstract class Gadget extends SalesPackageBase implements Listener public void Enable(Player player) { - GadgetActivateEvent gadgetEvent = new GadgetActivateEvent(player, this); + GadgetEnableEvent gadgetEvent = new GadgetEnableEvent(player, this); Bukkit.getServer().getPluginManager().callEvent(gadgetEvent); if (gadgetEvent.isCancelled()) @@ -89,7 +95,11 @@ public abstract class Gadget extends SalesPackageBase implements Listener public void Disable(Player player) { if (IsActive(player)) + { Manager.removeActive(player, this); + GadgetDisableEvent event = new GadgetDisableEvent(player, this); + Bukkit.getServer().getPluginManager().callEvent(event); + } DisableCustom(player); } @@ -102,6 +112,21 @@ public abstract class Gadget extends SalesPackageBase implements Listener { } + + public boolean ownsGadget(Player player) + { + if(IsFree()) return true; + if(Manager.getDonationManager().Get(player.getName()).OwnsUnknownPackage(GetName())) return true; + if(Manager.getInventoryManager().Get(player).getItemCount(GetName()) > 0) return true; + + for(String alt : _alternativePackageNames) + { + if(Manager.getDonationManager().Get(player.getName()).OwnsUnknownPackage(alt)) return true; + if(Manager.getInventoryManager().Get(player).getItemCount(alt) > 0) return true; + } + + return false; + } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetSet.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetSet.java new file mode 100644 index 000000000..94e7dde71 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetSet.java @@ -0,0 +1,93 @@ +package mineplex.core.gadget.types; + +import java.util.HashSet; + +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; + +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.event.GadgetEnableEvent; +import mineplex.core.gadget.event.GadgetDisableEvent; + +public abstract class GadgetSet implements Listener +{ + + private Gadget[] _gadgets; + + protected GadgetManager Manager; + + HashSet _active = new HashSet<>(); + + public GadgetSet(GadgetManager manager, Gadget... gadgets) + { + Manager = manager; + _gadgets = gadgets; + + Bukkit.getPluginManager().registerEvents(this, Manager.getPlugin()); + } + + public void checkPlayer(Player player, Gadget gadget, boolean enable) + { + boolean wasActive = isActive(player); + + for(Gadget g : _gadgets) + { + if(!g.IsActive(player) || g.equals(gadget)) + { + if(enable && g.equals(gadget)) continue; + + _active.remove(player); + if(wasActive) customDisable(player); + return; + } + } + _active.add(player); + if(!wasActive) + { + customEnable(player); + } + } + + @EventHandler + public void onActivate(GadgetEnableEvent event) + { + checkPlayer(event.getPlayer(), event.getGadget(), true); + } + + @EventHandler + public void onDeativate(GadgetDisableEvent event) + { + checkPlayer(event.getPlayer(), event.getGadget(), false); + } + + public boolean isActive(Player player) + { + return _active.contains(player); + } + + public abstract void customEnable(Player player); + + + public abstract void customDisable(Player player); + + public Gadget[] getGadgets() + { + Gadget[] array = new Gadget[_gadgets.length]; + System.arraycopy(_gadgets, 0, array, 0, array.length); + return array; + } + + public boolean isPartOfSet(Gadget gadget) + { + for(Gadget g : _gadgets) + { + if(g.equals(gadget)) return true; + } + return false; + } + + + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/HatGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/HatGadget.java new file mode 100644 index 000000000..e7ad0ea37 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/HatGadget.java @@ -0,0 +1,92 @@ +package mineplex.core.gadget.types; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; + +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.gadget.GadgetManager; + +public abstract class HatGadget extends OutfitGadget +{ + + private ItemStack _hat; + + public HatGadget(GadgetManager manager, String name, String[] desc, int cost, ItemStack item) + { + super(manager, name, desc, cost, ArmorSlot.Helmet, item.getType(), item.getData().getData()); + _hat = item; + } + + public HatGadget(GadgetManager manager, String name, String[] desc, int cost, String playerName) + { + this(manager, name, desc, cost, getSkull(playerName)); + } + + public ItemStack getHelmetItem() + { + return _hat.clone(); + } + + public void ApplyArmor(Player player) + { + Manager.removeGadetType(player, GadgetType.Morph); + + Manager.RemoveOutfit(player, _slot); + + _active.add(player); + + UtilPlayer.message(player, F.main("Gadget", "You put on " + F.elem(GetName()) + ".")); + + player.getInventory().setHelmet(getHelmetItem()); + } + + public void RemoveArmor(Player player) + { + if (!_active.remove(player)) + return; + + UtilPlayer.message(player, F.main("Gadget", "You took off " + F.elem(GetName()) + ".")); + + player.getInventory().setHelmet(null); + } + + public static ItemStack getSkull(String playerName) + { + SkullMeta meta = (SkullMeta) Bukkit.getItemFactory().getItemMeta(Material.SKULL_ITEM); + + meta.setOwner(playerName); + + ItemStack stack = new ItemStack(Material.SKULL_ITEM,1 , (byte)3); + + stack.setItemMeta(meta); + + return stack; + } + + @Override + public GadgetType getGadgetType() + { + return GadgetType.Hat; + } + + + @Override + public void EnableCustom(Player player) + { + ApplyArmor(player); + } + + @Override + public void DisableCustom(Player player) + { + RemoveArmor(player); + } + + + + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/MusicGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/MusicGadget.java index 7dd175be3..c139e85c8 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/MusicGadget.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/MusicGadget.java @@ -8,7 +8,7 @@ import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilPlayer; import mineplex.core.gadget.GadgetManager; -import mineplex.core.gadget.event.GadgetActivateEvent; +import mineplex.core.gadget.event.GadgetEnableEvent; import mineplex.core.gadget.event.GadgetBlockEvent; import mineplex.core.gadget.gadgets.SongData; import mineplex.core.recharge.Recharge; @@ -41,7 +41,7 @@ public class MusicGadget extends Gadget @Override public void Enable(Player player) { - GadgetActivateEvent gadgetEvent = new GadgetActivateEvent(player, this); + GadgetEnableEvent gadgetEvent = new GadgetEnableEvent(player, this); Bukkit.getServer().getPluginManager().callEvent(gadgetEvent); if (gadgetEvent.isCancelled()) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ParticleGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ParticleGadget.java index 499972786..24444a965 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ParticleGadget.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ParticleGadget.java @@ -9,9 +9,9 @@ import mineplex.core.gadget.GadgetManager; public abstract class ParticleGadget extends Gadget { - public ParticleGadget(GadgetManager manager, String name, String[] desc, int cost, Material mat, byte data) + public ParticleGadget(GadgetManager manager, String name, String[] desc, int cost, Material mat, byte data, String...altNames) { - super(manager, GadgetType.Particle, name, desc, cost, mat, data); + super(manager, GadgetType.Particle, name, desc, cost, mat, data, 1, altNames); } @Override diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/DisguiseCommand.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/DisguiseCommand.java index 5b7237994..f10a8db0d 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/DisguiseCommand.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/DisguiseCommand.java @@ -15,7 +15,7 @@ import mineplex.core.common.util.UUIDFetcher; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; import mineplex.core.disguise.disguises.DisguisePlayer; -import mineplex.core.gadget.event.GadgetActivateEvent; +import mineplex.core.gadget.event.GadgetEnableEvent; import mineplex.core.gadget.types.GadgetType; import mineplex.core.treasure.event.TreasureStartEvent; import mineplex.core.updater.UpdateType; @@ -291,7 +291,7 @@ public class DisguiseCommand extends CommandBase implements Liste } @EventHandler - public void gadget(GadgetActivateEvent event) + public void gadget(GadgetEnableEvent event) { if(!event.getGadget().GetName().equalsIgnoreCase("Coin Party Bomb") && event.getGadget().getGadgetType() != GadgetType.Morph) return; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/event/EventGame.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/event/EventGame.java index 31e1a164a..58f1e3b2b 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/event/EventGame.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/event/EventGame.java @@ -25,7 +25,7 @@ import mineplex.core.disguise.disguises.DisguiseBat; import mineplex.core.disguise.disguises.DisguiseChicken; import mineplex.core.disguise.disguises.DisguiseEnderman; import mineplex.core.disguise.disguises.DisguiseWither; -import mineplex.core.gadget.event.GadgetActivateEvent; +import mineplex.core.gadget.event.GadgetEnableEvent; import mineplex.core.gadget.types.Gadget; import mineplex.core.gadget.types.GadgetType; import mineplex.core.give.Give; @@ -298,7 +298,7 @@ public class EventGame extends Game } @EventHandler - public void gadgetActivate(GadgetActivateEvent event) + public void gadgetActivate(GadgetEnableEvent event) { if (!_gadgetsEnabled) event.setCancelled(true); @@ -459,7 +459,7 @@ public class EventGame extends Game } @EventHandler - public void gadgetDisable(GadgetActivateEvent event) + public void gadgetDisable(GadgetEnableEvent event) { if (_allowAllGadgets) return; @@ -931,7 +931,7 @@ public class EventGame extends Game } @EventHandler - public void activateGadget(GadgetActivateEvent event) + public void activateGadget(GadgetEnableEvent event) { for(EventArea area : _customAreas.values()) { From 5b0909012d1388b5bc19e1e77fe1e29414d0ec0a Mon Sep 17 00:00:00 2001 From: xGamingDudex Date: Fri, 11 Dec 2015 01:07:47 +0100 Subject: [PATCH 07/81] Renamed GadgetActivateEvent to GadgetEnable event Some files didn't make it to prev commit --- Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java | 4 ++-- .../src/mineplex/hub/commands/DisguiseCommand.java | 4 ++-- .../Mineplex.Hub/src/mineplex/hub/modules/KothManager.java | 4 ++-- .../src/mineplex/hub/modules/ParkourManager.java | 6 +++--- .../src/mineplex/hub/modules/SoccerManager.java | 4 ++-- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java index ad5f421a0..7d6414188 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java @@ -28,7 +28,7 @@ import mineplex.core.disguise.DisguiseManager; import mineplex.core.disguise.disguises.DisguiseSlime; import mineplex.core.donation.DonationManager; import mineplex.core.gadget.GadgetManager; -import mineplex.core.gadget.event.GadgetActivateEvent; +import mineplex.core.gadget.event.GadgetEnableEvent; import mineplex.core.gadget.event.GadgetCollideEntityEvent; import mineplex.core.gadget.types.GadgetType; import mineplex.core.giveaway.GiveawayManager; @@ -949,7 +949,7 @@ public class HubManager extends MiniClientPlugin } @EventHandler - public void GadgetActivate(GadgetActivateEvent event) + public void GadgetActivate(GadgetEnableEvent event) { if (!_gadgetsEnabled) event.setCancelled(true); diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/commands/DisguiseCommand.java b/Plugins/Mineplex.Hub/src/mineplex/hub/commands/DisguiseCommand.java index cc55696c8..2255c8a89 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/commands/DisguiseCommand.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/commands/DisguiseCommand.java @@ -16,7 +16,7 @@ import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; import mineplex.core.disguise.disguises.DisguisePlayer; import mineplex.core.donation.Donor; -import mineplex.core.gadget.event.GadgetActivateEvent; +import mineplex.core.gadget.event.GadgetEnableEvent; import mineplex.core.gadget.types.Gadget; import mineplex.core.gadget.types.GadgetType; import mineplex.core.treasure.event.TreasureStartEvent; @@ -285,7 +285,7 @@ public class DisguiseCommand extends CommandBase implements Listener } @EventHandler - public void gadget(GadgetActivateEvent event) + public void gadget(GadgetEnableEvent event) { if(!event.getGadget().GetName().equalsIgnoreCase("Coin Party Bomb") && event.getGadget().getGadgetType() != GadgetType.Morph) return; diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/KothManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/KothManager.java index 6f69a5782..d45cb3c8d 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/KothManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/KothManager.java @@ -22,7 +22,7 @@ import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; import mineplex.core.gadget.GadgetManager; -import mineplex.core.gadget.event.GadgetActivateEvent; +import mineplex.core.gadget.event.GadgetEnableEvent; import mineplex.core.gadget.gadgets.item.ItemDuelingSword; import mineplex.core.gadget.gadgets.outfit.OutfitTeam; import mineplex.core.gadget.types.Gadget; @@ -214,7 +214,7 @@ public class KothManager extends MiniPlugin } @EventHandler - public void disableGadgets(GadgetActivateEvent event) + public void disableGadgets(GadgetEnableEvent event) { if (isKothMode(event.getPlayer())) event.setCancelled(true); diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/ParkourManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/ParkourManager.java index 2b4b198d3..b5d86f0d6 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/ParkourManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/ParkourManager.java @@ -36,7 +36,7 @@ import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilTime; import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.donation.DonationManager; -import mineplex.core.gadget.event.GadgetActivateEvent; +import mineplex.core.gadget.event.GadgetEnableEvent; import mineplex.core.gadget.event.GadgetBlockEvent; import mineplex.core.gadget.types.MusicGadget; import mineplex.core.mount.event.MountActivateEvent; @@ -138,7 +138,7 @@ public class ParkourManager extends MiniPlugin } @EventHandler - public void disableGadgets(GadgetActivateEvent event) + public void disableGadgets(GadgetEnableEvent event) { if (isParkourMode(event.getPlayer())) event.setCancelled(true); @@ -460,7 +460,7 @@ public class ParkourManager extends MiniPlugin } @EventHandler - public void musicDisable(GadgetActivateEvent event) + public void musicDisable(GadgetEnableEvent event) { if (event.getGadget() instanceof MusicGadget) { diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/SoccerManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/SoccerManager.java index 687bf534c..b33dadd43 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/SoccerManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/SoccerManager.java @@ -41,7 +41,7 @@ import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilTextMiddle; import mineplex.core.common.util.UtilTime; import mineplex.core.gadget.GadgetManager; -import mineplex.core.gadget.event.GadgetActivateEvent; +import mineplex.core.gadget.event.GadgetEnableEvent; import mineplex.core.gadget.gadgets.outfit.OutfitTeam; import mineplex.core.gadget.types.Gadget; import mineplex.core.gadget.types.GadgetType; @@ -491,7 +491,7 @@ public class SoccerManager extends MiniPlugin } @EventHandler - public void disableGadgets(GadgetActivateEvent event) + public void disableGadgets(GadgetEnableEvent event) { if (isSoccerMode(event.getPlayer())) event.setCancelled(true); From 7b4f5d5b752f53f9d90e4ec38899644fb083f346 Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Thu, 10 Dec 2015 19:19:20 -0500 Subject: [PATCH 08/81] Christmas chest in gui --- .../core/treasure/gui/TreasurePage.java | 37 ++++++++++++++++--- 1 file changed, 31 insertions(+), 6 deletions(-) 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 f1426accf..a4823f5d2 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/TreasurePage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/TreasurePage.java @@ -39,6 +39,7 @@ public class TreasurePage extends ShopPageBase int basicCount = _inventoryManager.Get(getPlayer()).getItemCount(TreasureType.OLD.getItemName()); int heroicCount = _inventoryManager.Get(getPlayer()).getItemCount(TreasureType.ANCIENT.getItemName()); int legendaryCount = _inventoryManager.Get(getPlayer()).getItemCount(TreasureType.MYTHICAL.getItemName()); + int christmasCount = _inventoryManager.Get(getPlayer()).getItemCount(TreasureType.CHRISTMAS.getItemName()); List basicLore = new ArrayList(); basicLore.add(" "); @@ -97,17 +98,41 @@ public class TreasurePage extends ShopPageBase legendaryLore.add(ChatColor.RESET + "or Purchase at: " + C.cYellow + "www.mineplex.com/shop"); } + List christmasLore = new ArrayList(); + christmasLore.add(" "); + christmasLore.add(F.value("Christmas Chests Owned", "" + christmasCount)); + christmasLore.add(" "); + christmasLore.add(C.cGray + "All our previous adventurers have"); + christmasLore.add(C.cGray + "perished in search of these chests."); + christmasLore.add(C.cGray + "However, legends of their existence"); + christmasLore.add(C.cGray + "convinced Sterling, Chiss and Defek7"); + christmasLore.add(C.cGray + "to venture out and discover the"); + christmasLore.add(C.cGray + "location of these chests on their own."); + christmasLore.add(" "); + if (christmasCount > 0) + christmasLore.add(ChatColor.RESET + C.cGreen + "Click to Open!"); + else + { + christmasLore.add(ChatColor.RESET + "Click to Purchase for " + C.cYellow + "10000 Coins"); + christmasLore.add(" "); + christmasLore.add(ChatColor.RESET + "or Purchase at: " + C.cYellow + "www.mineplex.com/shop"); + } + ShopItem basic = new ShopItem(Material.CHEST, C.cGreen + C.Bold + "Old Chest", basicLore.toArray(new String[0]), 0, false, false); ShopItem heroic = new ShopItem(Material.TRAPPED_CHEST, C.cGold + C.Bold + "Ancient Chest", heroicLore.toArray(new String[0]), 0, false, false); ShopItem legendary = new ShopItem(Material.ENDER_CHEST, C.cRed + C.Bold + "Mythical Chest", legendaryLore.toArray(new String[0]), 0, false, false); + ShopItem christmas = new ShopItem(Material.SNOW_BALL, C.cAqua + C.Bold + "Christmas Chest", christmasLore.toArray(new String[0]), 0, false, false); - if (basicCount > 0) addButton(2, basic, new OpenTreasureButton(getPlayer(), _treasureLocation, TreasureType.OLD)); - else addButton(2, basic, new BuyChestButton(getPlayer(), _inventoryManager, this, "Old Chest", Material.CHEST, 1000)); + if (basicCount > 0) addButton(1, basic, new OpenTreasureButton(getPlayer(), _treasureLocation, TreasureType.OLD)); + else addButton(1, basic, new BuyChestButton(getPlayer(), _inventoryManager, this, "Old Chest", Material.CHEST, 1000)); - if (heroicCount > 0) addButton(4, heroic, new OpenTreasureButton(getPlayer(), _treasureLocation, TreasureType.ANCIENT)); - else addButton(4, heroic, new BuyChestButton(getPlayer(), _inventoryManager, this, "Ancient Chest", Material.CHEST, 5000)); + if (heroicCount > 0) addButton(3, heroic, new OpenTreasureButton(getPlayer(), _treasureLocation, TreasureType.ANCIENT)); + else addButton(3, heroic, new BuyChestButton(getPlayer(), _inventoryManager, this, "Ancient Chest", Material.CHEST, 5000)); - if (legendaryCount > 0) addButton(6, legendary, new OpenTreasureButton(getPlayer(), _treasureLocation, TreasureType.MYTHICAL)); - else addButton(6, legendary, new BuyChestButton(getPlayer(), _inventoryManager, this, "Mythical Chest", Material.ENDER_CHEST, 10000)); + if (legendaryCount > 0) addButton(5, legendary, new OpenTreasureButton(getPlayer(), _treasureLocation, TreasureType.MYTHICAL)); + else addButton(5, legendary, new BuyChestButton(getPlayer(), _inventoryManager, this, "Mythical Chest", Material.ENDER_CHEST, 10000)); + + if (christmasCount > 0) addButton(6, christmas, new OpenTreasureButton(getPlayer(), _treasureLocation, TreasureType.CHRISTMAS)); + else addButton(6, christmas, new BuyChestButton(getPlayer(), _inventoryManager, this, "Christmas Chest", Material.SNOW_BALL, 10000)); } } From 5d96ceb41ee7b1eeaca90456906bd6a58b0e576f Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Thu, 10 Dec 2015 19:20:11 -0500 Subject: [PATCH 09/81] Let owner+ disguise as staff - easy way to check a player's rank --- .../src/mineplex/hub/commands/DisguiseCommand.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/commands/DisguiseCommand.java b/Plugins/Mineplex.Hub/src/mineplex/hub/commands/DisguiseCommand.java index cc55696c8..4f7e3aa8e 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/commands/DisguiseCommand.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/commands/DisguiseCommand.java @@ -111,6 +111,8 @@ public class DisguiseCommand extends CommandBase implements Listener return; } + final Rank rank = Plugin.GetClients().Get(caller).GetRank(); + Bukkit.getServer().getScheduler().runTaskAsynchronously(Plugin.getPlugin(), new Runnable() { @Override @@ -162,7 +164,7 @@ public class DisguiseCommand extends CommandBase implements Listener otherRank = other.GetRank(); } catch(NullPointerException exception) {} - if(otherRank.has(Rank.TWITCH)) + if(otherRank.has(Rank.TWITCH) && !rank.has(Rank.OWNER)) { UtilPlayer.message(caller, C.cRed + C.Bold + "You can't disguise as staff!"); return; From 4d8b8bd58bb1aca419124a70af21c84c96609892 Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Thu, 10 Dec 2015 19:27:32 -0500 Subject: [PATCH 10/81] Fix errors, update cosmetic menu --- .../mineplex/core/cosmetic/ui/page/Menu.java | 41 ++++++------------- .../mineplex/core/gadget/GadgetManager.java | 4 +- .../src/mineplex/hub/HubManager.java | 6 +-- 3 files changed, 17 insertions(+), 34 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java index 143794f24..a0ecf9001 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java @@ -53,37 +53,20 @@ public class Menu extends ShopPageBase // " " // }, 1, false)); - - addItem(4, new ShopItem(175, getDonationManager().Get(getPlayer().getName()).getCoins() + " Coins", new String[] - { - " ", - ChatColor.RESET + C.cYellow + "Purchase Coins", - ChatColor.RESET + "www.mineplex.com/shop", - " ", - ChatColor.RESET + C.cAqua + "Ultra Rank", - ChatColor.RESET + "Receives 7500 Coins per Month", - " ", - ChatColor.RESET + C.cPurple + "Hero Rank", - ChatColor.RESET + "Receives 15000 Coins per Month", - " ", - ChatColor.RESET + C.cGreen + "Legend Rank", - ChatColor.RESET + "Receives 30000 Coins per Month" - }, 1, false)); - - addButton(10, new ShopItem(Material.NETHER_STAR, "Particle Effects", 1, false), new OpenParticles(this)); - addButton(12, new ShopItem(Material.ARROW, "Arrow Trails", 1, false), new OpenArrowTrails(this)); - addButton(14, new ShopItem(Material.GOLD_BOOTS, "Double Jump Effects", 1, false), new OpenDoubleJump(this)); - addButton(16, new ShopItem(Material.SKULL_ITEM, "Death Animations", 1, false), new OpenDeathAnimations(this)); + addButton(1, new ShopItem(Material.NETHER_STAR, "Particle Effects", 1, false), new OpenParticles(this)); + addButton(3, new ShopItem(Material.ARROW, "Arrow Trails", 1, false), new OpenArrowTrails(this)); + addButton(5, new ShopItem(Material.GOLD_BOOTS, "Double Jump Effects", 1, false), new OpenDoubleJump(this)); + addButton(7, new ShopItem(Material.SKULL_ITEM, "Death Animations", 1, false), new OpenDeathAnimations(this)); - addButton(28, new ShopItem(Material.MELON_BLOCK, "Gadgets", 1, false), new OpenGadgets(this)); - addButton(30, new ShopItem(Material.LEATHER, "Morphs", 1, false), new OpenMorphs(this)); - addButton(32, new ShopItem(Material.IRON_BARDING, "Mounts", 1, false), new OpenMounts(this)); - addButton(34, new ShopItem(Material.BONE, "Pets", 1, false), new OpenPets(this)); + addButton(19, new ShopItem(Material.MELON_BLOCK, "Gadgets", 1, false), new OpenGadgets(this)); + addButton(21, new ShopItem(Material.LEATHER, "Morphs", 1, false), new OpenMorphs(this)); + addButton(23, new ShopItem(Material.IRON_BARDING, "Mounts", 1, false), new OpenMounts(this)); + addButton(25, new ShopItem(Material.BONE, "Pets", 1, false), new OpenPets(this)); - addButton(46, new ShopItem(Material.GOLD_HELMET, "Hats", 1, false), new OpenHats(this)); - addButton(48, new ShopItem(Material.DIAMOND_CHESTPLATE, "Costumes", 1, false), new OpenCostumes(this)); - addButton(50, new ShopItem(Material.GREEN_RECORD, "Music", 1, false), new OpenMusic(this)); - addButton(52, new ShopItem(Material.NAME_TAG, "Taunts", 1, false), new IButton() + addButton(37, new ShopItem(Material.GOLD_HELMET, "Hats", 1, false), new OpenHats(this)); + addButton(39, new ShopItem(Material.DIAMOND_CHESTPLATE, "Costumes", 1, false), new OpenCostumes(this)); + addButton(42, new ShopItem(Material.GREEN_RECORD, "Music", 1, false), new OpenMusic(this)); + addButton(44, new ShopItem(Material.NAME_TAG, "Taunts", 1, false), new IButton() { @Override public void onClick(Player player, ClickType clickType) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java index 1c6de2bb4..4f1852000 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java @@ -30,8 +30,8 @@ import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilTime; import mineplex.core.disguise.DisguiseManager; import mineplex.core.donation.DonationManager; -import mineplex.core.gadget.event.GadgetActivateEvent; import mineplex.core.gadget.event.GadgetCollideEntityEvent; +import mineplex.core.gadget.event.GadgetEnableEvent; import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailCandyCane; import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailFrostLord; import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailTitan; @@ -578,7 +578,7 @@ public class GadgetManager extends MiniPlugin } @EventHandler - public void GadgetActivate(GadgetActivateEvent event) + public void GadgetActivate(GadgetEnableEvent event) { if (!_gadgetsEnabled) event.setCancelled(true); diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java index d9673ed0b..6eaf1149a 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java @@ -234,7 +234,7 @@ public class HubManager extends MiniClientPlugin _achievementManager.setGiveInterfaceItem(true); _packetHandler = packetHandler; - new NotificationManager(getPlugin(), clientManager); + new NotificationManager(getPlugin(), clientManager, _preferences); new BotSpamManager(plugin, clientManager, punish); ((CraftWorld)Bukkit.getWorlds().get(0)).getHandle().pvpMode = true; @@ -933,7 +933,7 @@ public class HubManager extends MiniClientPlugin GetGadget().toggleGadgetEnabled(); for (Player player : UtilServer.getPlayers()) - player.sendMessage(C.cWhite + C.Bold + "Gadgets/Mounts are now " + F.elem(_gadgetsEnabled ? C.cGreen + C.Bold + "Enabled" : C.cRed + C.Bold + "Disabled")); + player.sendMessage(C.cWhite + C.Bold + "Gadgets/Mounts are now " + F.elem(GetGadget().isGadgetEnabled() ? C.cGreen + C.Bold + "Enabled" : C.cRed + C.Bold + "Disabled")); } public void addGameMode(Player caller, Player target) @@ -1007,7 +1007,7 @@ public class HubManager extends MiniClientPlugin } @EventHandler - public void disableMusicChristmas(GadgetActivateEvent event) + public void disableMusicChristmas(GadgetEnableEvent event) { if (event.getGadget() != null && event.getGadget().getGadgetType() == GadgetType.MusicDisc) { From 16f39c1e712445f17769d86f2fa34ad9960159cf Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Thu, 10 Dec 2015 20:51:34 -0500 Subject: [PATCH 11/81] Pushing changes to go help william --- .../src/mineplex/core/common/util/F.java | 5 +++ .../mineplex/core/cosmetic/ui/page/Menu.java | 30 +++++++------- .../core/treasure/TreasureManager.java | 7 ++++ .../mineplex/core/treasure/TreasureType.java | 2 +- .../core/treasure/gui/TreasurePage.java | 39 +++++++++++++------ 5 files changed, 55 insertions(+), 28 deletions(-) diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/F.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/F.java index db1e528f3..fd2a34ec6 100644 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/F.java +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/F.java @@ -106,6 +106,11 @@ public class F return rank.getTag(false, false); } + public static String value(String variable, int value) + { + return value(variable, "" + value); + } + public static String value(String variable, String value) { return value(0, variable, value); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java index a0ecf9001..3d213582d 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java @@ -65,8 +65,8 @@ public class Menu extends ShopPageBase addButton(37, new ShopItem(Material.GOLD_HELMET, "Hats", 1, false), new OpenHats(this)); addButton(39, new ShopItem(Material.DIAMOND_CHESTPLATE, "Costumes", 1, false), new OpenCostumes(this)); - addButton(42, new ShopItem(Material.GREEN_RECORD, "Music", 1, false), new OpenMusic(this)); - addButton(44, new ShopItem(Material.NAME_TAG, "Taunts", 1, false), new IButton() + addButton(41, new ShopItem(Material.GREEN_RECORD, "Music", 1, false), new OpenMusic(this)); + addButton(43, new ShopItem(Material.NAME_TAG, "Taunts", 1, false), new IButton() { @Override public void onClick(Player player, ClickType clickType) @@ -84,37 +84,37 @@ public class Menu extends ShopPageBase switch (type) { case Particle: - slot = 10; + slot = 1; break; case ArrowTrail: - slot = 12; + slot = 3; break; case DoubleJump: - slot = 14; + slot = 5; break; case Death: - slot = 16; + slot = 7; break; case Item: - slot = 28; + slot = 19; break; case Morph: - slot = 30; + slot = 21; break; case Hat: - slot = 46; + slot = 37; break; case Costume: - slot = 48; + slot = 39; break; case MusicDisc: - slot = 50; + slot = 41; break; case Taunt: - slot = 52; + slot = 43; break; default: - slot = 10; + slot = 1; break; } slot += 9; @@ -134,7 +134,7 @@ public class Menu extends ShopPageBase { final Mount mount = getPlugin().getMountManager().getActive(getPlayer()); - addButton(32 + 9, + addButton(23 + 9, new ShopItem(mount.GetDisplayMaterial(), mount.GetDisplayData(), C.mItem + mount.GetName(), new String[0], 1, false, false), new IButton() { @@ -151,7 +151,7 @@ public class Menu extends ShopPageBase { Creature activePet = getPlugin().getPetManager().getActivePet(getPlayer().getName()); String petName = activePet.getType() == EntityType.WITHER ? "Widder" : activePet.getCustomName(); - addButton(34 + 9, new ShopItem(Material.MONSTER_EGG, (byte) getPlugin().getPetManager().getActivePet(getPlayer().getName()).getType().getTypeId(), C.mItem + petName, new String[0], 1, false, false), + addButton(25 + 9, new ShopItem(Material.MONSTER_EGG, (byte) getPlugin().getPetManager().getActivePet(getPlayer().getName()).getType().getTypeId(), C.mItem + petName, new String[0], 1, false, false), new IButton() { public void onClick(Player player, ClickType clickType) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java index c37885de1..935b772c5 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java @@ -29,6 +29,7 @@ import mineplex.core.status.ServerStatusManager; */ public class TreasureManager extends MiniPlugin { + private CoreClientManager _clientManager; private RewardManager _rewardManager; private InventoryManager _inventoryManager; private BlockRestore _blockRestore; @@ -40,6 +41,7 @@ public class TreasureManager extends MiniPlugin { super("Treasure", plugin); + _clientManager = clientManager; _inventoryManager = inventoryManager; _blockRestore = blockRestore; _hologramManager = hologramManager; @@ -155,4 +157,9 @@ public class TreasureManager extends MiniPlugin { return _blockRestore; } + + public CoreClientManager getClientManager() + { + return _clientManager; + } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureType.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureType.java index ab8660490..39566892d 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureType.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureType.java @@ -13,7 +13,7 @@ public enum TreasureType MYTHICAL(C.cRed + "Mythical Chest", "Mythical Chest", "Mythical", RewardType.MythicalChest, Material.ENDER_CHEST, TreasureStyle.MYTHICAL), - CHRISTMAS(C.cAqua + "Christmas Chest", "Christmas Chest", "Christmas", RewardType.MythicalChest, Material.CHEST, TreasureStyle.CHRISTMAS); + CHRISTMAS(C.cDGreen + "Winter Holiday Chest", "Winter Chest", "Christmas", RewardType.MythicalChest, Material.CHEST, TreasureStyle.CHRISTMAS); private final String _name; private final RewardType _rewardType; 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 a4823f5d2..a466fb6f2 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/TreasurePage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/TreasurePage.java @@ -6,10 +6,12 @@ import java.util.List; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; import mineplex.core.account.CoreClientManager; import mineplex.core.common.util.C; import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilSkull; import mineplex.core.donation.DonationManager; import mineplex.core.inventory.InventoryManager; import mineplex.core.shop.item.ShopItem; @@ -25,7 +27,7 @@ public class TreasurePage extends ShopPageBase public TreasurePage(TreasureManager plugin, TreasureShop shop, TreasureLocation treasureLocation, CoreClientManager clientManager, DonationManager donationManager, InventoryManager inventoryManager, Player player) { - super(plugin, shop, clientManager, donationManager, "Open Treasure", player, 9); + super(plugin, shop, clientManager, donationManager, "Open Treasure", player, 54); _treasureLocation = treasureLocation; _inventoryManager = inventoryManager; @@ -36,11 +38,21 @@ public class TreasurePage extends ShopPageBase @Override protected void buildPage() { + int treasureShards = getDonationManager().Get(getPlayer()).getCoins(); + int basicCount = _inventoryManager.Get(getPlayer()).getItemCount(TreasureType.OLD.getItemName()); int heroicCount = _inventoryManager.Get(getPlayer()).getItemCount(TreasureType.ANCIENT.getItemName()); int legendaryCount = _inventoryManager.Get(getPlayer()).getItemCount(TreasureType.MYTHICAL.getItemName()); int christmasCount = _inventoryManager.Get(getPlayer()).getItemCount(TreasureType.CHRISTMAS.getItemName()); + List shardLore = new ArrayList(); + shardLore.add(" "); + shardLore.add(F.value("Treasure Shards", "" + treasureShards)); + shardLore.add(" "); + shardLore.add(C.cGray + "Useless by itself, Treasure Shards"); + shardLore.add(C.cGray + "can be combined to forge new"); + shardLore.add(C.cGray + "and undiscovered treasures."); + List basicLore = new ArrayList(); basicLore.add(" "); basicLore.add(F.value("Old Chests Owned", "" + basicCount)); @@ -118,21 +130,24 @@ public class TreasurePage extends ShopPageBase christmasLore.add(ChatColor.RESET + "or Purchase at: " + C.cYellow + "www.mineplex.com/shop"); } + ShopItem shards = new ShopItem(Material.PRISMARINE_SHARD, C.cAqua + C.Bold + "Treasure Shards", shardLore.toArray(new String[0]), 0, false); ShopItem basic = new ShopItem(Material.CHEST, C.cGreen + C.Bold + "Old Chest", basicLore.toArray(new String[0]), 0, false, false); ShopItem heroic = new ShopItem(Material.TRAPPED_CHEST, C.cGold + C.Bold + "Ancient Chest", heroicLore.toArray(new String[0]), 0, false, false); ShopItem legendary = new ShopItem(Material.ENDER_CHEST, C.cRed + C.Bold + "Mythical Chest", legendaryLore.toArray(new String[0]), 0, false, false); - ShopItem christmas = new ShopItem(Material.SNOW_BALL, C.cAqua + C.Bold + "Christmas Chest", christmasLore.toArray(new String[0]), 0, false, false); + ItemStack christmas = UtilSkull.getPlayerHead("MHF_Present2", C.cDGreen + C.Bold + "Winter Holiday Chest", christmasLore); - if (basicCount > 0) addButton(1, basic, new OpenTreasureButton(getPlayer(), _treasureLocation, TreasureType.OLD)); - else addButton(1, basic, new BuyChestButton(getPlayer(), _inventoryManager, this, "Old Chest", Material.CHEST, 1000)); - - if (heroicCount > 0) addButton(3, heroic, new OpenTreasureButton(getPlayer(), _treasureLocation, TreasureType.ANCIENT)); - else addButton(3, heroic, new BuyChestButton(getPlayer(), _inventoryManager, this, "Ancient Chest", Material.CHEST, 5000)); - - if (legendaryCount > 0) addButton(5, legendary, new OpenTreasureButton(getPlayer(), _treasureLocation, TreasureType.MYTHICAL)); - else addButton(5, legendary, new BuyChestButton(getPlayer(), _inventoryManager, this, "Mythical Chest", Material.ENDER_CHEST, 10000)); + addItem(40, shards); - if (christmasCount > 0) addButton(6, christmas, new OpenTreasureButton(getPlayer(), _treasureLocation, TreasureType.CHRISTMAS)); - else addButton(6, christmas, new BuyChestButton(getPlayer(), _inventoryManager, this, "Christmas Chest", Material.SNOW_BALL, 10000)); + if (basicCount > 0) addButton(20, basic, new OpenTreasureButton(getPlayer(), _treasureLocation, TreasureType.OLD)); + else addButton(20, basic, new BuyChestButton(getPlayer(), _inventoryManager, this, "Old Chest", Material.CHEST, 1000)); + + if (heroicCount > 0) addButton(22, heroic, new OpenTreasureButton(getPlayer(), _treasureLocation, TreasureType.ANCIENT)); + else addButton(22, heroic, new BuyChestButton(getPlayer(), _inventoryManager, this, "Ancient Chest", Material.CHEST, 5000)); + + if (legendaryCount > 0) addButton(24, legendary, new OpenTreasureButton(getPlayer(), _treasureLocation, TreasureType.MYTHICAL)); + else addButton(24, legendary, new BuyChestButton(getPlayer(), _inventoryManager, this, "Mythical Chest", Material.ENDER_CHEST, 10000)); + + if (christmasCount > 0) addButton(4, christmas, new OpenTreasureButton(getPlayer(), _treasureLocation, TreasureType.CHRISTMAS)); + else addButton(4, christmas, new BuyChestButton(getPlayer(), _inventoryManager, this, "Winter Holiday Chest", Material.SNOW_BALL, 10000)); } } From 31cea3342e027ca591b4c022060bac278ea7eb0f Mon Sep 17 00:00:00 2001 From: Cheese Date: Fri, 11 Dec 2015 13:17:38 +1100 Subject: [PATCH 12/81] some gadget stuff --- .../core/cosmetic/ui/page/GadgetPage.java | 23 +++++++++++------ .../arrowtrail/ArrowTrailCandyCane.java | 2 +- .../arrowtrail/ArrowTrailFrostLord.java | 2 +- .../gadgets/arrowtrail/ArrowTrailTitan.java | 2 +- .../gadget/gadgets/death/DeathCandyCane.java | 2 +- .../gadget/gadgets/death/DeathFrostLord.java | 2 +- .../core/gadget/gadgets/death/DeathTitan.java | 2 +- .../doublejump/DoubleJumpCandyCane.java | 2 +- .../doublejump/DoubleJumpFrostLord.java | 2 +- .../gadgets/doublejump/DoubleJumpTitan.java | 2 +- .../core/gadget/gadgets/hat/HatCoal.java | 2 +- .../core/gadget/gadgets/hat/HatPresent.java | 2 +- .../core/gadget/gadgets/hat/HatSanta.java | 2 +- .../core/gadget/gadgets/hat/HatSnowman.java | 2 +- .../core/gadget/gadgets/item/ItemCoal.java | 6 ++--- .../gadget/gadgets/item/ItemFreezeCannon.java | 4 +-- .../gadget/gadgets/item/ItemPartyPopper.java | 25 ++++++++++--------- .../gadget/gadgets/item/ItemSnowball.java | 4 +-- .../gadget/gadgets/morph/MorphSnowman.java | 2 +- .../core/gadget/gadgets/morph/MorphTitan.java | 5 +--- .../gadgets/particle/ParticleCandyCane.java | 2 +- .../gadgets/particle/ParticleFrostLord.java | 4 +-- .../gadgets/particle/ParticleLegend.java | 2 +- .../gadgets/particle/ParticleTitan.java | 2 +- .../core/mount/types/MountBabyReindeer.java | 2 +- 25 files changed, 56 insertions(+), 51 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java index 317f6503c..d94654926 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java @@ -4,6 +4,8 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import net.md_5.bungee.api.ChatColor; + import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; @@ -83,22 +85,29 @@ public class GadgetPage extends ShopPageBase List itemLore = new ArrayList(); + + itemLore.add(C.cBlack); + itemLore.addAll(Arrays.asList(gadget.GetDescription())); + if (gadget.GetCost(CurrencyType.Coins) >= 0) { - itemLore.add(C.cYellow + gadget.GetCost(CurrencyType.Coins) + " Coins"); + itemLore.add(C.cBlack); + itemLore.add(C.cAqua + "Cost: " + ChatColor.RESET + gadget.GetCost(CurrencyType.Coins) + " Treasure Shards"); + } + else if (gadget.GetCost(CurrencyType.Coins) == -1) + { + //Nothing } else if (gadget.GetCost(CurrencyType.Coins) == -2) { - itemLore.add(C.cGold + "Found in Treasure Chests."); + itemLore.add(C.cBlack); + itemLore.add(C.cGray + "Found in Treasure Chests"); } else if (gadget.GetCost(CurrencyType.Coins) == -3) { - + itemLore.add(C.cBlack); + itemLore.add(C.cRed + "Found in Winter Holiday Treasure Chests"); } - - - itemLore.add(C.cBlack); - itemLore.addAll(Arrays.asList(gadget.GetDescription())); if (gadget instanceof ItemGadget) { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailCandyCane.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailCandyCane.java index 1b9741cfe..85cb085d6 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailCandyCane.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailCandyCane.java @@ -21,7 +21,7 @@ public class ArrowTrailCandyCane extends ArrowEffectGadget { C.cWhite + "We whish you a marry " + C.Scramble + "christmas" + C.cWhite + ".", }, - 1, + -3, Material.SNOW_BALL, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailFrostLord.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailFrostLord.java index 41659abca..020cac190 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailFrostLord.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailFrostLord.java @@ -21,7 +21,7 @@ public class ArrowTrailFrostLord extends ArrowEffectGadget C.cWhite + "Your double jumps and arrows", C.cWhite + "are enchanted with snow powers.", }, - 10, + -3, Material.SNOW_BALL, (byte)0, "Frost Lord"); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailTitan.java index 534d7f3b0..051684e25 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailTitan.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailTitan.java @@ -26,7 +26,7 @@ public class ArrowTrailTitan extends ArrowEffectGadget " ", C.cRed + "Unlocked with Titan Rank", }, - -3, + -1, Material.FIREBALL, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathCandyCane.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathCandyCane.java index 524b45244..8a82b7519 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathCandyCane.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathCandyCane.java @@ -21,7 +21,7 @@ public class DeathCandyCane extends DeathEffectGadget C.cWhite + "COLORS FTW!", C.cWhite + "Take damage with SWAG B)", }, - 10, + -3, Material.SNOW_BALL, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathFrostLord.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathFrostLord.java index f0e5d5d42..2896ca7af 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathFrostLord.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathFrostLord.java @@ -18,7 +18,7 @@ public class DeathFrostLord extends DeathEffectGadget C.cWhite + "Your double jumps and arrows", C.cWhite + "are enchanted with snow powers.", }, - 10, + -3, Material.SNOW_BALL, (byte)0, "Frost Lord"); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathTitan.java index e7f205cf6..fe8dc0982 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathTitan.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathTitan.java @@ -22,7 +22,7 @@ public class DeathTitan extends DeathEffectGadget " ", C.cRed + "Unlocked with Titan Rank", }, - -3, + -1, Material.FIREBALL, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpCandyCane.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpCandyCane.java index 090963762..8a4e17a29 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpCandyCane.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpCandyCane.java @@ -20,7 +20,7 @@ public class DoubleJumpCandyCane extends DoubleJumpEffectGadget { C.cWhite + "We whish you a marry " + C.Scramble + "christmas" + C.cWhite + ".", }, - 1, + -3, Material.SNOW_BALL, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpFrostLord.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpFrostLord.java index ab1047715..d40c8388d 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpFrostLord.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpFrostLord.java @@ -19,7 +19,7 @@ public class DoubleJumpFrostLord extends DoubleJumpEffectGadget { C.cWhite + "More snow incomming.", }, - 1, + -3, Material.SNOW_BALL, (byte)0, "Frost Lord"); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpTitan.java index ed418db96..7749ce217 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpTitan.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpTitan.java @@ -27,7 +27,7 @@ public class DoubleJumpTitan extends DoubleJumpEffectGadget " ", C.cRed + "Unlocked with Titan Rank", }, - -3, + -1, Material.FIREBALL, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatCoal.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatCoal.java index 5a58edd2e..4bc85b096 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatCoal.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatCoal.java @@ -12,7 +12,7 @@ public class HatCoal extends HatGadget public HatCoal(GadgetManager manager) { - super(manager, "Coal Hat", new String[]{C.cWhite + "Coal Hat"}, 10, new ItemStack(Material.COAL_BLOCK)); + super(manager, "Coal Hat", new String[]{C.cWhite + "Coal Hat"}, -3, new ItemStack(Material.COAL_BLOCK)); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatPresent.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatPresent.java index 393f956b2..41f74c93e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatPresent.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatPresent.java @@ -9,7 +9,7 @@ public class HatPresent extends HatGadget public HatPresent(GadgetManager manager) { - super(manager, "Present Hat", new String[]{C.cWhite + "Present Hat"}, 10, "christmasgift"); + super(manager, "Present Hat", new String[]{C.cWhite + "Present Hat"}, -3, "christmasgift"); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSanta.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSanta.java index 618e1005e..f2fa35bbc 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSanta.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSanta.java @@ -9,7 +9,7 @@ public class HatSanta extends HatGadget public HatSanta(GadgetManager manager) { - super(manager, "Santa Hat", new String[]{C.cWhite + "Santa Hat"}, 10, "Presents"); + super(manager, "Santa Hat", new String[]{C.cWhite + "Santa Hat"}, -3, "Presents"); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSnowman.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSnowman.java index 69a2ca1f5..209d78015 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSnowman.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSnowman.java @@ -9,7 +9,7 @@ public class HatSnowman extends HatGadget public HatSnowman(GadgetManager manager) { - super(manager, "Snowman Hat", new String[]{C.cWhite + "Snowman Hat"}, 10, "snowman002"); + super(manager, "Snowman Hat", new String[]{C.cWhite + "Snowman Hat"}, -3, "snowman002"); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java index b0fae1e93..4d5c06203 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java @@ -45,12 +45,12 @@ public class ItemCoal extends ItemGadget C.cDGray + "Exclusive Coal!", C.cDGray + "Earned by beeing naughty" } - , -1, Material.COAL, (byte) 0, 1000, new Ammo("Coal", "1 Piece of Coal", Material.COAL, (byte) 0, new String[] + , 1, Material.COAL, (byte) 0, 1000, new Ammo("Coal", "1 Piece of Coal", Material.COAL, (byte) 0, new String[] { C.cDGray + "Exclusive Coal!", C.cDGray + "Earned by beeing naughty" } - , 100, 100)); + , 1, 1)); } @Override @@ -65,7 +65,7 @@ public class ItemCoal extends ItemGadget { if(data) { - player.sendMessage(F.main("Coal", "You unlocked " + C.cDGray + "COAL FUMES!")); + player.sendMessage(F.main("Coal", "You unlocked " + C.cGreen + "Legendary Coal Fumes" + C.cGray + ".")); UtilParticle.PlayParticleToAll(ParticleType.LARGE_SMOKE, player.getLocation().add(0, 0.5, 0), 0.2f, 0.5f, 0.2f, 0, 500, ViewDist.LONG); UtilParticle.PlayParticleToAll(ParticleType.LARGE_SMOKE, player.getLocation(), 1.5f, 0.0f, 1.5f, 0, 500, ViewDist.LONG); player.getWorld().playSound(player.getLocation(), Sound.WITHER_DEATH, 0.8f, 0); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFreezeCannon.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFreezeCannon.java index d8ac3177e..c630f69cb 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFreezeCannon.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFreezeCannon.java @@ -51,10 +51,10 @@ public class ItemFreezeCannon extends ItemGadget implements IThrown { C.cWhite + "Freeze your nemesis inside a block of ice!" } - , -1, Material.ICE, (byte) 0, 2000, new Ammo("Freeze Cannon", "100 Ice Blocks", Material.ICE, (byte) 0, new String[] + , 1, Material.ICE, (byte) 0, 2000, new Ammo("Freeze Cannon", "100 Ice Blocks", Material.ICE, (byte) 0, new String[] { C.cWhite + "100 Ice Blocks for you to launch!" - }, 500, 100)); + }, -1, 1)); } @Override diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPartyPopper.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPartyPopper.java index 2a44e16da..2338a8424 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPartyPopper.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPartyPopper.java @@ -9,6 +9,7 @@ import org.bukkit.entity.Item; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; +import org.bukkit.util.Vector; import mineplex.core.common.util.C; import mineplex.core.common.util.UtilAction; @@ -33,29 +34,29 @@ public class ItemPartyPopper extends ItemGadget implements IThrown super(manager, "Confetti Bomb", new String[] { C.cWhite + "POP BANG!", - }, -1, Material.GOLDEN_CARROT, (byte) 0, 1000, new Ammo("Confetti Bomb", "100 Party Poppers", Material.DIAMOND_BARDING, + }, 1, Material.GOLDEN_CARROT, (byte) 0, 1000, new Ammo("Confetti Bomb", "1 Party Popper", Material.GOLDEN_CARROT, (byte) 0, new String[] { C.cWhite + "100 Party Poppers for you to shoot!" - }, 500, 100)); + }, -2, 1)); } @Override public void ActivateCustom(Player player) { - Item ent = player.getWorld().dropItem(player.getEyeLocation().add(player.getLocation().getDirection()), - ItemStackFactory.Instance.CreateStack(Material.REDSTONE_LAMP_OFF, (byte)0, 1, "Lamp" + Math.random())); +// Item ent = player.getWorld().dropItem(player.getEyeLocation().add(player.getLocation().getDirection()), +// ItemStackFactory.Instance.CreateStack(Material.REDSTONE_LAMP_OFF, (byte)0, 1, "Lamp" + Math.random())); +// +// UtilAction.velocity(ent, player.getLocation().getDirection().normalize().multiply(0.1), 1, false, 0, 0.2, 10, false); +// +// Manager.getProjectileManager().AddThrow(ent, player, this, 3000, false, false, true, true, 0.5f); - UtilAction.velocity(ent, player.getLocation().getDirection().normalize().multiply(0.1), 1, false, 0, 0.2, 10, false); - Manager.getProjectileManager().AddThrow(ent, player, this, 3000, false, false, true, true, 0.5f); - - /* for(int data : new int[]{1,2,4,5,6,9,10,11,12,13,14,15}) { UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.INK_SACK, data), player.getEyeLocation(), null, 0.4f, 50, ViewDist.LONG); - /* + for(int i = 0; i < 10; i++) { Vector v = new Vector(Math.random() - 0.5, Math.random() - 0.3, Math.random() - 0.5); @@ -67,7 +68,7 @@ public class ItemPartyPopper extends ItemGadget implements IThrown UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.INK_SACK, data), player.getEyeLocation(), v, 1, 0, ViewDist.LONG); } - /* + Item ent = player.getWorld().dropItem(player.getEyeLocation().add(player.getLocation().getDirection()), ItemStackFactory.Instance.CreateStack(Material.INK_SACK, (byte)data, 1, "Ink" + Math.random())); _items.add(ent); @@ -79,8 +80,8 @@ public class ItemPartyPopper extends ItemGadget implements IThrown UtilAction.velocity(ent, player.getLocation().getDirection().normalize().multiply(0.3).add(random), 1 + 0.4 * Math.random(), false, 0, 0.2, 10, false); Manager.getProjectileManager().AddThrow(ent, player, this, 3000, false, false, true, true, 0.5f); - */ -// } + + } // Sound for(int i = 0; i < 3; i++) { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemSnowball.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemSnowball.java index ce1f5dc79..8c5a232d3 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemSnowball.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemSnowball.java @@ -29,11 +29,11 @@ public class ItemSnowball extends ItemGadget C.cWhite + "Throw snowball!", C.cWhite + "Start epic snowfights!" } - , -1, Material.SNOW_BALL, (byte) 0, 1, new Ammo("Snowball", "50 Snowballs", Material.SNOW_BALL, (byte) 0, new String[] + , 1, Material.SNOW_BALL, (byte) 0, 1, new Ammo("Snowball", "1 Snowball", Material.SNOW_BALL, (byte) 0, new String[] { C.cWhite + "50 Snowballs for you to throw!" } - , 100, 50)); + , -3, 1)); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSnowman.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSnowman.java index 40a7ff8cd..4451b7b72 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSnowman.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSnowman.java @@ -42,7 +42,7 @@ public class MorphSnowman extends MorphGadget super(manager, "Snowman Morph", new String[]{ C.cWhite + "Do you wanna build a snowman?", C.cWhite + "It doesn't have to be a snowman...", C.cWhite + "Or... it kind of does...", " ", C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Snowball", }, - 6000, Material.SNOW_BALL, (byte) 0); + -3, Material.SNOW_BALL, (byte) 0); } @Override diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphTitan.java index 1e36b454e..213332edf 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphTitan.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphTitan.java @@ -9,9 +9,7 @@ import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.entity.ArmorStand; import org.bukkit.entity.Entity; -import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; -import org.bukkit.entity.Zombie; import org.bukkit.event.EventHandler; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerJoinEvent; @@ -19,7 +17,6 @@ import org.bukkit.util.Vector; import mineplex.core.common.Rank; import mineplex.core.common.util.C; -import mineplex.core.common.util.MapUtil; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilEnt; @@ -54,7 +51,7 @@ public class MorphTitan extends MorphGadget C.cRed + "Unlocked with Titan Rank", }, -1, - Material.PRISMARINE_SHARD, (byte)0); + Material.PRISMARINE_CRYSTALS, (byte)0); } @Override diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCandyCane.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCandyCane.java index 110cbc4e8..b28852051 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCandyCane.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCandyCane.java @@ -25,7 +25,7 @@ public class ParticleCandyCane extends ParticleGadget public ParticleCandyCane(GadgetManager manager) { - super(manager, "Candy Cane Particle", new String[]{"Christmas. Nuf said."}, 10, Material.CHEST, (byte)0); + super(manager, "Candy Cane Particle", new String[]{"Christmas. Nuf said."}, -3, Material.CHEST, (byte)0); } @EventHandler diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFrostLord.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFrostLord.java index e01e24201..7b5005624 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFrostLord.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFrostLord.java @@ -23,8 +23,6 @@ import mineplex.core.updater.event.UpdateEvent; public class ParticleFrostLord extends ParticleGadget { - private HashSet _arrows = new HashSet(); - public ParticleFrostLord(GadgetManager manager) { super(manager, "Wind of the Frost Lord", new String[] @@ -33,7 +31,7 @@ public class ParticleFrostLord extends ParticleGadget C.cWhite + "Your double jumps and arrows", C.cWhite + "are enchanted with snow powers.", }, - 10, + -3, Material.SNOW_BALL, (byte)0, "Frost Lord"); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleLegend.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleLegend.java index 6c510f664..639d85d23 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleLegend.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleLegend.java @@ -26,7 +26,7 @@ public class ParticleLegend extends ParticleGadget " ", C.cGreen + "Unlocked with Legend Rank", }, - -3, + -1, Material.ENDER_PORTAL_FRAME, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleTitan.java index 12353e872..7d5aa7025 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleTitan.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleTitan.java @@ -32,7 +32,7 @@ public class ParticleTitan extends ParticleGadget " ", C.cRed + "Unlocked with Titan Rank", }, - -3, + -1, Material.FIREBALL, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountBabyReindeer.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountBabyReindeer.java index 0c5b84e98..04559e60e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountBabyReindeer.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountBabyReindeer.java @@ -33,7 +33,7 @@ public class MountBabyReindeer extends HorseMount { C.cWhite + "One of Santa's baby reindeers", C.cWhite + "Still trying to learn how to fly" - }, Material.SNOW_BALL, (byte) 0, 10, Color.CREAMY, Style.WHITEFIELD, Variant.HORSE, 0, null); + }, Material.SNOW_BALL, (byte) 0, -3, Color.CREAMY, Style.WHITEFIELD, Variant.HORSE, 0, null); } @EventHandler From d6aed5dff701ea300299ba9bb8e351336968651d Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Thu, 10 Dec 2015 21:32:10 -0500 Subject: [PATCH 13/81] More work --- .../core/playerCount/PlayerCountManager.java | 2 +- .../mineplex/core/treasure/gui/TreasurePage.java | 2 +- .../Mineplex.Hub/src/mineplex/hub/HubManager.java | 13 +++++++------ 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/playerCount/PlayerCountManager.java b/Plugins/Mineplex.Core/src/mineplex/core/playerCount/PlayerCountManager.java index c73f87d00..826cf7636 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/playerCount/PlayerCountManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/playerCount/PlayerCountManager.java @@ -64,7 +64,7 @@ public class PlayerCountManager extends MiniPlugin @EventHandler public void refresh(UpdateEvent event) { - if (event.getType() != UpdateType.SEC) + if (event.getType() != UpdateType.SLOW) return; runAsync(this::updatePlayerCount); 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 a466fb6f2..2a028405e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/TreasurePage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/TreasurePage.java @@ -112,7 +112,7 @@ public class TreasurePage extends ShopPageBase List christmasLore = new ArrayList(); christmasLore.add(" "); - christmasLore.add(F.value("Christmas Chests Owned", "" + christmasCount)); + christmasLore.add(F.value("Winter Holiday Chests Owned", "" + christmasCount)); christmasLore.add(" "); christmasLore.add(C.cGray + "All our previous adventurers have"); christmasLore.add(C.cGray + "perished in search of these chests."); diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java index 6eaf1149a..b2b31a380 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java @@ -55,6 +55,7 @@ import mineplex.core.party.Party; import mineplex.core.party.PartyManager; import mineplex.core.personalServer.PersonalServerManager; import mineplex.core.pet.PetManager; +import mineplex.core.playerCount.PlayerCountManager; import mineplex.core.poll.PollManager; import mineplex.core.portal.Portal; import mineplex.core.preferences.PreferencesManager; @@ -157,6 +158,7 @@ public class HubManager extends MiniClientPlugin private PetManager _petManager; private PacketHandler _packetHandler; private PersonalServerManager _personalServerManager; + private PlayerCountManager _playerCountManager; // private HalloweenSpookinessManager _halloweenManager; // private TrickOrTreatManager _trickOrTreatManager; @@ -246,6 +248,8 @@ public class HubManager extends MiniClientPlugin // NotificationManager notificationManager = new NotificationManager(plugin, clientManager, donationManager); // new MailManager(_plugin, notificationManager); + _playerCountManager = new PlayerCountManager(plugin); + _songs = new ArrayList(); try @@ -729,14 +733,11 @@ public class HubManager extends MiniClientPlugin obj.getScore(" ").setScore(line--); //Players + int playerCount = _playerCountManager.getPlayerCount(); obj.getScore(C.cYellow + C.Bold + "Players").setScore(line--); - player.getScoreboard().resetScores(_lastPlayerCount + ""); - - _lastPlayerCount++; - - obj.getScore(_lastPlayerCount + "").setScore(line--); - + obj.getScore(playerCount + "").setScore(line--); + _lastPlayerCount = playerCount; //Space obj.getScore(" ").setScore(line--); From 1ab13d2ef5c555efae7fca99c93fe79ca4df97ba Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Thu, 10 Dec 2015 22:52:15 -0500 Subject: [PATCH 14/81] Treasure Shards! --- .../src/mineplex/core/treasure/gui/TreasurePage.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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 2a028405e..889765b9b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/TreasurePage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/TreasurePage.java @@ -68,7 +68,7 @@ public class TreasurePage extends ShopPageBase basicLore.add(ChatColor.RESET + C.cGreen + "Click to Open!"); else { - basicLore.add(ChatColor.RESET + "Click to Purchase for " + C.cYellow + "1000 Coins"); + basicLore.add(ChatColor.RESET + "Click to Purchase for " + C.cAqua + "1000 Treasure Shards"); basicLore.add(" "); basicLore.add(ChatColor.RESET + "or Purchase at: " + C.cYellow + "www.mineplex.com/shop"); } @@ -85,7 +85,7 @@ public class TreasurePage extends ShopPageBase heroicLore.add(ChatColor.RESET + C.cGreen + "Click to Open!"); else { - heroicLore.add(ChatColor.RESET + "Click to Purchase for " + C.cYellow + "5000 Coins"); + heroicLore.add(ChatColor.RESET + "Click to Purchase for " + C.cAqua + "5000 Treasure Shards"); heroicLore.add(" "); heroicLore.add(ChatColor.RESET + "or Purchase at: " + C.cYellow + "www.mineplex.com/shop"); } @@ -105,7 +105,7 @@ public class TreasurePage extends ShopPageBase legendaryLore.add(ChatColor.RESET + C.cGreen + "Click to Open!"); else { - legendaryLore.add(ChatColor.RESET + "Click to Purchase for " + C.cYellow + "10000 Coins"); + legendaryLore.add(ChatColor.RESET + "Click to Purchase for " + C.cAqua + "10000 Treasure Shards"); legendaryLore.add(" "); legendaryLore.add(ChatColor.RESET + "or Purchase at: " + C.cYellow + "www.mineplex.com/shop"); } @@ -125,7 +125,7 @@ public class TreasurePage extends ShopPageBase christmasLore.add(ChatColor.RESET + C.cGreen + "Click to Open!"); else { - christmasLore.add(ChatColor.RESET + "Click to Purchase for " + C.cYellow + "10000 Coins"); + christmasLore.add(ChatColor.RESET + "Click to Purchase for " + C.cAqua + "10000 Treasure Shards"); christmasLore.add(" "); christmasLore.add(ChatColor.RESET + "or Purchase at: " + C.cYellow + "www.mineplex.com/shop"); } From a5b28422cd1d0761f99b8b2b000a8e55b1968add Mon Sep 17 00:00:00 2001 From: Cheese Date: Fri, 11 Dec 2015 15:19:20 +1100 Subject: [PATCH 15/81] cosmetics --- .../src/mineplex/core/common/util/UtilText.java | 13 +++++++++++++ Plugins/Mineplex.Core/.classpath | 2 +- .../.settings/org.eclipse.jdt.core.prefs | 6 +++--- .../src/mineplex/core/bonuses/BonusRepository.java | 1 - .../mineplex/core/cosmetic/ui/page/CostumePage.java | 2 -- .../gadgets/arrowtrail/ArrowTrailCandyCane.java | 8 ++++---- 6 files changed, 21 insertions(+), 11 deletions(-) diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilText.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilText.java index c5a805558..a3bd9cdf9 100644 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilText.java +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilText.java @@ -288,6 +288,19 @@ public class UtilText return lines; } + + public static String[] splitLineToArray(String string, LineFormat lineFormat) + { + ArrayList lineList = splitLine(string, lineFormat); + + String[] lineArray = new String[lineList.size()]; + lineArray = lineList.toArray(lineArray); + + for (String cur : lineArray) + System.out.println(cur); + + return lineArray; + } public static ArrayList splitLine(String string, LineFormat lineFormat) { diff --git a/Plugins/Mineplex.Core/.classpath b/Plugins/Mineplex.Core/.classpath index 1b29691dd..c43f4d9b1 100644 --- a/Plugins/Mineplex.Core/.classpath +++ b/Plugins/Mineplex.Core/.classpath @@ -1,7 +1,7 @@ - + diff --git a/Plugins/Mineplex.Core/.settings/org.eclipse.jdt.core.prefs b/Plugins/Mineplex.Core/.settings/org.eclipse.jdt.core.prefs index d17b6724d..a698e5967 100644 --- a/Plugins/Mineplex.Core/.settings/org.eclipse.jdt.core.prefs +++ b/Plugins/Mineplex.Core/.settings/org.eclipse.jdt.core.prefs @@ -1,12 +1,12 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.compliance=1.8 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.7 +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusRepository.java b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusRepository.java index d2b7613af..5d7440096 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusRepository.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusRepository.java @@ -9,7 +9,6 @@ import java.sql.Timestamp; import java.sql.Types; import java.util.Map; -import com.sun.org.apache.xpath.internal.operations.Bool; import mineplex.core.bonuses.gui.SpinGui; import mineplex.core.common.Pair; import mineplex.core.common.util.Callback; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/CostumePage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/CostumePage.java index 803f8705f..8e32e2707 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/CostumePage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/CostumePage.java @@ -9,8 +9,6 @@ import org.bukkit.Sound; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; -import com.sun.org.glassfish.gmbal.ManagedAttribute; - import mineplex.core.account.CoreClientManager; import mineplex.core.common.util.C; import mineplex.core.cosmetic.CosmeticManager; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailCandyCane.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailCandyCane.java index 85cb085d6..692fff6ff 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailCandyCane.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailCandyCane.java @@ -8,6 +8,8 @@ import mineplex.core.common.util.C; import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; +import mineplex.core.common.util.UtilText; +import mineplex.core.common.util.UtilText.LineFormat; import mineplex.core.common.util.UtilTime; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.types.ArrowEffectGadget; @@ -17,10 +19,8 @@ public class ArrowTrailCandyCane extends ArrowEffectGadget public ArrowTrailCandyCane(GadgetManager manager) { - super(manager, "Candy Cane Arrow Effect", new String[] - { - C.cWhite + "We whish you a marry " + C.Scramble + "christmas" + C.cWhite + ".", - }, + super(manager, "Candy Cane Arrows", + UtilText.splitLineToArray(C.cWhite + "The real reason no one visits the North Pole? Santa’s Elves are deadly shots.", LineFormat.LORE), -3, Material.SNOW_BALL, (byte)0); } From 88f44a293bc1215788e4b725249f8719be2f3507 Mon Sep 17 00:00:00 2001 From: Cheese Date: Fri, 11 Dec 2015 15:31:35 +1100 Subject: [PATCH 16/81] candy! --- .../core/gadget/gadgets/arrowtrail/ArrowTrailCandyCane.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailCandyCane.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailCandyCane.java index 692fff6ff..c02c7f4c5 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailCandyCane.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailCandyCane.java @@ -5,11 +5,11 @@ import org.bukkit.Material; import org.bukkit.entity.Arrow; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.common.util.UtilText; -import mineplex.core.common.util.UtilText.LineFormat; import mineplex.core.common.util.UtilTime; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.types.ArrowEffectGadget; From 05a80b23a165365af3b434411fae4fe5142847e0 Mon Sep 17 00:00:00 2001 From: Cheese Date: Fri, 11 Dec 2015 16:07:02 +1100 Subject: [PATCH 17/81] converting gadget text. (kill me now) --- Plugins/BuildFiles/common.xml | 10 + .../mineplex/core/common/util/UtilText.java | 13 +- .../arrowtrail/ArrowTrailFrostLord.java | 10 +- .../gadgets/arrowtrail/ArrowTrailTitan.java | 12 +- .../gadget/gadgets/death/DeathCandyCane.java | 9 +- .../gadget/gadgets/death/DeathFrostLord.java | 10 +- .../core/gadget/gadgets/death/DeathTitan.java | 12 +- .../doublejump/DoubleJumpCandyCane.java | 8 +- .../doublejump/DoubleJumpFrostLord.java | 8 +- .../gadgets/doublejump/DoubleJumpTitan.java | 12 +- .../core/gadget/gadgets/hat/HatCoal.java | 7 +- .../core/gadget/gadgets/hat/HatPresent.java | 7 +- .../core/gadget/gadgets/hat/HatSanta.java | 7 +- .../core/gadget/gadgets/hat/HatSnowman.java | 7 +- .../core/gadget/gadgets/item/ItemBatGun.java | 9 +- .../core/gadget/gadgets/item/ItemCoal.java | 11 +- .../gadget/gadgets/item/ItemCoinBomb.java | 22 +- .../gadgets/item/ItemEtherealPearl.java | 9 +- .../gadget/gadgets/item/ItemFirework.java | 10 +- .../gadget/gadgets/item/ItemFleshHook.java | 10 +- .../gadget/gadgets/item/ItemFreezeCannon.java | 11 +- .../core/gadget/gadgets/item/ItemGemBomb.java | 218 ------------------ .../gadget/gadgets/item/ItemKothSword.java | 5 - .../gadgets/item/ItemMelonLauncher.java | 10 +- .../gadget/gadgets/item/ItemPaintballGun.java | 9 +- .../gadget/gadgets/item/ItemPaintbrush.java | 10 +- .../gadget/gadgets/item/ItemPartyPopper.java | 9 +- .../gadget/gadgets/item/ItemSnowball.java | 11 +- .../core/gadget/gadgets/item/ItemTNT.java | 9 +- .../gadgets/particle/ParticleCandyCane.java | 7 +- .../gadgets/particle/ParticleCoalFumes.java | 9 +- .../gadgets/particle/ParticleFrostLord.java | 10 +- .../gadgets/particle/ParticleTitan.java | 12 +- .../src/mineplex/hub/HubManager.java | 4 +- 34 files changed, 161 insertions(+), 376 deletions(-) delete mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemGemBomb.java delete mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemKothSword.java diff --git a/Plugins/BuildFiles/common.xml b/Plugins/BuildFiles/common.xml index 4200a7c8a..4b97fdaac 100644 --- a/Plugins/BuildFiles/common.xml +++ b/Plugins/BuildFiles/common.xml @@ -9,6 +9,7 @@ + @@ -110,6 +111,7 @@ + @@ -142,6 +144,7 @@ + @@ -191,6 +194,7 @@ + @@ -239,6 +243,7 @@ + @@ -276,6 +281,7 @@ + @@ -403,6 +409,7 @@ + @@ -435,6 +442,7 @@ + @@ -462,6 +470,7 @@ + @@ -490,6 +499,7 @@ + diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilText.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilText.java index 79a4dc61e..aec40852a 100644 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilText.java +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilText.java @@ -260,6 +260,16 @@ public class UtilText return string; } + public static String[] splitLinesToArray(String[] strings, LineFormat lineFormat) + { + ArrayList lineList = splitLines(strings, lineFormat); + + String[] lineArray = new String[lineList.size()]; + lineArray = lineList.toArray(lineArray); + + return lineArray; + } + public static ArrayList splitLines(String[] strings, LineFormat lineFormat) { ArrayList lines = new ArrayList(); @@ -279,9 +289,6 @@ public class UtilText String[] lineArray = new String[lineList.size()]; lineArray = lineList.toArray(lineArray); - for (String cur : lineArray) - System.out.println(cur); - return lineArray; } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailFrostLord.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailFrostLord.java index 020cac190..8503deb02 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailFrostLord.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailFrostLord.java @@ -4,8 +4,10 @@ import org.bukkit.Material; import org.bukkit.entity.Arrow; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.gadget.types.ArrowEffectGadget; @@ -15,12 +17,8 @@ public class ArrowTrailFrostLord extends ArrowEffectGadget { public ArrowTrailFrostLord(GadgetManager manager) { - super(manager, "Arrows of the Frost Lord", new String[] - { - C.cWhite + "You are a mighty frost lord.", - C.cWhite + "Your double jumps and arrows", - C.cWhite + "are enchanted with snow powers.", - }, + super(manager, "Arrows of the Frost Lord", + UtilText.splitLineToArray(C.cWhite + "The Frost Lord’s arrows bring a blast of winter in the wind of their passing.", LineFormat.LORE), -3, Material.SNOW_BALL, (byte)0, "Frost Lord"); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailTitan.java index 051684e25..773e5b677 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailTitan.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailTitan.java @@ -7,8 +7,10 @@ import org.bukkit.event.player.PlayerJoinEvent; import mineplex.core.common.Rank; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.gadget.GadgetManager; @@ -18,14 +20,8 @@ public class ArrowTrailTitan extends ArrowEffectGadget { public ArrowTrailTitan(GadgetManager manager) { - super(manager, "Arrows of the Titans", new String[] - { - C.cWhite + "These flames are said to be the", - C.cWhite + "souls of a lost civilisation of", - C.cWhite + "Titans, forgotten by time.", - " ", - C.cRed + "Unlocked with Titan Rank", - }, + super(manager, "Arrows of the Titans", + UtilText.splitLineToArray(C.cWhite + "Arrows forged in the Fires of Creation, they leave fiery trails in their wake.", LineFormat.LORE), -1, Material.FIREBALL, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathCandyCane.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathCandyCane.java index 8a82b7519..748accb1a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathCandyCane.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathCandyCane.java @@ -6,7 +6,9 @@ import org.bukkit.event.EventHandler; import mineplex.core.blood.BloodEvent; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.gadget.types.DeathEffectGadget; @@ -16,11 +18,8 @@ public class DeathCandyCane extends DeathEffectGadget { public DeathCandyCane(GadgetManager manager) { - super(manager, "Candy Cane Effect", new String[] - { - C.cWhite + "COLORS FTW!", - C.cWhite + "Take damage with SWAG B)", - }, + super(manager, "Candy Cane Remains", + UtilText.splitLineToArray(C.cWhite + "The biggest enemy of the Holidays, is January.", LineFormat.LORE), -3, Material.SNOW_BALL, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathFrostLord.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathFrostLord.java index 2896ca7af..2f6bd3b89 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathFrostLord.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathFrostLord.java @@ -5,6 +5,8 @@ import org.bukkit.event.EventHandler; import mineplex.core.blood.BloodEvent; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; +import mineplex.core.common.util.UtilText; import mineplex.core.gadget.types.DeathEffectGadget; import mineplex.core.gadget.GadgetManager; @@ -12,12 +14,8 @@ public class DeathFrostLord extends DeathEffectGadget { public DeathFrostLord(GadgetManager manager) { - super(manager, "Frost Lord Death Effect", new String[] - { - C.cWhite + "You are a mighty frost lord.", - C.cWhite + "Your double jumps and arrows", - C.cWhite + "are enchanted with snow powers.", - }, + super(manager, "Fall of the Frost Lord", + UtilText.splitLineToArray(C.cWhite + "The power of Winter must eventually give way to Spring.", LineFormat.LORE), -3, Material.SNOW_BALL, (byte)0, "Frost Lord"); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathTitan.java index fe8dc0982..43c8b326d 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathTitan.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathTitan.java @@ -7,6 +7,8 @@ import org.bukkit.event.player.PlayerJoinEvent; import mineplex.core.blood.BloodEvent; import mineplex.core.common.Rank; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; +import mineplex.core.common.util.UtilText; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.types.DeathEffectGadget; @@ -14,14 +16,8 @@ public class DeathTitan extends DeathEffectGadget { public DeathTitan(GadgetManager manager) { - super(manager, "Ashes of the Titans", new String[] - { - C.cWhite + "These flames are said to be the", - C.cWhite + "souls of a lost civilisation of", - C.cWhite + "Titans, forgotten by time.", - " ", - C.cRed + "Unlocked with Titan Rank", - }, + super(manager, "Ashes of the Titans", + UtilText.splitLineToArray(C.cWhite + "Even a Titan can fall in combat if their opponent is fierce enough.", LineFormat.LORE), -1, Material.FIREBALL, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpCandyCane.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpCandyCane.java index 8a4e17a29..b95ef4ff4 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpCandyCane.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpCandyCane.java @@ -5,9 +5,11 @@ import org.bukkit.Material; import org.bukkit.entity.Player; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; +import mineplex.core.common.util.UtilText; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.types.DoubleJumpEffectGadget; @@ -16,10 +18,8 @@ public class DoubleJumpCandyCane extends DoubleJumpEffectGadget public DoubleJumpCandyCane(GadgetManager manager) { - super(manager, "Candy Cane Jump Effect", new String[] - { - C.cWhite + "We whish you a marry " + C.Scramble + "christmas" + C.cWhite + ".", - }, + super(manager, "Candy Cane Blast", + UtilText.splitLineToArray(C.cWhite + "It is said every time an elf jumps, bits of Candy Cane fall out of their pockets.", LineFormat.LORE), -3, Material.SNOW_BALL, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpFrostLord.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpFrostLord.java index d40c8388d..4291f9d94 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpFrostLord.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpFrostLord.java @@ -4,7 +4,9 @@ import org.bukkit.Material; import org.bukkit.entity.Player; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.common.util.UtilServer; @@ -15,10 +17,8 @@ public class DoubleJumpFrostLord extends DoubleJumpEffectGadget { public DoubleJumpFrostLord(GadgetManager manager) { - super(manager, "Boots of the Frost Lord", new String[] - { - C.cWhite + "More snow incomming.", - }, + super(manager, "Gust of the Frost Lord", + UtilText.splitLineToArray(C.cWhite + "Listen, the Frost Lord is a very proper individual. Stop making fart jokes!", LineFormat.LORE), -3, Material.SNOW_BALL, (byte)0, "Frost Lord"); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpTitan.java index 7749ce217..7b75adf3d 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpTitan.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpTitan.java @@ -8,8 +8,10 @@ import org.bukkit.event.player.PlayerToggleFlightEvent; import mineplex.core.common.Rank; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.gadget.GadgetManager; @@ -19,14 +21,8 @@ public class DoubleJumpTitan extends DoubleJumpEffectGadget { public DoubleJumpTitan(GadgetManager manager) { - super(manager, "Leap of the Titans", new String[] - { - C.cWhite + "These flames are said to be the", - C.cWhite + "souls of a lost civilisation of", - C.cWhite + "Titans, forgotten by time.", - " ", - C.cRed + "Unlocked with Titan Rank", - }, + super(manager, "Leap of the Titans", + UtilText.splitLineToArray(C.cWhite + "Out of the frying pan and into the fire.", LineFormat.LORE), -1, Material.FIREBALL, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatCoal.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatCoal.java index 4bc85b096..a78b88736 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatCoal.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatCoal.java @@ -4,6 +4,8 @@ import org.bukkit.Material; import org.bukkit.inventory.ItemStack; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; +import mineplex.core.common.util.UtilText; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.types.HatGadget; @@ -12,7 +14,10 @@ public class HatCoal extends HatGadget public HatCoal(GadgetManager manager) { - super(manager, "Coal Hat", new String[]{C.cWhite + "Coal Hat"}, -3, new ItemStack(Material.COAL_BLOCK)); + super(manager, "Lump of Coal", + UtilText.splitLineToArray(C.cWhite + "", LineFormat.LORE), + -3, + new ItemStack(Material.COAL_BLOCK)); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatPresent.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatPresent.java index 41f74c93e..74005d330 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatPresent.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatPresent.java @@ -1,6 +1,8 @@ package mineplex.core.gadget.gadgets.hat; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; +import mineplex.core.common.util.UtilText; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.types.HatGadget; @@ -9,7 +11,10 @@ public class HatPresent extends HatGadget public HatPresent(GadgetManager manager) { - super(manager, "Present Hat", new String[]{C.cWhite + "Present Hat"}, -3, "christmasgift"); + super(manager, "Present", + UtilText.splitLineToArray(C.cWhite + "", LineFormat.LORE), + -3, + "christmasgift"); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSanta.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSanta.java index f2fa35bbc..067f603e5 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSanta.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSanta.java @@ -1,6 +1,8 @@ package mineplex.core.gadget.gadgets.hat; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; +import mineplex.core.common.util.UtilText; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.types.HatGadget; @@ -9,7 +11,10 @@ public class HatSanta extends HatGadget public HatSanta(GadgetManager manager) { - super(manager, "Santa Hat", new String[]{C.cWhite + "Santa Hat"}, -3, "Presents"); + super(manager, "Santa", + UtilText.splitLineToArray(C.cWhite + "", LineFormat.LORE), + -3, + "Presents"); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSnowman.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSnowman.java index 209d78015..1e6ab44a4 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSnowman.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSnowman.java @@ -1,6 +1,8 @@ package mineplex.core.gadget.gadgets.hat; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; +import mineplex.core.common.util.UtilText; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.types.HatGadget; @@ -9,7 +11,10 @@ public class HatSnowman extends HatGadget public HatSnowman(GadgetManager manager) { - super(manager, "Snowman Hat", new String[]{C.cWhite + "Snowman Hat"}, -3, "snowman002"); + super(manager, "Snowmans Head", + UtilText.splitLineToArray(C.cWhite + "", LineFormat.LORE), + -3, + "snowman002"); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemBatGun.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemBatGun.java index 8cfcae673..62b8b2b39 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemBatGun.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemBatGun.java @@ -13,12 +13,14 @@ import org.bukkit.util.Vector; import mineplex.core.common.util.C; import mineplex.core.common.util.F; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilTime; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; @@ -37,11 +39,8 @@ public class ItemBatGun extends ItemGadget public ItemBatGun(GadgetManager manager) { - super(manager, "Bat Blaster", new String[] - { - C.cWhite + "Launch waves of annoying bats", - C.cWhite + "at people you don't like!", - }, + super(manager, "Bat Blaster", + UtilText.splitLineToArray(C.cWhite + "Unleash waves of terrifying bats at people you don't like!", LineFormat.LORE), -1, Material.IRON_BARDING, (byte)0, 5000, new Ammo("Bat Blaster", "50 Bats", Material.IRON_BARDING, (byte)0, new String[] { C.cWhite + "50 Bats for your Bat Blaster!" }, 500, 50)); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java index 4d5c06203..098d136ff 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java @@ -11,6 +11,7 @@ import org.bukkit.event.player.PlayerInteractEvent; import mineplex.core.common.util.C; import mineplex.core.common.util.Callback; import mineplex.core.common.util.F; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilGear; import mineplex.core.common.util.UtilInv; @@ -19,6 +20,7 @@ import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; +import mineplex.core.common.util.UtilText; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.event.ItemGadgetOutOfAmmoEvent; import mineplex.core.gadget.gadgets.Ammo; @@ -40,12 +42,9 @@ public class ItemCoal extends ItemGadget public ItemCoal(GadgetManager manager) { - super(manager, "Coal", new String[] - { - C.cDGray + "Exclusive Coal!", - C.cDGray + "Earned by beeing naughty" - } - , 1, Material.COAL, (byte) 0, 1000, new Ammo("Coal", "1 Piece of Coal", Material.COAL, (byte) 0, new String[] + super(manager, "Coal", + UtilText.splitLineToArray(C.cWhite + "", LineFormat.LORE) + , -1, Material.COAL, (byte) 0, 1000, new Ammo("Coal", "1 Piece of Coal", Material.COAL, (byte) 0, new String[] { C.cDGray + "Exclusive Coal!", C.cDGray + "Earned by beeing naughty" diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoinBomb.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoinBomb.java index e68345215..d0039cd87 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoinBomb.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoinBomb.java @@ -17,10 +17,12 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.util.Vector; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilFirework; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilTime; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.gadgets.Ammo; @@ -35,27 +37,23 @@ public class ItemCoinBomb extends ItemGadget public ItemCoinBomb(GadgetManager manager) { - super(manager, "Coin Party Bomb", new String[] - { - C.cWhite + "It's party time! You will be", - C.cWhite + "everyones favourite player", - C.cWhite + "when you use one of these!", - }, + super(manager, "Treasure Party Bomb", + UtilText.splitLineToArray(C.cWhite + "It's party time! You'll be everyones favourite player when you use one of these!", LineFormat.LORE), -1, - Material.getMaterial(175), (byte)0, - 30000, new Ammo("Coin Party Bomb", "1 Coin Party Bomb", Material.getMaterial(175), (byte)0, new String[] { C.cWhite + "1 Coin Party Bomb to PARTY!" }, 2000, 1)); + Material.PRISMARINE, (byte)0, + 30000, new Ammo("Treasure Party Bomb", "1 Coin Party Bomb", Material.PRISMARINE, (byte)0, new String[] { C.cWhite + "1 Treasure Party Bomb" }, 2000, 1)); } @Override public void ActivateCustom(Player player) { - Item item = player.getWorld().dropItem(player.getEyeLocation().add(player.getLocation().getDirection()), new ItemStack(Material.GOLD_BLOCK)); + Item item = player.getWorld().dropItem(player.getEyeLocation().add(player.getLocation().getDirection()), new ItemStack(Material.PRISMARINE)); UtilAction.velocity(item, player.getLocation().getDirection(), 1, false, 0, 0.2, 1, false); _active.put(item, System.currentTimeMillis()); //Inform for (Player other : UtilServer.getPlayers()) - UtilPlayer.message(other, C.cYellow + C.Bold + player.getName() + C.cWhite + C.Bold + " has thrown a " + C.cYellow + C.Bold + "Coin Party Bomb" + C.cWhite + C.Bold + "!"); + UtilPlayer.message(other, C.cAqua + C.Bold + player.getName() + C.cWhite + C.Bold + " has thrown a " + C.cAqua + C.Bold + "Treasure Party Bomb" + C.cWhite + C.Bold + "!"); } @EventHandler @@ -74,11 +72,11 @@ public class ItemCoinBomb extends ItemGadget if (UtilTime.elapsed(time, 3000)) { if (Math.random() > 0.80) - UtilFirework.playFirework(item.getLocation(), FireworkEffect.builder().flicker(false).withColor(Color.YELLOW).with(Type.BURST).trail(false).build()); + UtilFirework.playFirework(item.getLocation(), FireworkEffect.builder().flicker(false).withColor(Color.AQUA).with(Type.BURST).trail(false).build()); else item.getWorld().playSound(item.getLocation(), Sound.FIREWORK_LAUNCH, 1f, 1f); - Item coin = item.getWorld().dropItem(item.getLocation().add(0, 1, 0), new ItemStack(Material.getMaterial(175))); + Item coin = item.getWorld().dropItem(item.getLocation().add(0, 1, 0), new ItemStack(Material.PRISMARINE_SHARD)); //Velocity long passed = System.currentTimeMillis() - time; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemEtherealPearl.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemEtherealPearl.java index 2c07ba486..7f0b83cba 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemEtherealPearl.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemEtherealPearl.java @@ -19,10 +19,12 @@ import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; import mineplex.core.common.util.C; import mineplex.core.common.util.F; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilFirework; import mineplex.core.common.util.UtilInv; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilText; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.gadgets.Ammo; import mineplex.core.gadget.types.ItemGadget; @@ -35,11 +37,8 @@ public class ItemEtherealPearl extends ItemGadget public ItemEtherealPearl(GadgetManager manager) { - super(manager, "Ethereal Pearl", new String[] - { - C.cWhite + "Take a ride through the skies", - C.cWhite + "on your very own Ethereal Pearl!", - }, + super(manager, "Ethereal Pearl", + UtilText.splitLineToArray(C.cWhite + "These Pearls are stolen from sleeping Endermen!", LineFormat.LORE), -1, Material.ENDER_PEARL, (byte)0, 500, new Ammo("Ethereal Pearl", "50 Pearls", Material.ENDER_PEARL, (byte)0, new String[] { C.cWhite + "50 Pearls to get around with!" }, 500, 50)); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFirework.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFirework.java index 1f7463054..597dc0a2a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFirework.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFirework.java @@ -11,9 +11,11 @@ import org.bukkit.util.Vector; import mineplex.core.common.util.C; import mineplex.core.common.util.F; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilFirework; import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilText; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.gadgets.Ammo; import mineplex.core.gadget.types.ItemGadget; @@ -22,12 +24,8 @@ public class ItemFirework extends ItemGadget { public ItemFirework(GadgetManager manager) { - super(manager, "Fireworks", new String[] - { - C.cWhite + "Need to celebrate?!", - C.cWhite + "Use some fireworks!", - C.cWhite + "Pew pew pew!", - }, + super(manager, "Fireworks", + UtilText.splitLineToArray(C.cWhite + "Need to celebrate? These fireworks should do the trick!", LineFormat.LORE), -1, Material.FIREWORK, (byte)0, 500, new Ammo("Fireworks", "50 Fireworks", Material.FIREWORK, (byte)0, new String[] { C.cWhite + "50 Fireworks for you to launch!" }, 500, 50)); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFleshHook.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFleshHook.java index e4bd3554a..a35ab819d 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFleshHook.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFleshHook.java @@ -11,9 +11,11 @@ import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import mineplex.core.common.util.C; import mineplex.core.common.util.F; +import mineplex.core.common.util.LineFormat; 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.UtilParticle.ParticleType; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.gadgets.Ammo; @@ -27,12 +29,8 @@ public class ItemFleshHook extends ItemGadget implements IThrown { public ItemFleshHook(GadgetManager manager) { - super(manager, "Flesh Hook", new String[] - { - C.cWhite + "Make new friends by throwing a hook", - C.cWhite + "into their face and pulling them", - C.cWhite + "towards you!", - }, + super(manager, "Flesh Hook", + UtilText.splitLineToArray(C.cWhite + "Make new friends by throwing a hook into their face and pulling them towards you!", LineFormat.LORE), -1, Material.getMaterial(131), (byte)0, 2000, new Ammo("Flesh Hook", "50 Flesh Hooks", Material.getMaterial(131), (byte)0, new String[] { C.cWhite + "50 Flesh Hooks for you to use!" }, 1000, 50)); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFreezeCannon.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFreezeCannon.java index c630f69cb..9c177ef3b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFreezeCannon.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFreezeCannon.java @@ -27,10 +27,12 @@ import org.bukkit.potion.PotionEffectType; import mineplex.core.common.util.C; import mineplex.core.common.util.F; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilText; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.gadgets.Ammo; import mineplex.core.gadget.types.ItemGadget; @@ -47,11 +49,10 @@ public class ItemFreezeCannon extends ItemGadget implements IThrown public ItemFreezeCannon(GadgetManager manager) { - super(manager, "Freeze Cannon", new String[] - { - C.cWhite + "Freeze your nemesis inside a block of ice!" - } - , 1, Material.ICE, (byte) 0, 2000, new Ammo("Freeze Cannon", "100 Ice Blocks", Material.ICE, (byte) 0, new String[] + super(manager, "Freeze Cannon", + UtilText.splitLineToArray(C.cWhite + "Let someone cool off inside their very own ice cube!", LineFormat.LORE), + -1, + Material.ICE, (byte) 0, 2000, new Ammo("Freeze Cannon", "100 Ice Blocks", Material.ICE, (byte) 0, new String[] { C.cWhite + "100 Ice Blocks for you to launch!" }, -1, 1)); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemGemBomb.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemGemBomb.java deleted file mode 100644 index 0510dbf11..000000000 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemGemBomb.java +++ /dev/null @@ -1,218 +0,0 @@ -package mineplex.core.gadget.gadgets.item; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Color; -import org.bukkit.FireworkEffect; -import org.bukkit.Material; -import org.bukkit.Sound; -import org.bukkit.FireworkEffect.Type; -import org.bukkit.entity.Item; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.block.Action; -import org.bukkit.event.player.PlayerInteractEvent; -import org.bukkit.event.player.PlayerPickupItemEvent; -import org.bukkit.inventory.ItemStack; -import org.bukkit.util.Vector; - -import mineplex.core.common.CurrencyType; -import mineplex.core.common.util.C; -import mineplex.core.common.util.F; -import mineplex.core.common.util.UtilAction; -import mineplex.core.common.util.UtilBlock; -import mineplex.core.common.util.UtilFirework; -import mineplex.core.common.util.UtilGear; -import mineplex.core.common.util.UtilInv; -import mineplex.core.common.util.UtilPlayer; -import mineplex.core.common.util.UtilServer; -import mineplex.core.common.util.UtilTime; -import mineplex.core.gadget.GadgetManager; -import mineplex.core.gadget.event.ItemGadgetOutOfAmmoEvent; -import mineplex.core.gadget.gadgets.Ammo; -import mineplex.core.gadget.types.ItemGadget; -import mineplex.core.itemstack.ItemStackFactory; -import mineplex.core.recharge.Recharge; -import mineplex.core.updater.UpdateType; -import mineplex.core.updater.event.UpdateEvent; - -public class ItemGemBomb extends ItemGadget -{ - private HashMap _activeBombs = new HashMap(); - private HashSet _gems = new HashSet(); - - public ItemGemBomb(GadgetManager manager) - { - super(manager, "Gem Party Bomb", new String[] - { - C.cWhite + "It's party time! You will be", - C.cWhite + "everyones favourite player", - C.cWhite + "when you use one of these!", - " ", - C.cRed +C.Bold + "WARNING: " + ChatColor.RESET + "This uses 2000 Gems" - }, - -1, - Material.EMERALD, (byte)0, - 30000, new Ammo("Gem Party Bomb", "10 Gem Party Bomb", Material.EMERALD, (byte)0, new String[] { C.cWhite + "10 Coin Party Bomb to PARTY!" }, 10, 10)); - } - - @Override - @EventHandler - public void Activate(PlayerInteractEvent event) - { - if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK) - return; - - if (UtilBlock.usable(event.getClickedBlock())) - return; - - if (!UtilGear.isMat(event.getPlayer().getItemInHand(), this.GetDisplayMaterial())) - return; - - Player player = event.getPlayer(); - - if (!IsActive(player)) - return; - - event.setCancelled(true); - - //Stock - if (Manager.getInventoryManager().Get(player).getItemCount(GetName()) <= 0) - { - - UtilPlayer.message(player, F.main("Gadget", "You do not have any " + GetName() + " left.")); - - ItemGadgetOutOfAmmoEvent ammoEvent = new ItemGadgetOutOfAmmoEvent(event.getPlayer(), this); - Bukkit.getServer().getPluginManager().callEvent(ammoEvent); - - return; - } - - //Gems - if (Manager.getDonationManager().Get(player.getName()).GetBalance(CurrencyType.Gems) < 2000) - { - UtilPlayer.message(player, F.main("Inventory", "You do not have the required " + C.cGreen + "2000 Gems") + "."); - return; - } - - //Already In Use - if (!_activeBombs.isEmpty()) - { - UtilPlayer.message(player, F.main("Inventory", "There is already a " + F.elem(C.cGreen + "Gem Bomb")) + " being used."); - return; - } - - //Recharge - if (!Recharge.Instance.use(player, GetName(), _recharge, _recharge > 1000, false)) - { - UtilInv.Update(player); - return; - } - - //Use Stock/Gems - Manager.getInventoryManager().addItemToInventory(player, GetName(), -1); - Manager.getDonationManager().RewardGems(null, GetName(), event.getPlayer().getName(), event.getPlayer().getUniqueId(), -2000); - - player.getInventory().setItem(Manager.getActiveItemSlot(), ItemStackFactory.Instance.CreateStack(GetDisplayMaterial(), GetDisplayData(), 1, F.item(GetName()))); - - ActivateCustom(event.getPlayer()); - } - - @Override - public void ActivateCustom(Player player) - { - Item item = player.getWorld().dropItem(player.getEyeLocation().add(player.getLocation().getDirection()), new ItemStack(Material.EMERALD_BLOCK)); - UtilAction.velocity(item, player.getLocation().getDirection(), 1, false, 0, 0.2, 1, false); - _activeBombs.put(item, System.currentTimeMillis()); - - //Inform - for (Player other : UtilServer.getPlayers()) - UtilPlayer.message(other, C.cGreen + C.Bold + player.getName() + C.cWhite + C.Bold + " has thrown a " + C.cGreen + C.Bold + "Gem Party Bomb" + C.cWhite + C.Bold + "!"); - } - - @EventHandler - public void Update(UpdateEvent event) - { - if (event.getType() != UpdateType.TICK) - return; - - Iterator itemIterator = _activeBombs.keySet().iterator(); - - while (itemIterator.hasNext()) - { - Item item = itemIterator.next(); - long time = _activeBombs.get(item); - - if (UtilTime.elapsed(time, 3000)) - { - if (Math.random() > 0.80) - UtilFirework.playFirework(item.getLocation(), FireworkEffect.builder().flicker(false).withColor(Color.GREEN).with(Type.BURST).trail(false).build()); - else - item.getWorld().playSound(item.getLocation(), Sound.FIREWORK_LAUNCH, 1f, 1f); - - Item gem = item.getWorld().dropItem(item.getLocation().add(0, 1, 0), new ItemStack(Material.EMERALD)); - - //Velocity - long passed = System.currentTimeMillis() - time; - Vector vel = new Vector(Math.sin(passed/300d), 0, Math.cos(passed/300d)); - - UtilAction.velocity(gem, vel, Math.abs(Math.sin(passed/3000d)), false, 0, 0.2 + Math.abs(Math.cos(passed/3000d))*0.8, 1, false); - - gem.setPickupDelay(40); - - _gems.add(gem); - } - - if (UtilTime.elapsed(time, 23000)) - { - item.remove(); - itemIterator.remove(); - } - } - } - - @EventHandler - public void Pickup(PlayerPickupItemEvent event) - { - if (_activeBombs.keySet().contains(event.getItem())) - { - event.setCancelled(true); - } - else if (_gems.contains(event.getItem())) - { - event.setCancelled(true); - event.getItem().remove(); - - Manager.getDonationManager().RewardGemsLater(GetName() + " Pickup", event.getPlayer(), 4); - - event.getPlayer().getWorld().playSound(event.getPlayer().getLocation(), Sound.ORB_PICKUP, 1f, 2f); - } - } - - @EventHandler - public void Clean(UpdateEvent event) - { - if (event.getType() != UpdateType.FAST) - return; - - Iterator gemIterator = _gems.iterator(); - - while (gemIterator.hasNext()) - { - Item gem = gemIterator.next(); - - if (!gem.isValid() || gem.getTicksLived() > 1200) - { - gem.remove(); - gemIterator.remove(); - } - } - } -} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemKothSword.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemKothSword.java deleted file mode 100644 index 6c694ba4c..000000000 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemKothSword.java +++ /dev/null @@ -1,5 +0,0 @@ -package mineplex.core.gadget.gadgets.item; - -public class ItemKothSword { - -} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemMelonLauncher.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemMelonLauncher.java index ebe4d779e..78269f173 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemMelonLauncher.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemMelonLauncher.java @@ -20,10 +20,12 @@ import org.bukkit.util.Vector; import mineplex.core.common.util.C; import mineplex.core.common.util.F; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilText; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.gadgets.Ammo; import mineplex.core.gadget.types.ItemGadget; @@ -39,12 +41,8 @@ public class ItemMelonLauncher extends ItemGadget implements IThrown public ItemMelonLauncher(GadgetManager manager) { - super(manager, "Melon Launcher", new String[] - { - C.cWhite + "Deliciously fun!", - C.cWhite + "Eat the melon slices for a", - C.cWhite + "temporary speed boost!", - }, + super(manager, "Melon Launcher", + UtilText.splitLineToArray(C.cWhite + "Because who doesn't want to shoot watermelons at people?!", LineFormat.LORE), -1, Material.MELON_BLOCK, (byte)0, 1000, new Ammo("Melon Launcher", "100 Melons", Material.MELON_BLOCK, (byte)0, new String[] { C.cWhite + "100 Melons for you to launch!" }, 500, 100)); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPaintballGun.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPaintballGun.java index ce6f5d28e..c6ad69ce8 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPaintballGun.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPaintballGun.java @@ -21,9 +21,11 @@ import org.bukkit.event.player.PlayerTeleportEvent.TeleportCause; import org.bukkit.util.Vector; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.common.util.UtilServer; @@ -40,10 +42,9 @@ public class ItemPaintballGun extends ItemGadget public ItemPaintballGun(GadgetManager manager) { - super(manager, "Paintball Gun", new String[] - { - C.cWhite + "PEW PEW PEW PEW!", - }, -1, Material.GOLD_BARDING, (byte) 0, 200, new Ammo("Paintball Gun", "100 Paintballs", Material.GOLD_BARDING, + super(manager, "Paintball Gun", + UtilText.splitLineToArray(C.cWhite + "PEW PEW PEW!", LineFormat.LORE), + -1, Material.GOLD_BARDING, (byte) 0, 200, new Ammo("Paintball Gun", "100 Paintballs", Material.GOLD_BARDING, (byte) 0, new String[] { C.cWhite + "100 Paintballs for you to shoot!" diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPaintbrush.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPaintbrush.java index a7cbba607..9fa4d783b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPaintbrush.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPaintbrush.java @@ -18,6 +18,7 @@ import org.bukkit.event.player.PlayerInteractEvent; import mineplex.core.common.util.C; import mineplex.core.common.util.F; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.NautHashMap; import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilEvent; @@ -25,6 +26,7 @@ import mineplex.core.common.util.UtilGear; import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.gadgets.Ammo; @@ -43,12 +45,8 @@ public class ItemPaintbrush extends ItemGadget public ItemPaintbrush(GadgetManager manager) { - super(manager, "Paintbrush", new String[] - { - C.cWhite + "Unleash your inner creativity!", - C.cWhite + "", - C.cGreen + "Activated at a Painter NPC", - }, + super(manager, "Paintbrush", + UtilText.splitLineToArray(C.cWhite + "Unleash your inner Bob Ross! Happy little trees!", LineFormat.LORE), -3, Material.WOOD_SWORD, (byte)0, 200, new Ammo("Paint", "100 Pixels", Material.INK_SACK, (byte)0, new String[] { C.cWhite + "100 Pixels worth of Paint!" }, 500, 100)); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPartyPopper.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPartyPopper.java index 2338a8424..460533834 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPartyPopper.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPartyPopper.java @@ -12,8 +12,10 @@ import org.bukkit.event.EventHandler; import org.bukkit.util.Vector; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.gadget.GadgetManager; @@ -31,10 +33,9 @@ public class ItemPartyPopper extends ItemGadget implements IThrown public ItemPartyPopper(GadgetManager manager) { - super(manager, "Confetti Bomb", new String[] - { - C.cWhite + "POP BANG!", - }, 1, Material.GOLDEN_CARROT, (byte) 0, 1000, new Ammo("Confetti Bomb", "1 Party Popper", Material.GOLDEN_CARROT, + super(manager, "Party Popper", + UtilText.splitLineToArray(C.cWhite + "Celebrate by blasting confetti into peoples eyes!", LineFormat.LORE), + 1, Material.GOLDEN_CARROT, (byte) 0, 1000, new Ammo("Party Popper", "1 Party Popper", Material.GOLDEN_CARROT, (byte) 0, new String[] { C.cWhite + "100 Party Poppers for you to shoot!" diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemSnowball.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemSnowball.java index 8c5a232d3..f1a52b32c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemSnowball.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemSnowball.java @@ -11,7 +11,9 @@ import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.util.Vector; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilAction; +import mineplex.core.common.util.UtilText; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.event.GadgetCollideEntityEvent; import mineplex.core.gadget.gadgets.Ammo; @@ -24,12 +26,9 @@ public class ItemSnowball extends ItemGadget public ItemSnowball(GadgetManager manager) { - super(manager, "Snowball", new String[] - { - C.cWhite + "Throw snowball!", - C.cWhite + "Start epic snowfights!" - } - , 1, Material.SNOW_BALL, (byte) 0, 1, new Ammo("Snowball", "1 Snowball", Material.SNOW_BALL, (byte) 0, new String[] + super(manager, "Snowball", + UtilText.splitLineToArray(C.cWhite + "Join in on the festive fun by throwing snow at people!", LineFormat.LORE), + -1, Material.SNOW_BALL, (byte) 0, 1, new Ammo("Snowball", "1 Snowball", Material.SNOW_BALL, (byte) 0, new String[] { C.cWhite + "50 Snowballs for you to throw!" } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemTNT.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemTNT.java index 0bf4a04d3..e3b5f01f9 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemTNT.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemTNT.java @@ -12,11 +12,13 @@ import org.bukkit.event.entity.EntityExplodeEvent; import mineplex.core.common.util.C; import mineplex.core.common.util.F; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.gadget.GadgetManager; @@ -31,11 +33,8 @@ public class ItemTNT extends ItemGadget public ItemTNT(GadgetManager manager) { - super(manager, "TNT", new String[] - { - C.cWhite + "Blow some people up!", - C.cWhite + "KABOOM!", - }, + super(manager, "TNT", + UtilText.splitLineToArray(C.cWhite + "Throwing TNT at Mineplex Staff is highly encouraged.", LineFormat.LORE), -1, Material.TNT, (byte)0, 1000, new Ammo("TNT", "20 TNT", Material.TNT, (byte)0, new String[] { C.cWhite + "20 TNT for you to explode!" }, 500, 20)); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCandyCane.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCandyCane.java index b28852051..557bdfd95 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCandyCane.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCandyCane.java @@ -10,7 +10,10 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.util.Vector; +import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.gadget.GadgetManager; @@ -25,7 +28,9 @@ public class ParticleCandyCane extends ParticleGadget public ParticleCandyCane(GadgetManager manager) { - super(manager, "Candy Cane Particle", new String[]{"Christmas. Nuf said."}, -3, Material.CHEST, (byte)0); + super(manager, "Crushed Candy Cane", + UtilText.splitLineToArray(C.cWhite + "There’s no such thing as too much Christmas Candy. Don’t listen to your dentist.", LineFormat.LORE), + -3, Material.CHEST, (byte)0); } @EventHandler diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCoalFumes.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCoalFumes.java index 04ccec81d..03f93f17d 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCoalFumes.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCoalFumes.java @@ -5,7 +5,9 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.gadget.GadgetManager; @@ -18,10 +20,9 @@ public class ParticleCoalFumes extends ParticleGadget public ParticleCoalFumes(GadgetManager manager) { - super(manager, "Coal Fumes", new String[] - { - C.cDGray + "Nothing to read here. Please move on." - }, -1, Material.COAL, (byte) 0); + super(manager, "Coal Fumes", + UtilText.splitLineToArray(C.cWhite + "Being on the Naughty List does have some perks... if you love coal, that is...", LineFormat.LORE), + -1, Material.COAL, (byte) 0); } @EventHandler diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFrostLord.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFrostLord.java index 7b5005624..3155b40af 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFrostLord.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFrostLord.java @@ -9,7 +9,9 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.common.util.UtilServer; @@ -25,12 +27,8 @@ public class ParticleFrostLord extends ParticleGadget { public ParticleFrostLord(GadgetManager manager) { - super(manager, "Wind of the Frost Lord", new String[] - { - C.cWhite + "You are a mighty frost lord.", - C.cWhite + "Your double jumps and arrows", - C.cWhite + "are enchanted with snow powers.", - }, + super(manager, "Wind of the Frost Lord", + UtilText.splitLineToArray(C.cWhite + "He’s not passing wind okay? HE HAS A CONDITION!", LineFormat.LORE), -3, Material.SNOW_BALL, (byte)0, "Frost Lord"); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleTitan.java index 7d5aa7025..9fffc21fd 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleTitan.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleTitan.java @@ -9,7 +9,9 @@ import org.bukkit.util.Vector; import mineplex.core.common.Rank; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.gadget.GadgetManager; @@ -24,14 +26,8 @@ public class ParticleTitan extends ParticleGadget public ParticleTitan(GadgetManager manager) { - super(manager, "Flame of the Titans", new String[] - { - C.cWhite + "These flames are said to be the", - C.cWhite + "souls of a lost civilisation of", - C.cWhite + "Titans, forgotten by time.", - " ", - C.cRed + "Unlocked with Titan Rank", - }, + super(manager, "Flame of the Titans", + UtilText.splitLineToArray(C.cWhite + "Only the legendary warriors known as Titans can survive the fiery pits of Hades.", LineFormat.LORE), -1, Material.FIREBALL, (byte)0); } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java index b2b31a380..3583b5df5 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java @@ -453,8 +453,8 @@ public class HubManager extends MiniClientPlugin String playerName = player.getName(); // April Fools - if (AprilFoolsManager.Instance.isActive()) - playerName = AprilFoolsManager.Instance.getName(player); +// if (AprilFoolsManager.Instance.isActive()) +// playerName = AprilFoolsManager.Instance.getName(player); //Public Message event.setJoinMessage(null); From fe7ce40783acff4d3b960be7c235c2d0c7df4716 Mon Sep 17 00:00:00 2001 From: Cheese Date: Fri, 11 Dec 2015 16:31:15 +1100 Subject: [PATCH 18/81] finished cosmetic names --- .../core/cosmetic/ui/page/GadgetPage.java | 43 ++++++++--- .../core/gadget/gadgets/morph/MorphBat.java | 18 +++-- .../core/gadget/gadgets/morph/MorphBlaze.java | 13 ++-- .../core/gadget/gadgets/morph/MorphBlock.java | 6 +- .../core/gadget/gadgets/morph/MorphBunny.java | 10 +-- .../gadget/gadgets/morph/MorphChicken.java | 6 +- .../core/gadget/gadgets/morph/MorphCow.java | 6 +- .../gadget/gadgets/morph/MorphCreeper.java | 12 +-- .../gadget/gadgets/morph/MorphEnderman.java | 8 +- .../core/gadget/gadgets/morph/MorphGeno.java | 75 ------------------- .../core/gadget/gadgets/morph/MorphNotch.java | 70 ----------------- .../core/gadget/gadgets/morph/MorphPig.java | 10 +-- .../gadgets/morph/MorphPumpkinKing.java | 14 ++-- .../core/gadget/gadgets/morph/MorphSlime.java | 8 +- .../gadget/gadgets/morph/MorphSnowman.java | 15 +++- .../core/gadget/gadgets/morph/MorphTitan.java | 16 ++-- .../gadget/gadgets/morph/MorphVillager.java | 6 +- .../gadget/gadgets/morph/MorphWither.java | 12 +-- .../gadgets/particle/ParticleEnchant.java | 11 +-- .../gadgets/particle/ParticleFireRings.java | 10 +-- .../gadget/gadgets/particle/ParticleFoot.java | 11 +-- .../gadgets/particle/ParticleGreen.java | 10 +-- .../gadgets/particle/ParticleHeart.java | 10 +-- .../gadgets/particle/ParticleHelix.java | 10 +-- .../gadgets/particle/ParticleLegend.java | 11 +-- .../gadget/gadgets/particle/ParticleRain.java | 10 +-- 26 files changed, 157 insertions(+), 274 deletions(-) delete mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphGeno.java delete mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphNotch.java diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java index d94654926..7370cb2ce 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java @@ -22,7 +22,6 @@ import mineplex.core.cosmetic.ui.button.DeactivateGadgetButton; import mineplex.core.cosmetic.ui.button.GadgetButton; import mineplex.core.donation.DonationManager; import mineplex.core.gadget.gadgets.morph.MorphBlock; -import mineplex.core.gadget.gadgets.morph.MorphNotch; import mineplex.core.gadget.types.Gadget; import mineplex.core.gadget.types.GadgetType; import mineplex.core.gadget.types.ItemGadget; @@ -71,14 +70,8 @@ public class GadgetPage extends ShopPageBase protected void addGadget(Gadget gadget, int slot) { - if (gadget instanceof MorphNotch) - { - //setItem(slot, new ShopItem(gadget.GetDisplayMaterial(), gadget.GetDisplayData(), "Disabled " + gadget.GetName(), new String[] { "Sorry! Currently disabled until fix is made for 1.8 players!" }, 1, false, false)); - //return; - } - else if (gadget instanceof MorphBlock) + if (gadget instanceof MorphBlock) { - //Prevent stacker bug if (getPlayer().getPassenger() != null) return; } @@ -98,6 +91,7 @@ public class GadgetPage extends ShopPageBase { //Nothing } + //Chest Unlocks else if (gadget.GetCost(CurrencyType.Coins) == -2) { itemLore.add(C.cBlack); @@ -106,7 +100,38 @@ public class GadgetPage extends ShopPageBase else if (gadget.GetCost(CurrencyType.Coins) == -3) { itemLore.add(C.cBlack); - itemLore.add(C.cRed + "Found in Winter Holiday Treasure Chests"); + itemLore.add(C.cWhite + "Found in Winter Holiday Treasure"); + } + else if (gadget.GetCost(CurrencyType.Coins) == -4) + { + itemLore.add(C.cBlack); + itemLore.add(C.cWhite + "Found in Halloween Pumpkin Treasure"); + } + else if (gadget.GetCost(CurrencyType.Coins) == -5) + { + itemLore.add(C.cBlack); + itemLore.add(C.cWhite + "Found in Easter Holiday Treasure"); + } + //Rank Unlocks + else if (gadget.GetCost(CurrencyType.Coins) == -10) + { + itemLore.add(C.cBlack); + itemLore.add(C.cAqua + "Unlocked with Ultra Rank"); + } + else if (gadget.GetCost(CurrencyType.Coins) == -11) + { + itemLore.add(C.cBlack); + itemLore.add(C.cPurple + "Unlocked with Hero Rank"); + } + else if (gadget.GetCost(CurrencyType.Coins) == -12) + { + itemLore.add(C.cBlack); + itemLore.add(C.cGreen + "Unlocked with Legend Rank"); + } + else if (gadget.GetCost(CurrencyType.Coins) == -12) + { + itemLore.add(C.cBlack); + itemLore.add(C.cRed + "Unlocked with Titan Rank"); } if (gadget instanceof ItemGadget) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBat.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBat.java index 77e253f93..039027011 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBat.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBat.java @@ -19,12 +19,14 @@ import org.bukkit.potion.PotionEffectType; import mineplex.core.common.util.C; import mineplex.core.common.util.F; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilEvent; import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.disguise.disguises.DisguiseBat; import mineplex.core.projectile.IThrown; @@ -40,15 +42,15 @@ public class MorphBat extends MorphGadget implements IThrown { public MorphBat(GadgetManager manager) { - super(manager, "Bat Morph", new String[] + super(manager, "Bat Morph", + UtilText.splitLinesToArray(new String[] { - C.cWhite + "Flap around and annoy people by", - C.cWhite + "screeching loudly into their ears!", - " ", - C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Screech", - C.cYellow + "Double Jump" + C.cGray + " to use " + C.cGreen + "Flap", - C.cYellow + "Tap Sneak" + C.cGray + " to use " + C.cGreen + "Poop", - }, + C.cWhite + "Flap around and annoy people by screeching loudly into their ears!", + " ", + C.cYellow + "Left-Click" + C.cGray + " to " + C.cGreen + "Screech", + C.cYellow + "Double Jump" + C.cGray + " to " + C.cGreen + "Flap", + C.cYellow + "Sneak" + C.cGray + " to " + C.cGreen + "Poop", + }, LineFormat.LORE), 40000, Material.SKULL_ITEM, (byte)1); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBlaze.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBlaze.java index 67afa8bcb..2514a515f 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBlaze.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBlaze.java @@ -9,9 +9,11 @@ import org.bukkit.event.player.PlayerJoinEvent; import mineplex.core.common.Rank; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.disguise.disguises.DisguiseBlaze; @@ -24,15 +26,14 @@ public class MorphBlaze extends MorphGadget { public MorphBlaze(GadgetManager manager) { - super(manager, "Blaze Morph", new String[] + super(manager, "Blaze Morph", + UtilText.splitLinesToArray(new String[] { - C.cWhite + "Transforms the wearer into a fiery Blaze!", + C.cWhite + "Transform into a fiery Blaze, straight from the Nether!", " ", C.cYellow + "Crouch" + C.cGray + " to use " + C.cGreen + "Firefly", - " ", - C.cPurple + "Unlocked with Hero Rank", - }, - -1, + }, LineFormat.LORE), + -11, Material.BLAZE_POWDER, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBlock.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBlock.java index 208618c10..210e8aae5 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBlock.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBlock.java @@ -14,9 +14,11 @@ import org.bukkit.event.entity.ItemSpawnEvent; import org.bukkit.event.player.PlayerInteractEvent; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilEvent; import mineplex.core.common.util.UtilMath; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.event.StackerEvent; import mineplex.core.gadget.GadgetManager; @@ -32,13 +34,13 @@ public class MorphBlock extends MorphGadget public MorphBlock(GadgetManager manager) { - super(manager, "Block Morph", new String[] + super(manager, "Block Morph", UtilText.splitLinesToArray(new String[] { C.cWhite + "The blockiest block that ever blocked.", " ", C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Change Block", C.cYellow + "Stay Still" + C.cGray + " to use " + C.cGreen + "Solidify", - }, + }, LineFormat.LORE), 30000, Material.EMERALD_BLOCK, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBunny.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBunny.java index 056f1e33a..31e971ecc 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBunny.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBunny.java @@ -24,12 +24,14 @@ import org.bukkit.potion.PotionEffectType; import mineplex.core.common.CurrencyType; import mineplex.core.common.util.C; import mineplex.core.common.util.F; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilEvent; import mineplex.core.common.util.UtilFirework; import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.common.util.UtilPlayer; @@ -50,7 +52,7 @@ public class MorphBunny extends MorphGadget public MorphBunny(GadgetManager manager) { - super(manager, "Easter Bunny Morph", new String[] + super(manager, "Easter Bunny Morph", UtilText.splitLinesToArray(new String[] { C.cWhite + "Happy Easter!", " ", @@ -58,10 +60,8 @@ public class MorphBunny extends MorphGadget C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Hide Easter Egg", " ", C.cRed +C.Bold + "WARNING: " + ChatColor.RESET + "Hide Easter Egg uses 500 Coins" , - " ", - C.cPurple + "No longer available", - }, - -1, + }, LineFormat.LORE), + -5, Material.MONSTER_EGG, (byte)98); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphChicken.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphChicken.java index dcf03e51c..2f782c036 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphChicken.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphChicken.java @@ -17,10 +17,12 @@ import org.bukkit.util.Vector; import mineplex.core.common.Rank; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilEvent; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.disguise.disguises.DisguiseChicken; import mineplex.core.recharge.Recharge; @@ -33,13 +35,13 @@ public class MorphChicken extends MorphGadget { public MorphChicken(GadgetManager manager) { - super(manager, "Chicken Morph", new String[] + super(manager, "Chicken Morph", UtilText.splitLinesToArray(new String[] { C.cWhite + "Soar through the air like a fat Chicken!", " ", C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Egg Shot", C.cYellow + "Double Jump" + C.cGray + " to use " + C.cGreen + "Flap", - }, + }, LineFormat.LORE), 20000, Material.FEATHER, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphCow.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphCow.java index f16a35bce..70b56b04f 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphCow.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphCow.java @@ -7,7 +7,9 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.player.*; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilEvent; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.disguise.disguises.DisguiseCow; import mineplex.core.recharge.Recharge; @@ -18,12 +20,12 @@ public class MorphCow extends MorphGadget { public MorphCow(GadgetManager manager) { - super(manager, "Cow Morph", new String[] + super(manager, "Cow Morph", UtilText.splitLinesToArray(new String[] { C.cWhite + "How now brown cow?", " ", C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Moo", - }, + }, LineFormat.LORE), 6000, Material.LEATHER, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphCreeper.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphCreeper.java index d2d5b0954..d6f4cd78f 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphCreeper.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphCreeper.java @@ -13,11 +13,13 @@ import org.bukkit.event.player.PlayerQuitEvent; import mineplex.core.common.Rank; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.disguise.disguises.DisguiseBase; @@ -33,15 +35,13 @@ public class MorphCreeper extends MorphGadget public MorphCreeper(GadgetManager manager) { - super(manager, "Creeper Morph", new String[] + super(manager, "Creeper Morph", UtilText.splitLinesToArray(new String[] { - C.cWhite + "Transforms the wearer into a creepy Creeper!", + C.cWhite + "Become the creepiest of Creepers that ever creeped!", " ", C.cYellow + "Crouch" + C.cGray + " to use " + C.cGreen + "Detonate", - " ", - C.cPurple + "Unlocked with Hero Rank", - }, - -1, + }, LineFormat.LORE), + -11, Material.SKULL_ITEM, (byte)4); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphEnderman.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphEnderman.java index e6341e98b..f5305b19f 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphEnderman.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphEnderman.java @@ -16,8 +16,10 @@ import org.bukkit.event.player.PlayerToggleFlightEvent; import org.bukkit.util.Vector; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilFirework; +import mineplex.core.common.util.UtilText; import mineplex.core.disguise.disguises.DisguiseEnderman; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.types.MorphGadget; @@ -29,12 +31,12 @@ public class MorphEnderman extends MorphGadget { public MorphEnderman(GadgetManager manager) { - super(manager, "Enderman Morph", new String[] + super(manager, "Enderman Morph", UtilText.splitLinesToArray(new String[] { - C.cWhite + "Transforms the wearer into an Enderman!", + C.cWhite + "Using morph is the ultimate diet! Guaranteed instant results!", " ", C.cYellow + "Double Jump" + C.cGray + " to use " + C.cGreen + "Blink", - }, + }, LineFormat.LORE), 30000, Material.ENDER_PEARL, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphGeno.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphGeno.java deleted file mode 100644 index 0eb48894d..000000000 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphGeno.java +++ /dev/null @@ -1,75 +0,0 @@ -package mineplex.core.gadget.gadgets.morph; - -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.Sound; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.player.*; - -import com.mojang.authlib.GameProfile; - -import mineplex.core.common.util.C; -import mineplex.core.common.util.ProfileLoader; -import mineplex.core.common.util.UUIDFetcher; -import mineplex.core.common.util.UtilEvent; -import mineplex.core.common.util.UtilEvent.ActionType; -import mineplex.core.disguise.disguises.DisguisePlayer; -import mineplex.core.recharge.Recharge; -import mineplex.core.gadget.GadgetManager; -import mineplex.core.gadget.types.MorphGadget; - -public class MorphGeno extends MorphGadget -{ - private GameProfile _profile = null; - - public MorphGeno(GadgetManager manager) - { - super(manager, "Genocide604", new String[] - { - "Say goodbye to Genocide604 by burping", - "and eating a lot.", - " ", - C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Burp", - " ", - C.cRed + C.Bold + "WARNING: " + ChatColor.RESET + "This is a temporary item!", - }, - 10, - Material.SKULL_ITEM, (byte)3); - - _profile = new ProfileLoader(UUIDFetcher.getUUIDOf("Genocide604").toString(), "Genocide604").loadProfile(); - } - - @Override - public void EnableCustom(final Player player) - { - this.ApplyArmor(player); - - DisguisePlayer disguise = new DisguisePlayer(player, _profile); - Manager.getDisguiseManager().disguise(disguise); - } - - @Override - public void DisableCustom(Player player) - { - this.RemoveArmor(player); - Manager.getDisguiseManager().undisguise(player); - } - - @EventHandler - public void Action(PlayerInteractEvent event) - { - Player player = event.getPlayer(); - - if (!IsActive(player)) - return; - - if (!UtilEvent.isAction(event, ActionType.L)) - return; - - if (!Recharge.Instance.use(player, GetName(), 1500, false, false)) - return; - - player.getWorld().playSound(player.getEyeLocation(), Sound.BURP, 1f, (float) (0.8f + Math.random() * 0.4f)); - } -} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphNotch.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphNotch.java deleted file mode 100644 index 7671cd11c..000000000 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphNotch.java +++ /dev/null @@ -1,70 +0,0 @@ -package mineplex.core.gadget.gadgets.morph; - -import org.bukkit.Material; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.player.*; - -import com.mojang.authlib.GameProfile; - -import mineplex.core.common.util.C; -import mineplex.core.common.util.ProfileLoader; -import mineplex.core.common.util.UUIDFetcher; -import mineplex.core.common.util.UtilEvent; -import mineplex.core.common.util.UtilEvent.ActionType; -import mineplex.core.disguise.disguises.DisguisePlayer; -import mineplex.core.recharge.Recharge; -import mineplex.core.gadget.GadgetManager; -import mineplex.core.gadget.types.MorphGadget; - -public class MorphNotch extends MorphGadget -{ - private GameProfile _notchProfile = null; - - public MorphNotch(GadgetManager manager) - { - super(manager, "Notch", new String[] - { - "Who wouldn't want to be Notch?!", - //C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Enforce EULA", - }, - 50000, - Material.SKULL_ITEM, (byte)3); - - _notchProfile = new ProfileLoader(UUIDFetcher.getUUIDOf("Notch").toString(), "Notch").loadProfile(); - } - - @Override - public void EnableCustom(final Player player) - { - this.ApplyArmor(player); - - DisguisePlayer disguise = new DisguisePlayer(player, _notchProfile); - Manager.getDisguiseManager().disguise(disguise); - } - - @Override - public void DisableCustom(Player player) - { - this.RemoveArmor(player); - Manager.getDisguiseManager().undisguise(player); - } - - //@EventHandler - public void Action(PlayerInteractEvent event) - { - Player player = event.getPlayer(); - - if (!IsActive(player)) - return; - - if (!UtilEvent.isAction(event, ActionType.L)) - return; - - if (!Recharge.Instance.use(player, GetName(), 1500, false, false)) - return; - - player.sendMessage("You have enforced the EULA."); - - } -} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphPig.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphPig.java index 5a44e8322..65475ef7b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphPig.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphPig.java @@ -11,11 +11,13 @@ import org.bukkit.event.player.*; import mineplex.core.common.Rank; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilEvent; import mineplex.core.common.util.UtilMath; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.common.util.UtilServer; import mineplex.core.disguise.disguises.DisguisePig; @@ -31,16 +33,14 @@ public class MorphPig extends MorphGadget public MorphPig(GadgetManager manager) { - super(manager, "Pig Morph", new String[] + super(manager, "Pig Morph", UtilText.splitLinesToArray(new String[] { C.cWhite + "Oink. Oink. Oink.... Oink?", " ", C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Oink", C.cYellow + "Collide" + C.cGray + " to use " + C.cGreen + "Pig Bounce", - " ", - C.cAqua + "Unlocked with Ultra Rank", - }, - -1, + }, LineFormat.LORE), + -10, Material.PORK, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphPumpkinKing.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphPumpkinKing.java index 1e155f20c..cf0016bbb 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphPumpkinKing.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphPumpkinKing.java @@ -7,7 +7,9 @@ import org.bukkit.entity.Skeleton.SkeletonType; import org.bukkit.inventory.ItemStack; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilText; import mineplex.core.disguise.disguises.DisguiseSkeleton; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.types.MorphGadget; @@ -17,15 +19,11 @@ public class MorphPumpkinKing extends MorphGadget { public MorphPumpkinKing(GadgetManager manager) { - super(manager, "Pumpkin Kings Head", new String[] + super(manager, "Pumpkin Kings Head", UtilText.splitLinesToArray(new String[] { - C.cWhite + "Transforms the wearer into", - C.cWhite + "the dreaded Pumpkin King!", - "", - C.cYellow + "Earned by defeating the Pumpkin King", - C.cYellow + "in the 2013 Halloween Horror Event.", - }, - -1, + C.cWhite + "Transforms the wearer into the dreaded Pumpkin King!", + }, LineFormat.LORE), + -4, Material.PUMPKIN, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSlime.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSlime.java index 6813bbcb3..6f0f8f89f 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSlime.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSlime.java @@ -9,9 +9,11 @@ import org.bukkit.event.player.*; import mineplex.core.account.CoreClientManager; import mineplex.core.achievement.AchievementManager; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilEvent; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.disguise.disguises.DisguiseSlime; import mineplex.core.recharge.Recharge; @@ -25,14 +27,14 @@ public class MorphSlime extends MorphGadget public MorphSlime(GadgetManager manager, AchievementManager achievements) { - super(manager, "Big Larry Morph", new String[] + super(manager, "Big Larry Morph", UtilText.splitLinesToArray(new String[] { - C.cWhite + "Become a slime like Big Larry!", + C.cWhite + "Have you ever looked at Big Larry and thought, \'I really want to be that guy!\'? Well, today is your lucky day!", " ", C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Bounce", " ", C.cWhite + "+1 Slime Size for every 10 Mineplex Levels", - }, + }, LineFormat.LORE), 80000, Material.SLIME_BALL, (byte)0); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSnowman.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSnowman.java index 4451b7b72..e9a4ee54c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSnowman.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSnowman.java @@ -14,10 +14,12 @@ import org.bukkit.util.Vector; import mineplex.core.common.util.C; import mineplex.core.common.util.F; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.NautHashMap; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilEvent; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilParticle; @@ -39,9 +41,16 @@ public class MorphSnowman extends MorphGadget public MorphSnowman(GadgetManager manager) { - super(manager, "Snowman Morph", - new String[]{ C.cWhite + "Do you wanna build a snowman?", C.cWhite + "It doesn't have to be a snowman...", - C.cWhite + "Or... it kind of does...", " ", C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Snowball", }, + super(manager, "Olaf Morph", + UtilText.splitLinesToArray(new String[] + { + C.cWhite + "Do you wanna build a snowman?", + C.cWhite + "It doesn't have to be a snowman...", + C.cWhite + "Or... it kind of does...", + " ", + C.cYellow + "Left-Click" + C.cGray + " to use " + C.cGreen + "Blizzard", + C.cYellow + "Sneak" + C.cGray + " to use " + C.cGreen + "Snow Slide", + }, LineFormat.LORE), -3, Material.SNOW_BALL, (byte) 0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphTitan.java index 213332edf..91ba7a3f8 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphTitan.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphTitan.java @@ -17,11 +17,13 @@ import org.bukkit.util.Vector; import mineplex.core.common.Rank; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilEvent; import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.common.util.UtilPlayer; @@ -42,15 +44,13 @@ public class MorphTitan extends MorphGadget public MorphTitan(GadgetManager manager) { - super(manager, "Elder Guardian Morph", new String[] + super(manager, "Elder Guardian Morph", UtilText.splitLinesToArray(new String[] { - C.cWhite + "From the depths of the sea, the", - C.cWhite + "Elder Guardian posseses powers", - C.cWhite + "more amazing than any seen before!", - " ", - C.cRed + "Unlocked with Titan Rank", - }, - -1, + C.cWhite + "From the depths of the sea, the Elder Guardian posseses powers more amazing than any seen before!", + " ", + C.cYellow + "Left-Click" + C.cGray + " to use " + C.cGreen + "Guardians Laser", + }, LineFormat.LORE), + -13, Material.PRISMARINE_CRYSTALS, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphVillager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphVillager.java index def1ee383..3c537f731 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphVillager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphVillager.java @@ -19,10 +19,12 @@ import org.bukkit.util.Vector; import mineplex.core.common.CurrencyType; import mineplex.core.common.util.C; import mineplex.core.common.util.F; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilEvent; import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.disguise.disguises.DisguiseVillager; @@ -40,14 +42,14 @@ public class MorphVillager extends MorphGadget implements IThrown public MorphVillager(GadgetManager manager) { - super(manager, "Villager Morph", new String[] + super(manager, "Villager Morph", UtilText.splitLinesToArray(new String[] { C.cWhite + "HURRRR! MURR HURRR!", " ", C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Gem Throw", " ", C.cRed +C.Bold + "WARNING: " + ChatColor.RESET + "Gem Throw uses 20 Gems" - }, + }, LineFormat.LORE), 12000, Material.EMERALD, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphWither.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphWither.java index 1d2bde3bb..0bf2c6695 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphWither.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphWither.java @@ -6,10 +6,12 @@ import java.util.Iterator; import mineplex.core.common.Rank; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilEvent; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilParticle.ParticleType; @@ -43,15 +45,13 @@ public class MorphWither extends MorphGadget public MorphWither(GadgetManager manager) { - super(manager, "Wither Morph", new String[] + super(manager, "Wither Morph", UtilText.splitLinesToArray(new String[] { - C.cWhite + "Become a legendary Wither!", + C.cWhite + "Legends have foretold the coming of a powerful Wither...", " ", C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Wither Skull", - " ", - C.cGreen + "Unlocked with Legend Rank", - }, - -1, + }, LineFormat.LORE), + -12, Material.SKULL_ITEM, (byte)1); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleEnchant.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleEnchant.java index 38a505914..a388a0d3d 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleEnchant.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleEnchant.java @@ -6,8 +6,10 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.gadget.types.ParticleGadget; @@ -19,13 +21,8 @@ public class ParticleEnchant extends ParticleGadget { public ParticleEnchant(GadgetManager manager) { - super(manager, "Enchanted", new String[] - { - C.cWhite + "The wisdom of the universe", - C.cWhite + "suddenly finds you extremely", - C.cWhite + "attractive, and wants to", - C.cWhite + "\'enchant\' you.", - }, + super(manager, "Enchanted", + UtilText.splitLineToArray(C.cWhite + "The wisdom of the universe suddenly find you extremely attractive, and wants to \'enchant\' you.", LineFormat.LORE), -2, Material.BOOK, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFireRings.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFireRings.java index ba639675a..0de43a6da 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFireRings.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFireRings.java @@ -7,8 +7,10 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.gadget.types.ParticleGadget; @@ -21,12 +23,8 @@ public class ParticleFireRings extends ParticleGadget public ParticleFireRings(GadgetManager manager) { - super(manager, "Flame Rings", new String[] - { - C.cWhite + "Forged from the burning ashes", - C.cWhite + "of 1000 Blazes by the infamous", - C.cWhite + "Flame King of the Nether realm.", - }, + super(manager, "Flame Rings", + UtilText.splitLineToArray(C.cWhite + "Forged from the blazing rods of 1000 Blazes by the infamous Nether King.", LineFormat.LORE), -2, Material.BLAZE_POWDER, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFoot.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFoot.java index e156de492..af9fd1155 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFoot.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFoot.java @@ -14,11 +14,13 @@ import org.bukkit.event.EventHandler; import org.bukkit.util.Vector; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilTime; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; @@ -35,13 +37,8 @@ public class ParticleFoot extends ParticleGadget public ParticleFoot(GadgetManager manager) { - super(manager, "Shadow Walk", new String[] - { - C.cWhite + "In a world where footprints", - C.cWhite + "do not exist, leaving your", - C.cWhite + "shadow behind is the next", - C.cWhite + "best thing.", - }, + super(manager, "Shadow Walk", + UtilText.splitLineToArray(C.cWhite + "In a world where footprints do not exist, leaving your shadow behind is the next best thing!", LineFormat.LORE), -2, Material.LEATHER_BOOTS, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleGreen.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleGreen.java index 920de097b..1a524c676 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleGreen.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleGreen.java @@ -7,8 +7,10 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.gadget.types.ParticleGadget; @@ -21,12 +23,8 @@ public class ParticleGreen extends ParticleGadget public ParticleGreen(GadgetManager manager) { - super(manager, "Green Ring", new String[] - { - C.cWhite + "With these sparkles, you", - C.cWhite + "can now sparkle while you", - C.cWhite + "sparkle with CaptainSparklez.", - }, + super(manager, "Green Ring", + UtilText.splitLineToArray(C.cWhite + "With these sparkles, you can sparkle while sparkle with CaptainSparklez!", LineFormat.LORE), -2, Material.EMERALD, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleHeart.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleHeart.java index d4160c997..64ddaf216 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleHeart.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleHeart.java @@ -13,11 +13,13 @@ import org.bukkit.event.player.PlayerQuitEvent; import mineplex.core.common.util.C; import mineplex.core.common.util.F; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.gadget.types.ParticleGadget; @@ -31,12 +33,8 @@ public class ParticleHeart extends ParticleGadget { public ParticleHeart(GadgetManager manager) { - super(manager, "I Heart You", new String[] - { - C.cWhite + "With these particles, you can", - C.cWhite + "show off how much you heart", - C.cWhite + "everyone on Mineplex!", - }, + super(manager, "I Heart You", + UtilText.splitLineToArray(C.cWhite + "Show off how much you love Mineplex and everyone on it!", LineFormat.LORE), -2, Material.APPLE, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleHelix.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleHelix.java index 26e47dae7..7ccaed9c4 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleHelix.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleHelix.java @@ -7,7 +7,9 @@ import org.bukkit.event.EventHandler; import org.bukkit.util.Vector; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.common.util.UtilServer; @@ -21,12 +23,8 @@ public class ParticleHelix extends ParticleGadget public ParticleHelix(GadgetManager manager) { - super(manager, "Blood Helix", new String[] - { - C.cWhite + "Ancient legend says this magic", - C.cWhite + "empowers the blood of its user,", - C.cWhite + "giving them godly powers.", - }, + super(manager, "Blood Helix", + UtilText.splitLineToArray(C.cWhite + "Blood magic is very dangerous... but also very cool!", LineFormat.LORE), -2, Material.REDSTONE, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleLegend.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleLegend.java index 639d85d23..329e15b6b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleLegend.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleLegend.java @@ -8,6 +8,8 @@ import org.bukkit.event.player.PlayerJoinEvent; import mineplex.core.common.Rank; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; +import mineplex.core.common.util.UtilText; import mineplex.core.gadget.types.ParticleGadget; import mineplex.core.inventory.ClientItem; import mineplex.core.inventory.data.Item; @@ -19,13 +21,8 @@ public class ParticleLegend extends ParticleGadget { public ParticleLegend(GadgetManager manager) { - super(manager, "Legendary Aura", new String[] - { - C.cWhite + "These mystic particle attach to", - C.cWhite + "only the most legendary of players!", - " ", - C.cGreen + "Unlocked with Legend Rank", - }, + super(manager, "Legendary Aura", + UtilText.splitLineToArray(C.cWhite + "This particle will be updated soon! Yay!", LineFormat.LORE), -1, Material.ENDER_PORTAL_FRAME, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleRain.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleRain.java index 8d6755b3c..068cd7db7 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleRain.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleRain.java @@ -7,8 +7,10 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.gadget.types.ParticleGadget; @@ -21,12 +23,8 @@ public class ParticleRain extends ParticleGadget public ParticleRain(GadgetManager manager) { - super(manager, "Rain Cloud", new String[] - { - C.cWhite + "Your very own rain cloud!", - C.cWhite + "Now you never have to worry", - C.cWhite + "about not being wet. Woo...", - }, + super(manager, "Rain Cloud", + UtilText.splitLineToArray(C.cWhite + "Bring your sadness wherever you go, with your very own portable rain cloud!", LineFormat.LORE), -2, Material.INK_SACK, (byte)4); } From 7f8c9c02bc34bdee9ae5b5a4ca6d6e84595c2803 Mon Sep 17 00:00:00 2001 From: Cheese Date: Fri, 11 Dec 2015 16:38:44 +1100 Subject: [PATCH 19/81] and the mounts --- .../gadget/gadgets/particle/ParticleTitan.java | 2 +- .../core/mount/types/MountBabyReindeer.java | 10 +++++----- .../src/mineplex/core/mount/types/MountCart.java | 10 +++++----- .../mineplex/core/mount/types/MountDragon.java | 14 +++++--------- .../src/mineplex/core/mount/types/MountFrost.java | 10 ++++------ .../src/mineplex/core/mount/types/MountMule.java | 9 +++++---- .../src/mineplex/core/mount/types/MountSheep.java | 9 +++++---- .../src/mineplex/core/mount/types/MountSlime.java | 10 +++++----- .../mineplex/core/mount/types/MountSpider.java | 14 +++++++------- .../src/mineplex/core/mount/types/MountTitan.java | 13 +++++-------- .../mineplex/core/mount/types/MountUndead.java | 10 ++++------ .../mineplex/core/mount/types/MountZombie.java | 15 +++++---------- 12 files changed, 56 insertions(+), 70 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleTitan.java index 9fffc21fd..49724dfbe 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleTitan.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleTitan.java @@ -27,7 +27,7 @@ public class ParticleTitan extends ParticleGadget public ParticleTitan(GadgetManager manager) { super(manager, "Flame of the Titans", - UtilText.splitLineToArray(C.cWhite + "Only the legendary warriors known as Titans can survive the fiery pits of Hades.", LineFormat.LORE), + UtilText.splitLineToArray(C.cWhite + "These flames are said to be the spirit of a Titan.", LineFormat.LORE), -1, Material.FIREBALL, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountBabyReindeer.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountBabyReindeer.java index 04559e60e..f5e7eef9b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountBabyReindeer.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountBabyReindeer.java @@ -13,8 +13,10 @@ import org.bukkit.event.player.PlayerInteractEntityEvent; import org.bukkit.util.Vector; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.mount.HorseMount; @@ -29,11 +31,9 @@ public class MountBabyReindeer extends HorseMount public MountBabyReindeer(MountManager manager) { - super(manager, "Baby Rainder", new String[] - { - C.cWhite + "One of Santa's baby reindeers", - C.cWhite + "Still trying to learn how to fly" - }, Material.SNOW_BALL, (byte) 0, -3, Color.CREAMY, Style.WHITEFIELD, Variant.HORSE, 0, null); + super(manager, "Baby Rainder", + UtilText.splitLineToArray(C.cWhite + "One of Santas baby reindeers. He's still learning how to fly...", LineFormat.LORE), + Material.SNOW_BALL, (byte) 0, -3, Color.CREAMY, Style.WHITEFIELD, Variant.HORSE, 0, null); } @EventHandler diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountCart.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountCart.java index f5aa7f809..144289439 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountCart.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountCart.java @@ -11,12 +11,15 @@ import org.bukkit.event.entity.EntityTargetEvent; import org.bukkit.event.player.PlayerInteractEntityEvent; import org.bukkit.event.vehicle.VehicleDamageEvent; +import mineplex.core.common.util.C; import mineplex.core.common.util.F; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilText; import mineplex.core.mount.Mount; import mineplex.core.mount.MountManager; import mineplex.core.mount.SingleEntityMountData; @@ -28,11 +31,8 @@ public class MountCart extends Mount> { public MountCart(MountManager manager) { - super(manager, "Minecart", Material.MINECART, (byte)0, new String[] - { - ChatColor.RESET + "Cruise around town in your", - ChatColor.RESET + "new Minecart VX Turbo!", - }, + super(manager, "Minecart", Material.MINECART, (byte)0, + UtilText.splitLineToArray(C.cWhite + "Cruise around town in your shiny new Minecart RX Turbo!", LineFormat.LORE), 15000); KnownPackage = false; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountDragon.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountDragon.java index efb19dcf5..0bdddc6be 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountDragon.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountDragon.java @@ -10,7 +10,9 @@ import org.bukkit.event.player.PlayerJoinEvent; import mineplex.core.common.Rank; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilParticle.ParticleType; @@ -24,17 +26,11 @@ public class MountDragon extends DragonMount { public MountDragon(MountManager manager) { - super(manager, "Ethereal Dragon", new String[] - { - C.cWhite + "From the distant ether realm,", - C.cWhite + "this prized dragon is said to", - C.cWhite + "obey only true Heroes!", - " ", - C.cPurple + "Unlocked with Hero Rank", - }, + super(manager, "Ethereal Dragon", + UtilText.splitLineToArray(C.cWhite + "From the distant Ether Realm, this prized dragon is said to only obey true Heroes!", LineFormat.LORE), Material.DRAGON_EGG, (byte)0, - -1); + -11); } @EventHandler diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountFrost.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountFrost.java index e948ca9e3..6b978f050 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountFrost.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountFrost.java @@ -8,7 +8,9 @@ import org.bukkit.entity.Horse.Variant; import org.bukkit.event.EventHandler; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.mount.HorseMount; @@ -21,12 +23,8 @@ public class MountFrost extends HorseMount { public MountFrost(MountManager manager) { - super(manager, "Glacial Steed", new String[] - { - C.cWhite + "Born in the North Pole,", - C.cWhite + "it leaves a trail of frost", - C.cWhite + "as it moves!", - }, + super(manager, "Glacial Steed", + UtilText.splitLineToArray(C.cWhite + "Born in the North Pole, it leaves a trail of frost as it moves!", LineFormat.LORE), Material.SNOW_BALL, (byte)0, 15000, diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountMule.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountMule.java index be87f0fd1..d8536e772 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountMule.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountMule.java @@ -6,6 +6,9 @@ import org.bukkit.entity.Horse.Color; import org.bukkit.entity.Horse.Style; import org.bukkit.entity.Horse.Variant; +import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; +import mineplex.core.common.util.UtilText; import mineplex.core.mount.HorseMount; import mineplex.core.mount.MountManager; @@ -13,10 +16,8 @@ public class MountMule extends HorseMount { public MountMule(MountManager manager) { - super(manager, "Mount Mule", new String[] - { - ChatColor.RESET + "Muley muley!" - }, + super(manager, "Mount Mule", + UtilText.splitLineToArray(C.cWhite + "Your very own trusty pack mule!", LineFormat.LORE), Material.HAY_BLOCK, (byte)0, 3000, diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSheep.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSheep.java index c2697c771..f3b84ce99 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSheep.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSheep.java @@ -11,8 +11,11 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.inventory.ItemStack; +import mineplex.core.common.util.C; import mineplex.core.common.util.F; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilText; import mineplex.core.disguise.disguises.DisguiseBase; import mineplex.core.disguise.disguises.DisguiseSheep; import mineplex.core.mount.HorseMount; @@ -25,10 +28,8 @@ public class MountSheep extends HorseMount { public MountSheep(MountManager manager) { - super(manager, "Techno Sheep", new String[] - { - ChatColor.RESET + "Muley muley!" - }, + super(manager, "Techno Sheep", + UtilText.splitLineToArray(C.cWhite + "Baaaaa with all the colors of the rainbow!", LineFormat.LORE), Material.WOOL, (byte)14, 3000, diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSlime.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSlime.java index e8a1bd649..37b418d1a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSlime.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSlime.java @@ -11,12 +11,15 @@ import org.bukkit.event.entity.EntityTargetEvent; import org.bukkit.event.player.PlayerInteractEntityEvent; import org.bukkit.util.Vector; +import mineplex.core.common.util.C; import mineplex.core.common.util.F; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilText; import mineplex.core.mount.Mount; import mineplex.core.mount.MountManager; import mineplex.core.mount.SingleEntityMountData; @@ -28,11 +31,8 @@ public class MountSlime extends Mount> { public MountSlime(MountManager manager) { - super(manager, "Slime Mount", Material.SLIME_BALL, (byte)0, new String[] - { - ChatColor.RESET + "Bounce around on your very", - ChatColor.RESET + "own personal slime friend!", - }, + super(manager, "Slime Mount", Material.SLIME_BALL, (byte)0, + UtilText.splitLineToArray(C.cWhite + "Bounce around on your very own slime friend!", LineFormat.LORE), 15000); KnownPackage = false; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSpider.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSpider.java index 57ca4045b..0e4058aa4 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSpider.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSpider.java @@ -19,11 +19,13 @@ import org.bukkit.util.Vector; import mineplex.core.common.util.C; import mineplex.core.common.util.F; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilText; import mineplex.core.disguise.disguises.DisguiseSpider; import mineplex.core.mount.HorseMount; import mineplex.core.mount.MountManager; @@ -41,17 +43,15 @@ public class MountSpider extends HorseMount public MountSpider(MountManager manager) { - super(manager, "Spider Mount", new String[] + super(manager, "Spider Mount", + UtilText.splitLinesToArray(new String[] { - C.cWhite + "Why ride a horse when you can", - C.cWhite + "ride a cute and cuddly spider!", + C.cWhite + "Why ride a horse when you can ride a cute and cuddly spider!", C.cBlack, C.cYellow + "Look Up" + C.cGray + " to use " + C.cGreen + "Wall Climb", C.cYellow + "Jump" + C.cGray + " to use " + C.cGreen + "Leap", - C.cBlack, - C.cPurple + "Only available during " + C.Line + "Halloween 2015", - C.cPurple + "Purchase at " + C.Line + "www.mineplex.com/shop" - }, Material.WEB, (byte) 0, -1, Color.BLACK, Style.NONE, Variant.HORSE, 2.0, Material.AIR); + }, LineFormat.LORE), + Material.WEB, (byte) 0, -4, Color.BLACK, Style.NONE, Variant.HORSE, 2.0, Material.AIR); } @Override diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountTitan.java index 49bd13513..89927e4d1 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountTitan.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountTitan.java @@ -13,7 +13,9 @@ import org.bukkit.event.player.PlayerJoinEvent; import mineplex.core.common.Rank; import mineplex.core.common.util.C; import mineplex.core.common.util.F; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilText; import mineplex.core.mount.Mount; import mineplex.core.mount.MountManager; import mineplex.core.updater.UpdateType; @@ -23,14 +25,9 @@ public class MountTitan extends Mount { public MountTitan(MountManager manager) { - super(manager, "Molten Snake", Material.MAGMA_CREAM, (byte)0, new String[] - { - C.cWhite + "Deep under the earths surface, there", - C.cWhite + "exists a mythical species of Molten", - C.cWhite + "Snakes. This one will serve you eternally.", - " ", - C.cRed + "Unlocked with Titan Rank", - }, -1); + super(manager, "Molten Snake", Material.MAGMA_CREAM, (byte)0, + UtilText.splitLineToArray(C.cWhite + "Deep under the earths surface, there exists a mythical species of Molten Snakes. This one will serve you eternally.", LineFormat.LORE), + -13); } @Override diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountUndead.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountUndead.java index 3bf4bb80e..bd5bbd1af 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountUndead.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountUndead.java @@ -8,7 +8,9 @@ import org.bukkit.entity.Horse.Variant; import org.bukkit.event.EventHandler; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.mount.HorseMount; @@ -21,12 +23,8 @@ public class MountUndead extends HorseMount { public MountUndead(MountManager manager) { - super(manager, "Infernal Horror", new String[] - { - C.cWhite + "The most ghastly horse in", - C.cWhite + "existance, from the pits of", - C.cWhite + "the Nether.", - }, + super(manager, "Infernal Horror", + UtilText.splitLineToArray(C.cWhite + "The most ghastly horse in existance, from the pits of the Nether.", LineFormat.LORE), Material.BONE, (byte)0, 20000, diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountZombie.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountZombie.java index 9b396f6b5..e734e1df8 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountZombie.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountZombie.java @@ -6,6 +6,8 @@ import org.bukkit.entity.Horse.Style; import org.bukkit.entity.Horse.Variant; import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; +import mineplex.core.common.util.UtilText; import mineplex.core.mount.HorseMount; import mineplex.core.mount.MountManager; @@ -13,18 +15,11 @@ public class MountZombie extends HorseMount { public MountZombie(MountManager manager) { - super(manager, "Decrepit Warhorse", new String[] - { - C.cWhite + "Once a fierce warhorse, this", - C.cWhite + "undead beast will send fear", - C.cWhite + "into the hearts of your enemies.", - " ", - C.cYellow + "Earned by defeating the Pumpkin King", - C.cYellow + "in the 2015 Halloween Horror Event.", - }, + super(manager, "Decrepit Warhorse", + UtilText.splitLineToArray(C.cWhite + "Once a fierce warhorse, this undead beast will send fear into the hearts of your enemies.", LineFormat.LORE), Material.ROTTEN_FLESH, (byte)0, - -1, + -4, Color.BLACK, Style.BLACK_DOTS, Variant.UNDEAD_HORSE, 0.8, null); } } From 98e91d29f6ff143082b4bb66caf57783bf370efc Mon Sep 17 00:00:00 2001 From: Cheese Date: Fri, 11 Dec 2015 17:21:54 +1100 Subject: [PATCH 20/81] more cosmetic stuff :) --- .../src/mineplex/core/common/util/C.java | 2 ++ .../mineplex/core/common/util/LineFormat.java | 2 +- .../mineplex/core/common/util/UtilText.java | 15 ++++++++++++++ .../gadgets/arrowtrail/ArrowTrailTitan.java | 2 +- .../core/gadget/gadgets/death/DeathTitan.java | 2 +- .../gadgets/doublejump/DoubleJumpTitan.java | 2 +- .../core/gadget/gadgets/hat/HatGrinch.java | 20 +++++++++++++++++++ .../core/gadget/gadgets/morph/MorphBat.java | 8 ++++---- .../core/gadget/gadgets/morph/MorphBlaze.java | 4 ++-- .../core/gadget/gadgets/morph/MorphBlock.java | 6 +++--- .../core/gadget/gadgets/morph/MorphBunny.java | 10 +++++----- .../gadget/gadgets/morph/MorphChicken.java | 6 +++--- .../core/gadget/gadgets/morph/MorphCow.java | 4 ++-- .../gadget/gadgets/morph/MorphCreeper.java | 2 +- .../gadget/gadgets/morph/MorphEnderman.java | 4 ++-- .../core/gadget/gadgets/morph/MorphPig.java | 6 +++--- .../core/gadget/gadgets/morph/MorphSlime.java | 8 ++++---- .../gadget/gadgets/morph/MorphSnowman.java | 6 +++--- .../core/gadget/gadgets/morph/MorphTitan.java | 4 ++-- .../gadget/gadgets/morph/MorphVillager.java | 8 ++++---- .../gadget/gadgets/morph/MorphWither.java | 4 ++-- .../core/mount/types/MountSpider.java | 6 +++--- .../core/playerCount/PlayerCountManager.java | 4 ++-- 23 files changed, 86 insertions(+), 49 deletions(-) create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatGrinch.java diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/C.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/C.java index 7d5f00c91..bab76df51 100644 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/C.java +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/C.java @@ -4,6 +4,8 @@ import org.bukkit.ChatColor; public class C { + public static final String blankLine = ChatColor.RESET + " "; + public static String Scramble = "§k"; public static String Bold = "§l"; public static String Strike = "§m"; diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/LineFormat.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/LineFormat.java index 8f5f7320e..2db7d259f 100644 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/LineFormat.java +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/LineFormat.java @@ -2,7 +2,7 @@ package mineplex.core.common.util; public enum LineFormat { - LORE(200), CHAT(319); + LORE(220), CHAT(319); private int _length; diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilText.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilText.java index aec40852a..38e540824 100644 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilText.java +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilText.java @@ -295,6 +295,21 @@ public class UtilText public static ArrayList splitLine(String string, LineFormat lineFormat) { ArrayList strings = new ArrayList(); + + //Ignore lines with # + if (string.startsWith("#")) + { + strings.add(string.substring(1, string.length())); + return strings; + } + + //Empty + if (string.equals("") || string.equals(" ")) + { + strings.add(string); + return strings; + } + String current = ""; int currentLength = 0; String[] split = string.split(" "); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailTitan.java index 773e5b677..eb9043ba5 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailTitan.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailTitan.java @@ -22,7 +22,7 @@ public class ArrowTrailTitan extends ArrowEffectGadget { super(manager, "Arrows of the Titans", UtilText.splitLineToArray(C.cWhite + "Arrows forged in the Fires of Creation, they leave fiery trails in their wake.", LineFormat.LORE), - -1, + -13, Material.FIREBALL, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathTitan.java index 43c8b326d..52f7edda8 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathTitan.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathTitan.java @@ -18,7 +18,7 @@ public class DeathTitan extends DeathEffectGadget { super(manager, "Ashes of the Titans", UtilText.splitLineToArray(C.cWhite + "Even a Titan can fall in combat if their opponent is fierce enough.", LineFormat.LORE), - -1, + -13, Material.FIREBALL, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpTitan.java index 7b75adf3d..c86fe06dc 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpTitan.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpTitan.java @@ -23,7 +23,7 @@ public class DoubleJumpTitan extends DoubleJumpEffectGadget { super(manager, "Leap of the Titans", UtilText.splitLineToArray(C.cWhite + "Out of the frying pan and into the fire.", LineFormat.LORE), - -1, + -13, Material.FIREBALL, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatGrinch.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatGrinch.java new file mode 100644 index 000000000..502ff74cb --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatGrinch.java @@ -0,0 +1,20 @@ +package mineplex.core.gadget.gadgets.hat; + +import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; +import mineplex.core.common.util.UtilText; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.types.HatGadget; + +public class HatGrinch extends HatGadget +{ + + public HatGrinch(GadgetManager manager) + { + super(manager, "The Grinch", + UtilText.splitLineToArray(C.cWhite + "", LineFormat.LORE), + -3, + "christmasgift"); + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBat.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBat.java index 039027011..febe7172e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBat.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBat.java @@ -46,10 +46,10 @@ public class MorphBat extends MorphGadget implements IThrown UtilText.splitLinesToArray(new String[] { C.cWhite + "Flap around and annoy people by screeching loudly into their ears!", - " ", - C.cYellow + "Left-Click" + C.cGray + " to " + C.cGreen + "Screech", - C.cYellow + "Double Jump" + C.cGray + " to " + C.cGreen + "Flap", - C.cYellow + "Sneak" + C.cGray + " to " + C.cGreen + "Poop", + C.blankLine, + "#" + C.cYellow + "Left-Click" + C.cGray + " to use " + C.cGreen + "Screech", + "#" + C.cYellow + "Double Jump" + C.cGray + " to use " + C.cGreen + "Flap", + "#" + C.cYellow + "Sneak" + C.cGray + " to use " + C.cGreen + "Poop", }, LineFormat.LORE), 40000, Material.SKULL_ITEM, (byte)1); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBlaze.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBlaze.java index 2514a515f..62fc9d54b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBlaze.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBlaze.java @@ -30,8 +30,8 @@ public class MorphBlaze extends MorphGadget UtilText.splitLinesToArray(new String[] { C.cWhite + "Transform into a fiery Blaze, straight from the Nether!", - " ", - C.cYellow + "Crouch" + C.cGray + " to use " + C.cGreen + "Firefly", + C.blankLine, + "#" + C.cYellow + "Crouch" + C.cGray + " to use " + C.cGreen + "Firefly", }, LineFormat.LORE), -11, Material.BLAZE_POWDER, (byte)0); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBlock.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBlock.java index 210e8aae5..2a99353b3 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBlock.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBlock.java @@ -37,9 +37,9 @@ public class MorphBlock extends MorphGadget super(manager, "Block Morph", UtilText.splitLinesToArray(new String[] { C.cWhite + "The blockiest block that ever blocked.", - " ", - C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Change Block", - C.cYellow + "Stay Still" + C.cGray + " to use " + C.cGreen + "Solidify", + C.blankLine, + "#" + C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Change Block", + "#" + C.cYellow + "Stay Still" + C.cGray + " to use " + C.cGreen + "Solidify", }, LineFormat.LORE), 30000, Material.EMERALD_BLOCK, (byte)0); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBunny.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBunny.java index 31e971ecc..8958d958a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBunny.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBunny.java @@ -55,11 +55,11 @@ public class MorphBunny extends MorphGadget super(manager, "Easter Bunny Morph", UtilText.splitLinesToArray(new String[] { C.cWhite + "Happy Easter!", - " ", - C.cYellow + "Charge Crouch" + C.cGray + " to use " + C.cGreen + "Super Jump", - C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Hide Easter Egg", - " ", - C.cRed +C.Bold + "WARNING: " + ChatColor.RESET + "Hide Easter Egg uses 500 Coins" , + C.blankLine, + "#" + C.cYellow + "Charge Crouch" + C.cGray + " to use " + C.cGreen + "Super Jump", + "#" + C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Hide Easter Egg", + C.blankLine, + "#" + C.cRed +C.Bold + "WARNING: " + ChatColor.RESET + "Hide Easter Egg uses 500 Coins" , }, LineFormat.LORE), -5, Material.MONSTER_EGG, (byte)98); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphChicken.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphChicken.java index 2f782c036..5589776ba 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphChicken.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphChicken.java @@ -38,9 +38,9 @@ public class MorphChicken extends MorphGadget super(manager, "Chicken Morph", UtilText.splitLinesToArray(new String[] { C.cWhite + "Soar through the air like a fat Chicken!", - " ", - C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Egg Shot", - C.cYellow + "Double Jump" + C.cGray + " to use " + C.cGreen + "Flap", + C.blankLine, + "#" + C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Egg Shot", + "#" + C.cYellow + "Double Jump" + C.cGray + " to use " + C.cGreen + "Flap", }, LineFormat.LORE), 20000, Material.FEATHER, (byte)0); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphCow.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphCow.java index 70b56b04f..8c46bd98b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphCow.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphCow.java @@ -23,8 +23,8 @@ public class MorphCow extends MorphGadget super(manager, "Cow Morph", UtilText.splitLinesToArray(new String[] { C.cWhite + "How now brown cow?", - " ", - C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Moo", + C.blankLine, + "#" + C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Moo", }, LineFormat.LORE), 6000, Material.LEATHER, (byte)0); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphCreeper.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphCreeper.java index d6f4cd78f..cfe013647 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphCreeper.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphCreeper.java @@ -38,7 +38,7 @@ public class MorphCreeper extends MorphGadget super(manager, "Creeper Morph", UtilText.splitLinesToArray(new String[] { C.cWhite + "Become the creepiest of Creepers that ever creeped!", - " ", + C.blankLine, C.cYellow + "Crouch" + C.cGray + " to use " + C.cGreen + "Detonate", }, LineFormat.LORE), -11, diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphEnderman.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphEnderman.java index f5305b19f..a7c75fb33 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphEnderman.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphEnderman.java @@ -34,8 +34,8 @@ public class MorphEnderman extends MorphGadget super(manager, "Enderman Morph", UtilText.splitLinesToArray(new String[] { C.cWhite + "Using morph is the ultimate diet! Guaranteed instant results!", - " ", - C.cYellow + "Double Jump" + C.cGray + " to use " + C.cGreen + "Blink", + C.blankLine, + "#" + C.cYellow + "Double Jump" + C.cGray + " to use " + C.cGreen + "Blink", }, LineFormat.LORE), 30000, Material.ENDER_PEARL, (byte)0); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphPig.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphPig.java index 65475ef7b..90cb4478e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphPig.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphPig.java @@ -36,9 +36,9 @@ public class MorphPig extends MorphGadget super(manager, "Pig Morph", UtilText.splitLinesToArray(new String[] { C.cWhite + "Oink. Oink. Oink.... Oink?", - " ", - C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Oink", - C.cYellow + "Collide" + C.cGray + " to use " + C.cGreen + "Pig Bounce", + C.blankLine, + "#" + C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Oink", + "#" + C.cYellow + "Collide" + C.cGray + " to use " + C.cGreen + "Pig Bounce", }, LineFormat.LORE), -10, Material.PORK, (byte)0); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSlime.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSlime.java index 6f0f8f89f..cd6b8b24e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSlime.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSlime.java @@ -30,10 +30,10 @@ public class MorphSlime extends MorphGadget super(manager, "Big Larry Morph", UtilText.splitLinesToArray(new String[] { C.cWhite + "Have you ever looked at Big Larry and thought, \'I really want to be that guy!\'? Well, today is your lucky day!", - " ", - C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Bounce", - " ", - C.cWhite + "+1 Slime Size for every 10 Mineplex Levels", + C.blankLine, + "#" + C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Bounce", + C.blankLine, + "#" + C.cGreen + "+1 Size per 10 Mineplex Levels", }, LineFormat.LORE), 80000, Material.SLIME_BALL, (byte)0); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSnowman.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSnowman.java index e9a4ee54c..bd06315e5 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSnowman.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSnowman.java @@ -47,9 +47,9 @@ public class MorphSnowman extends MorphGadget C.cWhite + "Do you wanna build a snowman?", C.cWhite + "It doesn't have to be a snowman...", C.cWhite + "Or... it kind of does...", - " ", - C.cYellow + "Left-Click" + C.cGray + " to use " + C.cGreen + "Blizzard", - C.cYellow + "Sneak" + C.cGray + " to use " + C.cGreen + "Snow Slide", + C.blankLine, + "#" + C.cYellow + "Left-Click" + C.cGray + " to use " + C.cGreen + "Blizzard", + "#" + C.cYellow + "Sneak" + C.cGray + " to use " + C.cGreen + "Snow Slide", }, LineFormat.LORE), -3, Material.SNOW_BALL, (byte) 0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphTitan.java index 91ba7a3f8..cedd467ee 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphTitan.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphTitan.java @@ -47,8 +47,8 @@ public class MorphTitan extends MorphGadget super(manager, "Elder Guardian Morph", UtilText.splitLinesToArray(new String[] { C.cWhite + "From the depths of the sea, the Elder Guardian posseses powers more amazing than any seen before!", - " ", - C.cYellow + "Left-Click" + C.cGray + " to use " + C.cGreen + "Guardians Laser", + C.blankLine, + "#" + C.cYellow + "Left-Click" + C.cGray + " to use " + C.cGreen + "Guardians Laser", }, LineFormat.LORE), -13, Material.PRISMARINE_CRYSTALS, (byte)0); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphVillager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphVillager.java index 3c537f731..61944df22 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphVillager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphVillager.java @@ -45,10 +45,10 @@ public class MorphVillager extends MorphGadget implements IThrown super(manager, "Villager Morph", UtilText.splitLinesToArray(new String[] { C.cWhite + "HURRRR! MURR HURRR!", - " ", - C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Gem Throw", - " ", - C.cRed +C.Bold + "WARNING: " + ChatColor.RESET + "Gem Throw uses 20 Gems" + C.blankLine, + "#" + C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Gem Throw", + C.blankLine, + "#" + C.cRed +C.Bold + "WARNING: " + ChatColor.RESET + "Gem Throw uses 20 Gems" }, LineFormat.LORE), 12000, Material.EMERALD, (byte)0); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphWither.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphWither.java index 0bf2c6695..664b088f7 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphWither.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphWither.java @@ -48,8 +48,8 @@ public class MorphWither extends MorphGadget super(manager, "Wither Morph", UtilText.splitLinesToArray(new String[] { C.cWhite + "Legends have foretold the coming of a powerful Wither...", - " ", - C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Wither Skull", + C.blankLine, + "#" + C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Wither Skull", }, LineFormat.LORE), -12, Material.SKULL_ITEM, (byte)1); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSpider.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSpider.java index 0e4058aa4..c658c14e2 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSpider.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSpider.java @@ -47,9 +47,9 @@ public class MountSpider extends HorseMount UtilText.splitLinesToArray(new String[] { C.cWhite + "Why ride a horse when you can ride a cute and cuddly spider!", - C.cBlack, - C.cYellow + "Look Up" + C.cGray + " to use " + C.cGreen + "Wall Climb", - C.cYellow + "Jump" + C.cGray + " to use " + C.cGreen + "Leap", + C.blankLine, + "#" + C.cYellow + "Look Up" + C.cGray + " to use " + C.cGreen + "Wall Climb", + "#" + C.cYellow + "Jump" + C.cGray + " to use " + C.cGreen + "Leap", }, LineFormat.LORE), Material.WEB, (byte) 0, -4, Color.BLACK, Style.NONE, Variant.HORSE, 2.0, Material.AIR); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/playerCount/PlayerCountManager.java b/Plugins/Mineplex.Core/src/mineplex/core/playerCount/PlayerCountManager.java index 826cf7636..71595c42a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/playerCount/PlayerCountManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/playerCount/PlayerCountManager.java @@ -19,7 +19,7 @@ public class PlayerCountManager extends MiniPlugin private DataRepository _repository; private DataRepository _secondRepository; - private volatile int _playerCount; + private volatile int _playerCount = 0; public PlayerCountManager(JavaPlugin plugin) { @@ -37,7 +37,7 @@ public class PlayerCountManager extends MiniPlugin _secondRepository = new RedisDataRepository(new ConnectionData("10.33.53.16", 6379, ConnectionData.ConnectionType.MASTER, "ServerStatus"), new ConnectionData("10.33.53.16", 6377, ConnectionData.ConnectionType.SLAVE, "ServerStatus"), Region.ALL, BungeeServer.class, "bungeeServers"); - updatePlayerCount(); + //updatePlayerCount(); } private void updatePlayerCount() From 66011cde8cbced8adf50b23ed833953cd16d2286 Mon Sep 17 00:00:00 2001 From: Cheese Date: Fri, 11 Dec 2015 17:25:23 +1100 Subject: [PATCH 21/81] fixed player count --- Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java index 3583b5df5..52abd753e 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java @@ -697,6 +697,8 @@ public class HubManager extends MiniClientPlugin if (_scoreboardTick != 0) return; + int playerCount = _playerCountManager.getPlayerCount(); + for (Player player : UtilServer.getPlayers()) { //Dont Waste Time @@ -733,11 +735,10 @@ public class HubManager extends MiniClientPlugin obj.getScore(" ").setScore(line--); //Players - int playerCount = _playerCountManager.getPlayerCount(); obj.getScore(C.cYellow + C.Bold + "Players").setScore(line--); player.getScoreboard().resetScores(_lastPlayerCount + ""); obj.getScore(playerCount + "").setScore(line--); - _lastPlayerCount = playerCount; + //Space obj.getScore(" ").setScore(line--); @@ -770,6 +771,8 @@ public class HubManager extends MiniClientPlugin obj.getScore("www.mineplex.com").setScore(line--); obj.getScore("----------------").setScore(line--); } + + _lastPlayerCount = playerCount; } @Override From 61a8d2825e7fb01be56fa3f8f688e1694494a020 Mon Sep 17 00:00:00 2001 From: Cheese Date: Fri, 11 Dec 2015 19:20:13 +1100 Subject: [PATCH 22/81] gadget gui overhaul --- .../core/cosmetic/ui/page/GadgetPage.java | 58 ++++++---- .../core/cosmetic/ui/page/MountPage.java | 89 +++++++++++++-- .../core/cosmetic/ui/page/PetPage.java | 105 +++++++++++++----- .../arrowtrail/ArrowTrailCandyCane.java | 2 +- .../arrowtrail/ArrowTrailFrostLord.java | 2 +- .../gadgets/arrowtrail/ArrowTrailTitan.java | 2 +- .../gadget/gadgets/death/DeathCandyCane.java | 2 +- .../gadget/gadgets/death/DeathFrostLord.java | 2 +- .../core/gadget/gadgets/death/DeathTitan.java | 2 +- .../doublejump/DoubleJumpCandyCane.java | 2 +- .../doublejump/DoubleJumpFrostLord.java | 2 +- .../gadgets/doublejump/DoubleJumpTitan.java | 2 +- .../core/gadget/gadgets/hat/HatCoal.java | 2 +- .../core/gadget/gadgets/hat/HatGrinch.java | 2 +- .../core/gadget/gadgets/hat/HatPresent.java | 2 +- .../core/gadget/gadgets/hat/HatSanta.java | 2 +- .../core/gadget/gadgets/hat/HatSnowman.java | 2 +- .../core/gadget/gadgets/item/ItemBatGun.java | 2 +- .../core/gadget/gadgets/item/ItemCoal.java | 2 +- .../core/gadget/gadgets/morph/MorphBat.java | 8 +- .../core/gadget/gadgets/morph/MorphBlaze.java | 4 +- .../core/gadget/gadgets/morph/MorphBlock.java | 6 +- .../core/gadget/gadgets/morph/MorphBunny.java | 6 +- .../gadget/gadgets/morph/MorphChicken.java | 6 +- .../core/gadget/gadgets/morph/MorphCow.java | 4 +- .../gadget/gadgets/morph/MorphCreeper.java | 4 +- .../gadget/gadgets/morph/MorphEnderman.java | 4 +- .../core/gadget/gadgets/morph/MorphPig.java | 6 +- .../gadgets/morph/MorphPumpkinKing.java | 2 +- .../core/gadget/gadgets/morph/MorphSlime.java | 6 +- .../gadget/gadgets/morph/MorphSnowman.java | 10 +- .../core/gadget/gadgets/morph/MorphTitan.java | 4 +- .../gadget/gadgets/morph/MorphVillager.java | 4 +- .../gadget/gadgets/morph/MorphWither.java | 4 +- .../gadgets/particle/ParticleCandyCane.java | 2 +- .../gadgets/particle/ParticleCoalFumes.java | 2 +- .../gadgets/particle/ParticleEnchant.java | 2 +- .../gadgets/particle/ParticleFairy.java | 6 +- .../gadgets/particle/ParticleFireRings.java | 2 +- .../gadget/gadgets/particle/ParticleFoot.java | 2 +- .../gadgets/particle/ParticleFrostLord.java | 2 +- .../gadgets/particle/ParticleGreen.java | 2 +- .../gadgets/particle/ParticleHeart.java | 2 +- .../gadgets/particle/ParticleHelix.java | 2 +- .../gadgets/particle/ParticleKronos.java | 6 +- .../gadgets/particle/ParticleLegend.java | 2 +- .../gadget/gadgets/particle/ParticleRain.java | 2 +- .../gadgets/particle/ParticleTitan.java | 2 +- .../core/mount/types/MountBabyReindeer.java | 2 +- .../mineplex/core/mount/types/MountCart.java | 2 +- .../core/mount/types/MountDragon.java | 2 +- .../mineplex/core/mount/types/MountFrost.java | 2 +- .../mineplex/core/mount/types/MountMule.java | 2 +- .../mineplex/core/mount/types/MountSheep.java | 2 +- .../mineplex/core/mount/types/MountSlime.java | 2 +- .../core/mount/types/MountSpider.java | 6 +- .../mineplex/core/mount/types/MountTitan.java | 2 +- .../core/mount/types/MountUndead.java | 2 +- .../core/mount/types/MountZombie.java | 2 +- .../src/mineplex/core/pet/PetFactory.java | 4 +- .../src/mineplex/core/pet/types/Elf.java | 2 +- .../src/mineplex/core/pet/types/Pumpkin.java | 2 +- 62 files changed, 283 insertions(+), 149 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java index 7370cb2ce..0d265f3ea 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java @@ -78,16 +78,10 @@ public class GadgetPage extends ShopPageBase List itemLore = new ArrayList(); - itemLore.add(C.cBlack); itemLore.addAll(Arrays.asList(gadget.GetDescription())); - - if (gadget.GetCost(CurrencyType.Coins) >= 0) - { - itemLore.add(C.cBlack); - itemLore.add(C.cAqua + "Cost: " + ChatColor.RESET + gadget.GetCost(CurrencyType.Coins) + " Treasure Shards"); - } - else if (gadget.GetCost(CurrencyType.Coins) == -1) + + if (gadget.GetCost(CurrencyType.Coins) == -1) { //Nothing } @@ -95,22 +89,22 @@ public class GadgetPage extends ShopPageBase else if (gadget.GetCost(CurrencyType.Coins) == -2) { itemLore.add(C.cBlack); - itemLore.add(C.cGray + "Found in Treasure Chests"); + itemLore.add(C.cBlue + "Found in Treasure Chests"); } else if (gadget.GetCost(CurrencyType.Coins) == -3) { itemLore.add(C.cBlack); - itemLore.add(C.cWhite + "Found in Winter Holiday Treasure"); + itemLore.add(C.cBlue + "Found in Winter Holiday Treasure"); } else if (gadget.GetCost(CurrencyType.Coins) == -4) { itemLore.add(C.cBlack); - itemLore.add(C.cWhite + "Found in Halloween Pumpkin Treasure"); + itemLore.add(C.cBlue + "Found in Halloween Pumpkin Treasure"); } else if (gadget.GetCost(CurrencyType.Coins) == -5) { itemLore.add(C.cBlack); - itemLore.add(C.cWhite + "Found in Easter Holiday Treasure"); + itemLore.add(C.cBlue + "Found in Easter Holiday Treasure"); } //Rank Unlocks else if (gadget.GetCost(CurrencyType.Coins) == -10) @@ -128,7 +122,7 @@ public class GadgetPage extends ShopPageBase itemLore.add(C.cBlack); itemLore.add(C.cGreen + "Unlocked with Legend Rank"); } - else if (gadget.GetCost(CurrencyType.Coins) == -12) + else if (gadget.GetCost(CurrencyType.Coins) == -13) { itemLore.add(C.cBlack); itemLore.add(C.cRed + "Unlocked with Titan Rank"); @@ -147,19 +141,45 @@ public class GadgetPage extends ShopPageBase { if (gadget.GetActive().contains(getPlayer())) { - addButton(slot, new ShopItem(gadget.GetDisplayMaterial(), gadget.GetDisplayData(), "Deactivate " + gadget.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, false, false), new DeactivateGadgetButton(gadget, this)); + itemLore.add(C.cBlack); + itemLore.add(C.cGreen + "Click to Disable"); + + addButton(slot, new ShopItem(gadget.GetDisplayMaterial(), gadget.GetDisplayData(), gadget.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, false, false), new DeactivateGadgetButton(gadget, this)); } else { - addButton(slot, new ShopItem(gadget.GetDisplayMaterial(), gadget.GetDisplayData(), "Activate " + gadget.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, false, false), new ActivateGadgetButton(gadget, this)); + itemLore.add(C.cBlack); + itemLore.add(C.cGreen + "Click to Enable"); + + addButton(slot, new ShopItem(gadget.GetDisplayMaterial(), gadget.GetDisplayData(), gadget.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, false, false), new ActivateGadgetButton(gadget, this)); } } - else - { + else + { + if (gadget.GetCost(CurrencyType.Coins) > 0) + { + itemLore.add(C.cBlack); + itemLore.add(C.cWhiteB + "Cost: " + C.cAqua + gadget.GetCost(CurrencyType.Coins) + " Treasure Shards"); + } + if (gadget.GetCost(CurrencyType.Coins) > 0 && getDonationManager().Get(getPlayer().getName()).GetBalance(CurrencyType.Coins) >= gadget.GetCost(CurrencyType.Coins)) - addButton(slot, new ShopItem(Material.INK_SACK, (byte) 8, (gadget.GetCost(CurrencyType.Coins) < 0 ? "" : "Purchase ") + gadget.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, false, false), new GadgetButton(gadget, this)); + { + itemLore.add(C.cBlack); + itemLore.add(C.cGreen + "Click to craft " + gadget.GetName()); + + addButton(slot, new ShopItem(Material.INK_SACK, (byte) 8, gadget.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false), new GadgetButton(gadget, this)); + } + else if (gadget.GetCost(CurrencyType.Coins) > 0) + { + itemLore.add(C.cBlack); + itemLore.add(C.cRed + "Not enough Treasure Shards."); + + setItem(slot, new ShopItem(Material.INK_SACK, (byte)8, gadget.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false)); + } else - setItem(slot, new ShopItem(Material.INK_SACK, (byte)8, (gadget.GetCost(CurrencyType.Coins) < 0 ? "" : "Purchase ") + gadget.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false)); + { + setItem(slot, new ShopItem(Material.INK_SACK, (byte)8, gadget.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false)); + } } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/MountPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/MountPage.java index 2ed930507..77e87179c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/MountPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/MountPage.java @@ -57,31 +57,100 @@ public class MountPage extends ShopPageBase { List itemLore = new ArrayList(); - if (mount.GetCost(CurrencyType.Coins) != -1) - { - itemLore.add(C.cYellow + mount.GetCost(CurrencyType.Coins) + " Coins"); - } - itemLore.add(C.cBlack); itemLore.addAll(Arrays.asList(mount.GetDescription())); + if (mount.GetCost(CurrencyType.Coins) == -1) + { + //Nothing + } + //Chest Unlocks + else if (mount.GetCost(CurrencyType.Coins) == -2) + { + itemLore.add(C.cBlack); + itemLore.add(C.cBlue + "Found in Treasure Chests"); + } + else if (mount.GetCost(CurrencyType.Coins) == -3) + { + itemLore.add(C.cBlack); + itemLore.add(C.cBlue + "Found in Winter Holiday Treasure"); + } + else if (mount.GetCost(CurrencyType.Coins) == -4) + { + itemLore.add(C.cBlack); + itemLore.add(C.cBlue + "Found in Halloween Pumpkin Treasure"); + } + else if (mount.GetCost(CurrencyType.Coins) == -5) + { + itemLore.add(C.cBlack); + itemLore.add(C.cBlue + "Found in Easter Holiday Treasure"); + } + //Rank Unlocks + else if (mount.GetCost(CurrencyType.Coins) == -10) + { + itemLore.add(C.cBlack); + itemLore.add(C.cAqua + "Unlocked with Ultra Rank"); + } + else if (mount.GetCost(CurrencyType.Coins) == -11) + { + itemLore.add(C.cBlack); + itemLore.add(C.cPurple + "Unlocked with Hero Rank"); + } + else if (mount.GetCost(CurrencyType.Coins) == -12) + { + itemLore.add(C.cBlack); + itemLore.add(C.cGreen + "Unlocked with Legend Rank"); + } + else if (mount.GetCost(CurrencyType.Coins) == -13) + { + itemLore.add(C.cBlack); + itemLore.add(C.cRed + "Unlocked with Titan Rank"); + } + + if (getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage(mount.GetName())) { if (mount.GetActive().containsKey(getPlayer())) { - addButton(slot, new ShopItem(mount.GetDisplayMaterial(), mount.GetDisplayData(), "Deactivate " + mount.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, false, false), new DeactivateMountButton(mount, this)); + itemLore.add(C.cBlack); + itemLore.add(C.cGreen + "Click to Disable"); + + addButton(slot, new ShopItem(mount.GetDisplayMaterial(), mount.GetDisplayData(), mount.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, false, false), new DeactivateMountButton(mount, this)); } else { - addButton(slot, new ShopItem(mount.GetDisplayMaterial(), mount.GetDisplayData(), "Activate " + mount.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, false, false), new ActivateMountButton(mount, this)); + itemLore.add(C.cBlack); + itemLore.add(C.cGreen + "Click to Enable"); + + addButton(slot, new ShopItem(mount.GetDisplayMaterial(), mount.GetDisplayData(), mount.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, false, false), new ActivateMountButton(mount, this)); } } else { - if (mount.GetCost(CurrencyType.Coins) != -1 && getDonationManager().Get(getPlayer().getName()).GetBalance(CurrencyType.Coins) >= mount.GetCost(CurrencyType.Coins)) - addButton(slot, new ShopItem(mount.GetDisplayMaterial(), mount.GetDisplayData(), (mount.GetCost(CurrencyType.Coins) < 0 ? "" : "Purchase ") + mount.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, false, false), new MountButton(mount, this)); + if (mount.GetCost(CurrencyType.Coins) > 0) + { + itemLore.add(C.cBlack); + itemLore.add(C.cWhiteB + "Cost: " + C.cAqua + mount.GetCost(CurrencyType.Coins) + " Treasure Shards"); + } + + if (mount.GetCost(CurrencyType.Coins) > 0 && getDonationManager().Get(getPlayer().getName()).GetBalance(CurrencyType.Coins) >= mount.GetCost(CurrencyType.Coins)) + { + itemLore.add(C.cBlack); + itemLore.add(C.cGreen + "Click to craft " + mount.GetName()); + + addButton(slot, new ShopItem(mount.GetDisplayMaterial(), mount.GetDisplayData(), mount.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false), new MountButton(mount, this)); + } + else if (mount.GetCost(CurrencyType.Coins) > 0) + { + itemLore.add(C.cBlack); + itemLore.add(C.cRed + "Not enough Treasure Shards."); + + setItem(slot, new ShopItem(mount.GetDisplayMaterial(), mount.GetDisplayData(), mount.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false)); + } else - setItem(slot, new ShopItem(mount.GetDisplayMaterial(), mount.GetDisplayData(), (mount.GetCost(CurrencyType.Coins) < 0 ? "" : "Purchase ") + mount.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false)); + { + setItem(slot, new ShopItem(mount.GetDisplayMaterial(), mount.GetDisplayData(), mount.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false)); + } } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/PetPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/PetPage.java index cd562f903..7d40cab01 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/PetPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/PetPage.java @@ -61,26 +61,54 @@ public class PetPage extends ShopPageBase { List itemLore = new ArrayList(); - //Halloween Name + itemLore.add(C.cBlack); + itemLore.add(C.cGray + "Your very own " + pet.GetName() + "!"); + if (pet.GetCost(CurrencyType.Coins) == -1) { - if (pet instanceof Pumpkin) - { - itemLore.add(C.cBlack); - itemLore.add(ChatColor.RESET + C.cYellow + "Earned by defeating the Pumpkin King"); - itemLore.add(ChatColor.RESET + C.cYellow + "in the 2014 Halloween Horror Event."); - } - if (pet instanceof Elf) - { - itemLore.add(C.cBlack); - itemLore.add(ChatColor.RESET + C.cYellow + "Earned by defeating the Pumpkin King"); - itemLore.add(ChatColor.RESET + C.cYellow + "in the 2014 Christmas Chaos Event."); - } - if (pet.GetPetType() == EntityType.WITHER) - { - itemLore.add(C.cBlack); - itemLore.add(ChatColor.RESET + C.cGreen + "Unlocked with Legend Rank"); - } + //Nothing + } + //Chest Unlocks + else if (pet.GetCost(CurrencyType.Coins) == -2) + { + itemLore.add(C.cBlack); + itemLore.add(C.cBlue + "Found in Treasure Chests"); + } + else if (pet.GetCost(CurrencyType.Coins) == -3) + { + itemLore.add(C.cBlack); + itemLore.add(C.cBlue + "Found in Winter Holiday Treasure"); + } + else if (pet.GetCost(CurrencyType.Coins) == -4) + { + itemLore.add(C.cBlack); + itemLore.add(C.cBlue + "Found in Halloween Pumpkin Treasure"); + } + else if (pet.GetCost(CurrencyType.Coins) == -5) + { + itemLore.add(C.cBlack); + itemLore.add(C.cBlue + "Found in Easter Holiday Treasure"); + } + //Rank Unlocks + else if (pet.GetCost(CurrencyType.Coins) == -10) + { + itemLore.add(C.cBlack); + itemLore.add(C.cAqua + "Unlocked with Ultra Rank"); + } + else if (pet.GetCost(CurrencyType.Coins) == -11) + { + itemLore.add(C.cBlack); + itemLore.add(C.cPurple + "Unlocked with Hero Rank"); + } + else if (pet.GetCost(CurrencyType.Coins) == -12) + { + itemLore.add(C.cBlack); + itemLore.add(C.cGreen + "Unlocked with Legend Rank"); + } + else if (pet.GetCost(CurrencyType.Coins) == -13) + { + itemLore.add(C.cBlack); + itemLore.add(C.cRed + "Unlocked with Titan Rank"); } //Owned @@ -94,35 +122,52 @@ public class PetPage extends ShopPageBase if (getPlugin().getPetManager().hasActivePet(getPlayer().getName()) && getPlugin().getPetManager().getActivePet(getPlayer().getName()).getType() == pet.GetPetType()) { + itemLore.add(C.cBlack); + itemLore.add(C.cGreen + "Click to Disable"); + addButton(slot, new ShopItem(Material.MONSTER_EGG, (byte) pet.GetPetType().getTypeId(), - "Deactivate " + pet.GetPetName() + " (" + C.cWhite + petName + C.cGreen + ")", + pet.GetPetName() + " (" + C.cWhite + petName + C.cGreen + ")", itemLore.toArray(new String[itemLore.size()]), 1, false, false), new DeactivatePetButton(this, getPlugin().getPetManager())); addGlow(slot); } else { + itemLore.add(C.cBlack); + itemLore.add(C.cGreen + "Click to Enable"); + addButton(slot, new ShopItem(Material.MONSTER_EGG, (byte) pet.GetPetType().getTypeId(), - "Activate " + pet.GetPetName() + " (" + C.cWhite + petName + C.cGreen + ")", + pet.GetPetName() + " (" + C.cWhite + petName + C.cGreen + ")", itemLore.toArray(new String[itemLore.size()]), 1, false, false), new ActivatePetButton(pet, this)); } } //Not Owned else { - //Cost Lore if (pet.GetCost(CurrencyType.Coins) > 0) - { - itemLore.add(C.cYellow + pet.GetCost(CurrencyType.Coins) + " Coins"); - itemLore.add(C.cBlack); - } + { + itemLore.add(C.cBlack); + itemLore.add(C.cWhiteB + "Cost: " + C.cAqua + pet.GetCost(CurrencyType.Coins) + " Treasure Shards"); + } - if (pet.GetCost(CurrencyType.Coins) == -1) - setItem(slot, new ShopItem(Material.INK_SACK, (byte)8, pet.GetPetName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false)); - else if (getDonationManager().Get(getPlayer().getName()).GetBalance(CurrencyType.Coins) >= pet.GetCost(CurrencyType.Coins)) - addButton(slot, new ShopItem(Material.INK_SACK, (byte) 8, "Purchase " + pet.GetPetName(), itemLore.toArray(new String[itemLore.size()]), 1, false, false), new PetButton(pet, this)); - else + if (pet.GetCost(CurrencyType.Coins) > 0 && getDonationManager().Get(getPlayer().getName()).GetBalance(CurrencyType.Coins) >= pet.GetCost(CurrencyType.Coins)) + { + itemLore.add(C.cBlack); + itemLore.add(C.cGreen + "Click to craft " + pet.GetName()); + + addButton(slot, new ShopItem(Material.INK_SACK, (byte) 8, pet.GetPetName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false), new PetButton(pet, this)); + } + else if (pet.GetCost(CurrencyType.Coins) > 0) + { + itemLore.add(C.cBlack); + itemLore.add(C.cRed + "Not enough Treasure Shards."); + setItem(slot, new ShopItem(Material.INK_SACK, (byte)8, "Purchase " + pet.GetPetName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false)); + } + else + { + setItem(slot, new ShopItem(Material.INK_SACK, (byte)8, pet.GetPetName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false)); + } } slot++; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailCandyCane.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailCandyCane.java index c02c7f4c5..0b4f11e18 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailCandyCane.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailCandyCane.java @@ -20,7 +20,7 @@ public class ArrowTrailCandyCane extends ArrowEffectGadget public ArrowTrailCandyCane(GadgetManager manager) { super(manager, "Candy Cane Arrows", - UtilText.splitLineToArray(C.cWhite + "The real reason no one visits the North Pole? Santa’s Elves are deadly shots.", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "The real reason no one visits the North Pole? Santa’s Elves are deadly shots.", LineFormat.LORE), -3, Material.SNOW_BALL, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailFrostLord.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailFrostLord.java index 8503deb02..171860cd5 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailFrostLord.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailFrostLord.java @@ -18,7 +18,7 @@ public class ArrowTrailFrostLord extends ArrowEffectGadget public ArrowTrailFrostLord(GadgetManager manager) { super(manager, "Arrows of the Frost Lord", - UtilText.splitLineToArray(C.cWhite + "The Frost Lord’s arrows bring a blast of winter in the wind of their passing.", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "The Frost Lord’s arrows bring a blast of winter in the wind of their passing.", LineFormat.LORE), -3, Material.SNOW_BALL, (byte)0, "Frost Lord"); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailTitan.java index eb9043ba5..e84e26318 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailTitan.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailTitan.java @@ -21,7 +21,7 @@ public class ArrowTrailTitan extends ArrowEffectGadget public ArrowTrailTitan(GadgetManager manager) { super(manager, "Arrows of the Titans", - UtilText.splitLineToArray(C.cWhite + "Arrows forged in the Fires of Creation, they leave fiery trails in their wake.", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "Arrows forged in the Fires of Creation, they leave fiery trails in their wake.", LineFormat.LORE), -13, Material.FIREBALL, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathCandyCane.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathCandyCane.java index 748accb1a..c677d638e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathCandyCane.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathCandyCane.java @@ -19,7 +19,7 @@ public class DeathCandyCane extends DeathEffectGadget public DeathCandyCane(GadgetManager manager) { super(manager, "Candy Cane Remains", - UtilText.splitLineToArray(C.cWhite + "The biggest enemy of the Holidays, is January.", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "The biggest enemy of the Holidays, is January.", LineFormat.LORE), -3, Material.SNOW_BALL, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathFrostLord.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathFrostLord.java index 2f6bd3b89..7e90ac02d 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathFrostLord.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathFrostLord.java @@ -15,7 +15,7 @@ public class DeathFrostLord extends DeathEffectGadget public DeathFrostLord(GadgetManager manager) { super(manager, "Fall of the Frost Lord", - UtilText.splitLineToArray(C.cWhite + "The power of Winter must eventually give way to Spring.", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "The power of Winter must eventually give way to Spring.", LineFormat.LORE), -3, Material.SNOW_BALL, (byte)0, "Frost Lord"); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathTitan.java index 52f7edda8..cce291dc1 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathTitan.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathTitan.java @@ -17,7 +17,7 @@ public class DeathTitan extends DeathEffectGadget public DeathTitan(GadgetManager manager) { super(manager, "Ashes of the Titans", - UtilText.splitLineToArray(C.cWhite + "Even a Titan can fall in combat if their opponent is fierce enough.", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "Even a Titan can fall in combat if their opponent is fierce enough.", LineFormat.LORE), -13, Material.FIREBALL, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpCandyCane.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpCandyCane.java index b95ef4ff4..80afc825b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpCandyCane.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpCandyCane.java @@ -19,7 +19,7 @@ public class DoubleJumpCandyCane extends DoubleJumpEffectGadget public DoubleJumpCandyCane(GadgetManager manager) { super(manager, "Candy Cane Blast", - UtilText.splitLineToArray(C.cWhite + "It is said every time an elf jumps, bits of Candy Cane fall out of their pockets.", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "It is said every time an elf jumps, bits of Candy Cane fall out of their pockets.", LineFormat.LORE), -3, Material.SNOW_BALL, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpFrostLord.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpFrostLord.java index 4291f9d94..64cc9f962 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpFrostLord.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpFrostLord.java @@ -18,7 +18,7 @@ public class DoubleJumpFrostLord extends DoubleJumpEffectGadget public DoubleJumpFrostLord(GadgetManager manager) { super(manager, "Gust of the Frost Lord", - UtilText.splitLineToArray(C.cWhite + "Listen, the Frost Lord is a very proper individual. Stop making fart jokes!", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "Listen, the Frost Lord is a very proper individual. Stop making fart jokes!", LineFormat.LORE), -3, Material.SNOW_BALL, (byte)0, "Frost Lord"); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpTitan.java index c86fe06dc..31cf84cce 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpTitan.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpTitan.java @@ -22,7 +22,7 @@ public class DoubleJumpTitan extends DoubleJumpEffectGadget public DoubleJumpTitan(GadgetManager manager) { super(manager, "Leap of the Titans", - UtilText.splitLineToArray(C.cWhite + "Out of the frying pan and into the fire.", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "Out of the frying pan and into the fire.", LineFormat.LORE), -13, Material.FIREBALL, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatCoal.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatCoal.java index a78b88736..9a39e59f5 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatCoal.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatCoal.java @@ -15,7 +15,7 @@ public class HatCoal extends HatGadget public HatCoal(GadgetManager manager) { super(manager, "Lump of Coal", - UtilText.splitLineToArray(C.cWhite + "", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "When life gives you coal, make a wierd cube hat out it!", LineFormat.LORE), -3, new ItemStack(Material.COAL_BLOCK)); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatGrinch.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatGrinch.java index 502ff74cb..d48320d58 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatGrinch.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatGrinch.java @@ -12,7 +12,7 @@ public class HatGrinch extends HatGadget public HatGrinch(GadgetManager manager) { super(manager, "The Grinch", - UtilText.splitLineToArray(C.cWhite + "", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "Grinchtastic", LineFormat.LORE), -3, "christmasgift"); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatPresent.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatPresent.java index 74005d330..16d6fdd2f 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatPresent.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatPresent.java @@ -12,7 +12,7 @@ public class HatPresent extends HatGadget public HatPresent(GadgetManager manager) { super(manager, "Present", - UtilText.splitLineToArray(C.cWhite + "", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "WHAT IN THE PRESENT? Oh, it's just you...", LineFormat.LORE), -3, "christmasgift"); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSanta.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSanta.java index 067f603e5..fa572fed3 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSanta.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSanta.java @@ -12,7 +12,7 @@ public class HatSanta extends HatGadget public HatSanta(GadgetManager manager) { super(manager, "Santa", - UtilText.splitLineToArray(C.cWhite + "", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "Now you can work the Mall circuit!", LineFormat.LORE), -3, "Presents"); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSnowman.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSnowman.java index 1e6ab44a4..9d02dd720 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSnowman.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSnowman.java @@ -12,7 +12,7 @@ public class HatSnowman extends HatGadget public HatSnowman(GadgetManager manager) { super(manager, "Snowmans Head", - UtilText.splitLineToArray(C.cWhite + "", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "Do you want to be a snowman?", LineFormat.LORE), -3, "snowman002"); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemBatGun.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemBatGun.java index 62b8b2b39..72af832fd 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemBatGun.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemBatGun.java @@ -40,7 +40,7 @@ public class ItemBatGun extends ItemGadget public ItemBatGun(GadgetManager manager) { super(manager, "Bat Blaster", - UtilText.splitLineToArray(C.cWhite + "Unleash waves of terrifying bats at people you don't like!", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "Unleash waves of terrifying bats at people you don't like!", LineFormat.LORE), -1, Material.IRON_BARDING, (byte)0, 5000, new Ammo("Bat Blaster", "50 Bats", Material.IRON_BARDING, (byte)0, new String[] { C.cWhite + "50 Bats for your Bat Blaster!" }, 500, 50)); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java index 098d136ff..157ed982b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java @@ -43,7 +43,7 @@ public class ItemCoal extends ItemGadget public ItemCoal(GadgetManager manager) { super(manager, "Coal", - UtilText.splitLineToArray(C.cWhite + "", LineFormat.LORE) + UtilText.splitLineToArray(C.cGray + "", LineFormat.LORE) , -1, Material.COAL, (byte) 0, 1000, new Ammo("Coal", "1 Piece of Coal", Material.COAL, (byte) 0, new String[] { C.cDGray + "Exclusive Coal!", diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBat.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBat.java index febe7172e..c6a61b789 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBat.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBat.java @@ -45,11 +45,11 @@ public class MorphBat extends MorphGadget implements IThrown super(manager, "Bat Morph", UtilText.splitLinesToArray(new String[] { - C.cWhite + "Flap around and annoy people by screeching loudly into their ears!", + C.cGray + "Flap around and annoy people by screeching loudly into their ears!", C.blankLine, - "#" + C.cYellow + "Left-Click" + C.cGray + " to use " + C.cGreen + "Screech", - "#" + C.cYellow + "Double Jump" + C.cGray + " to use " + C.cGreen + "Flap", - "#" + C.cYellow + "Sneak" + C.cGray + " to use " + C.cGreen + "Poop", + "#" + C.cWhite + "Left-Click to use Screech", + "#" + C.cWhite + "Double Jump to use Flap", + "#" + C.cWhite + "Sneak to use Poop", }, LineFormat.LORE), 40000, Material.SKULL_ITEM, (byte)1); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBlaze.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBlaze.java index 62fc9d54b..1ea72b7e4 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBlaze.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBlaze.java @@ -29,9 +29,9 @@ public class MorphBlaze extends MorphGadget super(manager, "Blaze Morph", UtilText.splitLinesToArray(new String[] { - C.cWhite + "Transform into a fiery Blaze, straight from the Nether!", + C.cGray + "Transform into a fiery Blaze, straight from the Nether!", C.blankLine, - "#" + C.cYellow + "Crouch" + C.cGray + " to use " + C.cGreen + "Firefly", + "#" + C.cWhite + "Crouch to use Firefly", }, LineFormat.LORE), -11, Material.BLAZE_POWDER, (byte)0); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBlock.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBlock.java index 2a99353b3..dea95636a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBlock.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBlock.java @@ -36,10 +36,10 @@ public class MorphBlock extends MorphGadget { super(manager, "Block Morph", UtilText.splitLinesToArray(new String[] { - C.cWhite + "The blockiest block that ever blocked.", + C.cGray + "The blockiest block that ever blocked.", C.blankLine, - "#" + C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Change Block", - "#" + C.cYellow + "Stay Still" + C.cGray + " to use " + C.cGreen + "Solidify", + "#" + C.cWhite + "Left Click to use Change Block", + "#" + C.cWhite + "Stay Still to use Solidify", }, LineFormat.LORE), 30000, Material.EMERALD_BLOCK, (byte)0); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBunny.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBunny.java index 8958d958a..55f67dc0d 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBunny.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphBunny.java @@ -54,10 +54,10 @@ public class MorphBunny extends MorphGadget { super(manager, "Easter Bunny Morph", UtilText.splitLinesToArray(new String[] { - C.cWhite + "Happy Easter!", + C.cGray + "Happy Easter!", C.blankLine, - "#" + C.cYellow + "Charge Crouch" + C.cGray + " to use " + C.cGreen + "Super Jump", - "#" + C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Hide Easter Egg", + "#" + C.cWhite + "Charge Crouch to use Super Jump", + "#" + C.cWhite + "Left Click to use Hide Easter Egg", C.blankLine, "#" + C.cRed +C.Bold + "WARNING: " + ChatColor.RESET + "Hide Easter Egg uses 500 Coins" , }, LineFormat.LORE), diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphChicken.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphChicken.java index 5589776ba..5d989f5e0 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphChicken.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphChicken.java @@ -37,10 +37,10 @@ public class MorphChicken extends MorphGadget { super(manager, "Chicken Morph", UtilText.splitLinesToArray(new String[] { - C.cWhite + "Soar through the air like a fat Chicken!", + C.cGray + "Soar through the air like a fat Chicken!", C.blankLine, - "#" + C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Egg Shot", - "#" + C.cYellow + "Double Jump" + C.cGray + " to use " + C.cGreen + "Flap", + "#" + C.cWhite + "Left Click to use Egg Shot", + "#" + C.cWhite + "Double Jump to use Flap", }, LineFormat.LORE), 20000, Material.FEATHER, (byte)0); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphCow.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphCow.java index 8c46bd98b..95ce07b35 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphCow.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphCow.java @@ -22,9 +22,9 @@ public class MorphCow extends MorphGadget { super(manager, "Cow Morph", UtilText.splitLinesToArray(new String[] { - C.cWhite + "How now brown cow?", + C.cGray + "How now brown cow?", C.blankLine, - "#" + C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Moo", + "#" + C.cWhite + "Left Click to use Moo", }, LineFormat.LORE), 6000, Material.LEATHER, (byte)0); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphCreeper.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphCreeper.java index cfe013647..ee5a33290 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphCreeper.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphCreeper.java @@ -37,9 +37,9 @@ public class MorphCreeper extends MorphGadget { super(manager, "Creeper Morph", UtilText.splitLinesToArray(new String[] { - C.cWhite + "Become the creepiest of Creepers that ever creeped!", + C.cGray + "Become the creepiest of Creepers that ever creeped!", C.blankLine, - C.cYellow + "Crouch" + C.cGray + " to use " + C.cGreen + "Detonate", + C.cWhite + "Crouch to use Detonate", }, LineFormat.LORE), -11, Material.SKULL_ITEM, (byte)4); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphEnderman.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphEnderman.java index a7c75fb33..b833b52bb 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphEnderman.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphEnderman.java @@ -33,9 +33,9 @@ public class MorphEnderman extends MorphGadget { super(manager, "Enderman Morph", UtilText.splitLinesToArray(new String[] { - C.cWhite + "Using morph is the ultimate diet! Guaranteed instant results!", + C.cGray + "Using this morph is the ultimate diet! Guaranteed instant results!", C.blankLine, - "#" + C.cYellow + "Double Jump" + C.cGray + " to use " + C.cGreen + "Blink", + "#" + C.cWhite + "Double Jump to use Blink", }, LineFormat.LORE), 30000, Material.ENDER_PEARL, (byte)0); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphPig.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphPig.java index 90cb4478e..59ed09fa0 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphPig.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphPig.java @@ -35,10 +35,10 @@ public class MorphPig extends MorphGadget { super(manager, "Pig Morph", UtilText.splitLinesToArray(new String[] { - C.cWhite + "Oink. Oink. Oink.... Oink?", + C.cGray + "Oink. Oink. Oink.... Oink?", C.blankLine, - "#" + C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Oink", - "#" + C.cYellow + "Collide" + C.cGray + " to use " + C.cGreen + "Pig Bounce", + "#" + C.cWhite + "Left Click to use Oink", + "#" + C.cWhite + "Collide to use Pig Bounce", }, LineFormat.LORE), -10, Material.PORK, (byte)0); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphPumpkinKing.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphPumpkinKing.java index cf0016bbb..ed425a5de 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphPumpkinKing.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphPumpkinKing.java @@ -21,7 +21,7 @@ public class MorphPumpkinKing extends MorphGadget { super(manager, "Pumpkin Kings Head", UtilText.splitLinesToArray(new String[] { - C.cWhite + "Transforms the wearer into the dreaded Pumpkin King!", + C.cGray + "Transforms the wearer into the dreaded Pumpkin King!", }, LineFormat.LORE), -4, Material.PUMPKIN, (byte)0); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSlime.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSlime.java index cd6b8b24e..7a8430173 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSlime.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSlime.java @@ -29,11 +29,11 @@ public class MorphSlime extends MorphGadget { super(manager, "Big Larry Morph", UtilText.splitLinesToArray(new String[] { - C.cWhite + "Have you ever looked at Big Larry and thought, \'I really want to be that guy!\'? Well, today is your lucky day!", + C.cGray + "Have you ever looked at Big Larry and thought, \'I really want to be that guy!\'? Well, today is your lucky day!", C.blankLine, - "#" + C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Bounce", + "#" + C.cWhite + "Left Click to use Bounce", C.blankLine, - "#" + C.cGreen + "+1 Size per 10 Mineplex Levels", + "#" + C.cWhite + "+1 Size per 10 Mineplex Levels", }, LineFormat.LORE), 80000, Material.SLIME_BALL, (byte)0); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSnowman.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSnowman.java index bd06315e5..75e5ad743 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSnowman.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphSnowman.java @@ -44,12 +44,12 @@ public class MorphSnowman extends MorphGadget super(manager, "Olaf Morph", UtilText.splitLinesToArray(new String[] { - C.cWhite + "Do you wanna build a snowman?", - C.cWhite + "It doesn't have to be a snowman...", - C.cWhite + "Or... it kind of does...", + C.cGray + "Do you wanna build a snowman?", + C.cGray + "It doesn't have to be a snowman...", + C.cGray + "Or... it kind of does...", C.blankLine, - "#" + C.cYellow + "Left-Click" + C.cGray + " to use " + C.cGreen + "Blizzard", - "#" + C.cYellow + "Sneak" + C.cGray + " to use " + C.cGreen + "Snow Slide", + "#" + C.cWhite + "Left-Click to use Blizzard", + "#" + C.cWhite + "Sneak to use Snow Slide", }, LineFormat.LORE), -3, Material.SNOW_BALL, (byte) 0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphTitan.java index cedd467ee..13fe0ee14 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphTitan.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphTitan.java @@ -46,9 +46,9 @@ public class MorphTitan extends MorphGadget { super(manager, "Elder Guardian Morph", UtilText.splitLinesToArray(new String[] { - C.cWhite + "From the depths of the sea, the Elder Guardian posseses powers more amazing than any seen before!", + C.cGray + "From the depths of the sea, the Elder Guardian posseses powers more amazing than any seen before!", C.blankLine, - "#" + C.cYellow + "Left-Click" + C.cGray + " to use " + C.cGreen + "Guardians Laser", + "#" + C.cWhite + "Left-Click to use Guardians Laser", }, LineFormat.LORE), -13, Material.PRISMARINE_CRYSTALS, (byte)0); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphVillager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphVillager.java index 61944df22..f327f0551 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphVillager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphVillager.java @@ -44,9 +44,9 @@ public class MorphVillager extends MorphGadget implements IThrown { super(manager, "Villager Morph", UtilText.splitLinesToArray(new String[] { - C.cWhite + "HURRRR! MURR HURRR!", + C.cGray + "HURRRR! MURR HURRR!", C.blankLine, - "#" + C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Gem Throw", + "#" + C.cWhite + "Left Click to use Gem Throw", C.blankLine, "#" + C.cRed +C.Bold + "WARNING: " + ChatColor.RESET + "Gem Throw uses 20 Gems" }, LineFormat.LORE), diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphWither.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphWither.java index 664b088f7..a2d68070f 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphWither.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/MorphWither.java @@ -47,9 +47,9 @@ public class MorphWither extends MorphGadget { super(manager, "Wither Morph", UtilText.splitLinesToArray(new String[] { - C.cWhite + "Legends have foretold the coming of a powerful Wither...", + C.cGray + "Legends have foretold the coming of a powerful Wither...", C.blankLine, - "#" + C.cYellow + "Left Click" + C.cGray + " to use " + C.cGreen + "Wither Skull", + "#" + C.cWhite + "Left Click to use Wither Skull", }, LineFormat.LORE), -12, Material.SKULL_ITEM, (byte)1); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCandyCane.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCandyCane.java index 557bdfd95..95d5e746f 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCandyCane.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCandyCane.java @@ -29,7 +29,7 @@ public class ParticleCandyCane extends ParticleGadget public ParticleCandyCane(GadgetManager manager) { super(manager, "Crushed Candy Cane", - UtilText.splitLineToArray(C.cWhite + "There’s no such thing as too much Christmas Candy. Don’t listen to your dentist.", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "There’s no such thing as too much Christmas Candy. Don’t listen to your dentist.", LineFormat.LORE), -3, Material.CHEST, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCoalFumes.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCoalFumes.java index 03f93f17d..d81c1c6f3 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCoalFumes.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCoalFumes.java @@ -21,7 +21,7 @@ public class ParticleCoalFumes extends ParticleGadget public ParticleCoalFumes(GadgetManager manager) { super(manager, "Coal Fumes", - UtilText.splitLineToArray(C.cWhite + "Being on the Naughty List does have some perks... if you love coal, that is...", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "Being on the Naughty List does have some perks... if you love coal, that is...", LineFormat.LORE), -1, Material.COAL, (byte) 0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleEnchant.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleEnchant.java index a388a0d3d..230705505 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleEnchant.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleEnchant.java @@ -22,7 +22,7 @@ public class ParticleEnchant extends ParticleGadget public ParticleEnchant(GadgetManager manager) { super(manager, "Enchanted", - UtilText.splitLineToArray(C.cWhite + "The wisdom of the universe suddenly find you extremely attractive, and wants to \'enchant\' you.", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "The wisdom of the universe suddenly find you extremely attractive, and wants to \'enchant\' you.", LineFormat.LORE), -2, Material.BOOK, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFairy.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFairy.java index 742355fe0..5bc8b9381 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFairy.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFairy.java @@ -23,9 +23,9 @@ public class ParticleFairy extends ParticleGadget { super(manager, "Flame Fairy", new String[] { - C.cWhite + "HEY! LISTEN!", - C.cWhite + "HEY! LISTEN!", - C.cWhite + "HEY! LISTEN!", + C.cGray + "HEY! LISTEN!", + C.cGray + "HEY! LISTEN!", + C.cGray + "HEY! LISTEN!", }, -2, Material.BLAZE_POWDER, (byte)0); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFireRings.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFireRings.java index 0de43a6da..99a79c36d 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFireRings.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFireRings.java @@ -24,7 +24,7 @@ public class ParticleFireRings extends ParticleGadget public ParticleFireRings(GadgetManager manager) { super(manager, "Flame Rings", - UtilText.splitLineToArray(C.cWhite + "Forged from the blazing rods of 1000 Blazes by the infamous Nether King.", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "Forged from the blazing rods of 1000 Blazes by the infamous Nether King.", LineFormat.LORE), -2, Material.BLAZE_POWDER, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFoot.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFoot.java index af9fd1155..44448a375 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFoot.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFoot.java @@ -38,7 +38,7 @@ public class ParticleFoot extends ParticleGadget public ParticleFoot(GadgetManager manager) { super(manager, "Shadow Walk", - UtilText.splitLineToArray(C.cWhite + "In a world where footprints do not exist, leaving your shadow behind is the next best thing!", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "In a world where footprints do not exist, leaving your shadow behind is the next best thing!", LineFormat.LORE), -2, Material.LEATHER_BOOTS, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFrostLord.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFrostLord.java index 3155b40af..faa25065f 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFrostLord.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFrostLord.java @@ -28,7 +28,7 @@ public class ParticleFrostLord extends ParticleGadget public ParticleFrostLord(GadgetManager manager) { super(manager, "Wind of the Frost Lord", - UtilText.splitLineToArray(C.cWhite + "He’s not passing wind okay? HE HAS A CONDITION!", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "He’s not passing wind okay? HE HAS A CONDITION!", LineFormat.LORE), -3, Material.SNOW_BALL, (byte)0, "Frost Lord"); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleGreen.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleGreen.java index 1a524c676..a9bd2739d 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleGreen.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleGreen.java @@ -24,7 +24,7 @@ public class ParticleGreen extends ParticleGadget public ParticleGreen(GadgetManager manager) { super(manager, "Green Ring", - UtilText.splitLineToArray(C.cWhite + "With these sparkles, you can sparkle while sparkle with CaptainSparklez!", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "With these sparkles, you can sparkle while sparkle with CaptainSparklez!", LineFormat.LORE), -2, Material.EMERALD, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleHeart.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleHeart.java index 64ddaf216..d07a2b01a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleHeart.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleHeart.java @@ -34,7 +34,7 @@ public class ParticleHeart extends ParticleGadget { public ParticleHeart(GadgetManager manager) { super(manager, "I Heart You", - UtilText.splitLineToArray(C.cWhite + "Show off how much you love Mineplex and everyone on it!", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "Show off how much you love Mineplex and everyone on it!", LineFormat.LORE), -2, Material.APPLE, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleHelix.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleHelix.java index 7ccaed9c4..a9336927b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleHelix.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleHelix.java @@ -24,7 +24,7 @@ public class ParticleHelix extends ParticleGadget public ParticleHelix(GadgetManager manager) { super(manager, "Blood Helix", - UtilText.splitLineToArray(C.cWhite + "Blood magic is very dangerous... but also very cool!", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "Blood magic is very dangerous... but also very cool!", LineFormat.LORE), -2, Material.REDSTONE, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleKronos.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleKronos.java index 02ed4ac3b..733424255 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleKronos.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleKronos.java @@ -25,9 +25,9 @@ public class ParticleKronos extends ParticleGadget { super(manager, "Titanic Aura", new String[] { - C.cWhite + "A symbol of Titan power", - C.cWhite + "whos ancestry traces back to Kronos,", - C.cWhite + "Titan Lord of Time.", + C.cGray + "A symbol of Titan power", + C.cGray + "whos ancestry traces back to Kronos,", + C.cGray + "Titan Lord of Time.", " ", C.cRed + "???" //When purchasable: C.cRed + "Unlocked with Titan Rank" diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleLegend.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleLegend.java index 329e15b6b..6d48bb67d 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleLegend.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleLegend.java @@ -22,7 +22,7 @@ public class ParticleLegend extends ParticleGadget public ParticleLegend(GadgetManager manager) { super(manager, "Legendary Aura", - UtilText.splitLineToArray(C.cWhite + "This particle will be updated soon! Yay!", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "This particle will be updated soon! Yay!", LineFormat.LORE), -1, Material.ENDER_PORTAL_FRAME, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleRain.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleRain.java index 068cd7db7..0e0b43109 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleRain.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleRain.java @@ -24,7 +24,7 @@ public class ParticleRain extends ParticleGadget public ParticleRain(GadgetManager manager) { super(manager, "Rain Cloud", - UtilText.splitLineToArray(C.cWhite + "Bring your sadness wherever you go, with your very own portable rain cloud!", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "Bring your sadness wherever you go, with your very own portable rain cloud!", LineFormat.LORE), -2, Material.INK_SACK, (byte)4); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleTitan.java index 49724dfbe..d8270ec62 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleTitan.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleTitan.java @@ -27,7 +27,7 @@ public class ParticleTitan extends ParticleGadget public ParticleTitan(GadgetManager manager) { super(manager, "Flame of the Titans", - UtilText.splitLineToArray(C.cWhite + "These flames are said to be the spirit of a Titan.", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "These flames are said to be the spirit of a Titan.", LineFormat.LORE), -1, Material.FIREBALL, (byte)0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountBabyReindeer.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountBabyReindeer.java index f5e7eef9b..e126889f4 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountBabyReindeer.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountBabyReindeer.java @@ -32,7 +32,7 @@ public class MountBabyReindeer extends HorseMount public MountBabyReindeer(MountManager manager) { super(manager, "Baby Rainder", - UtilText.splitLineToArray(C.cWhite + "One of Santas baby reindeers. He's still learning how to fly...", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "One of Santas baby reindeers. He's still learning how to fly...", LineFormat.LORE), Material.SNOW_BALL, (byte) 0, -3, Color.CREAMY, Style.WHITEFIELD, Variant.HORSE, 0, null); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountCart.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountCart.java index 144289439..3af133864 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountCart.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountCart.java @@ -32,7 +32,7 @@ public class MountCart extends Mount> public MountCart(MountManager manager) { super(manager, "Minecart", Material.MINECART, (byte)0, - UtilText.splitLineToArray(C.cWhite + "Cruise around town in your shiny new Minecart RX Turbo!", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "Cruise around town in your shiny new Minecart RX Turbo!", LineFormat.LORE), 15000); KnownPackage = false; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountDragon.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountDragon.java index 0bdddc6be..918585528 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountDragon.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountDragon.java @@ -27,7 +27,7 @@ public class MountDragon extends DragonMount public MountDragon(MountManager manager) { super(manager, "Ethereal Dragon", - UtilText.splitLineToArray(C.cWhite + "From the distant Ether Realm, this prized dragon is said to only obey true Heroes!", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "From the distant Ether Realm, this prized dragon is said to only obey true Heroes!", LineFormat.LORE), Material.DRAGON_EGG, (byte)0, -11); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountFrost.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountFrost.java index 6b978f050..5a8617699 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountFrost.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountFrost.java @@ -24,7 +24,7 @@ public class MountFrost extends HorseMount public MountFrost(MountManager manager) { super(manager, "Glacial Steed", - UtilText.splitLineToArray(C.cWhite + "Born in the North Pole, it leaves a trail of frost as it moves!", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "Born in the North Pole, it leaves a trail of frost as it moves!", LineFormat.LORE), Material.SNOW_BALL, (byte)0, 15000, diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountMule.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountMule.java index d8536e772..cecedd632 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountMule.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountMule.java @@ -17,7 +17,7 @@ public class MountMule extends HorseMount public MountMule(MountManager manager) { super(manager, "Mount Mule", - UtilText.splitLineToArray(C.cWhite + "Your very own trusty pack mule!", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "Your very own trusty pack mule!", LineFormat.LORE), Material.HAY_BLOCK, (byte)0, 3000, diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSheep.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSheep.java index f3b84ce99..7cecd08b0 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSheep.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSheep.java @@ -29,7 +29,7 @@ public class MountSheep extends HorseMount public MountSheep(MountManager manager) { super(manager, "Techno Sheep", - UtilText.splitLineToArray(C.cWhite + "Baaaaa with all the colors of the rainbow!", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "Baaaaa with all the colors of the rainbow!", LineFormat.LORE), Material.WOOL, (byte)14, 3000, diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSlime.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSlime.java index 37b418d1a..92e90a12b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSlime.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSlime.java @@ -32,7 +32,7 @@ public class MountSlime extends Mount> public MountSlime(MountManager manager) { super(manager, "Slime Mount", Material.SLIME_BALL, (byte)0, - UtilText.splitLineToArray(C.cWhite + "Bounce around on your very own slime friend!", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "Bounce around on your very own slime friend!", LineFormat.LORE), 15000); KnownPackage = false; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSpider.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSpider.java index c658c14e2..25884d4b2 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSpider.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSpider.java @@ -46,10 +46,10 @@ public class MountSpider extends HorseMount super(manager, "Spider Mount", UtilText.splitLinesToArray(new String[] { - C.cWhite + "Why ride a horse when you can ride a cute and cuddly spider!", + C.cGray + "Why ride a horse when you can ride a cute and cuddly spider!", C.blankLine, - "#" + C.cYellow + "Look Up" + C.cGray + " to use " + C.cGreen + "Wall Climb", - "#" + C.cYellow + "Jump" + C.cGray + " to use " + C.cGreen + "Leap", + "#" + C.cWhite + "Look Up to use Wall Climb", + "#" + C.cWhite + "Jump to use Leap", }, LineFormat.LORE), Material.WEB, (byte) 0, -4, Color.BLACK, Style.NONE, Variant.HORSE, 2.0, Material.AIR); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountTitan.java index 89927e4d1..5e9747e8d 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountTitan.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountTitan.java @@ -26,7 +26,7 @@ public class MountTitan extends Mount public MountTitan(MountManager manager) { super(manager, "Molten Snake", Material.MAGMA_CREAM, (byte)0, - UtilText.splitLineToArray(C.cWhite + "Deep under the earths surface, there exists a mythical species of Molten Snakes. This one will serve you eternally.", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "Deep under the earths surface, there exists a mythical species of Molten Snakes. This one will serve you eternally.", LineFormat.LORE), -13); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountUndead.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountUndead.java index bd5bbd1af..fead4b102 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountUndead.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountUndead.java @@ -24,7 +24,7 @@ public class MountUndead extends HorseMount public MountUndead(MountManager manager) { super(manager, "Infernal Horror", - UtilText.splitLineToArray(C.cWhite + "The most ghastly horse in existance, from the pits of the Nether.", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "The most ghastly horse in existance, from the pits of the Nether.", LineFormat.LORE), Material.BONE, (byte)0, 20000, diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountZombie.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountZombie.java index e734e1df8..949a50f23 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountZombie.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountZombie.java @@ -16,7 +16,7 @@ public class MountZombie extends HorseMount public MountZombie(MountManager manager) { super(manager, "Decrepit Warhorse", - UtilText.splitLineToArray(C.cWhite + "Once a fierce warhorse, this undead beast will send fear into the hearts of your enemies.", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "Once a fierce warhorse, this undead beast will send fear into the hearts of your enemies.", LineFormat.LORE), Material.ROTTEN_FLESH, (byte)0, -4, diff --git a/Plugins/Mineplex.Core/src/mineplex/core/pet/PetFactory.java b/Plugins/Mineplex.Core/src/mineplex/core/pet/PetFactory.java index de3a66e5e..71048a36c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/pet/PetFactory.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/pet/PetFactory.java @@ -39,8 +39,8 @@ public class PetFactory _pets.put(EntityType.WOLF, new Pet("Dog", EntityType.WOLF, 8000)); _pets.put(EntityType.OCELOT, new Pet("Cat", EntityType.OCELOT, 6000)); _pets.put(EntityType.MUSHROOM_COW, new Pet("Mooshroom", EntityType.MUSHROOM_COW, 5000)); - _pets.put(EntityType.WITHER, new Pet("Widder", EntityType.WITHER, -1)); - _pets.put(EntityType.SKELETON, new Pet("Guardian", EntityType.SKELETON, -1)); + _pets.put(EntityType.WITHER, new Pet("Widder", EntityType.WITHER, -12)); + _pets.put(EntityType.SKELETON, new Pet("Guardian", EntityType.SKELETON, -13)); } private void CreatePetExtras() diff --git a/Plugins/Mineplex.Core/src/mineplex/core/pet/types/Elf.java b/Plugins/Mineplex.Core/src/mineplex/core/pet/types/Elf.java index 6a67a37ea..9f3e3c3ee 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/pet/types/Elf.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/pet/types/Elf.java @@ -8,7 +8,7 @@ public class Elf extends Pet { public Elf() { - super("Christmas Elf", EntityType.VILLAGER, -1); + super("Christmas Elf", EntityType.VILLAGER, -4); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/pet/types/Pumpkin.java b/Plugins/Mineplex.Core/src/mineplex/core/pet/types/Pumpkin.java index 71b561f2c..a2f3acc17 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/pet/types/Pumpkin.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/pet/types/Pumpkin.java @@ -8,6 +8,6 @@ public class Pumpkin extends Pet { public Pumpkin() { - super("Pumpling", EntityType.ZOMBIE, -1); + super("Pumpling", EntityType.ZOMBIE, -5); } } From d8a5edf9e94e2a793354f830d98d21af80b41d98 Mon Sep 17 00:00:00 2001 From: Cheese Date: Fri, 11 Dec 2015 19:24:19 +1100 Subject: [PATCH 23/81] fixed up gui items --- .../src/mineplex/core/cosmetic/ui/page/GadgetPage.java | 2 +- .../src/mineplex/core/cosmetic/ui/page/MountPage.java | 2 +- .../src/mineplex/core/cosmetic/ui/page/PetPage.java | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java index 0d265f3ea..595ab5a17 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java @@ -165,7 +165,7 @@ public class GadgetPage extends ShopPageBase if (gadget.GetCost(CurrencyType.Coins) > 0 && getDonationManager().Get(getPlayer().getName()).GetBalance(CurrencyType.Coins) >= gadget.GetCost(CurrencyType.Coins)) { itemLore.add(C.cBlack); - itemLore.add(C.cGreen + "Click to craft " + gadget.GetName()); + itemLore.add(C.cGreen + "Click to Purchase"); addButton(slot, new ShopItem(Material.INK_SACK, (byte) 8, gadget.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false), new GadgetButton(gadget, this)); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/MountPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/MountPage.java index 77e87179c..fa7b1c76a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/MountPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/MountPage.java @@ -136,7 +136,7 @@ public class MountPage extends ShopPageBase if (mount.GetCost(CurrencyType.Coins) > 0 && getDonationManager().Get(getPlayer().getName()).GetBalance(CurrencyType.Coins) >= mount.GetCost(CurrencyType.Coins)) { itemLore.add(C.cBlack); - itemLore.add(C.cGreen + "Click to craft " + mount.GetName()); + itemLore.add(C.cGreen + "Click to Purchase"); addButton(slot, new ShopItem(mount.GetDisplayMaterial(), mount.GetDisplayData(), mount.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false), new MountButton(mount, this)); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/PetPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/PetPage.java index 7d40cab01..0d3ac5bf6 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/PetPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/PetPage.java @@ -153,7 +153,7 @@ public class PetPage extends ShopPageBase if (pet.GetCost(CurrencyType.Coins) > 0 && getDonationManager().Get(getPlayer().getName()).GetBalance(CurrencyType.Coins) >= pet.GetCost(CurrencyType.Coins)) { itemLore.add(C.cBlack); - itemLore.add(C.cGreen + "Click to craft " + pet.GetName()); + itemLore.add(C.cGreen + "Click to Purchase"); addButton(slot, new ShopItem(Material.INK_SACK, (byte) 8, pet.GetPetName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false), new PetButton(pet, this)); } @@ -162,7 +162,7 @@ public class PetPage extends ShopPageBase itemLore.add(C.cBlack); itemLore.add(C.cRed + "Not enough Treasure Shards."); - setItem(slot, new ShopItem(Material.INK_SACK, (byte)8, "Purchase " + pet.GetPetName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false)); + setItem(slot, new ShopItem(Material.INK_SACK, (byte)8, pet.GetPetName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false)); } else { From a6f664006f2f1c379331d4714a9ad55865bd1964 Mon Sep 17 00:00:00 2001 From: Cheese Date: Fri, 11 Dec 2015 20:01:54 +1100 Subject: [PATCH 24/81] set display in gui --- .../core/cosmetic/ui/page/GadgetPage.java | 100 ++++--- .../core/cosmetic/ui/page/MountPage.java | 245 +++++++++--------- .../core/cosmetic/ui/page/PetPage.java | 93 +++---- .../mineplex/core/gadget/GadgetManager.java | 4 + .../core/gadget/gadgets/hat/HatGrinch.java | 2 +- .../core/gadget/set/SetCandyCane.java | 38 +++ .../mineplex/core/gadget/set/SetTitan.java | 38 +++ .../mineplex/core/gadget/types/Gadget.java | 15 +- .../mineplex/core/gadget/types/GadgetSet.java | 5 + 9 files changed, 330 insertions(+), 210 deletions(-) create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetCandyCane.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetTitan.java diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java index 595ab5a17..3746ce66d 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java @@ -81,51 +81,67 @@ public class GadgetPage extends ShopPageBase itemLore.add(C.cBlack); itemLore.addAll(Arrays.asList(gadget.GetDescription())); - if (gadget.GetCost(CurrencyType.Coins) == -1) + if (!gadget.ownsGadget(getPlayer())) { - //Nothing + if (gadget.GetCost(CurrencyType.Coins) == -1) + { + //Nothing + } + //Chest Unlocks + else if (gadget.GetCost(CurrencyType.Coins) == -2 || gadget.GetCost(CurrencyType.Coins) > 0) + { + itemLore.add(C.cBlack); + itemLore.add(C.cBlue + "Found in Treasure Chests"); + } + else if (gadget.GetCost(CurrencyType.Coins) == -3) + { + itemLore.add(C.cBlack); + itemLore.add(C.cBlue + "Found in Winter Holiday Treasure"); + } + else if (gadget.GetCost(CurrencyType.Coins) == -4) + { + itemLore.add(C.cBlack); + itemLore.add(C.cBlue + "Found in Halloween Pumpkin Treasure"); + } + else if (gadget.GetCost(CurrencyType.Coins) == -5) + { + itemLore.add(C.cBlack); + itemLore.add(C.cBlue + "Found in Easter Holiday Treasure"); + } + //Rank Unlocks + else if (gadget.GetCost(CurrencyType.Coins) == -10) + { + itemLore.add(C.cBlack); + itemLore.add(C.cAqua + "Unlocked with Ultra Rank"); + } + else if (gadget.GetCost(CurrencyType.Coins) == -11) + { + itemLore.add(C.cBlack); + itemLore.add(C.cPurple + "Unlocked with Hero Rank"); + } + else if (gadget.GetCost(CurrencyType.Coins) == -12) + { + itemLore.add(C.cBlack); + itemLore.add(C.cGreen + "Unlocked with Legend Rank"); + } + else if (gadget.GetCost(CurrencyType.Coins) == -13) + { + itemLore.add(C.cBlack); + itemLore.add(C.cRed + "Unlocked with Titan Rank"); + } } - //Chest Unlocks - else if (gadget.GetCost(CurrencyType.Coins) == -2) + else { - itemLore.add(C.cBlack); - itemLore.add(C.cBlue + "Found in Treasure Chests"); - } - else if (gadget.GetCost(CurrencyType.Coins) == -3) - { - itemLore.add(C.cBlack); - itemLore.add(C.cBlue + "Found in Winter Holiday Treasure"); - } - else if (gadget.GetCost(CurrencyType.Coins) == -4) - { - itemLore.add(C.cBlack); - itemLore.add(C.cBlue + "Found in Halloween Pumpkin Treasure"); - } - else if (gadget.GetCost(CurrencyType.Coins) == -5) - { - itemLore.add(C.cBlack); - itemLore.add(C.cBlue + "Found in Easter Holiday Treasure"); - } - //Rank Unlocks - else if (gadget.GetCost(CurrencyType.Coins) == -10) - { - itemLore.add(C.cBlack); - itemLore.add(C.cAqua + "Unlocked with Ultra Rank"); - } - else if (gadget.GetCost(CurrencyType.Coins) == -11) - { - itemLore.add(C.cBlack); - itemLore.add(C.cPurple + "Unlocked with Hero Rank"); - } - else if (gadget.GetCost(CurrencyType.Coins) == -12) - { - itemLore.add(C.cBlack); - itemLore.add(C.cGreen + "Unlocked with Legend Rank"); - } - else if (gadget.GetCost(CurrencyType.Coins) == -13) - { - itemLore.add(C.cBlack); - itemLore.add(C.cRed + "Unlocked with Titan Rank"); + if (gadget.getSet() != null) + { + itemLore.add(C.cBlack); + itemLore.add(C.cGray + "Set Cosmetics;"); + + for (Gadget cur : gadget.getSet()) + { + itemLore.add(" "+ (cur.IsActive(getPlayer()) ? C.cGreen : C.cGray) + cur.GetName()); + } + } } if (gadget instanceof ItemGadget) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/MountPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/MountPage.java index fa7b1c76a..356635962 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/MountPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/MountPage.java @@ -24,134 +24,137 @@ import mineplex.core.shop.page.ShopPageBase; public class MountPage extends ShopPageBase { - public MountPage(CosmeticManager plugin, CosmeticShop shop, CoreClientManager clientManager, DonationManager donationManager, String name, Player player) - { - super(plugin, shop, clientManager, donationManager, name, player, 54); - - buildPage(); - } - - protected void buildPage() - { - int slot = 19; - - for (Mount mount : getPlugin().getMountManager().getMounts()) - { - addMount(mount, slot); - slot++; - - if (slot == 26) - slot = 28; - } - - addButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[]{}, 1, false), new IButton() + public MountPage(CosmeticManager plugin, CosmeticShop shop, CoreClientManager clientManager, DonationManager donationManager, String name, Player player) + { + super(plugin, shop, clientManager, donationManager, name, player, 54); + + buildPage(); + } + + protected void buildPage() + { + int slot = 19; + + for (Mount mount : getPlugin().getMountManager().getMounts()) + { + addMount(mount, slot); + slot++; + + if (slot == 26) + slot = 28; + } + + addButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[]{}, 1, false), new IButton() { public void onClick(Player player, ClickType clickType) { getShop().openPageForPlayer(getPlayer(), new Menu(getPlugin(), getShop(), getClientManager(), getDonationManager(), player)); } }); - } - - protected void addMount(Mount mount, int slot) - { - List itemLore = new ArrayList(); - - itemLore.add(C.cBlack); - itemLore.addAll(Arrays.asList(mount.GetDescription())); - - if (mount.GetCost(CurrencyType.Coins) == -1) - { - //Nothing - } - //Chest Unlocks - else if (mount.GetCost(CurrencyType.Coins) == -2) - { - itemLore.add(C.cBlack); - itemLore.add(C.cBlue + "Found in Treasure Chests"); - } - else if (mount.GetCost(CurrencyType.Coins) == -3) - { - itemLore.add(C.cBlack); - itemLore.add(C.cBlue + "Found in Winter Holiday Treasure"); - } - else if (mount.GetCost(CurrencyType.Coins) == -4) - { - itemLore.add(C.cBlack); - itemLore.add(C.cBlue + "Found in Halloween Pumpkin Treasure"); - } - else if (mount.GetCost(CurrencyType.Coins) == -5) - { - itemLore.add(C.cBlack); - itemLore.add(C.cBlue + "Found in Easter Holiday Treasure"); - } - //Rank Unlocks - else if (mount.GetCost(CurrencyType.Coins) == -10) - { - itemLore.add(C.cBlack); - itemLore.add(C.cAqua + "Unlocked with Ultra Rank"); - } - else if (mount.GetCost(CurrencyType.Coins) == -11) - { - itemLore.add(C.cBlack); - itemLore.add(C.cPurple + "Unlocked with Hero Rank"); - } - else if (mount.GetCost(CurrencyType.Coins) == -12) - { - itemLore.add(C.cBlack); - itemLore.add(C.cGreen + "Unlocked with Legend Rank"); - } - else if (mount.GetCost(CurrencyType.Coins) == -13) - { - itemLore.add(C.cBlack); - itemLore.add(C.cRed + "Unlocked with Titan Rank"); - } - + } - if (getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage(mount.GetName())) - { - if (mount.GetActive().containsKey(getPlayer())) - { - itemLore.add(C.cBlack); - itemLore.add(C.cGreen + "Click to Disable"); - - addButton(slot, new ShopItem(mount.GetDisplayMaterial(), mount.GetDisplayData(), mount.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, false, false), new DeactivateMountButton(mount, this)); - } - else - { - itemLore.add(C.cBlack); - itemLore.add(C.cGreen + "Click to Enable"); - - addButton(slot, new ShopItem(mount.GetDisplayMaterial(), mount.GetDisplayData(), mount.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, false, false), new ActivateMountButton(mount, this)); - } - } - else - { - if (mount.GetCost(CurrencyType.Coins) > 0) + protected void addMount(Mount mount, int slot) + { + List itemLore = new ArrayList(); + + itemLore.add(C.cBlack); + itemLore.addAll(Arrays.asList(mount.GetDescription())); + + if (!getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage(mount.GetName())) + { + if (mount.GetCost(CurrencyType.Coins) == -1) { - itemLore.add(C.cBlack); - itemLore.add(C.cWhiteB + "Cost: " + C.cAqua + mount.GetCost(CurrencyType.Coins) + " Treasure Shards"); + //Nothing } - - if (mount.GetCost(CurrencyType.Coins) > 0 && getDonationManager().Get(getPlayer().getName()).GetBalance(CurrencyType.Coins) >= mount.GetCost(CurrencyType.Coins)) - { - itemLore.add(C.cBlack); - itemLore.add(C.cGreen + "Click to Purchase"); - - addButton(slot, new ShopItem(mount.GetDisplayMaterial(), mount.GetDisplayData(), mount.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false), new MountButton(mount, this)); - } - else if (mount.GetCost(CurrencyType.Coins) > 0) - { - itemLore.add(C.cBlack); - itemLore.add(C.cRed + "Not enough Treasure Shards."); - - setItem(slot, new ShopItem(mount.GetDisplayMaterial(), mount.GetDisplayData(), mount.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false)); - } - else - { - setItem(slot, new ShopItem(mount.GetDisplayMaterial(), mount.GetDisplayData(), mount.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false)); - } - } - - } + //Chest Unlocks + else if (mount.GetCost(CurrencyType.Coins) == -2 || mount.GetCost(CurrencyType.Coins) > 0) + { + itemLore.add(C.cBlack); + itemLore.add(C.cBlue + "Found in Treasure Chests"); + } + else if (mount.GetCost(CurrencyType.Coins) == -3) + { + itemLore.add(C.cBlack); + itemLore.add(C.cBlue + "Found in Winter Holiday Treasure"); + } + else if (mount.GetCost(CurrencyType.Coins) == -4) + { + itemLore.add(C.cBlack); + itemLore.add(C.cBlue + "Found in Halloween Pumpkin Treasure"); + } + else if (mount.GetCost(CurrencyType.Coins) == -5) + { + itemLore.add(C.cBlack); + itemLore.add(C.cBlue + "Found in Easter Holiday Treasure"); + } + //Rank Unlocks + else if (mount.GetCost(CurrencyType.Coins) == -10) + { + itemLore.add(C.cBlack); + itemLore.add(C.cAqua + "Unlocked with Ultra Rank"); + } + else if (mount.GetCost(CurrencyType.Coins) == -11) + { + itemLore.add(C.cBlack); + itemLore.add(C.cPurple + "Unlocked with Hero Rank"); + } + else if (mount.GetCost(CurrencyType.Coins) == -12) + { + itemLore.add(C.cBlack); + itemLore.add(C.cGreen + "Unlocked with Legend Rank"); + } + else if (mount.GetCost(CurrencyType.Coins) == -13) + { + itemLore.add(C.cBlack); + itemLore.add(C.cRed + "Unlocked with Titan Rank"); + } + } + + + if (getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage(mount.GetName())) + { + if (mount.GetActive().containsKey(getPlayer())) + { + itemLore.add(C.cBlack); + itemLore.add(C.cGreen + "Click to Disable"); + + addButton(slot, new ShopItem(mount.GetDisplayMaterial(), mount.GetDisplayData(), mount.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, false, false), new DeactivateMountButton(mount, this)); + } + else + { + itemLore.add(C.cBlack); + itemLore.add(C.cGreen + "Click to Enable"); + + addButton(slot, new ShopItem(mount.GetDisplayMaterial(), mount.GetDisplayData(), mount.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, false, false), new ActivateMountButton(mount, this)); + } + } + else + { + if (mount.GetCost(CurrencyType.Coins) > 0) + { + itemLore.add(C.cBlack); + itemLore.add(C.cWhiteB + "Cost: " + C.cAqua + mount.GetCost(CurrencyType.Coins) + " Treasure Shards"); + } + + if (mount.GetCost(CurrencyType.Coins) > 0 && getDonationManager().Get(getPlayer().getName()).GetBalance(CurrencyType.Coins) >= mount.GetCost(CurrencyType.Coins)) + { + itemLore.add(C.cBlack); + itemLore.add(C.cGreen + "Click to Purchase"); + + addButton(slot, new ShopItem(mount.GetDisplayMaterial(), mount.GetDisplayData(), mount.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false), new MountButton(mount, this)); + } + else if (mount.GetCost(CurrencyType.Coins) > 0) + { + itemLore.add(C.cBlack); + itemLore.add(C.cRed + "Not enough Treasure Shards."); + + setItem(slot, new ShopItem(mount.GetDisplayMaterial(), mount.GetDisplayData(), mount.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false)); + } + else + { + setItem(slot, new ShopItem(mount.GetDisplayMaterial(), mount.GetDisplayData(), mount.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false)); + } + } + + } } \ No newline at end of file diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/PetPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/PetPage.java index 0d3ac5bf6..4e796c47e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/PetPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/PetPage.java @@ -64,52 +64,57 @@ public class PetPage extends ShopPageBase itemLore.add(C.cBlack); itemLore.add(C.cGray + "Your very own " + pet.GetName() + "!"); - if (pet.GetCost(CurrencyType.Coins) == -1) - { - //Nothing - } //Chest Unlocks - else if (pet.GetCost(CurrencyType.Coins) == -2) + if (!getPlugin().getPetManager().Get(getPlayer()).GetPets().containsKey(pet.GetPetType())) { - itemLore.add(C.cBlack); - itemLore.add(C.cBlue + "Found in Treasure Chests"); - } - else if (pet.GetCost(CurrencyType.Coins) == -3) - { - itemLore.add(C.cBlack); - itemLore.add(C.cBlue + "Found in Winter Holiday Treasure"); - } - else if (pet.GetCost(CurrencyType.Coins) == -4) - { - itemLore.add(C.cBlack); - itemLore.add(C.cBlue + "Found in Halloween Pumpkin Treasure"); - } - else if (pet.GetCost(CurrencyType.Coins) == -5) - { - itemLore.add(C.cBlack); - itemLore.add(C.cBlue + "Found in Easter Holiday Treasure"); - } - //Rank Unlocks - else if (pet.GetCost(CurrencyType.Coins) == -10) - { - itemLore.add(C.cBlack); - itemLore.add(C.cAqua + "Unlocked with Ultra Rank"); - } - else if (pet.GetCost(CurrencyType.Coins) == -11) - { - itemLore.add(C.cBlack); - itemLore.add(C.cPurple + "Unlocked with Hero Rank"); - } - else if (pet.GetCost(CurrencyType.Coins) == -12) - { - itemLore.add(C.cBlack); - itemLore.add(C.cGreen + "Unlocked with Legend Rank"); - } - else if (pet.GetCost(CurrencyType.Coins) == -13) - { - itemLore.add(C.cBlack); - itemLore.add(C.cRed + "Unlocked with Titan Rank"); - } + if (pet.GetCost(CurrencyType.Coins) == -1) + { + //Nothing + } + + else if (pet.GetCost(CurrencyType.Coins) == -2 || pet.GetCost(CurrencyType.Coins) > 0) + { + itemLore.add(C.cBlack); + itemLore.add(C.cBlue + "Found in Treasure Chests"); + } + else if (pet.GetCost(CurrencyType.Coins) == -3) + { + itemLore.add(C.cBlack); + itemLore.add(C.cBlue + "Found in Winter Holiday Treasure"); + } + else if (pet.GetCost(CurrencyType.Coins) == -4) + { + itemLore.add(C.cBlack); + itemLore.add(C.cBlue + "Found in Halloween Pumpkin Treasure"); + } + else if (pet.GetCost(CurrencyType.Coins) == -5) + { + itemLore.add(C.cBlack); + itemLore.add(C.cBlue + "Found in Easter Holiday Treasure"); + } + + //Rank Unlocks + else if (pet.GetCost(CurrencyType.Coins) == -10) + { + itemLore.add(C.cBlack); + itemLore.add(C.cAqua + "Unlocked with Ultra Rank"); + } + else if (pet.GetCost(CurrencyType.Coins) == -11) + { + itemLore.add(C.cBlack); + itemLore.add(C.cPurple + "Unlocked with Hero Rank"); + } + else if (pet.GetCost(CurrencyType.Coins) == -12) + { + itemLore.add(C.cBlack); + itemLore.add(C.cGreen + "Unlocked with Legend Rank"); + } + else if (pet.GetCost(CurrencyType.Coins) == -13) + { + itemLore.add(C.cBlack); + itemLore.add(C.cRed + "Unlocked with Titan Rank"); + } + } //Owned if (getPlugin().getPetManager().Get(getPlayer()).GetPets().containsKey(pet.GetPetType())) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java index 4f1852000..c817ad7c5 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java @@ -90,7 +90,9 @@ import mineplex.core.gadget.gadgets.particle.ParticleHelix; import mineplex.core.gadget.gadgets.particle.ParticleLegend; import mineplex.core.gadget.gadgets.particle.ParticleRain; import mineplex.core.gadget.gadgets.particle.ParticleTitan; +import mineplex.core.gadget.set.SetCandyCane; import mineplex.core.gadget.set.SetFrostLord; +import mineplex.core.gadget.set.SetTitan; import mineplex.core.gadget.types.Gadget; import mineplex.core.gadget.types.GadgetSet; import mineplex.core.gadget.types.GadgetType; @@ -154,6 +156,8 @@ public class GadgetManager extends MiniPlugin private void createSets() { addSet(new SetFrostLord(this)); + addSet(new SetCandyCane(this)); + addSet(new SetTitan(this)); } private void CreateGadgets() diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatGrinch.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatGrinch.java index d48320d58..aee21df5b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatGrinch.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatGrinch.java @@ -12,7 +12,7 @@ public class HatGrinch extends HatGadget public HatGrinch(GadgetManager manager) { super(manager, "The Grinch", - UtilText.splitLineToArray(C.cGray + "Grinchtastic", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "Great! Now where’s the Roast Beast?!", LineFormat.LORE), -3, "christmasgift"); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetCandyCane.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetCandyCane.java new file mode 100644 index 000000000..ef898899a --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetCandyCane.java @@ -0,0 +1,38 @@ +package mineplex.core.gadget.set; + +import org.bukkit.entity.Player; + +import mineplex.core.common.util.F; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailCandyCane; +import mineplex.core.gadget.gadgets.death.DeathCandyCane; +import mineplex.core.gadget.gadgets.doublejump.DoubleJumpCandyCane; +import mineplex.core.gadget.gadgets.particle.ParticleCandyCane; +import mineplex.core.gadget.types.GadgetSet; + +public class SetCandyCane extends GadgetSet +{ + + public SetCandyCane(GadgetManager manager) + { + super(manager, + manager.getGadget(ArrowTrailCandyCane.class), + manager.getGadget(DeathCandyCane.class), + manager.getGadget(DoubleJumpCandyCane.class), + manager.getGadget(ParticleCandyCane.class)); + } + + @Override + public void customEnable(Player player) + { + player.sendMessage(F.main("GadgetSet", "Enabled full set of " + F.elem("Candy Cane"))); + } + + @Override + public void customDisable(Player player) + { + player.sendMessage(F.main("GadgetSet", "Disabled full set of " + F.elem("Candy Cane"))); + + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetTitan.java new file mode 100644 index 000000000..f2d6b86df --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetTitan.java @@ -0,0 +1,38 @@ +package mineplex.core.gadget.set; + +import org.bukkit.entity.Player; + +import mineplex.core.common.util.F; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailTitan; +import mineplex.core.gadget.gadgets.death.DeathTitan; +import mineplex.core.gadget.gadgets.doublejump.DoubleJumpTitan; +import mineplex.core.gadget.gadgets.particle.ParticleTitan; +import mineplex.core.gadget.types.GadgetSet; + +public class SetTitan extends GadgetSet +{ + + public SetTitan(GadgetManager manager) + { + super(manager, + manager.getGadget(ArrowTrailTitan.class), + manager.getGadget(DeathTitan.class), + manager.getGadget(DoubleJumpTitan.class), + manager.getGadget(ParticleTitan.class)); + } + + @Override + public void customEnable(Player player) + { + player.sendMessage(F.main("GadgetSet", "Enabled full set of " + F.elem("Titan"))); + } + + @Override + public void customDisable(Player player) + { + player.sendMessage(F.main("GadgetSet", "Disabled full set of " + F.elem("Titan"))); + + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/Gadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/Gadget.java index fae816a3f..e5b0667a1 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/Gadget.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/Gadget.java @@ -1,5 +1,6 @@ package mineplex.core.gadget.types; +import java.util.ArrayList; import java.util.HashSet; import mineplex.core.common.CurrencyType; @@ -26,6 +27,8 @@ public abstract class Gadget extends SalesPackageBase implements Listener protected HashSet _active = new HashSet(); + protected Gadget[] _set = null; + private String[] _alternativePackageNames; public Gadget(GadgetManager manager, GadgetType gadgetType, String name, String[] desc, int cost, Material mat, byte data) @@ -36,7 +39,7 @@ public abstract class Gadget extends SalesPackageBase implements Listener public Gadget(GadgetManager manager, GadgetType gadgetType, String name, String[] desc, int cost, Material mat, byte data, int quantity, String... alternativesalepackageNames) { super(name, mat, data, desc, cost, quantity); - + _gadgetType = gadgetType; KnownPackage = false; @@ -128,5 +131,13 @@ public abstract class Gadget extends SalesPackageBase implements Listener return false; } - + public void setSet(Gadget[] gadgets) + { + _set = gadgets; + } + + public Gadget[] getSet() + { + return _set; + } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetSet.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetSet.java index 94e7dde71..381c33660 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetSet.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetSet.java @@ -25,6 +25,11 @@ public abstract class GadgetSet implements Listener Manager = manager; _gadgets = gadgets; + for (Gadget gadget : gadgets) + { + gadget.setSet(gadgets); + } + Bukkit.getPluginManager().registerEvents(this, Manager.getPlugin()); } From 0cda29e135c9afcad3760f1195c22ff7a8466d87 Mon Sep 17 00:00:00 2001 From: Cheese Date: Fri, 11 Dec 2015 20:08:36 +1100 Subject: [PATCH 25/81] improved cosmetic set implementation --- .../mineplex/core/cosmetic/ui/page/GadgetPage.java | 6 +++--- .../src/mineplex/core/gadget/set/SetCandyCane.java | 2 +- .../src/mineplex/core/gadget/set/SetFrostLord.java | 2 +- .../src/mineplex/core/gadget/set/SetTitan.java | 2 +- .../src/mineplex/core/gadget/types/Gadget.java | 8 ++++---- .../src/mineplex/core/gadget/types/GadgetSet.java | 13 +++++++++---- 6 files changed, 19 insertions(+), 14 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java index 3746ce66d..76a6b8e52 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java @@ -135,11 +135,11 @@ public class GadgetPage extends ShopPageBase if (gadget.getSet() != null) { itemLore.add(C.cBlack); - itemLore.add(C.cGray + "Set Cosmetics;"); + itemLore.add(C.cGray + gadget.getSet().getName() + " Set Cosmetics;"); - for (Gadget cur : gadget.getSet()) + for (Gadget cur : gadget.getSet().getGadgets()) { - itemLore.add(" "+ (cur.IsActive(getPlayer()) ? C.cGreen : C.cGray) + cur.GetName()); + itemLore.add(" ●"+ (cur.IsActive(getPlayer()) ? C.cGreen : C.cGray) + cur.GetName()); } } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetCandyCane.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetCandyCane.java index ef898899a..377340a76 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetCandyCane.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetCandyCane.java @@ -15,7 +15,7 @@ public class SetCandyCane extends GadgetSet public SetCandyCane(GadgetManager manager) { - super(manager, + super(manager, "Candy Cane", manager.getGadget(ArrowTrailCandyCane.class), manager.getGadget(DeathCandyCane.class), manager.getGadget(DoubleJumpCandyCane.class), diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetFrostLord.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetFrostLord.java index ce34dfc65..03882bcb4 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetFrostLord.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetFrostLord.java @@ -15,7 +15,7 @@ public class SetFrostLord extends GadgetSet public SetFrostLord(GadgetManager manager) { - super(manager, + super(manager, "Frost Lord", manager.getGadget(ArrowTrailFrostLord.class), manager.getGadget(DeathFrostLord.class), manager.getGadget(DoubleJumpFrostLord.class), diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetTitan.java index f2d6b86df..3005b348f 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetTitan.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetTitan.java @@ -15,7 +15,7 @@ public class SetTitan extends GadgetSet public SetTitan(GadgetManager manager) { - super(manager, + super(manager, "The Titans", manager.getGadget(ArrowTrailTitan.class), manager.getGadget(DeathTitan.class), manager.getGadget(DoubleJumpTitan.class), diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/Gadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/Gadget.java index e5b0667a1..6998e2a51 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/Gadget.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/Gadget.java @@ -27,7 +27,7 @@ public abstract class Gadget extends SalesPackageBase implements Listener protected HashSet _active = new HashSet(); - protected Gadget[] _set = null; + protected GadgetSet _set = null; private String[] _alternativePackageNames; @@ -131,12 +131,12 @@ public abstract class Gadget extends SalesPackageBase implements Listener return false; } - public void setSet(Gadget[] gadgets) + public void setSet(GadgetSet set) { - _set = gadgets; + _set = set; } - public Gadget[] getSet() + public GadgetSet getSet() { return _set; } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetSet.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetSet.java index 381c33660..84632846e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetSet.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetSet.java @@ -13,6 +13,7 @@ import mineplex.core.gadget.event.GadgetDisableEvent; public abstract class GadgetSet implements Listener { + private String _name; private Gadget[] _gadgets; @@ -20,15 +21,14 @@ public abstract class GadgetSet implements Listener HashSet _active = new HashSet<>(); - public GadgetSet(GadgetManager manager, Gadget... gadgets) + public GadgetSet(GadgetManager manager, String name, Gadget... gadgets) { Manager = manager; _gadgets = gadgets; + _name = name; for (Gadget gadget : gadgets) - { - gadget.setSet(gadgets); - } + gadget.setSet(this); Bukkit.getPluginManager().registerEvents(this, Manager.getPlugin()); } @@ -92,6 +92,11 @@ public abstract class GadgetSet implements Listener } return false; } + + public String getName() { + // TODO Auto-generated method stub + return null; + } From f717a5f8ccaba9f55dc5f6138c18dce36b1f4e91 Mon Sep 17 00:00:00 2001 From: Cheese Date: Fri, 11 Dec 2015 20:30:41 +1100 Subject: [PATCH 26/81] more set stuff --- .../core/cosmetic/ui/page/GadgetPage.java | 32 +++++++++-------- .../gadgets/particle/ParticleFrostLord.java | 4 +-- .../gadgets/particle/ParticleTitan.java | 4 +++ .../core/gadget/set/SetCandyCane.java | 16 +-------- .../core/gadget/set/SetFrostLord.java | 16 +-------- .../mineplex/core/gadget/set/SetTitan.java | 16 +-------- .../mineplex/core/gadget/types/GadgetSet.java | 36 ++++++++++++++----- 7 files changed, 54 insertions(+), 70 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java index 76a6b8e52..6e0e39eb6 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java @@ -81,6 +81,23 @@ public class GadgetPage extends ShopPageBase itemLore.add(C.cBlack); itemLore.addAll(Arrays.asList(gadget.GetDescription())); + if (gadget.getSet() != null) + { + itemLore.add(C.cBlack); + itemLore.add(C.cGray + gadget.getSet().getName() + " Set;"); + + //Elements + for (Gadget cur : gadget.getSet().getGadgets()) + itemLore.add(" "+ (cur.ownsGadget(getPlayer()) ? C.cDGreen + '▪' : C.cDRed + '▪' ) + (cur.IsActive(getPlayer()) ? C.cGreen : C.cGray) + cur.GetName()); + + itemLore.add(C.cBlack); + + //Bonus + itemLore.add(C.cGray + gadget.getSet().getName() + " Set Bonus;"); + for (String bonus : gadget.getSet().getBonus()) + itemLore.add(" " + (gadget.getSet().isActive(getPlayer()) ? C.cGreen : C.cGray) + bonus); + } + if (!gadget.ownsGadget(getPlayer())) { if (gadget.GetCost(CurrencyType.Coins) == -1) @@ -130,20 +147,7 @@ public class GadgetPage extends ShopPageBase itemLore.add(C.cRed + "Unlocked with Titan Rank"); } } - else - { - if (gadget.getSet() != null) - { - itemLore.add(C.cBlack); - itemLore.add(C.cGray + gadget.getSet().getName() + " Set Cosmetics;"); - - for (Gadget cur : gadget.getSet().getGadgets()) - { - itemLore.add(" ●"+ (cur.IsActive(getPlayer()) ? C.cGreen : C.cGray) + cur.GetName()); - } - } - } - + if (gadget instanceof ItemGadget) { itemLore.add(C.cBlack); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFrostLord.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFrostLord.java index faa25065f..035615c59 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFrostLord.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleFrostLord.java @@ -57,8 +57,8 @@ public class ParticleFrostLord extends ParticleGadget int amount = 4; - GadgetSet set = Manager.getGadgetSet(SetFrostLord.class); - if(set.isActive(player)) amount = 6; + if(getSet() != null && getSet().isActive(player)) + amount = 6; double ang = Math.PI*2/amount; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleTitan.java index d8270ec62..b751709ac 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleTitan.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleTitan.java @@ -48,6 +48,10 @@ public class ParticleTitan extends ParticleGadget continue; double total = 3; + + if(getSet() != null && getSet().isActive(player)) + total = 4; + double step = (1/total)*Math.PI*2; double offset1 = (step/20)*_tick%20; double offset2 = (step/31)*_tick%31; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetCandyCane.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetCandyCane.java index 377340a76..8a1acaf71 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetCandyCane.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetCandyCane.java @@ -15,24 +15,10 @@ public class SetCandyCane extends GadgetSet public SetCandyCane(GadgetManager manager) { - super(manager, "Candy Cane", + super(manager, "Candy Cane", "Coming Soon...", manager.getGadget(ArrowTrailCandyCane.class), manager.getGadget(DeathCandyCane.class), manager.getGadget(DoubleJumpCandyCane.class), manager.getGadget(ParticleCandyCane.class)); } - - @Override - public void customEnable(Player player) - { - player.sendMessage(F.main("GadgetSet", "Enabled full set of " + F.elem("Candy Cane"))); - } - - @Override - public void customDisable(Player player) - { - player.sendMessage(F.main("GadgetSet", "Disabled full set of " + F.elem("Candy Cane"))); - - } - } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetFrostLord.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetFrostLord.java index 03882bcb4..fec0b8950 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetFrostLord.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetFrostLord.java @@ -15,24 +15,10 @@ public class SetFrostLord extends GadgetSet public SetFrostLord(GadgetManager manager) { - super(manager, "Frost Lord", + super(manager, "Frost Lord", "Improved Wind of the Frost Lord", manager.getGadget(ArrowTrailFrostLord.class), manager.getGadget(DeathFrostLord.class), manager.getGadget(DoubleJumpFrostLord.class), manager.getGadget(ParticleFrostLord.class)); } - - @Override - public void customEnable(Player player) - { - player.sendMessage(F.main("GadgetSet", "Enabled full set of " + F.elem("Frost Lord"))); - } - - @Override - public void customDisable(Player player) - { - player.sendMessage(F.main("GadgetSet", "Disabled full set of " + F.elem("Frost Lord"))); - - } - } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetTitan.java index 3005b348f..bc18e252a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetTitan.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetTitan.java @@ -15,24 +15,10 @@ public class SetTitan extends GadgetSet public SetTitan(GadgetManager manager) { - super(manager, "The Titans", + super(manager, "The Titans", "Improved Flame of the Frost Lord", manager.getGadget(ArrowTrailTitan.class), manager.getGadget(DeathTitan.class), manager.getGadget(DoubleJumpTitan.class), manager.getGadget(ParticleTitan.class)); } - - @Override - public void customEnable(Player player) - { - player.sendMessage(F.main("GadgetSet", "Enabled full set of " + F.elem("Titan"))); - } - - @Override - public void customDisable(Player player) - { - player.sendMessage(F.main("GadgetSet", "Disabled full set of " + F.elem("Titan"))); - - } - } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetSet.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetSet.java index 84632846e..a2f6df54e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetSet.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetSet.java @@ -7,6 +7,10 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; +import mineplex.core.common.util.C; +import mineplex.core.common.util.F; +import mineplex.core.common.util.LineFormat; +import mineplex.core.common.util.UtilText; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.event.GadgetEnableEvent; import mineplex.core.gadget.event.GadgetDisableEvent; @@ -14,6 +18,7 @@ import mineplex.core.gadget.event.GadgetDisableEvent; public abstract class GadgetSet implements Listener { private String _name; + private String[] _bonus; private Gadget[] _gadgets; @@ -21,11 +26,13 @@ public abstract class GadgetSet implements Listener HashSet _active = new HashSet<>(); - public GadgetSet(GadgetManager manager, String name, Gadget... gadgets) + public GadgetSet(GadgetManager manager, String name, String bonus, Gadget... gadgets) { Manager = manager; _gadgets = gadgets; + _name = name; + _bonus = UtilText.splitLineToArray(bonus, LineFormat.LORE); for (Gadget gadget : gadgets) gadget.setSet(this); @@ -44,7 +51,8 @@ public abstract class GadgetSet implements Listener if(enable && g.equals(gadget)) continue; _active.remove(player); - if(wasActive) customDisable(player); + if(wasActive) + customDisable(player); return; } } @@ -72,10 +80,16 @@ public abstract class GadgetSet implements Listener return _active.contains(player); } - public abstract void customEnable(Player player); - - - public abstract void customDisable(Player player); + public void customEnable(Player player) + { + player.sendMessage(F.main("Gadget", "Set Enabled: " + F.elem(C.cGreen + getName()))); + } + + public void customDisable(Player player) + { + player.sendMessage(F.main("Gadget", "Set Disabled: " + F.elem(C.cRed + getName()))); + + } public Gadget[] getGadgets() { @@ -93,11 +107,15 @@ public abstract class GadgetSet implements Listener return false; } - public String getName() { - // TODO Auto-generated method stub - return null; + public String getName() + { + return _name; } + public String[] getBonus() + { + return _bonus; + } } From 7fc08f34a7c3909cdf1272dffbe7bd9fd4665c41 Mon Sep 17 00:00:00 2001 From: Cheese Date: Fri, 11 Dec 2015 20:34:01 +1100 Subject: [PATCH 27/81] fixed typo --- .../Mineplex.Core/src/mineplex/core/gadget/set/SetTitan.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetTitan.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetTitan.java index bc18e252a..f2012131b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetTitan.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetTitan.java @@ -15,7 +15,7 @@ public class SetTitan extends GadgetSet public SetTitan(GadgetManager manager) { - super(manager, "The Titans", "Improved Flame of the Frost Lord", + super(manager, "The Titans", "Improved Flame of the Titans", manager.getGadget(ArrowTrailTitan.class), manager.getGadget(DeathTitan.class), manager.getGadget(DoubleJumpTitan.class), From d7f39bdfd8919b8456d64fd88c4992e9a730c6bd Mon Sep 17 00:00:00 2001 From: Cheese Date: Fri, 11 Dec 2015 20:59:55 +1100 Subject: [PATCH 28/81] costume sets --- .../core/cosmetic/ui/page/CostumePage.java | 20 ++-- .../mineplex/core/gadget/GadgetManager.java | 91 +++++-------------- .../gadget/gadgets/item/ItemDuelingSword.java | 2 +- .../gadget/gadgets/item/ItemPaintbrush.java | 2 +- .../gadgets/outfit/OutfitRaveSuitBoots.java | 15 +++ .../outfit/OutfitRaveSuitChestplate.java | 15 +++ .../gadgets/outfit/OutfitRaveSuitHelmet.java | 15 +++ .../outfit/OutfitRaveSuitLeggings.java | 15 +++ .../gadgets/outfit/OutfitSpaceSuitBoots.java | 15 +++ .../outfit/OutfitSpaceSuitChestplate.java | 15 +++ .../gadgets/outfit/OutfitSpaceSuitHelmet.java | 15 +++ .../outfit/OutfitSpaceSuitLeggings.java | 15 +++ .../gadget/gadgets/outfit/OutfitTeam.java | 2 +- .../mineplex/core/gadget/set/SetRaveSuit.java | 17 ++++ .../core/gadget/set/SetSpaceSuit.java | 17 ++++ .../core/gadget/types/ArrowEffectGadget.java | 2 +- .../core/gadget/types/DeathEffectGadget.java | 2 +- .../gadget/types/DoubleJumpEffectGadget.java | 2 +- .../mineplex/core/gadget/types/GadgetSet.java | 5 +- .../mineplex/core/gadget/types/HatGadget.java | 2 +- .../core/gadget/types/ItemGadget.java | 2 +- .../core/gadget/types/MorphGadget.java | 2 +- .../core/gadget/types/OutfitGadget.java | 2 +- .../core/gadget/types/ParticleGadget.java | 2 +- .../hub/commands/DisguiseCommand.java | 2 +- .../game/arcade/command/DisguiseCommand.java | 2 +- 26 files changed, 206 insertions(+), 90 deletions(-) create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitRaveSuitBoots.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitRaveSuitChestplate.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitRaveSuitHelmet.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitRaveSuitLeggings.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuitBoots.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuitChestplate.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuitHelmet.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuitLeggings.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetRaveSuit.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetSpaceSuit.java diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/CostumePage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/CostumePage.java index 8e32e2707..bed2836d0 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/CostumePage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/CostumePage.java @@ -1,6 +1,7 @@ package mineplex.core.cosmetic.ui.page; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import org.bukkit.Bukkit; @@ -10,10 +11,13 @@ import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; import mineplex.core.account.CoreClientManager; +import mineplex.core.common.CurrencyType; import mineplex.core.common.util.C; import mineplex.core.cosmetic.CosmeticManager; import mineplex.core.cosmetic.ui.CosmeticShop; import mineplex.core.donation.DonationManager; +import mineplex.core.gadget.gadgets.outfit.OutfitRaveSuit; +import mineplex.core.gadget.gadgets.outfit.OutfitSpaceSuit; import mineplex.core.gadget.types.Gadget; import mineplex.core.gadget.types.GadgetType; import mineplex.core.gadget.types.ItemGadget; @@ -37,19 +41,19 @@ public class CostumePage extends GadgetPage { int slot; - List costumeClasses = new ArrayList(); - for (Gadget gadget : getPlugin().getGadgetManager().getGadgets(GadgetType.Costume)) { + if (gadget.GetCost(CurrencyType.Coins) == -1) + continue; + OutfitGadget outfitGadget = ((OutfitGadget) gadget); - Class clazz = gadget.getClass(); - if (!costumeClasses.contains(clazz)) - { - costumeClasses.add(clazz); - } + int offset = 0; + + if (gadget instanceof OutfitRaveSuit) offset = 0; + else if (gadget instanceof OutfitSpaceSuit) offset = 1; - slot = (costumeClasses.indexOf(clazz) * 2) + 3 + 18; + slot = offset + 1 + 18; //1 buffer to left, 18 = 2 lines down if (outfitGadget.GetSlot() == OutfitGadget.ArmorSlot.Chest) slot += 9; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java index c817ad7c5..8439e08cb 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java @@ -32,66 +32,18 @@ import mineplex.core.disguise.DisguiseManager; import mineplex.core.donation.DonationManager; import mineplex.core.gadget.event.GadgetCollideEntityEvent; import mineplex.core.gadget.event.GadgetEnableEvent; -import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailCandyCane; -import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailFrostLord; -import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailTitan; -import mineplex.core.gadget.gadgets.death.DeathCandyCane; -import mineplex.core.gadget.gadgets.death.DeathFrostLord; -import mineplex.core.gadget.gadgets.death.DeathTitan; -import mineplex.core.gadget.gadgets.doublejump.DoubleJumpCandyCane; -import mineplex.core.gadget.gadgets.doublejump.DoubleJumpFrostLord; -import mineplex.core.gadget.gadgets.doublejump.DoubleJumpTitan; -import mineplex.core.gadget.gadgets.hat.HatCoal; -import mineplex.core.gadget.gadgets.hat.HatPresent; -import mineplex.core.gadget.gadgets.hat.HatSanta; -import mineplex.core.gadget.gadgets.hat.HatSnowman; -import mineplex.core.gadget.gadgets.item.ItemBatGun; -import mineplex.core.gadget.gadgets.item.ItemCoal; -import mineplex.core.gadget.gadgets.item.ItemCoinBomb; -import mineplex.core.gadget.gadgets.item.ItemDuelingSword; -import mineplex.core.gadget.gadgets.item.ItemEtherealPearl; -import mineplex.core.gadget.gadgets.item.ItemFirework; -import mineplex.core.gadget.gadgets.item.ItemFleshHook; -import mineplex.core.gadget.gadgets.item.ItemFreezeCannon; -import mineplex.core.gadget.gadgets.item.ItemMelonLauncher; -import mineplex.core.gadget.gadgets.item.ItemPaintballGun; -import mineplex.core.gadget.gadgets.item.ItemPaintbrush; -import mineplex.core.gadget.gadgets.item.ItemPartyPopper; -import mineplex.core.gadget.gadgets.item.ItemSnowball; -import mineplex.core.gadget.gadgets.item.ItemTNT; -import mineplex.core.gadget.gadgets.morph.MorphBat; -import mineplex.core.gadget.gadgets.morph.MorphBlaze; -import mineplex.core.gadget.gadgets.morph.MorphBlock; -import mineplex.core.gadget.gadgets.morph.MorphBunny; -import mineplex.core.gadget.gadgets.morph.MorphChicken; -import mineplex.core.gadget.gadgets.morph.MorphCow; -import mineplex.core.gadget.gadgets.morph.MorphCreeper; -import mineplex.core.gadget.gadgets.morph.MorphEnderman; -import mineplex.core.gadget.gadgets.morph.MorphPig; -import mineplex.core.gadget.gadgets.morph.MorphPumpkinKing; -import mineplex.core.gadget.gadgets.morph.MorphSlime; -import mineplex.core.gadget.gadgets.morph.MorphSnowman; -import mineplex.core.gadget.gadgets.morph.MorphTitan; -import mineplex.core.gadget.gadgets.morph.MorphVillager; -import mineplex.core.gadget.gadgets.morph.MorphWither; -import mineplex.core.gadget.gadgets.outfit.OutfitRaveSuit; -import mineplex.core.gadget.gadgets.outfit.OutfitSpaceSuit; -import mineplex.core.gadget.gadgets.outfit.OutfitTeam; -import mineplex.core.gadget.gadgets.particle.ParticleCandyCane; -import mineplex.core.gadget.gadgets.particle.ParticleCoalFumes; -import mineplex.core.gadget.gadgets.particle.ParticleEnchant; -import mineplex.core.gadget.gadgets.particle.ParticleFairy; -import mineplex.core.gadget.gadgets.particle.ParticleFireRings; -import mineplex.core.gadget.gadgets.particle.ParticleFoot; -import mineplex.core.gadget.gadgets.particle.ParticleFrostLord; -import mineplex.core.gadget.gadgets.particle.ParticleGreen; -import mineplex.core.gadget.gadgets.particle.ParticleHeart; -import mineplex.core.gadget.gadgets.particle.ParticleHelix; -import mineplex.core.gadget.gadgets.particle.ParticleLegend; -import mineplex.core.gadget.gadgets.particle.ParticleRain; -import mineplex.core.gadget.gadgets.particle.ParticleTitan; +import mineplex.core.gadget.gadgets.arrowtrail.*; +import mineplex.core.gadget.gadgets.death.*; +import mineplex.core.gadget.gadgets.doublejump.*; +import mineplex.core.gadget.gadgets.hat.*; +import mineplex.core.gadget.gadgets.item.*; +import mineplex.core.gadget.gadgets.morph.*; +import mineplex.core.gadget.gadgets.outfit.*; +import mineplex.core.gadget.gadgets.particle.*; import mineplex.core.gadget.set.SetCandyCane; import mineplex.core.gadget.set.SetFrostLord; +import mineplex.core.gadget.set.SetRaveSuit; +import mineplex.core.gadget.set.SetSpaceSuit; import mineplex.core.gadget.set.SetTitan; import mineplex.core.gadget.types.Gadget; import mineplex.core.gadget.types.GadgetSet; @@ -155,9 +107,14 @@ public class GadgetManager extends MiniPlugin private void createSets() { + //Particles addSet(new SetFrostLord(this)); addSet(new SetCandyCane(this)); addSet(new SetTitan(this)); + + //Costumes + addSet(new SetRaveSuit(this)); + addSet(new SetSpaceSuit(this)); } private void CreateGadgets() @@ -181,15 +138,15 @@ public class GadgetManager extends MiniPlugin addGadget(new ItemSnowball(this)); // Costume - addGadget(new OutfitRaveSuit(this, "Rave Hat", -2, ArmorSlot.Helmet, Material.LEATHER_HELMET, (byte)0)); - addGadget(new OutfitRaveSuit(this, "Rave Shirt", -2, ArmorSlot.Chest, Material.LEATHER_CHESTPLATE, (byte)0)); - addGadget(new OutfitRaveSuit(this, "Rave Pants", -2, ArmorSlot.Legs, Material.LEATHER_LEGGINGS, (byte)0)); - addGadget(new OutfitRaveSuit(this, "Rave Boots", -2, ArmorSlot.Boots, Material.LEATHER_BOOTS, (byte)0)); + addGadget(new OutfitRaveSuitHelmet(this)); + addGadget(new OutfitRaveSuitChestplate(this)); + addGadget(new OutfitRaveSuitLeggings(this)); + addGadget(new OutfitRaveSuitBoots(this)); - addGadget(new OutfitSpaceSuit(this, "Space Helmet", -2, ArmorSlot.Helmet, Material.GLASS, (byte)0)); - addGadget(new OutfitSpaceSuit(this, "Space Jacket", -2, ArmorSlot.Chest, Material.GOLD_CHESTPLATE, (byte)0)); - addGadget(new OutfitSpaceSuit(this, "Space Pants", -2, ArmorSlot.Legs, Material.GOLD_LEGGINGS, (byte)0)); - addGadget(new OutfitSpaceSuit(this, "Space Boots", -2, ArmorSlot.Boots, Material.GOLD_BOOTS, (byte)0)); + addGadget(new OutfitSpaceSuitHelmet(this)); + addGadget(new OutfitSpaceSuitChestplate(this)); + addGadget(new OutfitSpaceSuitLeggings(this)); + addGadget(new OutfitSpaceSuitBoots(this)); addGadget(new OutfitTeam(this, "Team Helmet", -1, ArmorSlot.Helmet, Material.LEATHER_HELMET, (byte)0)); addGadget(new OutfitTeam(this, "Team Shirt", -1, ArmorSlot.Chest, Material.LEATHER_CHESTPLATE, (byte)0)); @@ -351,7 +308,7 @@ public class GadgetManager extends MiniPlugin } } - public void removeGadetType(Player player, GadgetType type) + public void removeGadgetType(Player player, GadgetType type) { List gadgets = _gadgets.get(type); if(gadgets == null) return; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemDuelingSword.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemDuelingSword.java index 99a7d217f..c8ced1f05 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemDuelingSword.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemDuelingSword.java @@ -28,7 +28,7 @@ public class ItemDuelingSword extends ItemGadget @Override public void ApplyItem(Player player, boolean inform) { - Manager.removeGadetType(player, GadgetType.Item); + Manager.removeGadgetType(player, GadgetType.Item); _active.add(player); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPaintbrush.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPaintbrush.java index 9fa4d783b..2815a9b5e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPaintbrush.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPaintbrush.java @@ -55,7 +55,7 @@ public class ItemPaintbrush extends ItemGadget @Override public void ApplyItem(Player player, boolean inform) { - Manager.removeGadetType(player, GadgetType.Item); + Manager.removeGadgetType(player, GadgetType.Item); _active.add(player); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitRaveSuitBoots.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitRaveSuitBoots.java new file mode 100644 index 000000000..b74eda769 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitRaveSuitBoots.java @@ -0,0 +1,15 @@ +package mineplex.core.gadget.gadgets.outfit; + +import mineplex.core.gadget.GadgetManager; + +import org.bukkit.Material; + +public class OutfitRaveSuitBoots extends OutfitRaveSuit +{ + + public OutfitRaveSuitBoots(GadgetManager manager) + { + super(manager, "Rave Boots", -2, ArmorSlot.Boots, Material.LEATHER_BOOTS, (byte)0); + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitRaveSuitChestplate.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitRaveSuitChestplate.java new file mode 100644 index 000000000..df3b5577e --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitRaveSuitChestplate.java @@ -0,0 +1,15 @@ +package mineplex.core.gadget.gadgets.outfit; + +import mineplex.core.gadget.GadgetManager; + +import org.bukkit.Material; + +public class OutfitRaveSuitChestplate extends OutfitRaveSuit +{ + + public OutfitRaveSuitChestplate(GadgetManager manager) + { + super(manager, "Rave Shirt", -2, ArmorSlot.Chest, Material.LEATHER_CHESTPLATE, (byte)0); + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitRaveSuitHelmet.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitRaveSuitHelmet.java new file mode 100644 index 000000000..122ea157d --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitRaveSuitHelmet.java @@ -0,0 +1,15 @@ +package mineplex.core.gadget.gadgets.outfit; + +import mineplex.core.gadget.GadgetManager; + +import org.bukkit.Material; + +public class OutfitRaveSuitHelmet extends OutfitRaveSuit +{ + + public OutfitRaveSuitHelmet(GadgetManager manager) + { + super(manager, "Rave Hat", -2, ArmorSlot.Helmet, Material.LEATHER_HELMET, (byte)0); + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitRaveSuitLeggings.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitRaveSuitLeggings.java new file mode 100644 index 000000000..b4b14df9d --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitRaveSuitLeggings.java @@ -0,0 +1,15 @@ +package mineplex.core.gadget.gadgets.outfit; + +import mineplex.core.gadget.GadgetManager; + +import org.bukkit.Material; + +public class OutfitRaveSuitLeggings extends OutfitRaveSuit +{ + + public OutfitRaveSuitLeggings(GadgetManager manager) + { + super(manager, "Rave Pants", -2, ArmorSlot.Legs, Material.LEATHER_LEGGINGS, (byte)0); + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuitBoots.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuitBoots.java new file mode 100644 index 000000000..58a02b36b --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuitBoots.java @@ -0,0 +1,15 @@ +package mineplex.core.gadget.gadgets.outfit; + +import mineplex.core.gadget.GadgetManager; + +import org.bukkit.Material; + +public class OutfitSpaceSuitBoots extends OutfitRaveSuit +{ + + public OutfitSpaceSuitBoots(GadgetManager manager) + { + super(manager, "Space Boots", -2, ArmorSlot.Boots, Material.GOLD_BOOTS, (byte)0); + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuitChestplate.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuitChestplate.java new file mode 100644 index 000000000..5a6d3f807 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuitChestplate.java @@ -0,0 +1,15 @@ +package mineplex.core.gadget.gadgets.outfit; + +import mineplex.core.gadget.GadgetManager; + +import org.bukkit.Material; + +public class OutfitSpaceSuitChestplate extends OutfitRaveSuit +{ + + public OutfitSpaceSuitChestplate(GadgetManager manager) + { + super(manager, "Space Jacket", -2, ArmorSlot.Chest, Material.GOLD_CHESTPLATE, (byte)0); + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuitHelmet.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuitHelmet.java new file mode 100644 index 000000000..09fb5ddbb --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuitHelmet.java @@ -0,0 +1,15 @@ +package mineplex.core.gadget.gadgets.outfit; + +import mineplex.core.gadget.GadgetManager; + +import org.bukkit.Material; + +public class OutfitSpaceSuitHelmet extends OutfitRaveSuit +{ + + public OutfitSpaceSuitHelmet(GadgetManager manager) + { + super(manager, "Space Helmet", -2, ArmorSlot.Helmet, Material.GLASS, (byte)0); + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuitLeggings.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuitLeggings.java new file mode 100644 index 000000000..650aea844 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuitLeggings.java @@ -0,0 +1,15 @@ +package mineplex.core.gadget.gadgets.outfit; + +import mineplex.core.gadget.GadgetManager; + +import org.bukkit.Material; + +public class OutfitSpaceSuitLeggings extends OutfitRaveSuit +{ + + public OutfitSpaceSuitLeggings(GadgetManager manager) + { + super(manager, "Space Pants", -2, ArmorSlot.Legs, Material.GOLD_LEGGINGS, (byte)0); + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitTeam.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitTeam.java index 6b598c419..8abec4a35 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitTeam.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitTeam.java @@ -56,7 +56,7 @@ public class OutfitTeam extends OutfitGadget @Override public void ApplyArmor(Player player) { - Manager.removeGadetType(player, GadgetType.Morph); + Manager.removeGadgetType(player, GadgetType.Morph); Manager.RemoveOutfit(player, _slot); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetRaveSuit.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetRaveSuit.java new file mode 100644 index 000000000..8dd0f874c --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetRaveSuit.java @@ -0,0 +1,17 @@ +package mineplex.core.gadget.set; + +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.gadgets.outfit.*; +import mineplex.core.gadget.types.GadgetSet; + +public class SetRaveSuit extends GadgetSet +{ + public SetRaveSuit(GadgetManager manager) + { + super(manager, "Rave Suit", "Coming Soon...", + manager.getGadget(OutfitRaveSuitHelmet.class), + manager.getGadget(OutfitRaveSuitChestplate.class), + manager.getGadget(OutfitRaveSuitLeggings.class), + manager.getGadget(OutfitRaveSuitBoots.class)); + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetSpaceSuit.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetSpaceSuit.java new file mode 100644 index 000000000..27f7390e7 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetSpaceSuit.java @@ -0,0 +1,17 @@ +package mineplex.core.gadget.set; + +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.gadgets.outfit.*; +import mineplex.core.gadget.types.GadgetSet; + +public class SetSpaceSuit extends GadgetSet +{ + public SetSpaceSuit(GadgetManager manager) + { + super(manager, "Space Suit", "Coming Soon...", + manager.getGadget(OutfitSpaceSuitHelmet.class), + manager.getGadget(OutfitSpaceSuitChestplate.class), + manager.getGadget(OutfitSpaceSuitLeggings.class), + manager.getGadget(OutfitSpaceSuitBoots.class)); + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ArrowEffectGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ArrowEffectGadget.java index 3513506a9..a32e05163 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ArrowEffectGadget.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ArrowEffectGadget.java @@ -28,7 +28,7 @@ public abstract class ArrowEffectGadget extends Gadget @Override public void EnableCustom(Player player) { - Manager.removeGadetType(player, GadgetType.ArrowTrail); + Manager.removeGadgetType(player, GadgetType.ArrowTrail); _active.add(player); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/DeathEffectGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/DeathEffectGadget.java index 4e04cb807..5e337586c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/DeathEffectGadget.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/DeathEffectGadget.java @@ -17,7 +17,7 @@ public abstract class DeathEffectGadget extends Gadget @Override public void EnableCustom(Player player) { - Manager.removeGadetType(player, GadgetType.Death); + Manager.removeGadgetType(player, GadgetType.Death); _active.add(player); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/DoubleJumpEffectGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/DoubleJumpEffectGadget.java index 59575b97f..f59c0ed50 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/DoubleJumpEffectGadget.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/DoubleJumpEffectGadget.java @@ -19,7 +19,7 @@ public abstract class DoubleJumpEffectGadget extends Gadget @Override public void EnableCustom(Player player) { - Manager.removeGadetType(player, GadgetType.DoubleJump); + Manager.removeGadgetType(player, GadgetType.DoubleJump); _active.add(player); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetSet.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetSet.java index a2f6df54e..234bbc2dd 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetSet.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GadgetSet.java @@ -5,6 +5,7 @@ import java.util.HashSet; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import mineplex.core.common.util.C; @@ -63,13 +64,13 @@ public abstract class GadgetSet implements Listener } } - @EventHandler + @EventHandler(priority = EventPriority.MONITOR) public void onActivate(GadgetEnableEvent event) { checkPlayer(event.getPlayer(), event.getGadget(), true); } - @EventHandler + @EventHandler(priority = EventPriority.MONITOR) public void onDeativate(GadgetDisableEvent event) { checkPlayer(event.getPlayer(), event.getGadget(), false); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/HatGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/HatGadget.java index e7ad0ea37..91d5c2da7 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/HatGadget.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/HatGadget.java @@ -33,7 +33,7 @@ public abstract class HatGadget extends OutfitGadget public void ApplyArmor(Player player) { - Manager.removeGadetType(player, GadgetType.Morph); + Manager.removeGadgetType(player, GadgetType.Morph); Manager.RemoveOutfit(player, _slot); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ItemGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ItemGadget.java index 212964745..639ccea9f 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ItemGadget.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ItemGadget.java @@ -64,7 +64,7 @@ public abstract class ItemGadget extends Gadget public void ApplyItem(Player player, boolean inform) { - Manager.removeGadetType(player, GadgetType.Item); + Manager.removeGadgetType(player, GadgetType.Item); _active.add(player); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/MorphGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/MorphGadget.java index c90606af7..96c19d0ad 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/MorphGadget.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/MorphGadget.java @@ -19,7 +19,7 @@ public abstract class MorphGadget extends Gadget public void ApplyArmor(Player player) { - Manager.removeGadetType(player, GadgetType.Morph); + Manager.removeGadgetType(player, GadgetType.Morph); _active.add(player); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/OutfitGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/OutfitGadget.java index 83c54ac96..1d778742a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/OutfitGadget.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/OutfitGadget.java @@ -34,7 +34,7 @@ public abstract class OutfitGadget extends Gadget public void ApplyArmor(Player player) { - Manager.removeGadetType(player, GadgetType.Morph); + Manager.removeGadgetType(player, GadgetType.Morph); Manager.RemoveOutfit(player, _slot); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ParticleGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ParticleGadget.java index 24444a965..bc807eb48 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ParticleGadget.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ParticleGadget.java @@ -17,7 +17,7 @@ public abstract class ParticleGadget extends Gadget @Override public void EnableCustom(Player player) { - Manager.removeGadetType(player, GadgetType.Particle); + Manager.removeGadgetType(player, GadgetType.Particle); _active.add(player); diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/commands/DisguiseCommand.java b/Plugins/Mineplex.Hub/src/mineplex/hub/commands/DisguiseCommand.java index 16b832c76..bb078b3bb 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/commands/DisguiseCommand.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/commands/DisguiseCommand.java @@ -178,7 +178,7 @@ public class DisguiseCommand extends CommandBase implements Listener changeName(caller, args[0]); - Plugin.GetGadget().removeGadetType(caller, GadgetType.Item); + Plugin.GetGadget().removeGadgetType(caller, GadgetType.Item); UtilPlayer.message(caller, C.cGreen + C.Bold + "Disguise Active: " + ChatColor.RESET + args[0]); } catch(Exception e) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/DisguiseCommand.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/DisguiseCommand.java index f10a8db0d..7111ae370 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/DisguiseCommand.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/DisguiseCommand.java @@ -169,7 +169,7 @@ public class DisguiseCommand extends CommandBase implements Liste changeName(caller, args[0], true); - Plugin.getCosmeticManager().getGadgetManager().removeGadetType(caller, GadgetType.Item); + Plugin.getCosmeticManager().getGadgetManager().removeGadgetType(caller, GadgetType.Item); Bukkit.broadcastMessage(ChatColor.DARK_GRAY + "Quit> " + ChatColor.GRAY + _disguisedPlayersNames.get(caller)); UtilPlayer.message(caller, C.cGreen + C.Bold + "Disguise Active: " + ChatColor.RESET + args[0]); From 40c2fdc3fcf8ea3e39fec317bc983f00f2e1a3c8 Mon Sep 17 00:00:00 2001 From: Cheese Date: Fri, 11 Dec 2015 21:11:35 +1100 Subject: [PATCH 29/81] fixed suits --- .../src/mineplex/core/cosmetic/ui/page/CostumePage.java | 3 ++- .../mineplex/core/gadget/gadgets/outfit/OutfitRaveSuit.java | 6 +++++- .../core/gadget/gadgets/outfit/OutfitSpaceSuit.java | 6 +++++- .../core/gadget/gadgets/outfit/OutfitSpaceSuitBoots.java | 2 +- .../gadget/gadgets/outfit/OutfitSpaceSuitChestplate.java | 2 +- .../core/gadget/gadgets/outfit/OutfitSpaceSuitHelmet.java | 2 +- .../core/gadget/gadgets/outfit/OutfitSpaceSuitLeggings.java | 2 +- 7 files changed, 16 insertions(+), 7 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/CostumePage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/CostumePage.java index bed2836d0..47e4ea4ac 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/CostumePage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/CostumePage.java @@ -52,7 +52,8 @@ public class CostumePage extends GadgetPage if (gadget instanceof OutfitRaveSuit) offset = 0; else if (gadget instanceof OutfitSpaceSuit) offset = 1; - + else offset = 2; + slot = offset + 1 + 18; //1 buffer to left, 18 = 2 lines down if (outfitGadget.GetSlot() == OutfitGadget.ArmorSlot.Chest) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitRaveSuit.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitRaveSuit.java index cd43be616..12d8f46ae 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitRaveSuit.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitRaveSuit.java @@ -12,8 +12,10 @@ import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.LeatherArmorMeta; +import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilGear; import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilText; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.types.OutfitGadget; import mineplex.core.updater.UpdateType; @@ -27,7 +29,9 @@ public class OutfitRaveSuit extends OutfitGadget public OutfitRaveSuit(GadgetManager manager, String name, int cost, ArmorSlot slot, Material mat, byte data) { - super(manager, name, new String[] {ChatColor.RESET + "Wear the complete set for",ChatColor.RESET + "awesome bonus effects!", ChatColor.RESET + "Bonus coming soon..."}, cost, slot, mat, data); + super(manager, name, + UtilText.splitLineToArray("There's nothing more suitable for celebration than this high tech flashing outfit!", LineFormat.LORE), + cost, slot, mat, data); } @Override diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuit.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuit.java index c634500b2..7f0d06ccd 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuit.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuit.java @@ -4,6 +4,8 @@ import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; +import mineplex.core.common.util.LineFormat; +import mineplex.core.common.util.UtilText; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.types.OutfitGadget; @@ -12,7 +14,9 @@ public class OutfitSpaceSuit extends OutfitGadget public OutfitSpaceSuit(GadgetManager manager, String name, int cost, ArmorSlot slot, Material mat, byte data) { - super(manager, name, new String[] {ChatColor.RESET + "Wear the complete set for",ChatColor.RESET + "awesome bonus effects!", ChatColor.RESET + "Bonus coming soon..."}, cost, slot, mat, data); + super(manager, name, + UtilText.splitLineToArray("Designed specifically for combat in space for a sport known as \'Gravity\'", LineFormat.LORE), + cost, slot, mat, data); } @Override diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuitBoots.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuitBoots.java index 58a02b36b..46b242283 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuitBoots.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuitBoots.java @@ -4,7 +4,7 @@ import mineplex.core.gadget.GadgetManager; import org.bukkit.Material; -public class OutfitSpaceSuitBoots extends OutfitRaveSuit +public class OutfitSpaceSuitBoots extends OutfitSpaceSuit { public OutfitSpaceSuitBoots(GadgetManager manager) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuitChestplate.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuitChestplate.java index 5a6d3f807..f2da731f0 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuitChestplate.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuitChestplate.java @@ -4,7 +4,7 @@ import mineplex.core.gadget.GadgetManager; import org.bukkit.Material; -public class OutfitSpaceSuitChestplate extends OutfitRaveSuit +public class OutfitSpaceSuitChestplate extends OutfitSpaceSuit { public OutfitSpaceSuitChestplate(GadgetManager manager) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuitHelmet.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuitHelmet.java index 09fb5ddbb..2d5dabb70 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuitHelmet.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuitHelmet.java @@ -4,7 +4,7 @@ import mineplex.core.gadget.GadgetManager; import org.bukkit.Material; -public class OutfitSpaceSuitHelmet extends OutfitRaveSuit +public class OutfitSpaceSuitHelmet extends OutfitSpaceSuit { public OutfitSpaceSuitHelmet(GadgetManager manager) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuitLeggings.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuitLeggings.java index 650aea844..3f29bced9 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuitLeggings.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuitLeggings.java @@ -4,7 +4,7 @@ import mineplex.core.gadget.GadgetManager; import org.bukkit.Material; -public class OutfitSpaceSuitLeggings extends OutfitRaveSuit +public class OutfitSpaceSuitLeggings extends OutfitSpaceSuit { public OutfitSpaceSuitLeggings(GadgetManager manager) From e01a5369fd627813b7d115f3027991ba47294dc8 Mon Sep 17 00:00:00 2001 From: Cheese Date: Fri, 11 Dec 2015 21:53:39 +1100 Subject: [PATCH 30/81] set bonuses item gadget gui update --- .../src/mineplex/core/antihack/types/Fly.java | 6 +++++ .../core/cosmetic/ui/page/GadgetPage.java | 24 +++++++++++++++---- .../gadget/gadgets/outfit/OutfitRaveSuit.java | 19 ++++++++++++++- .../gadgets/outfit/OutfitSpaceSuit.java | 24 ++++++++++++++++++- .../mineplex/core/gadget/set/SetRaveSuit.java | 2 +- .../core/gadget/set/SetSpaceSuit.java | 2 +- 6 files changed, 68 insertions(+), 9 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/antihack/types/Fly.java b/Plugins/Mineplex.Core/src/mineplex/core/antihack/types/Fly.java index fd7b557af..0941d4a2a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/antihack/types/Fly.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/antihack/types/Fly.java @@ -16,6 +16,8 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.player.PlayerMoveEvent; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; public class Fly extends MiniPlugin implements Detector { @@ -128,6 +130,10 @@ public class Fly extends MiniPlugin implements Detector } } + for (PotionEffect effect : player.getActivePotionEffects()) + if (effect.getType() == PotionEffectType.JUMP || effect.getType().equals(PotionEffectType.JUMP)) + nearBlocks = true; + if (nearBlocks) { count = 0; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java index 6e0e39eb6..e15d9db7b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java @@ -150,11 +150,25 @@ public class GadgetPage extends ShopPageBase if (gadget instanceof ItemGadget) { + ItemGadget itemGadget = (ItemGadget)gadget; + + if (itemGadget.getAmmo().GetCost(CurrencyType.Coins) > 0) + { + itemLore.add(C.cBlack); + itemLore.add(C.cWhite + ((ItemGadget)gadget).getAmmo().GetDisplayName() + " for " + C.cYellow + ((ItemGadget)gadget).getAmmo().GetCost(CurrencyType.Coins) + " Coins"); + + if (getDonationManager().Get(getPlayer().getName()).GetBalance(CurrencyType.Coins) >= itemGadget.getAmmo().GetCost(CurrencyType.Coins)) + { + itemLore.add(C.cGreen + "Right-Click To Purchase"); + } + else + { + itemLore.add(C.cRed + "Not Enough Treasure Shards."); + } + } + itemLore.add(C.cBlack); - itemLore.add(C.cGreen + "Right-Click To Purchase:"); - itemLore.add(C.cWhite + ((ItemGadget)gadget).getAmmo().GetDisplayName() + " for " + C.cYellow + ((ItemGadget)gadget).getAmmo().GetCost(CurrencyType.Coins) + " Coins"); - itemLore.add(C.cBlack); - itemLore.add(C.cWhite + "Your Ammo : " + C.cGreen + getPlugin().getInventoryManager().Get(getPlayer()).getItemCount(gadget.GetName())); + itemLore.add(C.cWhite + "You Have: " + C.cGreen + getPlugin().getInventoryManager().Get(getPlayer()).getItemCount(gadget.GetName())); } if (gadget.ownsGadget(getPlayer())) @@ -196,7 +210,7 @@ public class GadgetPage extends ShopPageBase setItem(slot, new ShopItem(Material.INK_SACK, (byte)8, gadget.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false)); } - else + else { setItem(slot, new ShopItem(Material.INK_SACK, (byte)8, gadget.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false)); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitRaveSuit.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitRaveSuit.java index 12d8f46ae..7ff4e8986 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitRaveSuit.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitRaveSuit.java @@ -11,7 +11,10 @@ import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.LeatherArmorMeta; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; +import mineplex.core.common.util.C; import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilGear; import mineplex.core.common.util.UtilServer; @@ -30,7 +33,7 @@ public class OutfitRaveSuit extends OutfitGadget int cost, ArmorSlot slot, Material mat, byte data) { super(manager, name, - UtilText.splitLineToArray("There's nothing more suitable for celebration than this high tech flashing outfit!", LineFormat.LORE), + UtilText.splitLineToArray(C.cWhite + "There's nothing more suitable for celebration than this high tech flashing outfit!", LineFormat.LORE), cost, slot, mat, data); } @@ -159,4 +162,18 @@ public class OutfitRaveSuit extends OutfitGadget { _colorPhase.remove(event.getPlayer().getName()); } + + @EventHandler + public void setBonus(UpdateEvent event) + { + if (event.getType() != UpdateType.FAST) + return; + + if (GetSlot() != ArmorSlot.Helmet) + return; + + for (Player player : UtilServer.getPlayers()) + if (getSet() != null && getSet().isActive(player)) + player.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 39, 4, true, false), true); + } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuit.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuit.java index 7f0d06ccd..16cb9a226 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuit.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuit.java @@ -3,11 +3,19 @@ package mineplex.core.gadget.gadgets.outfit; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; +import mineplex.core.common.util.C; import mineplex.core.common.util.LineFormat; +import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilText; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.types.OutfitGadget; +import mineplex.core.gadget.types.OutfitGadget.ArmorSlot; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; public class OutfitSpaceSuit extends OutfitGadget { @@ -15,7 +23,7 @@ public class OutfitSpaceSuit extends OutfitGadget int cost, ArmorSlot slot, Material mat, byte data) { super(manager, name, - UtilText.splitLineToArray("Designed specifically for combat in space for a sport known as \'Gravity\'", LineFormat.LORE), + UtilText.splitLineToArray(C.cWhite + "Designed specifically for combat in deep space for a sport known as \'Gravity\'", LineFormat.LORE), cost, slot, mat, data); } @@ -30,4 +38,18 @@ public class OutfitSpaceSuit extends OutfitGadget { RemoveArmor(player); } + + @EventHandler + public void setBonus(UpdateEvent event) + { + if (event.getType() != UpdateType.FAST) + return; + + if (GetSlot() != ArmorSlot.Helmet) + return; + + for (Player player : UtilServer.getPlayers()) + if (getSet() != null && getSet().isActive(player)) + player.addPotionEffect(new PotionEffect(PotionEffectType.JUMP, 39, 7, true, false), true); + } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetRaveSuit.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetRaveSuit.java index 8dd0f874c..ea01fa10a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetRaveSuit.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetRaveSuit.java @@ -8,7 +8,7 @@ public class SetRaveSuit extends GadgetSet { public SetRaveSuit(GadgetManager manager) { - super(manager, "Rave Suit", "Coming Soon...", + super(manager, "Rave Suit", "Hyper Speed", manager.getGadget(OutfitRaveSuitHelmet.class), manager.getGadget(OutfitRaveSuitChestplate.class), manager.getGadget(OutfitRaveSuitLeggings.class), diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetSpaceSuit.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetSpaceSuit.java index 27f7390e7..492b7a11f 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetSpaceSuit.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetSpaceSuit.java @@ -8,7 +8,7 @@ public class SetSpaceSuit extends GadgetSet { public SetSpaceSuit(GadgetManager manager) { - super(manager, "Space Suit", "Coming Soon...", + super(manager, "Space Suit", "Low Gravity", manager.getGadget(OutfitSpaceSuitHelmet.class), manager.getGadget(OutfitSpaceSuitChestplate.class), manager.getGadget(OutfitSpaceSuitLeggings.class), From 7c432461c93379b62cebf603db3629574b1ce291 Mon Sep 17 00:00:00 2001 From: Cheese Date: Fri, 11 Dec 2015 22:25:14 +1100 Subject: [PATCH 31/81] changed coal item rewards to 3 tier :) --- .../core/cosmetic/ui/page/GadgetPage.java | 31 +++- .../core/gadget/gadgets/hat/HatCoal.java | 4 +- .../core/gadget/gadgets/item/ItemCoal.java | 159 +++++++++++++----- .../core/gadget/types/ItemGadget.java | 7 +- .../core/pet/types/PetCoalApparition.java | 2 +- 5 files changed, 158 insertions(+), 45 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java index e15d9db7b..8b89c1c83 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java @@ -148,10 +148,15 @@ public class GadgetPage extends ShopPageBase } } + //Special case for item gadgets! if (gadget instanceof ItemGadget) { ItemGadget itemGadget = (ItemGadget)gadget; + itemLore.add(C.cBlack); + itemLore.add(C.cWhite + "You Have: " + C.cGreen + getPlugin().getInventoryManager().Get(getPlayer()).getItemCount(gadget.GetName())); + + boolean canAffordAmmo = true; if (itemGadget.getAmmo().GetCost(CurrencyType.Coins) > 0) { itemLore.add(C.cBlack); @@ -164,13 +169,26 @@ public class GadgetPage extends ShopPageBase else { itemLore.add(C.cRed + "Not Enough Treasure Shards."); + canAffordAmmo = false; } } - itemLore.add(C.cBlack); - itemLore.add(C.cWhite + "You Have: " + C.cGreen + getPlugin().getInventoryManager().Get(getPlayer()).getItemCount(gadget.GetName())); + if (itemGadget.hasAmmo(getPlayer())) + { + itemLore.add(C.cBlack); + itemLore.add(C.cGreen + "Left-Click to Enable"); + + addButton(slot, new ShopItem(gadget.GetDisplayMaterial(), gadget.GetDisplayData(), gadget.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, false, false), new ActivateGadgetButton(gadget, this)); + } + else + { + addButton(slot, new ShopItem(gadget.GetDisplayMaterial(), gadget.GetDisplayData(), gadget.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false), new ActivateGadgetButton(gadget, this)); + } + + return; } + //Standard if (gadget.ownsGadget(getPlayer())) { if (gadget.GetActive().contains(getPlayer())) @@ -219,6 +237,15 @@ public class GadgetPage extends ShopPageBase public void purchaseGadget(final Player player, final Gadget gadget) { + //Dont allow purchase! + if (gadget instanceof ItemGadget) + { + ItemGadget itemGadget = (ItemGadget)gadget; + + if (itemGadget.getAmmo().GetCost(CurrencyType.Coins) < 0) + return; + } + if(getClientManager().Get(player).isDisguised()) { UtilPlayer.message(player, F.main("Disguise", "You cant buy things while you are disguised!")); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatCoal.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatCoal.java index 9a39e59f5..7897272a8 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatCoal.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatCoal.java @@ -14,9 +14,9 @@ public class HatCoal extends HatGadget public HatCoal(GadgetManager manager) { - super(manager, "Lump of Coal", + super(manager, "Lump of Coal Hat", UtilText.splitLineToArray(C.cGray + "When life gives you coal, make a wierd cube hat out it!", LineFormat.LORE), - -3, + -1, new ItemStack(Material.COAL_BLOCK)); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java index 157ed982b..7358fe3da 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java @@ -3,6 +3,7 @@ package mineplex.core.gadget.gadgets.item; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.Sound; +import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.block.Action; @@ -24,67 +25,147 @@ import mineplex.core.common.util.UtilText; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.event.ItemGadgetOutOfAmmoEvent; import mineplex.core.gadget.gadgets.Ammo; +import mineplex.core.gadget.gadgets.hat.HatCoal; +import mineplex.core.gadget.gadgets.particle.ParticleCoalFumes; import mineplex.core.gadget.types.ItemGadget; import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.recharge.Recharge; public class ItemCoal extends ItemGadget { - + public String[] Messages = new String[] { - "Maybe you could.... eat it?", - "Yep, you're holding some coal...", - "This sure is a nice piece of coal!", - "Na na na na Na na na na " + C.cDGray + "BLACK COAL" + C.mBody + "!", - "Did you know that coal can be used for " + C.Scramble + "nothing" + C.mBody + "!", + "Maybe you could.... eat it?", + "Yep, you're holding some coal...", + "This sure is a nice piece of coal!", + "Na na na na, Na na na na, " + C.cDGray + "BLACK COAL" + C.cGray + "!", + "Did you know that coal can be used for " + C.Scramble + "nothing" + C.mBody + "!", + "Now... if only you had a furnace.", + "I hope you didn’t miss any diamonds.", + "With 9 of these you could make a block!", + "Were you really that naughty this year?", + "With a few more of these you could make a snowman face!", + "Lava is hotter but Coal is quicker.", + "What do you even need Coal for on a Minigame server?", + "Maybe if I got more I could start a really big fire.", + "Maybe you can give this to your siblings next Christmas.", + "Did you know a diamond is formed from coal?", + "Coal is a word that sounds weird if you say it too much.", + "Who do you think mined the first block of coal?" }; public ItemCoal(GadgetManager manager) { super(manager, "Coal", - UtilText.splitLineToArray(C.cGray + "", LineFormat.LORE) - , -1, Material.COAL, (byte) 0, 1000, new Ammo("Coal", "1 Piece of Coal", Material.COAL, (byte) 0, new String[] - { - C.cDGray + "Exclusive Coal!", + UtilText.splitLineToArray(C.cGray + "Just a large chunk of coal. Maybe you were naughty or something?", LineFormat.LORE) + , -1, Material.COAL, (byte) 0, 1000, new Ammo("Coal", "1 Piece of Coal", Material.COAL, (byte) 0, new String[] + { + C.cDGray + "Exclusive Coal!", C.cDGray + "Earned by beeing naughty" - } - , 1, 1)); + } + , -1, 1)); } @Override public void ActivateCustom(final Player player) { - if(Manager.getInventoryManager().Get(player).getItemCount(GetName()) >= 1000) + //Coal Hat + if (!Manager.getGadget(HatCoal.class).ownsGadget(player)) { - Manager.getInventoryManager().addItemToInventory(new Callback() + if(Manager.getInventoryManager().Get(player).getItemCount(GetName()) >= 50) { - @Override - public void run(Boolean data) - { - if(data) + Manager.getInventoryManager().addItemToInventory(new Callback() + { + @Override + public void run(Boolean data) { - player.sendMessage(F.main("Coal", "You unlocked " + C.cGreen + "Legendary Coal Fumes" + C.cGray + ".")); - UtilParticle.PlayParticleToAll(ParticleType.LARGE_SMOKE, player.getLocation().add(0, 0.5, 0), 0.2f, 0.5f, 0.2f, 0, 500, ViewDist.LONG); - UtilParticle.PlayParticleToAll(ParticleType.LARGE_SMOKE, player.getLocation(), 1.5f, 0.0f, 1.5f, 0, 500, ViewDist.LONG); - player.getWorld().playSound(player.getLocation(), Sound.WITHER_DEATH, 0.8f, 0); - - Manager.getInventoryManager().addItemToInventory(player, GetName(), -1000); - player.getInventory().setItem(Manager.getActiveItemSlot(), ItemStackFactory.Instance.CreateStack(GetDisplayMaterial(), GetDisplayData(), 1, F.item(Manager.getInventoryManager().Get(player).getItemCount(GetName()) + " " + GetName()))); - } else { - player.sendMessage("Something went wrong..."); + if(data) + { + player.sendMessage(F.main("Coal", "You unlocked " + C.cGreen + "Legendary Coal Hat" + C.cGray + ".")); + UtilParticle.PlayParticleToAll(ParticleType.LARGE_SMOKE, player.getLocation().add(0, 0.5, 0), 0.1f, 0.5f, 0.1f, 0, 100, ViewDist.LONG); + UtilParticle.PlayParticleToAll(ParticleType.LARGE_SMOKE, player.getLocation(), 0.5f, 0.0f, 0.5f, 0, 100, ViewDist.LONG); + player.getWorld().playSound(player.getLocation(), Sound.WITHER_DEATH, 0.8f, 0); + + Manager.getInventoryManager().addItemToInventory(player, GetName(), -50); + player.getInventory().setItem(Manager.getActiveItemSlot(), ItemStackFactory.Instance.CreateStack(GetDisplayMaterial(), GetDisplayData(), 1, F.item(Manager.getInventoryManager().Get(player).getItemCount(GetName()) + " " + GetName()))); + } + else + { + player.sendMessage("Something went wrong..."); + } } - } - }, player, "Coal Fumes", 1); - return; + }, player, "Lump of Coal Hat", 1); + return; + } } - + + //Coal Apparition + if (!Manager.getPetManager().Get(player).GetPets().containsKey(EntityType.PIG_ZOMBIE)) + { + if(Manager.getInventoryManager().Get(player).getItemCount(GetName()) >= 500) + { + Manager.getInventoryManager().addItemToInventory(new Callback() + { + @Override + public void run(Boolean data) + { + if(data) + { + player.sendMessage(F.main("Coal", "You unlocked " + C.cGreen + "Legendary Coal Apparition Pet" + C.cGray + ".")); + UtilParticle.PlayParticleToAll(ParticleType.LARGE_SMOKE, player.getLocation().add(0, 0.5, 0), 0.15f, 0.5f, 0.15f, 0, 250, ViewDist.LONG); + UtilParticle.PlayParticleToAll(ParticleType.LARGE_SMOKE, player.getLocation(), 1f, 0.0f, 1f, 0, 250, ViewDist.LONG); + player.getWorld().playSound(player.getLocation(), Sound.WITHER_DEATH, 0.8f, 0); + + Manager.getInventoryManager().addItemToInventory(player, GetName(), -500); + player.getInventory().setItem(Manager.getActiveItemSlot(), ItemStackFactory.Instance.CreateStack(GetDisplayMaterial(), GetDisplayData(), 1, F.item(Manager.getInventoryManager().Get(player).getItemCount(GetName()) + " " + GetName()))); + } + else + { + player.sendMessage("Something went wrong..."); + } + } + }, player, "Coal Apparition", 1); + return; + } + } + + //Coal Particle + if (!Manager.getGadget(ParticleCoalFumes.class).ownsGadget(player)) + { + if(Manager.getInventoryManager().Get(player).getItemCount(GetName()) >= 1000) + { + Manager.getInventoryManager().addItemToInventory(new Callback() + { + @Override + public void run(Boolean data) + { + if(data) + { + player.sendMessage(F.main("Coal", "You unlocked " + C.cRed + "Mythical Coal Fumes Particle" + C.cGray + ".")); + UtilParticle.PlayParticleToAll(ParticleType.LARGE_SMOKE, player.getLocation().add(0, 0.5, 0), 0.2f, 0.5f, 0.2f, 0, 500, ViewDist.LONG); + UtilParticle.PlayParticleToAll(ParticleType.LARGE_SMOKE, player.getLocation(), 1.5f, 0.0f, 1.5f, 0, 500, ViewDist.LONG); + player.getWorld().playSound(player.getLocation(), Sound.WITHER_DEATH, 0.8f, 0); + + Manager.getInventoryManager().addItemToInventory(player, GetName(), -1000); + player.getInventory().setItem(Manager.getActiveItemSlot(), ItemStackFactory.Instance.CreateStack(GetDisplayMaterial(), GetDisplayData(), 1, F.item(Manager.getInventoryManager().Get(player).getItemCount(GetName()) + " " + GetName()))); + } + else + { + player.sendMessage("Something went wrong..."); + } + } + }, player, "Coal Fumes", 1); + return; + } + } + int i = UtilMath.r(Messages.length); String msg = Messages[i]; player.sendMessage(F.main("Coal", msg)); player.playSound(player.getLocation(), Sound.GHAST_FIREBALL, 0.2f, 1.5f*(i/(float)Messages.length)); } - + @EventHandler @Override public void Activate(PlayerInteractEvent event) { @@ -101,21 +182,21 @@ public class ItemCoal extends ItemGadget if (!IsActive(player)) return; - + event.setCancelled(true); - + //Stock if (Manager.getInventoryManager().Get(player).getItemCount(GetName()) <= 0) { - + UtilPlayer.message(player, F.main("Gadget", "You do not have any " + GetName() + " left.")); - + ItemGadgetOutOfAmmoEvent ammoEvent = new ItemGadgetOutOfAmmoEvent(event.getPlayer(), this); Bukkit.getServer().getPluginManager().callEvent(ammoEvent); - + return; } - + //Recharge if (!Recharge.Instance.use(player, GetName(), GetName(), _recharge, _recharge > 1000, true, false, true, "Cosmetics")) { @@ -124,7 +205,7 @@ public class ItemCoal extends ItemGadget } player.getInventory().setItem(Manager.getActiveItemSlot(), ItemStackFactory.Instance.CreateStack(GetDisplayMaterial(), GetDisplayData(), 1, F.item(Manager.getInventoryManager().Get(player).getItemCount(GetName()) + " " + GetName()))); - + ActivateCustom(event.getPlayer()); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ItemGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ItemGadget.java index 639ccea9f..b0d7bdae6 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ItemGadget.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/ItemGadget.java @@ -141,7 +141,7 @@ public abstract class ItemGadget extends Gadget event.setCancelled(true); //Stock - if (Manager.getInventoryManager().Get(player).getItemCount(GetName()) <= 0) + if (!hasAmmo(player)) { UtilPlayer.message(player, F.main("Gadget", "You do not have any " + GetName() + " left.")); @@ -165,6 +165,11 @@ public abstract class ItemGadget extends Gadget ActivateCustom(event.getPlayer()); } + + public boolean hasAmmo(Player player) + { + return Manager.getInventoryManager().Get(player).getItemCount(GetName()) > 0; + } public abstract void ActivateCustom(Player player); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/pet/types/PetCoalApparition.java b/Plugins/Mineplex.Core/src/mineplex/core/pet/types/PetCoalApparition.java index 5c0b7ed82..7d787f744 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/pet/types/PetCoalApparition.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/pet/types/PetCoalApparition.java @@ -8,7 +8,7 @@ public class PetCoalApparition extends Pet { public PetCoalApparition() { - super("Coal Apparition", EntityType.PIG_ZOMBIE, 10); + super("Coal Apparition", EntityType.PIG_ZOMBIE, -1); } } From 39f5f70a5f1acf5c4dac27c1c9fc813b103dd71c Mon Sep 17 00:00:00 2001 From: Cheese Date: Fri, 11 Dec 2015 22:43:34 +1100 Subject: [PATCH 32/81] fixing up coal things --- .../core/gadget/gadgets/item/ItemCoal.java | 43 +++++++++++++------ .../core/inventory/InventoryManager.java | 13 +++++- 2 files changed, 43 insertions(+), 13 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java index 7358fe3da..a9e9ea591 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java @@ -30,6 +30,9 @@ import mineplex.core.gadget.gadgets.particle.ParticleCoalFumes; import mineplex.core.gadget.types.ItemGadget; import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.recharge.Recharge; +import mineplex.core.reward.RewardData; +import mineplex.core.reward.RewardRarity; +import mineplex.core.reward.rewards.PetReward; public class ItemCoal extends ItemGadget { @@ -75,6 +78,9 @@ public class ItemCoal extends ItemGadget { if(Manager.getInventoryManager().Get(player).getItemCount(GetName()) >= 50) { + Recharge.Instance.recharge(player, GetName()); + Recharge.Instance.use(player, GetName(), 60000, true, true); + Manager.getInventoryManager().addItemToInventory(new Callback() { @Override @@ -89,6 +95,8 @@ public class ItemCoal extends ItemGadget Manager.getInventoryManager().addItemToInventory(player, GetName(), -50); player.getInventory().setItem(Manager.getActiveItemSlot(), ItemStackFactory.Instance.CreateStack(GetDisplayMaterial(), GetDisplayData(), 1, F.item(Manager.getInventoryManager().Get(player).getItemCount(GetName()) + " " + GetName()))); + + Manager.getDonationManager().Get(player).AddUnknownSalesPackagesOwned("Lump of Coal Hat"); } else { @@ -105,12 +113,20 @@ public class ItemCoal extends ItemGadget { if(Manager.getInventoryManager().Get(player).getItemCount(GetName()) >= 500) { - Manager.getInventoryManager().addItemToInventory(new Callback() - { - @Override - public void run(Boolean data) - { - if(data) + Recharge.Instance.recharge(player, GetName()); + Recharge.Instance.use(player, GetName(), 60000, true, true); + + PetReward reward = new PetReward( + Manager.getPetManager(), + Manager.getInventoryManager(), + Manager.getDonationManager(), + "Coal Apparition", "Coal Apparition", EntityType.PIG_ZOMBIE, RewardRarity.OTHER, 0); + + if (reward.canGiveReward(player)) + reward.giveReward(null, player, new Callback() + { + @Override + public void run(RewardData data) { player.sendMessage(F.main("Coal", "You unlocked " + C.cGreen + "Legendary Coal Apparition Pet" + C.cGray + ".")); UtilParticle.PlayParticleToAll(ParticleType.LARGE_SMOKE, player.getLocation().add(0, 0.5, 0), 0.15f, 0.5f, 0.15f, 0, 250, ViewDist.LONG); @@ -119,13 +135,11 @@ public class ItemCoal extends ItemGadget Manager.getInventoryManager().addItemToInventory(player, GetName(), -500); player.getInventory().setItem(Manager.getActiveItemSlot(), ItemStackFactory.Instance.CreateStack(GetDisplayMaterial(), GetDisplayData(), 1, F.item(Manager.getInventoryManager().Get(player).getItemCount(GetName()) + " " + GetName()))); - } - else - { - player.sendMessage("Something went wrong..."); + + Manager.getDonationManager().Get(player).AddUnknownSalesPackagesOwned("Coal Apparition"); } - } - }, player, "Coal Apparition", 1); + }); + return; } } @@ -135,6 +149,9 @@ public class ItemCoal extends ItemGadget { if(Manager.getInventoryManager().Get(player).getItemCount(GetName()) >= 1000) { + Recharge.Instance.recharge(player, GetName()); + Recharge.Instance.use(player, GetName(), 60000, true, true); + Manager.getInventoryManager().addItemToInventory(new Callback() { @Override @@ -149,6 +166,8 @@ public class ItemCoal extends ItemGadget Manager.getInventoryManager().addItemToInventory(player, GetName(), -1000); player.getInventory().setItem(Manager.getActiveItemSlot(), ItemStackFactory.Instance.CreateStack(GetDisplayMaterial(), GetDisplayData(), 1, F.item(Manager.getInventoryManager().Get(player).getItemCount(GetName()) + " " + GetName()))); + + Manager.getDonationManager().Get(player).AddUnknownSalesPackagesOwned("Coal Fumes"); } else { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/inventory/InventoryManager.java b/Plugins/Mineplex.Core/src/mineplex/core/inventory/InventoryManager.java index 0a32aa977..a1d19bd53 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/inventory/InventoryManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/inventory/InventoryManager.java @@ -138,7 +138,18 @@ public class InventoryManager extends MiniDbClientPlugin { public void run() { - addItemToInventoryForOffline(callback, PlayerCache.getInstance().getPlayer(uuid).getAccountId(), item, count); + try + { + addItemToInventoryForOffline(callback, PlayerCache.getInstance().getPlayer(uuid).getAccountId(), item, count); + } + catch (Exception e) + { + e.printStackTrace(); + + System.out.println("-----DEBUG-----"); + System.out.println("PlayerCache Instance: " + (PlayerCache.getInstance() == null)); + System.out.println("PlayerCache Player Object: " + (PlayerCache.getInstance().getPlayer(uuid) == null)); + } } }); } From d5612a8f2758e5e6f94e9e4df66c12346eea58d3 Mon Sep 17 00:00:00 2001 From: Cheese Date: Fri, 11 Dec 2015 23:09:06 +1100 Subject: [PATCH 33/81] added a hint to how many more coal you need to your next prize. --- .../core/gadget/gadgets/item/ItemCoal.java | 53 +++++++++++++------ 1 file changed, 37 insertions(+), 16 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java index a9e9ea591..5126b1f92 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java @@ -73,13 +73,17 @@ public class ItemCoal extends ItemGadget @Override public void ActivateCustom(final Player player) { + int goal = -1; + //Coal Hat if (!Manager.getGadget(HatCoal.class).ownsGadget(player)) { - if(Manager.getInventoryManager().Get(player).getItemCount(GetName()) >= 50) + goal = 250; + + if(Manager.getInventoryManager().Get(player).getItemCount(GetName()) >= 250) { Recharge.Instance.recharge(player, GetName()); - Recharge.Instance.use(player, GetName(), 60000, true, true); + Recharge.Instance.use(player, GetName(), 30000, true, true); Manager.getInventoryManager().addItemToInventory(new Callback() { @@ -88,12 +92,12 @@ public class ItemCoal extends ItemGadget { if(data) { - player.sendMessage(F.main("Coal", "You unlocked " + C.cGreen + "Legendary Coal Hat" + C.cGray + ".")); + Bukkit.broadcastMessage(F.main("Treasure", C.cGreen + player.getName() + C.cGray + " crafted " + C.cGreen + "Legendary Coal Hat")); UtilParticle.PlayParticleToAll(ParticleType.LARGE_SMOKE, player.getLocation().add(0, 0.5, 0), 0.1f, 0.5f, 0.1f, 0, 100, ViewDist.LONG); UtilParticle.PlayParticleToAll(ParticleType.LARGE_SMOKE, player.getLocation(), 0.5f, 0.0f, 0.5f, 0, 100, ViewDist.LONG); player.getWorld().playSound(player.getLocation(), Sound.WITHER_DEATH, 0.8f, 0); - Manager.getInventoryManager().addItemToInventory(player, GetName(), -50); + Manager.getInventoryManager().addItemToInventory(player, GetName(), -250); player.getInventory().setItem(Manager.getActiveItemSlot(), ItemStackFactory.Instance.CreateStack(GetDisplayMaterial(), GetDisplayData(), 1, F.item(Manager.getInventoryManager().Get(player).getItemCount(GetName()) + " " + GetName()))); Manager.getDonationManager().Get(player).AddUnknownSalesPackagesOwned("Lump of Coal Hat"); @@ -111,10 +115,12 @@ public class ItemCoal extends ItemGadget //Coal Apparition if (!Manager.getPetManager().Get(player).GetPets().containsKey(EntityType.PIG_ZOMBIE)) { - if(Manager.getInventoryManager().Get(player).getItemCount(GetName()) >= 500) + goal = 1000; + + if(Manager.getInventoryManager().Get(player).getItemCount(GetName()) >= 1000) { Recharge.Instance.recharge(player, GetName()); - Recharge.Instance.use(player, GetName(), 60000, true, true); + Recharge.Instance.use(player, GetName(), 30000, true, true); PetReward reward = new PetReward( Manager.getPetManager(), @@ -128,12 +134,12 @@ public class ItemCoal extends ItemGadget @Override public void run(RewardData data) { - player.sendMessage(F.main("Coal", "You unlocked " + C.cGreen + "Legendary Coal Apparition Pet" + C.cGray + ".")); + Bukkit.broadcastMessage(F.main("Treasure", C.cGreen + player.getName() + C.cGray + " crafted " + C.cGreen + "Legendary Coal Apparition Pet")); UtilParticle.PlayParticleToAll(ParticleType.LARGE_SMOKE, player.getLocation().add(0, 0.5, 0), 0.15f, 0.5f, 0.15f, 0, 250, ViewDist.LONG); UtilParticle.PlayParticleToAll(ParticleType.LARGE_SMOKE, player.getLocation(), 1f, 0.0f, 1f, 0, 250, ViewDist.LONG); player.getWorld().playSound(player.getLocation(), Sound.WITHER_DEATH, 0.8f, 0); - Manager.getInventoryManager().addItemToInventory(player, GetName(), -500); + Manager.getInventoryManager().addItemToInventory(player, GetName(), -1000); player.getInventory().setItem(Manager.getActiveItemSlot(), ItemStackFactory.Instance.CreateStack(GetDisplayMaterial(), GetDisplayData(), 1, F.item(Manager.getInventoryManager().Get(player).getItemCount(GetName()) + " " + GetName()))); Manager.getDonationManager().Get(player).AddUnknownSalesPackagesOwned("Coal Apparition"); @@ -147,10 +153,12 @@ public class ItemCoal extends ItemGadget //Coal Particle if (!Manager.getGadget(ParticleCoalFumes.class).ownsGadget(player)) { - if(Manager.getInventoryManager().Get(player).getItemCount(GetName()) >= 1000) + goal = 2500; + + if(Manager.getInventoryManager().Get(player).getItemCount(GetName()) >= 2500) { Recharge.Instance.recharge(player, GetName()); - Recharge.Instance.use(player, GetName(), 60000, true, true); + Recharge.Instance.use(player, GetName(), 30000, true, true); Manager.getInventoryManager().addItemToInventory(new Callback() { @@ -159,12 +167,12 @@ public class ItemCoal extends ItemGadget { if(data) { - player.sendMessage(F.main("Coal", "You unlocked " + C.cRed + "Mythical Coal Fumes Particle" + C.cGray + ".")); + Bukkit.broadcastMessage(F.main("Treasure", C.cRed + player.getName() + C.cGray + " crafted " + C.cRed + "Mythical Coal Fumes Particles")); UtilParticle.PlayParticleToAll(ParticleType.LARGE_SMOKE, player.getLocation().add(0, 0.5, 0), 0.2f, 0.5f, 0.2f, 0, 500, ViewDist.LONG); UtilParticle.PlayParticleToAll(ParticleType.LARGE_SMOKE, player.getLocation(), 1.5f, 0.0f, 1.5f, 0, 500, ViewDist.LONG); player.getWorld().playSound(player.getLocation(), Sound.WITHER_DEATH, 0.8f, 0); - Manager.getInventoryManager().addItemToInventory(player, GetName(), -1000); + Manager.getInventoryManager().addItemToInventory(player, GetName(), -2500); player.getInventory().setItem(Manager.getActiveItemSlot(), ItemStackFactory.Instance.CreateStack(GetDisplayMaterial(), GetDisplayData(), 1, F.item(Manager.getInventoryManager().Get(player).getItemCount(GetName()) + " " + GetName()))); Manager.getDonationManager().Get(player).AddUnknownSalesPackagesOwned("Coal Fumes"); @@ -179,10 +187,23 @@ public class ItemCoal extends ItemGadget } } - int i = UtilMath.r(Messages.length); - String msg = Messages[i]; - player.sendMessage(F.main("Coal", msg)); - player.playSound(player.getLocation(), Sound.GHAST_FIREBALL, 0.2f, 1.5f*(i/(float)Messages.length)); + goal -= Manager.getInventoryManager().Get(player).getItemCount(GetName()); + + if (goal > 0 && Math.random() > 0.95) + { + player.sendMessage(F.main("Coal", "Only " + goal + " to go...")); + + player.playSound(player.getLocation(), Sound.IRONGOLEM_DEATH, 0.2f, 0.5f); + } + else + { + + int i = UtilMath.r(Messages.length); + String msg = Messages[i]; + player.sendMessage(F.main("Coal", msg)); + + player.playSound(player.getLocation(), Sound.GHAST_FIREBALL, 0.2f, 1.5f*(i/(float)Messages.length)); + } } @EventHandler @Override From 2ffd1d4595d9d3c59209448d27cee59523cf10ef Mon Sep 17 00:00:00 2001 From: Cheese Date: Fri, 11 Dec 2015 23:11:33 +1100 Subject: [PATCH 34/81] BOB ROSS --- .../src/mineplex/core/gadget/gadgets/item/ItemCoal.java | 3 ++- .../src/mineplex/core/gadget/gadgets/item/ItemPaintbrush.java | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java index 5126b1f92..e0585758a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemCoal.java @@ -55,7 +55,8 @@ public class ItemCoal extends ItemGadget "Maybe you can give this to your siblings next Christmas.", "Did you know a diamond is formed from coal?", "Coal is a word that sounds weird if you say it too much.", - "Who do you think mined the first block of coal?" + "Who do you think mined the first block of coal?", + "Maybe if you get enough, something cool will happen! Or perhaps not...", }; public ItemCoal(GadgetManager manager) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPaintbrush.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPaintbrush.java index 2815a9b5e..790a66d44 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPaintbrush.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPaintbrush.java @@ -200,7 +200,7 @@ public class ItemPaintbrush extends ItemGadget Villager villager = (Villager)event.getRightClicked(); - if (villager.getCustomName() != null && villager.getCustomName().contains("Painter")) + if (villager.getCustomName() != null && villager.getCustomName().contains("Bob Ross")) { Enable(event.getPlayer()); } From ba087d119a0860b13da482aadd5de1753ef53537 Mon Sep 17 00:00:00 2001 From: xGamingDudex Date: Fri, 11 Dec 2015 17:31:05 +0100 Subject: [PATCH 35/81] Small tweaks --- .../src/mineplex/core/cosmetic/ui/page/Menu.java | 4 ++-- .../gadget/gadgets/item/ItemPartyPopper.java | 16 ++++++++-------- .../core/gadget/gadgets/item/ItemSnowball.java | 2 +- .../gadgets/particle/ParticleCoalFumes.java | 9 +++++---- .../core/mount/types/MountBabyReindeer.java | 2 +- 5 files changed, 17 insertions(+), 16 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java index 143794f24..79edde702 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java @@ -47,7 +47,7 @@ public class Menu extends ShopPageBase @Override protected void buildPage() { - Donor donor = getDonationManager().Get(getPlayer()); +// Donor donor = getDonationManager().Get(getPlayer()); // addItem(2, new ShopItem(CurrencyType.Gems.GetDisplayMaterial(), donor.GetGems() + " Gems", new String[] { // " " @@ -83,7 +83,7 @@ public class Menu extends ShopPageBase addButton(46, new ShopItem(Material.GOLD_HELMET, "Hats", 1, false), new OpenHats(this)); addButton(48, new ShopItem(Material.DIAMOND_CHESTPLATE, "Costumes", 1, false), new OpenCostumes(this)); addButton(50, new ShopItem(Material.GREEN_RECORD, "Music", 1, false), new OpenMusic(this)); - addButton(52, new ShopItem(Material.NAME_TAG, "Taunts", 1, false), new IButton() + addButton(52, new ShopItem(Material.NAME_TAG, "Taunts", new String[]{C.Bold + "", C.cDGreen + C.Italics + "Coming soon!"}, 1, false), new IButton() { @Override public void onClick(Player player, ClickType clickType) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPartyPopper.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPartyPopper.java index 2a44e16da..ee3530375 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPartyPopper.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPartyPopper.java @@ -9,16 +9,15 @@ import org.bukkit.entity.Item; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; +import org.bukkit.util.Vector; import mineplex.core.common.util.C; -import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.gadgets.Ammo; import mineplex.core.gadget.types.ItemGadget; -import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.projectile.IThrown; import mineplex.core.projectile.ProjectileUser; import mineplex.core.updater.UpdateType; @@ -43,19 +42,20 @@ public class ItemPartyPopper extends ItemGadget implements IThrown @Override public void ActivateCustom(Player player) { - + /* Item ent = player.getWorld().dropItem(player.getEyeLocation().add(player.getLocation().getDirection()), ItemStackFactory.Instance.CreateStack(Material.REDSTONE_LAMP_OFF, (byte)0, 1, "Lamp" + Math.random())); UtilAction.velocity(ent, player.getLocation().getDirection().normalize().multiply(0.1), 1, false, 0, 0.2, 10, false); Manager.getProjectileManager().AddThrow(ent, player, this, 3000, false, false, true, true, 0.5f); + */ + - /* for(int data : new int[]{1,2,4,5,6,9,10,11,12,13,14,15}) { - UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.INK_SACK, data), player.getEyeLocation(), null, 0.4f, 50, ViewDist.LONG); - /* +// UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.INK_SACK, data), player.getEyeLocation(), null, 0.4f, 50, ViewDist.LONG); + for(int i = 0; i < 10; i++) { Vector v = new Vector(Math.random() - 0.5, Math.random() - 0.3, Math.random() - 0.5); @@ -75,12 +75,12 @@ public class ItemPartyPopper extends ItemGadget implements IThrown Vector random = new Vector(Math.random() - 0.5, Math.random() - 0.3, Math.random() - 0.5); random.normalize(); random.multiply(0.05); - + UtilAction.velocity(ent, player.getLocation().getDirection().normalize().multiply(0.3).add(random), 1 + 0.4 * Math.random(), false, 0, 0.2, 10, false); Manager.getProjectileManager().AddThrow(ent, player, this, 3000, false, false, true, true, 0.5f); */ -// } + } // Sound for(int i = 0; i < 3; i++) { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemSnowball.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemSnowball.java index ce1f5dc79..447d7ea2e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemSnowball.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemSnowball.java @@ -54,7 +54,7 @@ public class ItemSnowball extends ItemGadget if(gevent.isCancelled()) return; - UtilAction.velocity(event.getEntity(), event.getDamager().getVelocity().normalize().add(new Vector(0,0.5,0))); + UtilAction.velocity(event.getEntity(), event.getDamager().getVelocity().normalize().add(new Vector(0,0.5,0)).multiply(0.5)); event.getDamager().getWorld().playSound(event.getDamager().getLocation(), Sound.STEP_SNOW, 1, 0.5f); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCoalFumes.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCoalFumes.java index 04ccec81d..edfb6cf62 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCoalFumes.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCoalFumes.java @@ -29,12 +29,13 @@ public class ParticleCoalFumes extends ParticleGadget { if(event.getType() != UpdateType.TICK) return; - int dur = 200; - int tick = Math.abs(event.getTick()%dur); +// int dur = 200; +// int tick = Math.abs(event.getTick()%dur); - double d = tick/(double)dur; - float xz = (float) Math.sin(d*Math.PI); +// double d = tick/(double)dur; +// float xz = (float) Math.sin(d*Math.PI); + float xz = 2; for(Player p : GetActive()) { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountBabyReindeer.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountBabyReindeer.java index 0c5b84e98..9293a0636 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountBabyReindeer.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountBabyReindeer.java @@ -33,7 +33,7 @@ public class MountBabyReindeer extends HorseMount { C.cWhite + "One of Santa's baby reindeers", C.cWhite + "Still trying to learn how to fly" - }, Material.SNOW_BALL, (byte) 0, 10, Color.CREAMY, Style.WHITEFIELD, Variant.HORSE, 0, null); + }, Material.GOLDEN_CARROT, (byte) 0, 10, Color.CREAMY, Style.WHITEFIELD, Variant.HORSE, 0, null); } @EventHandler From 905842848492083df0f11b39e1ce47a7f00f68ec Mon Sep 17 00:00:00 2001 From: libraryaddict Date: Sun, 13 Dec 2015 16:40:46 +1300 Subject: [PATCH 36/81] Change ItemBuilder to have ItemFlag, change hub icons to not display weapon damage --- .../mineplex/core/itemstack/ItemBuilder.java | 151 ++-- .../hub/profile/buttons/ButtonPrefs.java | 29 +- .../hub/server/ui/ServerGameMenu.java | 788 +++++++++--------- .../hub/server/ui/ServerTypePage.java | 51 +- 4 files changed, 530 insertions(+), 489 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/itemstack/ItemBuilder.java b/Plugins/Mineplex.Core/src/mineplex/core/itemstack/ItemBuilder.java index c1d486795..8ea88cc70 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/itemstack/ItemBuilder.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/itemstack/ItemBuilder.java @@ -2,7 +2,9 @@ package mineplex.core.itemstack; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; @@ -12,6 +14,7 @@ import org.bukkit.Color; import org.bukkit.FireworkEffect; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; +import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.FireworkEffectMeta; import org.bukkit.inventory.meta.ItemMeta; @@ -19,6 +22,8 @@ import org.bukkit.inventory.meta.LeatherArmorMeta; import org.bukkit.inventory.meta.SkullMeta; import org.bukkit.potion.Potion; +import mineplex.core.common.util.C; + public class ItemBuilder { @@ -48,20 +53,17 @@ public class ItemBuilder private final HashMap _enchants = new HashMap(); private final List _lore = new ArrayList(); private Material _mat; - // private Potion potion; private String _title = null; private boolean _unbreakable; private String _playerHeadName = null; + private HashSet _itemFlags = new HashSet(); public ItemBuilder(ItemStack item) { this(item.getType(), item.getDurability()); _amount = item.getAmount(); _enchants.putAll(item.getEnchantments()); - if (item.getType() == Material.POTION) - { - // setPotion(Potion.fromItemStack(item)); - } + if (item.hasItemMeta()) { ItemMeta meta = item.getItemMeta(); @@ -81,6 +83,8 @@ public class ItemBuilder setColor(((LeatherArmorMeta) meta).getColor()); } + _itemFlags.addAll(meta.getItemFlags()); + _unbreakable = meta.spigot().isUnbreakable(); } } @@ -107,13 +111,60 @@ public class ItemBuilder this(mat, 1, data); } + public HashSet getItemFlags() + { + return _itemFlags; + } + + public ItemBuilder addItemFlags(ItemFlag... flags) + { + getItemFlags().addAll(Arrays.asList(flags)); + + return this; + } + + public ItemBuilder setItemFlags(ItemFlag... flags) + { + getItemFlags().clear(); + addItemFlags(flags); + + return this; + } + + public ItemBuilder setItemFlags(Collection flags) + { + getItemFlags().clear(); + addItemFlags(flags.toArray(new ItemFlag[0])); + + return this; + } + + public ItemBuilder setHideInfo(boolean hideInfo) + { + if (hideInfo) + { + for (ItemFlag flag : ItemFlag.values()) + { + getItemFlags().add(flag); + } + } + else + { + getItemFlags().clear(); + } + + return this; + } + public ItemBuilder addEnchantment(Enchantment enchant, int level) { if (_enchants.containsKey(enchant)) { _enchants.remove(enchant); } + _enchants.put(enchant, level); + return this; } @@ -121,20 +172,31 @@ public class ItemBuilder { for (String lore : lores) { - _lore.add(ChatColor.GRAY + lore); + _lore.add(C.cGray + lore); } + + return this; + } + + public ItemBuilder setLore(String... lores) + { + _lore.clear(); + _lore.addAll(Arrays.asList(lores)); + return this; } public ItemBuilder addLore(String lore, int maxLength) { _lore.addAll(split(lore, maxLength)); + return this; } public ItemBuilder addLores(List lores) { _lore.addAll(lores); + return this; } @@ -144,6 +206,7 @@ public class ItemBuilder { addLore(lore, maxLength); } + return this; } @@ -155,6 +218,7 @@ public class ItemBuilder public ItemStack build() { Material mat = _mat; + if (mat == null) { mat = Material.AIR; @@ -164,8 +228,10 @@ public class ItemBuilder { Bukkit.getLogger().warning("Air material!"); } + ItemStack item = new ItemStack(mat, _amount, _data); ItemMeta meta = item.getItemMeta(); + if (meta != null) { if (_title != null) @@ -189,14 +255,13 @@ public class ItemBuilder ((FireworkEffectMeta) meta).setEffect(FireworkEffect.builder().withColor(_color).build()); } + meta.addItemFlags(getItemFlags().toArray(new ItemFlag[0])); meta.spigot().setUnbreakable(isUnbreakable()); item.setItemMeta(meta); } item.addUnsafeEnchantments(_enchants); - // if (potion != null) { - // potion.apply(item); - // } + return item; } @@ -263,52 +328,6 @@ public class ItemBuilder return _enchants.containsKey(enchant); } - public boolean isItem(ItemStack item) - { - ItemMeta meta = item.getItemMeta(); - - if (item.getType() != getType()) - { - return false; - } - - if (!meta.hasDisplayName() && getTitle() != null) - { - return false; - } - - if (!meta.getDisplayName().equals(getTitle())) - { - return false; - } - - if (!meta.hasLore() && !getLore().isEmpty()) - { - return false; - } - - if (meta.hasLore()) - { - for (String lore : meta.getLore()) - { - if (!getLore().contains(lore)) - { - return false; - } - } - } - - for (Enchantment enchant : item.getEnchantments().keySet()) - { - if (!hasEnchantment(enchant)) - { - return false; - } - } - - return true; - } - public boolean isUnbreakable() { return _unbreakable; @@ -317,17 +336,14 @@ public class ItemBuilder public ItemBuilder setAmount(int amount) { _amount = amount; + return this; } public ItemBuilder setColor(Color color) { - /* (!_mat.name().contains("LEATHER_")) - { - throw new IllegalArgumentException("Can only dye leather armor!"); - }*/ - _color = color; + return this; } @@ -338,19 +354,10 @@ public class ItemBuilder return this; } - public ItemBuilder setPotion(Potion potion) - { - if (_mat != Material.POTION) - { - _mat = Material.POTION; - } - - return this; - } - public ItemBuilder setRawTitle(String title) { _title = title; + return this; } @@ -378,24 +385,28 @@ public class ItemBuilder } setTitle(title); + return this; } public ItemBuilder setType(Material mat) { _mat = mat; + return this; } public ItemBuilder setUnbreakable(boolean setUnbreakable) { _unbreakable = setUnbreakable; + return this; } public ItemBuilder setPlayerHead(String playerName) { _playerHeadName = playerName; + return this; } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/profile/buttons/ButtonPrefs.java b/Plugins/Mineplex.Hub/src/mineplex/hub/profile/buttons/ButtonPrefs.java index 38652a7c7..1b9c38395 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/profile/buttons/ButtonPrefs.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/profile/buttons/ButtonPrefs.java @@ -2,6 +2,7 @@ package mineplex.hub.profile.buttons; import mineplex.core.common.util.C; import mineplex.core.gui.GuiItem; +import mineplex.core.itemstack.ItemBuilder; import mineplex.core.itemstack.ItemStackFactory; import mineplex.hub.profile.gui.GUIProfile; @@ -17,7 +18,7 @@ public class ButtonPrefs implements GuiItem private GUIProfile _profile; private Player _player; - + public ButtonPrefs(GUIProfile profile, Player player) { _profile = profile; @@ -33,29 +34,27 @@ public class ButtonPrefs implements GuiItem @Override public ItemStack getObject() { - return ItemStackFactory.Instance.CreateStack(Material.REDSTONE_COMPARATOR.getId(), (byte)0, 1, - ChatColor.RESET + C.cYellow + "Preferences", - new String[] - { - "", - C.cWhite + "Set your preferences to your liking", - C.cWhite + "so you can enjoy the game more!", - - "", - C.cWhite + "Type " + C.cGreen + "/prefs" + C.cWhite + " to access this anywhere!" - }); + return new ItemBuilder(Material.REDSTONE_COMPARATOR).setTitle(C.Reset + C.cYellow + "Preferences").addLore(new String[] + { + "", + C.cWhite + "Set your preferences to your liking", + C.cWhite + "so you can enjoy the game more!", + + "", + C.cWhite + "Type " + C.cGreen + "/prefs" + C.cWhite + " to access this anywhere!" + }).build(); } @Override - public void setup() + public void setup() { - + } @Override public void close() { - + } } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerGameMenu.java b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerGameMenu.java index 4e3bc8320..1eb43415a 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerGameMenu.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerGameMenu.java @@ -3,7 +3,6 @@ package mineplex.hub.server.ui; import java.util.ArrayList; import java.util.List; -import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; @@ -11,7 +10,7 @@ import org.bukkit.inventory.ItemStack; import mineplex.core.account.CoreClientManager; import mineplex.core.common.util.C; import mineplex.core.donation.DonationManager; -import mineplex.core.itemstack.ItemStackFactory; +import mineplex.core.itemstack.ItemBuilder; import mineplex.core.shop.page.ShopPageBase; import mineplex.hub.server.ServerManager; import mineplex.hub.server.ui.button.SelectBHButton; @@ -34,17 +33,18 @@ public class ServerGameMenu extends ShopPageBase { private List _superSmashCycle = new ArrayList(); private List _minigameCycle = new ArrayList(); - + private int _ssmIndex; private int _minigameIndex; - - public ServerGameMenu(ServerManager plugin, QuickShop quickShop, CoreClientManager clientManager, DonationManager donationManager, String name, Player player) + + public ServerGameMenu(ServerManager plugin, QuickShop quickShop, CoreClientManager clientManager, + DonationManager donationManager, String name, Player player) { super(plugin, quickShop, clientManager, donationManager, name, player, 47); - + createSuperSmashCycle(); createMinigameCycle(); - + buildPage(); } @@ -52,148 +52,165 @@ public class ServerGameMenu extends ShopPageBase @Override protected void buildPage() { - setItem(0, ItemStackFactory.Instance.CreateStack(Material.IRON_PICKAXE.getId(), (byte)0, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "The Bridges " + C.cGray + "4 Team Survival", new String[] - { - ChatColor.RESET + "", - ChatColor.RESET + "4 Teams get 10 minutes to prepare.", - ChatColor.RESET + "Then the bridges drop, and all hell", - ChatColor.RESET + "breaks loose as you battle to the", - ChatColor.RESET + "death with the other teams.", - ChatColor.RESET + "", - ChatColor.RESET + "Join " + ChatColor.GREEN + getPlugin().getGroupTagPlayerCount("BR") + ChatColor.RESET + " other players!", - })); - - setItem(2, ItemStackFactory.Instance.CreateStack(Material.DIAMOND_SWORD.getId(), (byte)0, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "Survival Games " + C.cGray + "Solo/Team Survival", new String[] - { - ChatColor.RESET + "", - ChatColor.RESET + "Search for chests to find loot and ", - ChatColor.RESET + "fight others to be the last man standing. ", - ChatColor.RESET + "Stay away from the borders!", - ChatColor.RESET + "", - ChatColor.RESET + "Join " + ChatColor.GREEN + (getPlugin().getGroupTagPlayerCount("HG") + getPlugin().getGroupTagPlayerCount("SG2")) + ChatColor.RESET + " other players!", - })); + setItem(0, new ItemBuilder(Material.IRON_PICKAXE) + .setTitle(C.Reset + C.Bold + C.cYellow + "The Bridges " + C.cGray + "4 Team Survival").addLore(new String[] + { + C.Reset + "", + C.Reset + "4 Teams get 10 minutes to prepare.", + C.Reset + "Then the bridges drop, and all hell", + C.Reset + "breaks loose as you battle to the", + C.Reset + "death with the other teams.", + C.Reset + "", + C.Reset + "Join " + C.cGreen + getPlugin().getGroupTagPlayerCount("BR") + C.Reset + " other players!" + }).setHideInfo(true).build()); - setItem(4, ItemStackFactory.Instance.CreateStack(Material.FEATHER.getId(), (byte) 0, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "Skywars " + C.cGray + "Solo/Team Survival", new String[] - { - ChatColor.RESET + "", - ChatColor.RESET + "16 contenders fight for the right to rule the skies!", - ChatColor.RESET + "Spawn on a sky island and build your path!", - ChatColor.RESET + "Find weapons to take your enemies down!", - ChatColor.RESET + "Way up there, death ever looming if you fall..", - ChatColor.RESET + "Can you fight? Can you live? Can you win Skywars?", - ChatColor.RESET + "", - ChatColor.RESET + "Join " + ChatColor.GREEN + (getPlugin().getGroupTagPlayerCount("SKY") + getPlugin().getGroupTagPlayerCount("SKY2")) + ChatColor.RESET + " other players!", - })); + setItem(2, new ItemBuilder(Material.DIAMOND_SWORD) + .setTitle(C.Reset + C.Bold + C.cYellow + "Survival Games " + C.cGray + "Solo/Team Survival").addLore(new String[] + { + C.Reset + "", + C.Reset + "Search for chests to find loot and ", + C.Reset + "fight others to be the last man standing. ", + C.Reset + "Stay away from the borders!", + C.Reset + "", + C.Reset + "Join " + C.cGreen + + (getPlugin().getGroupTagPlayerCount("HG") + getPlugin().getGroupTagPlayerCount("SG2")) + C.Reset + + " other players!" + }).setHideInfo(true).build()); - setItem(6, ItemStackFactory.Instance.CreateStack(Material.GOLDEN_APPLE.getId(), (byte)0, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "UHC " + C.cGray + "Ultra Hardcore Mode", new String[] - { - ChatColor.RESET + "", - ChatColor.RESET + "Extremely hard team-based survival ", - ChatColor.RESET + "Gather materials and fight your way", - ChatColor.RESET + "to become the last team standing!", - ChatColor.RESET + "", - ChatColor.RESET + "Join " + ChatColor.GREEN + getPlugin().getGroupTagPlayerCount("UHC") + ChatColor.RESET + " other players!", - })); + setItem(4, new ItemBuilder(Material.FEATHER) + .setTitle(C.Reset + C.Bold + C.cYellow + "Skywars " + C.cGray + "Solo/Team Survival").addLore(new String[] + { + C.Reset + "", + C.Reset + "16 contenders fight to rule the skies!", + C.Reset + "Spawn on a sky island and build your path!", + C.Reset + "Find weapons to take your enemies down!", + C.Reset + "Up in the skies, death looming if you fall..", + C.Reset + "Win! Fight! Send enemies flying in Skywars!", + C.Reset + "", + C.Reset + "Join " + C.cGreen + + (getPlugin().getGroupTagPlayerCount("SKY") + getPlugin().getGroupTagPlayerCount("SKY2")) + C.Reset + + " other players!", + }).setHideInfo(true).build()); - setItem(8, ItemStackFactory.Instance.CreateStack(Material.BLAZE_ROD.getId(), (byte) 0, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "Wizards " + C.cGray + "Last Man Standing", new String[] - { - ChatColor.RESET + "", - ChatColor.RESET + "Wield powerful spells to fight", - ChatColor.RESET + "against other players in this", - ChatColor.RESET + "exciting free-for-all brawl!", - ChatColor.RESET + "", - ChatColor.RESET + "Join " + ChatColor.GREEN + getPlugin().getGroupTagPlayerCount("WIZ") + ChatColor.RESET + " other players!", - })); + setItem(6, new ItemBuilder(Material.GOLDEN_APPLE) + .setTitle(C.Reset + C.Bold + C.cYellow + "UHC " + C.cGray + "Ultra Hardcore Mode").addLore(new String[] + { + C.Reset + "", + C.Reset + "Extremely hard team-based survival ", + C.Reset + "Gather materials and fight your way", + C.Reset + "to become the last team standing!", + C.Reset + "", + C.Reset + "Join " + C.cGreen + getPlugin().getGroupTagPlayerCount("UHC") + C.Reset + " other players!", + }).setHideInfo(true).build()); - setItem(18, ItemStackFactory.Instance.CreateStack(Material.DIAMOND_CHESTPLATE, (byte)0, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "Castle Siege " + C.cGray + "Team Game", new String[] - { - ChatColor.RESET + "", - ChatColor.RESET + "Defenders must protect King Sparklez", - ChatColor.RESET + "from the endless waves of Undead", - ChatColor.RESET + "until the sun rises!", - ChatColor.RESET + "", - ChatColor.RESET + "Join " + ChatColor.GREEN + getPlugin().getGroupTagPlayerCount("CS") + ChatColor.RESET + " other players!", - })); + setItem(8, new ItemBuilder(Material.BLAZE_ROD) + .setTitle(C.Reset + C.Bold + C.cYellow + "Wizards " + C.cGray + "Last Man Standing").addLore(new String[] + { + C.Reset + "", + C.Reset + "Wield powerful spells to fight", + C.Reset + "against other players in this", + C.Reset + "exciting free-for-all brawl!", + C.Reset + "", + C.Reset + "Join " + C.cGreen + getPlugin().getGroupTagPlayerCount("WIZ") + C.Reset + " other players!", + }).setHideInfo(true).build()); - setItem(20, ItemStackFactory.Instance.CreateStack(Material.GRASS.getId(), (byte)0, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "Block Hunt " + C.cGray + "Cat and Mouse", new String[] - { - ChatColor.RESET + "", - ChatColor.RESET + "Hide as blocks/animals, upgrade your ", - ChatColor.RESET + "weapon and fight to survive against", - ChatColor.RESET + "the Hunters!", - ChatColor.RESET + "", - ChatColor.RESET + "Join " + ChatColor.GREEN + getPlugin().getGroupTagPlayerCount("BH") + ChatColor.RESET + " other players!", - })); + setItem(18, new ItemBuilder(Material.DIAMOND_CHESTPLATE) + .setTitle(C.Reset + C.Bold + C.cYellow + "Castle Siege " + C.cGray + "Team Game").addLore(new String[] + { + C.Reset + "", + C.Reset + "Defenders must protect King Sparklez", + C.Reset + "from the endless waves of Undead", + C.Reset + "until the sun rises!", + C.Reset + "", + C.Reset + "Join " + C.cGreen + getPlugin().getGroupTagPlayerCount("CS") + C.Reset + " other players!", + }).setHideInfo(true).build()); + + setItem(20, new ItemBuilder(Material.GRASS) + .setTitle(C.Reset + C.Bold + C.cYellow + "Block Hunt " + C.cGray + "Cat and Mouse").addLore(new String[] + { + C.Reset + "", + C.Reset + "Hide as blocks/animals, upgrade your ", + C.Reset + "weapon and fight to survive against", + C.Reset + "the Hunters!", + C.Reset + "", + C.Reset + "Join " + C.cGreen + getPlugin().getGroupTagPlayerCount("BH") + C.Reset + " other players!", + }).setHideInfo(true).build()); setItem(22, _superSmashCycle.get(_ssmIndex)); - setItem(24, ItemStackFactory.Instance.CreateStack(Material.TNT.getId(), (byte) 0, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "Mine-Strike " + C.cGray + "Team Survival", new String[] - { - ChatColor.RESET + "", - ChatColor.RESET + "One team must defend two bomb sites from", - ChatColor.RESET + "the other team, who are trying to plant a bomb", - ChatColor.RESET + "and blow them up!", - ChatColor.RESET + "", - ChatColor.RESET + "Join " + ChatColor.GREEN + getPlugin().getGroupTagPlayerCount("MS") + ChatColor.RESET + " other players!", - })); - - setItem(26, ItemStackFactory.Instance.CreateStack(Material.BOOK_AND_QUILL.getId(), (byte)0, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "Draw My Thing " + C.cGray + "Pictionary!", new String[] - { - ChatColor.RESET + "", - ChatColor.RESET + "Players take turns at drawing a random", - ChatColor.RESET + "word. Whoever guesses it within the time", - ChatColor.RESET + "limit gets some points!", - ChatColor.RESET + "", - ChatColor.RESET + "Join " + ChatColor.GREEN + getPlugin().getGroupTagPlayerCount("DMT") + ChatColor.RESET + " other players!", - })); - - setItem(36, ItemStackFactory.Instance.CreateStack(Material.BEACON.getId(), (byte)0, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "Dominate " + C.cGray + "Team Game", new String[] - { - ChatColor.RESET + "", - ChatColor.RESET + "Customize one of five exciting champions", - ChatColor.RESET + "and battle with the opposing team for the", - ChatColor.RESET + "control points on the map.", - ChatColor.RESET + "", - ChatColor.RESET + "Join " + ChatColor.GREEN + getPlugin().getGroupTagPlayerCount("DOM") + ChatColor.RESET + " other players!", - })); - - setItem(38, ItemStackFactory.Instance.CreateStack(Material.GOLD_SWORD.getId(), (byte)0, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "Team Deathmatch " + C.cGray + "Team Game", new String[] - { - ChatColor.RESET + "", - ChatColor.RESET + "Customize one of five exciting champions", - ChatColor.RESET + "and battle with the opposing team to the", - ChatColor.RESET + "last man standing.", - ChatColor.RESET + "", - ChatColor.RESET + "Join " + ChatColor.GREEN + getPlugin().getGroupTagPlayerCount("TDM") + ChatColor.RESET + " other players!", - })); - - setItem(40, ItemStackFactory.Instance.CreateStack(Material.WOOD.getId(), (byte)0, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "Master Builders " + C.cGray + "Creative Build", new String[] - { - ChatColor.RESET + "", - ChatColor.RESET + "Players are given a Build Theme and ", - ChatColor.RESET + "must use blocks, monsters and more", - ChatColor.RESET + "to create a masterpiece!", - ChatColor.RESET + "", - ChatColor.RESET + "Join " + ChatColor.GREEN + getPlugin().getGroupTagPlayerCount("BLD") + ChatColor.RESET + " other players!", - })); - + setItem(24, new ItemBuilder(Material.TNT) + .setTitle(C.Reset + C.Bold + C.cYellow + "Mine-Strike " + C.cGray + "Team Survival").addLore(new String[] + { + C.Reset + "", + C.Reset + "One team must defend two bomb sites from", + C.Reset + "the other team, who are trying to plant a bomb", + C.Reset + "and blow them up!", + C.Reset + "", + C.Reset + "Join " + C.cGreen + getPlugin().getGroupTagPlayerCount("MS") + C.Reset + " other players!", + }).setHideInfo(true).build()); + + setItem(26, new ItemBuilder(Material.BOOK_AND_QUILL) + .setTitle(C.Reset + C.Bold + C.cYellow + "Draw My Thing " + C.cGray + "Pictionary!").addLore(new String[] + { + C.Reset + "", + C.Reset + "Players take turns at drawing a random", + C.Reset + "word. Whoever guesses it within the time", + C.Reset + "limit gets some points!", + C.Reset + "", + C.Reset + "Join " + C.cGreen + getPlugin().getGroupTagPlayerCount("DMT") + C.Reset + " other players!", + }).setHideInfo(true).build()); + + setItem(36, new ItemBuilder(Material.BEACON).setTitle(C.Reset + C.Bold + C.cYellow + "Dominate " + C.cGray + "Team Game") + .addLore(new String[] + { + C.Reset + "", + C.Reset + "Customize one of five exciting champions", + C.Reset + "and battle with the opposing team for the", + C.Reset + "control points on the map.", + C.Reset + "", + C.Reset + "Join " + C.cGreen + getPlugin().getGroupTagPlayerCount("DOM") + C.Reset + " other players!", + }).setHideInfo(true).build()); + + setItem(38, new ItemBuilder(Material.GOLD_SWORD) + .setTitle(C.Reset + C.Bold + C.cYellow + "Team Deathmatch " + C.cGray + "Team Game").addLore(new String[] + { + C.Reset + "", + C.Reset + "Customize one of five exciting champions", + C.Reset + "and battle with the opposing team to the", + C.Reset + "last man standing.", + C.Reset + "", + C.Reset + "Join " + C.cGreen + getPlugin().getGroupTagPlayerCount("TDM") + C.Reset + " other players!", + }).setHideInfo(true).build()); + + setItem(40, new ItemBuilder(Material.WOOD) + .setTitle(C.Reset + C.Bold + C.cYellow + "Master Builders " + C.cGray + "Creative Build").addLore(new String[] + { + C.Reset + "", + C.Reset + "Players are given a Build Theme and ", + C.Reset + "must use blocks, monsters and more", + C.Reset + "to create a masterpiece!", + C.Reset + "", + C.Reset + "Join " + C.cGreen + getPlugin().getGroupTagPlayerCount("BLD") + C.Reset + " other players!", + }).setHideInfo(true).build()); + setItem(42, _minigameCycle.get(_minigameIndex)); - setItem(44, ItemStackFactory.Instance.CreateStack(Material.SKULL_ITEM.getId(), (byte) 3, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "Player Servers " + C.cGray + "Player Hosted Games", new String[] - { - ChatColor.RESET + "", - ChatColor.RESET + "Join your friends in their own ", - ChatColor.RESET + "Mineplex Player Server. You can play", - ChatColor.RESET + "the games you want, when you want.", - ChatColor.RESET + "", - })); + setItem(44, new ItemBuilder(Material.SKULL_ITEM, 1, (byte) 3) + .addLore(C.Reset + C.Bold + C.cYellow + "Player Servers " + C.cGray + "Player Hosted Games").addLore(new String[] + { + C.Reset + "", + C.Reset + "Join your friends in their own ", + C.Reset + "Mineplex Player Server. You can play", + C.Reset + "the games you want, when you want.", + C.Reset + "", + }).setHideInfo(true).build()); getButtonMap().put(0, new SelectBRButton(this)); getButtonMap().put(2, new SelectSGButton(this)); getButtonMap().put(4, new SelectSKYButton(this)); getButtonMap().put(6, new SelectUHCButton(this)); getButtonMap().put(8, new SelectWIZButton(this)); - + getButtonMap().put(18, new SelectCSButton(this)); getButtonMap().put(20, new SelectBHButton(this)); getButtonMap().put(22, new SelectSSMButton(this)); @@ -204,271 +221,280 @@ public class ServerGameMenu extends ShopPageBase getButtonMap().put(40, new SelectBLDButton(this)); getButtonMap().put(42, new SelectMINButton(this)); getButtonMap().put(44, new SelectPLAYERButton(this)); -// getButtonMap().put(44, new SelectBETAButton(this)); + // getButtonMap().put(44, new SelectBETAButton(this)); } @SuppressWarnings("deprecation") private void createMinigameCycle() { - int playerCount = getPlugin().getGroupTagPlayerCount("MIN") + - getPlugin().getGroupTagPlayerCount("DR") + - getPlugin().getGroupTagPlayerCount("DE") + - getPlugin().getGroupTagPlayerCount("PB") + - getPlugin().getGroupTagPlayerCount("TF") + - getPlugin().getGroupTagPlayerCount("RUN") + - getPlugin().getGroupTagPlayerCount("SN") + - getPlugin().getGroupTagPlayerCount("DT") + - getPlugin().getGroupTagPlayerCount("SQ") + - getPlugin().getGroupTagPlayerCount("SA") + - getPlugin().getGroupTagPlayerCount("SS") + - getPlugin().getGroupTagPlayerCount("OITQ"); - _minigameCycle.add(ItemStackFactory.Instance.CreateStack(98, (byte)0, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "Arcade " + C.cGray + "Mixed Games", new String [] - { - ChatColor.RESET + "", - ChatColor.RESET + "Play all of these fun minigames:", - ChatColor.RESET + "", - ChatColor.RESET + C.Bold + ChatColor.GREEN + "Super Spleef", - ChatColor.RESET + "Runner", - ChatColor.RESET + "Dragons", - ChatColor.RESET + "One in the Quiver", - ChatColor.RESET + "Dragon Escape", - ChatColor.RESET + "Sneaky Assassins", - ChatColor.RESET + "Micro Battle", - ChatColor.RESET + "Super Paintball", - ChatColor.RESET + "Turf Wars", - ChatColor.RESET + "Death Tag", - ChatColor.RESET + "Bacon Brawl", - ChatColor.RESET + "", - ChatColor.RESET + "Join " + ChatColor.GREEN + playerCount + ChatColor.RESET + " other players!", - })); - - _minigameCycle.add(ItemStackFactory.Instance.CreateStack(Material.GOLD_BOOTS.getId(), (byte)0, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "Arcade " + C.cGray + "Mixed Games", new String [] - { - ChatColor.RESET + "", - ChatColor.RESET + "Play all of these fun minigames:", - ChatColor.RESET + "", - ChatColor.RESET + "Super Spleef", - ChatColor.RESET + C.Bold + ChatColor.GREEN + "Runner", - ChatColor.RESET + "Dragons", - ChatColor.RESET + "One in the Quiver", - ChatColor.RESET + "Dragon Escape", - ChatColor.RESET + "Sneaky Assassins", - ChatColor.RESET + "Micro Battle", - ChatColor.RESET + "Super Paintball", - ChatColor.RESET + "Turf Wars", - ChatColor.RESET + "Death Tag", - ChatColor.RESET + "Bacon Brawl", - ChatColor.RESET + "", - ChatColor.RESET + "Join " + ChatColor.GREEN + playerCount + ChatColor.RESET + " other players!", - })); - - _minigameCycle.add(ItemStackFactory.Instance.CreateStack(122, (byte)0, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "Arcade " + C.cGray + "Mixed Games", new String [] - { - ChatColor.RESET + "", - ChatColor.RESET + "Play all of these fun minigames:", - ChatColor.RESET + "", - ChatColor.RESET + "Super Spleef", - ChatColor.RESET + "Runner", - ChatColor.RESET + C.Bold + ChatColor.GREEN + "Dragons", - ChatColor.RESET + "One in the Quiver", - ChatColor.RESET + "Dragon Escape", - ChatColor.RESET + "Sneaky Assassins", - ChatColor.RESET + "Micro Battle", - ChatColor.RESET + "Super Paintball", - ChatColor.RESET + "Turf Wars", - ChatColor.RESET + "Death Tag", - ChatColor.RESET + "Bacon Brawl", - ChatColor.RESET + "", - ChatColor.RESET + "Join " + ChatColor.GREEN + playerCount + ChatColor.RESET + " other players!", - })); - - _minigameCycle.add(ItemStackFactory.Instance.CreateStack(Material.BOW, (byte)0, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "Arcade " + C.cGray + "Mixed Games", new String [] - { - ChatColor.RESET + "", - ChatColor.RESET + "Play all of these fun minigames:", - ChatColor.RESET + "", - ChatColor.RESET + "Super Spleef", - ChatColor.RESET + "Runner", - ChatColor.RESET + "Dragons", - ChatColor.RESET + C.Bold + ChatColor.GREEN + "One in the Quiver", - ChatColor.RESET + "Dragon Escape", - ChatColor.RESET + "Sneaky Assassins", - ChatColor.RESET + "Micro Battle", - ChatColor.RESET + "Super Paintball", - ChatColor.RESET + "Turf Wars", - ChatColor.RESET + "Death Tag", - ChatColor.RESET + "Bacon Brawl", - ChatColor.RESET + "", - ChatColor.RESET + "Join " + ChatColor.GREEN + playerCount + ChatColor.RESET + " other players!", - })); - - _minigameCycle.add(ItemStackFactory.Instance.CreateStack(Material.LEATHER_BOOTS.getId(), (byte)0, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "Arcade " + C.cGray + "Mixed Games", new String [] - { - ChatColor.RESET + "", - ChatColor.RESET + "Play all of these fun minigames:", - ChatColor.RESET + "", - ChatColor.RESET + "Super Spleef", - ChatColor.RESET + "Runner", - ChatColor.RESET + "Dragons", - ChatColor.RESET + "One in the Quiver", - ChatColor.RESET + C.Bold + ChatColor.GREEN + "Dragon Escape", - ChatColor.RESET + "Sneaky Assassins", - ChatColor.RESET + "Micro Battle", - ChatColor.RESET + "Super Paintball", - ChatColor.RESET + "Turf Wars", - ChatColor.RESET + "Death Tag", - ChatColor.RESET + "Bacon Brawl", - ChatColor.RESET + "", - ChatColor.RESET + "Join " + ChatColor.GREEN + playerCount + ChatColor.RESET + " other players!", - })); - - _minigameCycle.add(ItemStackFactory.Instance.CreateStack(Material.MILK_BUCKET.getId(), (byte)0, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "Arcade " + C.cGray + "Mixed Games", new String [] - { - ChatColor.RESET + "", - ChatColor.RESET + "Play all of these fun minigames:", - ChatColor.RESET + "", - ChatColor.RESET + "Super Spleef", - ChatColor.RESET + "Runner", - ChatColor.RESET + "Dragons", - ChatColor.RESET + "One in the Quiver", - ChatColor.RESET + "Dragon Escape", - ChatColor.RESET + C.Bold + ChatColor.GREEN + "Sneaky Assassins", - ChatColor.RESET + "Micro Battle", - ChatColor.RESET + "Super Paintball", - ChatColor.RESET + "Turf Wars", - ChatColor.RESET + "Death Tag", - ChatColor.RESET + "Bacon Brawl", - ChatColor.RESET + "", - ChatColor.RESET + "Join " + ChatColor.GREEN + playerCount + ChatColor.RESET + " other players!", - })); - - _minigameCycle.add(ItemStackFactory.Instance.CreateStack(Material.MILK_BUCKET.getId(), (byte)0, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "Arcade " + C.cGray + "Mixed Games", new String [] - { - ChatColor.RESET + "", - ChatColor.RESET + "Play all of these fun minigames:", - ChatColor.RESET + "", - ChatColor.RESET + "Super Spleef", - ChatColor.RESET + "Runner", - ChatColor.RESET + "Dragons", - ChatColor.RESET + "One in the Quiver", - ChatColor.RESET + "Dragon Escape", - ChatColor.RESET + "Sneaky Assassins", - ChatColor.RESET + C.Bold + ChatColor.GREEN + "Micro Battle", - ChatColor.RESET + "Super Paintball", - ChatColor.RESET + "Turf Wars", - ChatColor.RESET + "Death Tag", - ChatColor.RESET + "Bacon Brawl", - ChatColor.RESET + "", - ChatColor.RESET + "Join " + ChatColor.GREEN + playerCount + ChatColor.RESET + " other players!", - })); - - _minigameCycle.add(ItemStackFactory.Instance.CreateStack(Material.DIAMOND_BARDING.getId(), (byte)0, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "Arcade " + C.cGray + "Mixed Games", new String [] - { - ChatColor.RESET + "", - ChatColor.RESET + "Play all of these fun minigames:", - ChatColor.RESET + "", - ChatColor.RESET + "Super Spleef", - ChatColor.RESET + "Runner", - ChatColor.RESET + "Dragons", - ChatColor.RESET + "One in the Quiver", - ChatColor.RESET + "Dragon Escape", - ChatColor.RESET + "Sneaky Assassins", - ChatColor.RESET + "Micro Battle", - ChatColor.RESET + C.Bold + ChatColor.GREEN + "Super Paintball", - ChatColor.RESET + "Turf Wars", - ChatColor.RESET + "Death Tag", - ChatColor.RESET + "Bacon Brawl", - ChatColor.RESET + "", - ChatColor.RESET + "Join " + ChatColor.GREEN + playerCount + ChatColor.RESET + " other players!", - })); - - _minigameCycle.add(ItemStackFactory.Instance.CreateStack(159, (byte)14, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "Arcade " + C.cGray + "Mixed Games", new String [] - { - ChatColor.RESET + "", - ChatColor.RESET + "Play all of these fun minigames:", - ChatColor.RESET + "", - ChatColor.RESET + "Super Spleef", - ChatColor.RESET + "Runner", - ChatColor.RESET + "Dragons", - ChatColor.RESET + "One in the Quiver", - ChatColor.RESET + "Dragon Escape", - ChatColor.RESET + "Sneaky Assassins", - ChatColor.RESET + "Micro Battle", - ChatColor.RESET + "Super Paintball", - ChatColor.RESET + C.Bold + ChatColor.GREEN + "Turf Wars", - ChatColor.RESET + "Death Tag", - ChatColor.RESET + "Bacon Brawl", - ChatColor.RESET + "", - ChatColor.RESET + "Join " + ChatColor.GREEN + playerCount + ChatColor.RESET + " other players!", - })); - - _minigameCycle.add(ItemStackFactory.Instance.CreateStack(309, (byte)0, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "Arcade " + C.cGray + "Mixed Games", new String [] - { - ChatColor.RESET + "", - ChatColor.RESET + "Play all of these fun minigames:", - ChatColor.RESET + "", - ChatColor.RESET + "Super Spleef", - ChatColor.RESET + "Runner", - ChatColor.RESET + "Dragons", - ChatColor.RESET + "One in the Quiver", - ChatColor.RESET + "Dragon Escape", - ChatColor.RESET + "Sneaky Assassins", - ChatColor.RESET + "Micro Battle", - ChatColor.RESET + "Super Paintball", - ChatColor.RESET + "Turf Wars", - ChatColor.RESET + C.Bold + ChatColor.GREEN + "Death Tag", - ChatColor.RESET + "Bacon Brawl", - ChatColor.RESET + "", - ChatColor.RESET + "Join " + ChatColor.GREEN + playerCount + ChatColor.RESET + " other players!", - })); - - _minigameCycle.add(ItemStackFactory.Instance.CreateStack(319, (byte)0, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "Arcade " + C.cGray + "Mixed Games", new String [] - { - ChatColor.RESET + "", - ChatColor.RESET + "Play all of these fun minigames:", - ChatColor.RESET + "", - ChatColor.RESET + "Super Spleef", - ChatColor.RESET + "Runner", - ChatColor.RESET + "Dragons", - ChatColor.RESET + "One in the Quiver", - ChatColor.RESET + "Dragon Escape", - ChatColor.RESET + "Sneaky Assassins", - ChatColor.RESET + "Micro Battle", - ChatColor.RESET + "Super Paintball", - ChatColor.RESET + "Turf Wars", - ChatColor.RESET + "Death Tag", - ChatColor.RESET + C.Bold + ChatColor.GREEN + "Bacon Brawl", - ChatColor.RESET + "", - ChatColor.RESET + "Join " + ChatColor.GREEN + playerCount + ChatColor.RESET + " other players!", - })); + int playerCount = getPlugin().getGroupTagPlayerCount("MIN") + getPlugin().getGroupTagPlayerCount("DR") + + getPlugin().getGroupTagPlayerCount("DE") + getPlugin().getGroupTagPlayerCount("PB") + + getPlugin().getGroupTagPlayerCount("TF") + getPlugin().getGroupTagPlayerCount("RUN") + + getPlugin().getGroupTagPlayerCount("SN") + getPlugin().getGroupTagPlayerCount("DT") + + getPlugin().getGroupTagPlayerCount("SQ") + getPlugin().getGroupTagPlayerCount("SA") + + getPlugin().getGroupTagPlayerCount("SS") + getPlugin().getGroupTagPlayerCount("OITQ"); + _minigameCycle.add(new ItemBuilder(Material.SMOOTH_BRICK) + .setTitle(C.Reset + C.Bold + C.cYellow + "Arcade " + C.cGray + "Mixed Games").addLore(new String[] + { + C.Reset + "", + C.Reset + "Play all of these fun minigames:", + C.Reset + "", + C.Reset + C.Bold + C.cGreen + "Super Spleef", + C.Reset + "Runner", + C.Reset + "Dragons", + C.Reset + "One in the Quiver", + C.Reset + "Dragon Escape", + C.Reset + "Sneaky Assassins", + C.Reset + "Micro Battle", + C.Reset + "Super Paintball", + C.Reset + "Turf Wars", + C.Reset + "Death Tag", + C.Reset + "Bacon Brawl", + C.Reset + "", + C.Reset + "Join " + C.cGreen + playerCount + C.Reset + " other players!", + }).setHideInfo(true).build()); + + _minigameCycle.add(new ItemBuilder(Material.GOLD_BOOTS) + .setTitle(C.Reset + C.Bold + C.cYellow + "Arcade " + C.cGray + "Mixed Games").addLore(new String[] + { + C.Reset + "", + C.Reset + "Play all of these fun minigames:", + C.Reset + "", + C.Reset + "Super Spleef", + C.Reset + C.Bold + C.cGreen + "Runner", + C.Reset + "Dragons", + C.Reset + "One in the Quiver", + C.Reset + "Dragon Escape", + C.Reset + "Sneaky Assassins", + C.Reset + "Micro Battle", + C.Reset + "Super Paintball", + C.Reset + "Turf Wars", + C.Reset + "Death Tag", + C.Reset + "Bacon Brawl", + C.Reset + "", + C.Reset + "Join " + C.cGreen + playerCount + C.Reset + " other players!", + }).setHideInfo(true).build()); + + _minigameCycle.add(new ItemBuilder(Material.DRAGON_EGG) + .setTitle(C.Reset + C.Bold + C.cYellow + "Arcade " + C.cGray + "Mixed Games").addLore(new String[] + { + C.Reset + "", + C.Reset + "Play all of these fun minigames:", + C.Reset + "", + C.Reset + "Super Spleef", + C.Reset + "Runner", + C.Reset + C.Bold + C.cGreen + "Dragons", + C.Reset + "One in the Quiver", + C.Reset + "Dragon Escape", + C.Reset + "Sneaky Assassins", + C.Reset + "Micro Battle", + C.Reset + "Super Paintball", + C.Reset + "Turf Wars", + C.Reset + "Death Tag", + C.Reset + "Bacon Brawl", + C.Reset + "", + C.Reset + "Join " + C.cGreen + playerCount + C.Reset + " other players!", + }).setHideInfo(true).build()); + + _minigameCycle.add(new ItemBuilder(Material.BOW) + .setTitle(C.Reset + C.Bold + C.cYellow + "Arcade " + C.cGray + "Mixed Games").addLore(new String[] + { + C.Reset + "", + C.Reset + "Play all of these fun minigames:", + C.Reset + "", + C.Reset + "Super Spleef", + C.Reset + "Runner", + C.Reset + "Dragons", + C.Reset + C.Bold + C.cGreen + "One in the Quiver", + C.Reset + "Dragon Escape", + C.Reset + "Sneaky Assassins", + C.Reset + "Micro Battle", + C.Reset + "Super Paintball", + C.Reset + "Turf Wars", + C.Reset + "Death Tag", + C.Reset + "Bacon Brawl", + C.Reset + "", + C.Reset + "Join " + C.cGreen + playerCount + C.Reset + " other players!", + }).setHideInfo(true).build()); + + _minigameCycle.add(new ItemBuilder(Material.LEATHER_BOOTS) + .setTitle(C.Reset + C.Bold + C.cYellow + "Arcade " + C.cGray + "Mixed Games").addLore(new String[] + { + C.Reset + "", + C.Reset + "Play all of these fun minigames:", + C.Reset + "", + C.Reset + "Super Spleef", + C.Reset + "Runner", + C.Reset + "Dragons", + C.Reset + "One in the Quiver", + C.Reset + C.Bold + C.cGreen + "Dragon Escape", + C.Reset + "Sneaky Assassins", + C.Reset + "Micro Battle", + C.Reset + "Super Paintball", + C.Reset + "Turf Wars", + C.Reset + "Death Tag", + C.Reset + "Bacon Brawl", + C.Reset + "", + C.Reset + "Join " + C.cGreen + playerCount + C.Reset + " other players!", + }).setHideInfo(true).build()); + + _minigameCycle.add(new ItemBuilder(Material.MILK_BUCKET) + .setTitle(C.Reset + C.Bold + C.cYellow + "Arcade " + C.cGray + "Mixed Games").addLore(new String[] + { + C.Reset + "", + C.Reset + "Play all of these fun minigames:", + C.Reset + "", + C.Reset + "Super Spleef", + C.Reset + "Runner", + C.Reset + "Dragons", + C.Reset + "One in the Quiver", + C.Reset + "Dragon Escape", + C.Reset + C.Bold + C.cGreen + "Sneaky Assassins", + C.Reset + "Micro Battle", + C.Reset + "Super Paintball", + C.Reset + "Turf Wars", + C.Reset + "Death Tag", + C.Reset + "Bacon Brawl", + C.Reset + "", + C.Reset + "Join " + C.cGreen + playerCount + C.Reset + " other players!", + }).setHideInfo(true).build()); + + _minigameCycle.add(new ItemBuilder(Material.MILK_BUCKET) + .setTitle(C.Reset + C.Bold + C.cYellow + "Arcade " + C.cGray + "Mixed Games").addLore(new String[] + { + C.Reset + "", + C.Reset + "Play all of these fun minigames:", + C.Reset + "", + C.Reset + "Super Spleef", + C.Reset + "Runner", + C.Reset + "Dragons", + C.Reset + "One in the Quiver", + C.Reset + "Dragon Escape", + C.Reset + "Sneaky Assassins", + C.Reset + C.Bold + C.cGreen + "Micro Battle", + C.Reset + "Super Paintball", + C.Reset + "Turf Wars", + C.Reset + "Death Tag", + C.Reset + "Bacon Brawl", + C.Reset + "", + C.Reset + "Join " + C.cGreen + playerCount + C.Reset + " other players!", + }).setHideInfo(true).build()); + + _minigameCycle.add(new ItemBuilder(Material.DIAMOND_BARDING) + .setTitle(C.Reset + C.Bold + C.cYellow + "Arcade " + C.cGray + "Mixed Games").addLore(new String[] + { + C.Reset + "", + C.Reset + "Play all of these fun minigames:", + C.Reset + "", + C.Reset + "Super Spleef", + C.Reset + "Runner", + C.Reset + "Dragons", + C.Reset + "One in the Quiver", + C.Reset + "Dragon Escape", + C.Reset + "Sneaky Assassins", + C.Reset + "Micro Battle", + C.Reset + C.Bold + C.cGreen + "Super Paintball", + C.Reset + "Turf Wars", + C.Reset + "Death Tag", + C.Reset + "Bacon Brawl", + C.Reset + "", + C.Reset + "Join " + C.cGreen + playerCount + C.Reset + " other players!", + }).setHideInfo(true).build()); + + _minigameCycle.add(new ItemBuilder(Material.STAINED_CLAY, 1, (byte) 14) + .setTitle(C.Reset + C.Bold + C.cYellow + "Arcade " + C.cGray + "Mixed Games").addLore(new String[] + { + C.Reset + "", + C.Reset + "Play all of these fun minigames:", + C.Reset + "", + C.Reset + "Super Spleef", + C.Reset + "Runner", + C.Reset + "Dragons", + C.Reset + "One in the Quiver", + C.Reset + "Dragon Escape", + C.Reset + "Sneaky Assassins", + C.Reset + "Micro Battle", + C.Reset + "Super Paintball", + C.Reset + C.Bold + C.cGreen + "Turf Wars", + C.Reset + "Death Tag", + C.Reset + "Bacon Brawl", + C.Reset + "", + C.Reset + "Join " + C.cGreen + playerCount + C.Reset + " other players!", + }).setHideInfo(true).build()); + + _minigameCycle.add(new ItemBuilder(Material.IRON_BOOTS) + .setTitle(C.Reset + C.Bold + C.cYellow + "Arcade " + C.cGray + "Mixed Games").addLore(new String[] + { + C.Reset + "", + C.Reset + "Play all of these fun minigames:", + C.Reset + "", + C.Reset + "Super Spleef", + C.Reset + "Runner", + C.Reset + "Dragons", + C.Reset + "One in the Quiver", + C.Reset + "Dragon Escape", + C.Reset + "Sneaky Assassins", + C.Reset + "Micro Battle", + C.Reset + "Super Paintball", + C.Reset + "Turf Wars", + C.Reset + C.Bold + C.cGreen + "Death Tag", + C.Reset + "Bacon Brawl", + C.Reset + "", + C.Reset + "Join " + C.cGreen + playerCount + C.Reset + " other players!", + }).setHideInfo(true).build()); + + _minigameCycle.add(new ItemBuilder(Material.PORK) + .setTitle(C.Reset + C.Bold + C.cYellow + "Arcade " + C.cGray + "Mixed Games").addLore(new String[] + { + C.Reset + "", + C.Reset + "Play all of these fun minigames:", + C.Reset + "", + C.Reset + "Super Spleef", + C.Reset + "Runner", + C.Reset + "Dragons", + C.Reset + "One in the Quiver", + C.Reset + "Dragon Escape", + C.Reset + "Sneaky Assassins", + C.Reset + "Micro Battle", + C.Reset + "Super Paintball", + C.Reset + "Turf Wars", + C.Reset + "Death Tag", + C.Reset + C.Bold + C.cGreen + "Bacon Brawl", + C.Reset + "", + C.Reset + "Join " + C.cGreen + playerCount + C.Reset + " other players!", + }).setHideInfo(true).build()); } private void createSuperSmashCycle() { - String[] desc = new String[] - { - ChatColor.RESET + "", - ChatColor.RESET + "Pick from a selection of monsters,", - ChatColor.RESET + "then battle other players to the ", - ChatColor.RESET + "death with your monsters skills!", - ChatColor.RESET + "", - ChatColor.RESET + "Join " + ChatColor.GREEN + (getPlugin().getGroupTagPlayerCount("SSM") + getPlugin().getGroupTagPlayerCount("SSM2")) + ChatColor.RESET + " other players!", - }; - - _superSmashCycle.add(ItemStackFactory.Instance.CreateStack(397, (byte)4, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "Super Smash Mobs " + C.cGray + "Solo/Team Deathmatch", desc)); + String[] desc = new String[] + { + C.Reset + "", + C.Reset + "Pick from a selection of monsters,", + C.Reset + "then battle other players to the ", + C.Reset + "death with your monsters skills!", + C.Reset + "", + C.Reset + "Join " + C.cGreen + + (getPlugin().getGroupTagPlayerCount("SSM") + getPlugin().getGroupTagPlayerCount("SSM2")) + C.Reset + + " other players!", + }; + + _superSmashCycle.add(new ItemBuilder(Material.SKULL_ITEM, 1, (byte) 4) + .setTitle(C.Reset + C.Bold + C.cYellow + "Super Smash Mobs " + C.cGray + "Solo/Team Deathmatch").addLore(desc) + .setHideInfo(true).build()); } public void Update() { _ssmIndex++; _minigameIndex++; - + if (_ssmIndex >= _superSmashCycle.size()) _ssmIndex = 0; - + if (_minigameIndex >= _minigameCycle.size()) _minigameIndex = 0; - + buildPage(); } @@ -491,12 +517,12 @@ public class ServerGameMenu extends ShopPageBase { getPlugin().getCastleSiegeShop().attemptShopOpen(player); } - + public void OpenBR(Player player) { getPlugin().getBridgesShop().attemptShopOpen(player); } - + public void OpenBH(Player player) { getPlugin().getBlockHuntShop().attemptShopOpen(player); diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerTypePage.java b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerTypePage.java index 3c909f545..2f05cb7ad 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerTypePage.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerTypePage.java @@ -18,6 +18,7 @@ import mineplex.core.common.util.C; import mineplex.core.common.util.UtilTime; import mineplex.core.donation.DonationManager; import mineplex.core.game.GameDisplay; +import mineplex.core.itemstack.ItemBuilder; import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.shop.item.IButton; import mineplex.core.shop.item.ShopItem; @@ -35,11 +36,11 @@ public class ServerTypePage extends ShopPageBase private ServerGroup _serverGroup; - public ServerTypePage(ServerManager plugin, ServerNpcShop shop, CoreClientManager clientManager, DonationManager donationManager, - Player player, ServerGroup serverGroup) + public ServerTypePage(ServerManager plugin, ServerNpcShop shop, CoreClientManager clientManager, + DonationManager donationManager, Player player, ServerGroup serverGroup) { super(plugin, shop, clientManager, donationManager, serverGroup.getServerNpcName(), player, 27); - + _serverGroup = serverGroup; buildPage(); @@ -49,23 +50,25 @@ public class ServerTypePage extends ShopPageBase protected void buildPage() { String friendlyName = _serverGroup.getServerNpcName(); - - setItem(12, ItemStackFactory.Instance.CreateStack(Material.SKULL_ITEM.getId(), (byte)3, 1, ChatColor.RESET + C.cYellow + "Solo " + friendlyName, new String[] - { - ChatColor.RESET + "", - ChatColor.RESET + C.cRed + C.Bold + "WARNING: " + ChatColor.RESET + "Teaming in Solo Mode is bannable!", - ChatColor.RESET + "", - ChatColor.RESET + C.cGreen + "Click to Play", - })); - - setItem(14, ItemStackFactory.Instance.CreateStack(Material.SKULL_ITEM.getId(), (byte)3, 2, ChatColor.RESET + C.cYellow + "Team " + friendlyName, new String[] - { - ChatColor.RESET + "", - ChatColor.RESET + C.cGray + "2 Player Teams", - ChatColor.RESET + "", - ChatColor.RESET + C.cGreen + "Click to Play" - })); - + + setItem(12, new ItemBuilder(Material.SKULL_ITEM, 1, (byte) 3).setTitle(C.Reset + C.cYellow + "Solo " + friendlyName) + .addLore(new String[] + { + C.Reset + "", + C.Reset + C.cRed + C.Bold + "WARNING: " + C.Reset + "Teaming in Solo Mode is bannable!", + C.Reset + "", + C.Reset + C.cGreen + "Click to Play", + }).build()); + + setItem(14, new ItemBuilder(Material.SKULL_ITEM, 2, (byte) 3).setTitle(C.Reset + C.cYellow + "Team " + friendlyName) + .addLore(new String[] + { + C.Reset + "", + C.Reset + C.cGray + "2 Player Teams", + C.Reset + "", + C.Reset + C.cGreen + "Click to Play" + }).build()); + getButtonMap().put(12, new SelectTypeButton(this, false)); getButtonMap().put(14, new SelectTypeButton(this, true)); } @@ -77,14 +80,16 @@ public class ServerTypePage extends ShopPageBase } public void selectServer(Player player, boolean team) - { + { if (team) { - getShop().openPageForPlayer(player, new ServerNpcPage(getPlugin(), getShop(), getClientManager(), getDonationManager(), _serverGroup.getServerNpcName() + " Teams", player, _serverGroup.getTeamServerKey())); + getShop().openPageForPlayer(player, new ServerNpcPage(getPlugin(), getShop(), getClientManager(), + getDonationManager(), _serverGroup.getServerNpcName() + " Teams", player, _serverGroup.getTeamServerKey())); } else { - getShop().openPageForPlayer(player, new ServerNpcPage(getPlugin(), getShop(), getClientManager(), getDonationManager(), _serverGroup.getServerNpcName() + " Solo", player, _serverGroup.getPrefix())); + getShop().openPageForPlayer(player, new ServerNpcPage(getPlugin(), getShop(), getClientManager(), + getDonationManager(), _serverGroup.getServerNpcName() + " Solo", player, _serverGroup.getPrefix())); } } } From e7213fdb7e212986226022ecdd676df75e78da38 Mon Sep 17 00:00:00 2001 From: libraryaddict Date: Sun, 13 Dec 2015 16:41:37 +1300 Subject: [PATCH 37/81] Remove project specific settings --- .../.settings/org.eclipse.jdt.core.prefs | 11 ----------- .../.settings/org.eclipse.jdt.core.prefs | 11 ----------- .../.settings/org.eclipse.jdt.core.prefs | 11 ----------- .../.settings/org.eclipse.jdt.core.prefs | 12 ------------ .../.settings/org.eclipse.jdt.core.prefs | 11 ----------- .../.settings/org.eclipse.jdt.core.prefs | 11 ----------- .../.settings/org.eclipse.jdt.core.prefs | 11 ----------- .../.settings/org.eclipse.jdt.core.prefs | 11 ----------- .../.settings/org.eclipse.jdt.core.prefs | 11 ----------- .../.settings/org.eclipse.jdt.core.prefs | 11 ----------- .../.settings/org.eclipse.jdt.core.prefs | 11 ----------- .../.settings/org.eclipse.jdt.core.prefs | 11 ----------- .../.settings/org.eclipse.jdt.core.prefs | 15 --------------- 13 files changed, 148 deletions(-) delete mode 100644 Plugins/Mineplex.Bungee.Mineplexer/.settings/org.eclipse.jdt.core.prefs delete mode 100644 Plugins/Mineplex.BungeeRotator/.settings/org.eclipse.jdt.core.prefs delete mode 100644 Plugins/Mineplex.Core.Common/.settings/org.eclipse.jdt.core.prefs delete mode 100644 Plugins/Mineplex.Core/.settings/org.eclipse.jdt.core.prefs delete mode 100644 Plugins/Mineplex.DDoSProtectionSwitcher/.settings/org.eclipse.jdt.core.prefs delete mode 100644 Plugins/Mineplex.EnjinTranslator/.settings/org.eclipse.jdt.core.prefs delete mode 100644 Plugins/Mineplex.Game.Clans/.settings/org.eclipse.jdt.core.prefs delete mode 100644 Plugins/Mineplex.Hub/.settings/org.eclipse.jdt.core.prefs delete mode 100644 Plugins/Mineplex.MapParser/.settings/org.eclipse.jdt.core.prefs delete mode 100644 Plugins/Mineplex.Minecraft.Game.ClassCombat/.settings/org.eclipse.jdt.core.prefs delete mode 100644 Plugins/Mineplex.Minecraft.Game.Core/.settings/org.eclipse.jdt.core.prefs delete mode 100644 Plugins/Mineplex.PlayerCache/.settings/org.eclipse.jdt.core.prefs delete mode 100644 Plugins/Nautilus.Game.Arcade/.settings/org.eclipse.jdt.core.prefs diff --git a/Plugins/Mineplex.Bungee.Mineplexer/.settings/org.eclipse.jdt.core.prefs b/Plugins/Mineplex.Bungee.Mineplexer/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 7341ab168..000000000 --- a/Plugins/Mineplex.Bungee.Mineplexer/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,11 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.7 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.7 diff --git a/Plugins/Mineplex.BungeeRotator/.settings/org.eclipse.jdt.core.prefs b/Plugins/Mineplex.BungeeRotator/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 7341ab168..000000000 --- a/Plugins/Mineplex.BungeeRotator/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,11 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.7 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.7 diff --git a/Plugins/Mineplex.Core.Common/.settings/org.eclipse.jdt.core.prefs b/Plugins/Mineplex.Core.Common/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 7341ab168..000000000 --- a/Plugins/Mineplex.Core.Common/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,11 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.7 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.7 diff --git a/Plugins/Mineplex.Core/.settings/org.eclipse.jdt.core.prefs b/Plugins/Mineplex.Core/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index d17b6724d..000000000 --- a/Plugins/Mineplex.Core/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,12 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.7 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.7 diff --git a/Plugins/Mineplex.DDoSProtectionSwitcher/.settings/org.eclipse.jdt.core.prefs b/Plugins/Mineplex.DDoSProtectionSwitcher/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 7341ab168..000000000 --- a/Plugins/Mineplex.DDoSProtectionSwitcher/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,11 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.7 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.7 diff --git a/Plugins/Mineplex.EnjinTranslator/.settings/org.eclipse.jdt.core.prefs b/Plugins/Mineplex.EnjinTranslator/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 7341ab168..000000000 --- a/Plugins/Mineplex.EnjinTranslator/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,11 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.7 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.7 diff --git a/Plugins/Mineplex.Game.Clans/.settings/org.eclipse.jdt.core.prefs b/Plugins/Mineplex.Game.Clans/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 7341ab168..000000000 --- a/Plugins/Mineplex.Game.Clans/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,11 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.7 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.7 diff --git a/Plugins/Mineplex.Hub/.settings/org.eclipse.jdt.core.prefs b/Plugins/Mineplex.Hub/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 7341ab168..000000000 --- a/Plugins/Mineplex.Hub/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,11 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.7 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.7 diff --git a/Plugins/Mineplex.MapParser/.settings/org.eclipse.jdt.core.prefs b/Plugins/Mineplex.MapParser/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 7341ab168..000000000 --- a/Plugins/Mineplex.MapParser/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,11 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.7 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.7 diff --git a/Plugins/Mineplex.Minecraft.Game.ClassCombat/.settings/org.eclipse.jdt.core.prefs b/Plugins/Mineplex.Minecraft.Game.ClassCombat/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 7341ab168..000000000 --- a/Plugins/Mineplex.Minecraft.Game.ClassCombat/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,11 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.7 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.7 diff --git a/Plugins/Mineplex.Minecraft.Game.Core/.settings/org.eclipse.jdt.core.prefs b/Plugins/Mineplex.Minecraft.Game.Core/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 7341ab168..000000000 --- a/Plugins/Mineplex.Minecraft.Game.Core/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,11 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.7 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.7 diff --git a/Plugins/Mineplex.PlayerCache/.settings/org.eclipse.jdt.core.prefs b/Plugins/Mineplex.PlayerCache/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 7341ab168..000000000 --- a/Plugins/Mineplex.PlayerCache/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,11 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.7 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.7 diff --git a/Plugins/Nautilus.Game.Arcade/.settings/org.eclipse.jdt.core.prefs b/Plugins/Nautilus.Game.Arcade/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index bfbbfb4d1..000000000 --- a/Plugins/Nautilus.Game.Arcade/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,15 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 -org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.8 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.8 -org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=next_line -org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert -org.eclipse.jdt.core.formatter.insert_space_after_lambda_arrow=insert -org.eclipse.jdt.core.formatter.insert_space_before_lambda_arrow=insert From 011a194dc641a5ae67d76b07c39bf428df0d60a2 Mon Sep 17 00:00:00 2001 From: Cheese Date: Sun, 13 Dec 2015 21:14:57 +1100 Subject: [PATCH 38/81] fixed exploit --- .../src/nautilus/game/arcade/managers/HolidayManager.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/HolidayManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/HolidayManager.java index ba2c0d8cd..2328f93dc 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/HolidayManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/HolidayManager.java @@ -304,14 +304,16 @@ public class HolidayManager implements Listener if (Manager.GetGame() != null && !Manager.GetGame().IsAlive(event.getPlayer())) return; - if (!_active.contains(event.getClickedBlock())) - return; - specialBlockBreak(event.getPlayer(), event.getClickedBlock()); } private void specialBlockBreak(Player player, final Block block) { + if (!_active.contains(block)) + return; + + _active.remove(block); + block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, type.getBlockType()); block.setType(Material.AIR); From 4fad564e158ccc47a37ed534c1b70d38b727fe30 Mon Sep 17 00:00:00 2001 From: William Burns Date: Sun, 13 Dec 2015 12:50:06 +0000 Subject: [PATCH 39/81] Bug fixes. Title shortened. --- .../game/games/gladiators/Gladiators.java | 37 +++++++------------ .../gladiators/trackers/FlawlessTracker.java | 9 +++-- .../trackers/UntouchableTracker.java | 7 ++-- 3 files changed, 23 insertions(+), 30 deletions(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/gladiators/Gladiators.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/gladiators/Gladiators.java index b03240656..1ce069c88 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/gladiators/Gladiators.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/gladiators/Gladiators.java @@ -4,7 +4,6 @@ import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; -import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; import java.util.Map; @@ -109,13 +108,13 @@ public class Gladiators extends SoloGame EnableTutorials = false; BlockBreakAllow.add(Material.SUGAR_CANE_BLOCK.getId()); - BlockBreakAllow.add(Material.GRASS.getId()); + BlockBreakAllow.add(Material.DEAD_BUSH.getId()); BlockBreakAllow.add(Material.LONG_GRASS.getId()); registerStatTrackers( new BrawlerTracker(this), - //new UntouchableTracker(this), - //new FlawlessTracker(this), + new UntouchableTracker(this), + new FlawlessTracker(this), new PrecisionTracker(this), new SwiftKillTracker(this) ); @@ -529,8 +528,6 @@ public class Gladiators extends SoloGame a.setState(ArenaState.WAITING); } - UtilTextMiddle.display(C.cGreen + "Gladiators!", C.cGreen + "Defeat your opponent to advance", 20, 60, 20); - return; } @@ -541,6 +538,12 @@ public class Gladiators extends SoloGame //closeUnusedArenas(); } + @EventHandler + public void helpMessage(PlayerPrepareTeleportEvent e) + { + UtilTextMiddle.display(C.cGreen + "Gladiators!", C.cGreen + "Defeat your opponent to advance", 20, 20 * 7, 20); + } + /** *------------------- * MAIN UPDATE METHOD @@ -559,9 +562,6 @@ public class Gladiators extends SoloGame { _roundState = RoundState.STARTING_5; - if (_firstRound) - return; - UtilTextMiddle.display("", C.cGreen + C.Bold + getRoundNotation(), 0, 80 , 0); _furthestOutCurrent = getFurthestOut(); // Find furthest out for fight. @@ -819,9 +819,6 @@ public class Gladiators extends SoloGame { _roundState = RoundState.STARTING_2; - if (_firstRound) - return; - UtilTextMiddle.display(C.cGreen + "3", C.cGreen + C.Bold + getRoundNotation(), 0, 80, 0); for (Player p : UtilServer.getPlayers()) @@ -832,9 +829,6 @@ public class Gladiators extends SoloGame { _roundState = RoundState.STARTING_1; - if (_firstRound) - return; - UtilTextMiddle.display(C.cYellow + "2", C.cGreen + C.Bold + getRoundNotation(), 0, 80, 0); for (Player p : UtilServer.getPlayers()) @@ -845,9 +839,6 @@ public class Gladiators extends SoloGame { _roundState = RoundState.STARTED; - if (_firstRound) - return; - UtilTextMiddle.display(C.cGold + "1", C.cGreen + C.Bold + getRoundNotation(), 0, 80, 0); for (Player p : UtilServer.getPlayers()) @@ -858,11 +849,11 @@ public class Gladiators extends SoloGame { _roundState = RoundState.FIGHTING; - if (_firstRound) - { - _firstRound = false; - return; - } +// if (_firstRound) +// { +// _firstRound = false; +// return; +// } UtilTextMiddle.display(C.cRed + "FIGHT", C.cGreen + C.Bold + getRoundNotation(), 0, 40, 0); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/gladiators/trackers/FlawlessTracker.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/gladiators/trackers/FlawlessTracker.java index ebdbad1cf..1d772bbc2 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/gladiators/trackers/FlawlessTracker.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/gladiators/trackers/FlawlessTracker.java @@ -7,6 +7,7 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.entity.EntityDamageEvent; +import mineplex.minecraft.game.core.damage.CustomDamageEvent; import nautilus.game.arcade.events.GameStateChangeEvent; import nautilus.game.arcade.game.Game; import nautilus.game.arcade.game.games.gladiators.Gladiators; @@ -29,16 +30,16 @@ public class FlawlessTracker extends StatTracker } @EventHandler - public void onDmg(EntityDamageEvent e) + public void onDmg(CustomDamageEvent e) { if (e.isCancelled()) return; - System.out.println(e.getEventName() + " took damage by " + e.getCause().toString()); + //System.out.println(e.getEventName() + " took damage by " + e.GetCause().toString()); - if (e.getEntity() instanceof Player) + if (e.GetDamageeEntity() instanceof Player) { - _noWin.add(((Player)e.getEntity()).getName()); + _noWin.add(((Player)e.GetDamageeEntity()).getName()); } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/gladiators/trackers/UntouchableTracker.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/gladiators/trackers/UntouchableTracker.java index 44115ca72..ef357d6a5 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/gladiators/trackers/UntouchableTracker.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/gladiators/trackers/UntouchableTracker.java @@ -7,6 +7,7 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.entity.EntityDamageEvent; +import mineplex.minecraft.game.core.damage.CustomDamageEvent; import nautilus.game.arcade.game.games.gladiators.Gladiators; import nautilus.game.arcade.game.games.gladiators.events.RoundStartEvent; import nautilus.game.arcade.stats.StatTracker; @@ -27,14 +28,14 @@ public class UntouchableTracker extends StatTracker } @EventHandler - public void onDmg(EntityDamageEvent e) + public void onDmg(CustomDamageEvent e) { if (e.isCancelled()) return; - if (e.getEntity() instanceof Player) + if (e.GetDamageeEntity() instanceof Player) { - _noWin.add(((Player)e.getEntity()).getName()); + _noWin.add(((Player)e.GetDamageeEntity()).getName()); } } From e31124e21274e64b1e1b4cb53ccb9bc54edd48e1 Mon Sep 17 00:00:00 2001 From: William Burns Date: Sun, 13 Dec 2015 13:29:46 +0000 Subject: [PATCH 40/81] Health looks nicer. --- .../nautilus/game/arcade/game/games/gladiators/Gladiators.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/gladiators/Gladiators.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/gladiators/Gladiators.java index 1ce069c88..d0e777d61 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/gladiators/Gladiators.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/gladiators/Gladiators.java @@ -1039,7 +1039,7 @@ public class Gladiators extends SoloGame if (e.GetLog().GetKiller().IsPlayer()) { Player killer = UtilPlayer.searchExact(e.GetLog().GetKiller().GetName()); - ((Player)e.GetEvent().getEntity()).sendMessage(F.main("Game", "Your killer had " + C.cRed + new DecimalFormat("#").format(killer.getHealth()) + "❤" + C.cGray + " left.")); + ((Player)e.GetEvent().getEntity()).sendMessage(F.main("Game", "Your killer had " + C.cRed + (new DecimalFormat("#.#").format((killer.getHealth() / 2))) + "❤" + C.cGray + " left.")); } } From 677e95a7fdd25fa11fbbe334374b7ff34f7ab160 Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Sun, 13 Dec 2015 14:05:28 -0500 Subject: [PATCH 41/81] Update IntellIJ grouping --- Plugins/.idea/modules.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Plugins/.idea/modules.xml b/Plugins/.idea/modules.xml index a8626a3f1..a734c3f2e 100644 --- a/Plugins/.idea/modules.xml +++ b/Plugins/.idea/modules.xml @@ -8,16 +8,16 @@ - - - - + + + + - + From d91e4ab4f756746b31c7ebdd3e7d33c139ea7d30 Mon Sep 17 00:00:00 2001 From: William Burns Date: Sun, 13 Dec 2015 20:27:37 +0000 Subject: [PATCH 42/81] Another door bug, and a title fix. --- .../arcade/game/games/gladiators/Arena.java | 28 ++++++------------- .../game/games/gladiators/Gladiators.java | 20 +++++++++++++ 2 files changed, 29 insertions(+), 19 deletions(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/gladiators/Arena.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/gladiators/Arena.java index ec26ae9e9..45e707110 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/gladiators/Arena.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/gladiators/Arena.java @@ -42,7 +42,7 @@ public class Arena private ArenaState _state; private long _stateTime; - private boolean _alertedAlready; + private ArrayList _alreadyAlertedPleaseWait; private boolean _alertedAlready2; private HashMap> _particles; @@ -62,7 +62,7 @@ public class Arena _stateTime = System.currentTimeMillis(); _particles = new HashMap<>(); _doBye = false; - _alertedAlready = false; + _alreadyAlertedPleaseWait = new ArrayList<>(); _alertedAlready2 = false; setupSpawns(); @@ -174,16 +174,6 @@ public class Arena return null; } - public boolean isAlertedAlready() - { - return _alertedAlready; - } - - public void setAlertedAlready(boolean alertedAlready) - { - _alertedAlready = alertedAlready; - } - private void setupSpawns() { ArrayList possible = (ArrayList) _host.WorldData.GetDataLocs("BLACK").clone(); @@ -309,15 +299,15 @@ public class Arena if (_host.getRoundState() != RoundState.FIGHTING) return; - if (_alertedAlready) - return; - for (Player p : getPastPlayers()) { - UtilTextMiddle.display(C.cAqua + "Please Wait", "The next round will start shortly", 0, 20 * 100, 0, p); - } + if (_alreadyAlertedPleaseWait.contains(p)) + continue; - _alertedAlready = true; + UtilTextMiddle.display(C.cAqua + "Please Wait", "The next round will start shortly", 0, 20 * 120, 0, p); // 2 min + + _alreadyAlertedPleaseWait.add(p); + } } else if (_state.equals(ArenaState.FIGHTING)) { @@ -346,7 +336,7 @@ public class Arena if (_alertedAlready2) continue; - UtilTextMiddle.display(C.cGreen + "Next Battle", "Follow the particles", 0, 20 * 100, 0, p); + UtilTextMiddle.display(C.cGreen + "Next Battle", "Follow the particles", 0, 20 * 120, 0, p); // 2 min } _alertedAlready2 = true; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/gladiators/Gladiators.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/gladiators/Gladiators.java index d0e777d61..ddb562ae1 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/gladiators/Gladiators.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/gladiators/Gladiators.java @@ -676,6 +676,7 @@ public class Gladiators extends SoloGame { //p.sendMessage("bounce. closest = " + closest.toString() + " player arena = " + _playerArenas.get(p).toString()); UtilAction.velocity(p, UtilAlg.getTrajectory2d(e.getTo(), p.getLocation()), 1.7, true, 0.2, 0, 3, true); + sendPlayerArenaBounceCheck(p); } return; @@ -693,6 +694,25 @@ public class Gladiators extends SoloGame } } + private void sendPlayerArenaBounceCheck(final Player p) + { + Manager.getScheduler().scheduleSyncDelayedTask(Manager.getPlugin(), new Runnable() + { + @Override + public void run() + { + if (!GetPlayers(true).contains(p)) + return; + + Arena closest = getArenaByMid(UtilAlg.findClosest(p.getLocation(), getAllArenaMids())); + if (closest != _playerArenas.get(p)) + { + p.teleport(UtilAlg.findClosest(p.getLocation(), _playerArenas.get(p).getSpawns())); + } + } + }, 20L); + } + @EventHandler public void arenaChange(PlayerChangeArenaEvent e) { From 64fb2b11d853f0d19aecb984be9285f9e7ebdcde Mon Sep 17 00:00:00 2001 From: xGamingDudex Date: Sun, 13 Dec 2015 23:09:25 +0100 Subject: [PATCH 43/81] Added fake skin data +Moved hats to use fake non-changing skin data +Added Rudolph hat +Added Grinch hat +Added suport for fake skins on DisguisePlayer +Tweaked PartyPopper --- .../mineplex/core/common/skin/SkinData.java | 84 +++++++++++++++++++ .../core/cosmetic/ui/page/GadgetPage.java | 35 +++++++- .../core/cosmetic/ui/page/HatPage.java | 11 --- .../core/disguise/DisguiseManager.java | 63 +++++++------- .../disguise/disguises/DisguisePlayer.java | 33 ++++++-- .../mineplex/core/gadget/GadgetManager.java | 2 + .../core/gadget/gadgets/hat/HatGrinch.java | 3 +- .../core/gadget/gadgets/hat/HatPresent.java | 3 +- .../core/gadget/gadgets/hat/HatRudolph.java | 21 +++++ .../core/gadget/gadgets/hat/HatSanta.java | 3 +- .../core/gadget/gadgets/hat/HatSnowman.java | 3 +- .../gadget/gadgets/item/ItemPartyPopper.java | 2 +- .../mineplex/core/gadget/types/HatGadget.java | 6 ++ 13 files changed, 212 insertions(+), 57 deletions(-) create mode 100644 Plugins/Mineplex.Core.Common/src/mineplex/core/common/skin/SkinData.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatRudolph.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 new file mode 100644 index 000000000..02e8f476a --- /dev/null +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/skin/SkinData.java @@ -0,0 +1,84 @@ +package mineplex.core.common.skin; + +import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftItemStack; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import com.mojang.authlib.GameProfile; +import com.mojang.authlib.properties.Property; + +import net.minecraft.server.v1_8_R3.Item; +import net.minecraft.server.v1_8_R3.MinecraftKey; +import net.minecraft.server.v1_8_R3.NBTTagCompound; +import net.minecraft.server.v1_8_R3.NBTTagList; +import net.minecraft.server.v1_8_R3.NBTTagString; + +public class SkinData +{ + + private static long _nameCount = -99999999999999L; + + public final static SkinData MOOSHROOM = new SkinData("eyJ0aW1lc3RhbXAiOjE0NDk4NzI0OTU0MTcsInByb2ZpbGVJZCI6ImE5ZDBjMDcyYmYxOTQwYTFhMTkzNjhkMDlkNTAwMjZlIiwicHJvZmlsZU5hbWUiOiJTcGlyaXR1c1NhbmN0dXMiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzIxOWJlYTU0Y2FkN2Q1OGFiNWRhNDA2YjBhOTJhYjNhODI0MjI1MjY2Nzc3ZTUzNGI3ZGI2YzM3MmRkZmY3ZiJ9fX0=","UoSif81+UyvkcaanU8KAMYBpw9mefAmWehE2liDUFvk+y0X/9NovsxTYVpIDCltTSpLW3sNgamvbj4Ybs+s6DbudPiEkvh0ER7Bv2v29UJw7RzIdr6/1g548X12zcnh5iPGz/P75uNRnSfTFQx0ed8P/GNkPIjWpDuJFxEj6KcPzrCAGMx+BVw1VwryBIYf9cCDHky8z0bxR89rjiIvPTBFI6MRhqI3vgpEBTySHDS+Ki0Hwl5oa3PwS6+jgYx/4RSfFsb+BawcvDk2Xpkt5UimvqZ5BceYLIfCt4KbShYipgLXLfYUZrntjPemd3SxthjxUuA07i44UxRdiC8uqy1twLT/HUS28gpk68lA/id9tKFwu1CUzshgcmvQPt3ghtNViNziR/2t7D/+5D31Vzmhf6n7Pnpdirt/5frMi2BKMMs7pLa0EF8CrrDU7QCwPav+EZVGFvVZbxSkCDq+n3IQ3PUWSCzy6KPxpdOlUjD0pAfLoiNj0P8u4+puQtID76r/St8ExchYl2dodUImu1ZETWeFUClF3ZGat62evx8uRQEI2W4dsVwj40VUfjaAuvyDzuouaKTrCzJXLQZZjR1B8URvuK61fGX0nhW607mEi6DE+nxP2ZoBrROEX4e37Ap6+TQn9Q8tKDPdcxtwSOpPO4Qkncjn/mGtP9lZU/DQ="); + public final static SkinData SANTA = new SkinData("eyJ0aW1lc3RhbXAiOjE0NTAwMTk4Nzk5NDIsInByb2ZpbGVJZCI6ImE5ZDBjMDcyYmYxOTQwYTFhMTkzNjhkMDlkNTAwMjZlIiwicHJvZmlsZU5hbWUiOiJTcGlyaXR1c1NhbmN0dXMiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzEzMTgxYWViODQzODk3NzM1ZDQwMmIyNDk2OTQxNmZkYjBjZTM0YTZiOTM3ODE2MjQzNzU2ZTlkYWU1OGUzIn19fQ==","NZvsNu+HQ5uvGWq6O8VNDGq9A145bmk2IkHiz916uRVPMRqqCI/zwhKWNLlFACE/feuLkhYAois29ec6sVVOtHIoNA+S5q1Mb/Vjc3TJQxzqmx2FZOhJiIttFwYuo9WomQKBqrPMSJ9tpQig4wzoqldeeTjWC3dLz7JeX+gkzinryVjG7NNN9L5hXK5/BBxRcrtwmXJfUlSANyrd8RZW7mEUgU8yxlzdqTu0w7bZLjQNd4vciwoF3NelXDorMIIqiHTkuQesG91Njtu25VCUDK3nXbqEnZw2ZtxB5fT5G2Omm/vkNSRXc0P7iqchVowdYQcMlQUsp65xpkBbFS4LwjzDkYIfLmF++hePb8z72Gz77FxhO5sRLGreSH227McyL/0CtWNKm9ZZIfQtZZjEZTj9+eiJMCloCMg3yWa1VBOiLHzz0wY6gGklccIImPyXEg7E0dIK8qYseJMhmmBNZ8pDOkbUDp3mRlrQ2iyClgQkbuR63j79IBUaCxmsa3NnrAtaJklzd9mzkHXfMBh2XT7Gl8AhJS6JK5kCvip1rBBI8yjrsjE/E+lyJFIbC4rXxyMDGZWkcdrd7U4ZFYKiLHbzdFRqX+11qs9xO2BvomGXkATCzYmOf2kQ86R6rNN0+JfE4QpKzj2WWt3C8ky2qpuXZz29p0816E3/qseYtgg="); + public final static SkinData SNOWMAN = new SkinData("eyJ0aW1lc3RhbXAiOjE0NTAwMTk3OTM3NTgsInByb2ZpbGVJZCI6ImE5ZDBjMDcyYmYxOTQwYTFhMTkzNjhkMDlkNTAwMjZlIiwicHJvZmlsZU5hbWUiOiJTcGlyaXR1c1NhbmN0dXMiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2MyNTM5ZGFkZDUxYmE5ZTg0YzFhOTE1OTY3NWUxZTJiYWM1NmFlNmFlNTMxNTQyZDI1YTlkM2Q1YzQ2ODZmNiJ9fX0=","gvLc0Vo6+1vl17vrFCbK1eNqa4/ix4xiwcWae7WOCvqiVIX4sdIPagOGUrKsDdEhuWCKkTWILGP1K3wYfC9v/0mXZvbu0sRln+APTOsswMkQmbKcA1zTFTMpwEI+nIMzYJSbIx5wjz28K5hDf/umtHH2GADTENdJGGUtU4CyEdeHTzcqIAEV3bcMLkfTKvwKUWqI5gZbbercqmDeGkmXVS9297a9paRX1NfEL9pFT0pjdH3tCjgvvKfAwGC6tYtvTFbfcJocqgI+PI2f5OFf62A4XjWwWFi4wxCHVYNpqs/XTbfF64K7KVE0d9gsLjJoB8DMZPxlNpMFA0R5OIW6Q7Qjyz9IKxUqEYRCQbuUKpHyNDcmVKcTJRwBpCHeqAbTbweZHd5tzrT/terWhLEMsK1+lH2KBfIRIRB9kd3epyShNjSEKoly6uRXVxU+IJtfcq0aFVZlwgG3c1Ds9jbsNJV158e1n6WCmvT00RLdvpcIekwUKODhi3zFeFkrVvV50tGYqXLRZenitLJvDzx4c0IGK4krALrUS0oybinBS7/GmW3Ktz3xbGKZSzzaDw0EKB7Y6XHdb4yqR1xS7lAWgv4cNDEIUSzUDJ7HpmDCIF2A5kPS4XVYFCclyR6qPGD5e+9apVhBMz4lfYlT1IfRAUQlucO4UpAlkXs7ho3pQXU="); + public final static SkinData PRESENT = new SkinData("eyJ0aW1lc3RhbXAiOjE0NTAwMTk3MDIxNjIsInByb2ZpbGVJZCI6ImE5ZDBjMDcyYmYxOTQwYTFhMTkzNjhkMDlkNTAwMjZlIiwicHJvZmlsZU5hbWUiOiJTcGlyaXR1c1NhbmN0dXMiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2U2YzRkZWQwNTdjMjhiMTU0NjVkYzQzNmFmODIyYTNkZTY4NzgyZTZjMzgyOGMzMmFhYWE4ZjRiOTIzOWVjIn19fQ==","rJNlxTqHHmOoWwbXdMQLcj0P9w/PIr/hWKXH0nbhm/S2CFo/zfefffZlnQmpKCgn1Y8tXvcRwLGQ4CLpm9m2ZrKprSWRhrnOtZWYabrhExQESEammS3TY81VoNt+4On0pAGBippz/bRfWLuDne2rDbhuljnqvxjROmxpky7gRCU06VMlm2WLFC5XYJkiAaOXBqzpiHMMRPNnCvtcbtpILKi/Luj302eyN8nRKjHHbbiDmttwvlshxZ8UxJHvALtM506IUHba10Q6QX2zCeDAU5/WYRKa6e19r8plROcgGbKYFSq8JW5cWuWT3/rveZM6FnU6ABn9DWsCyfQ5wr2jdBd+xaevGTAScRHA5J493GqL1bBZYKj9yhQFtxJHCAf0++raAVPCZgyPtwTth4TAQisn8gnhM5R+txnW6xK+oflLy0dwEN1YdPLN/h7yuDnyjSMDe9RZT2NKMjok2C6Kux4WBI0KFXKC5Gqwa3Htku4v3WEOWMaVoWOtchQ9BzpQ/etD0ylmzjALQLB+HtndEEm1Jd3tmob42X4hBE8hCce7C3EtGINB33dlx4CK1xBqyGTJEqi69DJRzVL99u98+7kJ1Db9+MaPOfI4B2RY3XbvnSYwecandY//A3bb19FGSdl299ZXbp4zpm8fivzeB1rUAhhmtaA3Iwu/nEQNMkU="); + public final static SkinData RUDOLPH = new SkinData("eyJ0aW1lc3RhbXAiOjE0NTAwMTk1NjgxODIsInByb2ZpbGVJZCI6ImE5ZDBjMDcyYmYxOTQwYTFhMTkzNjhkMDlkNTAwMjZlIiwicHJvZmlsZU5hbWUiOiJTcGlyaXR1c1NhbmN0dXMiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2IzZjdlMjhiNTJkZjJjZjhlZWM2NDk2ZmM0NWFlMGQ2NTM0Njc5OGIxYWRjNzM3ZDcxYzBmOTRlNDIyMSJ9fX0=","uUBOTe63CL+qRvtsb2g4AjB2YzxE3N6AUqIsTv8n0jYyPsuXpuOmZPSMEdgDVONywEJ1L4XRx05sjnGu56A8vuXmGI/uHQWuMZzbOSjiFfT3DkEm8zEl5AWpH9dz/t8nZ1WYUIwy0pN5VrZqIr1DAkF6AMh/Qy+FGDw1GG9ReRr80eJ0JiRskpkCpCZIGGjrgwNKAM8JOuNZ4gCQOTRC3etrcfls3qmUMFcVlhuB4bydxSR01i2w0A4b5KpufsJjLKw4InWn2+m/druo8hl9sYuusTeItW0MQmZqCAqXCc9YBnRPQ0hDXFgnPxOh3RwGWiZvL4MnWUVmLwZWh/Fk9QmyVbd7zVao0lxS8YNsKtP8j5B+hs4l9qNohhf0A07bt4oPeTtd5fQeOU5N87fUGuUAcpC4gP9U5WpVY5FFPBvLvGbXdV5jpuAQz4lLSoo1grsP9baR2IBvdN/0awjQWoPJfGOttegubkBHwz3LNcVqvZLtX/M13IDHZa6zQZEX0wsnMX60LeWgBWfTON1l2cSgaPTerHFS2EifJ2LvTBife3s9/4XR6Zth3FLFqxI3MSlqT2hVFRPLke6rBqfqPoWOj2MCykQ70IAwb3oTHcJDJ86V2DdNaU2bZ8V4TjaP+nRobsLJOImoPYEPq23MP36X8gbXEIjmuu8S5xRlrrc="); + public final static SkinData THE_GRINCH = new SkinData("eyJ0aW1lc3RhbXAiOjE0NTAwMTYxNDMwMDQsInByb2ZpbGVJZCI6ImE5ZDBjMDcyYmYxOTQwYTFhMTkzNjhkMDlkNTAwMjZlIiwicHJvZmlsZU5hbWUiOiJTcGlyaXR1c1NhbmN0dXMiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzg4ZWRlOTI3ZDQzOWVmMzliMzFhYzFkYzJhODM5NGZlNzlhY2U4NDMyNzBjYmUxMjg2ZGM3NTE3ZjMxYTk2In19fQ==","ELo594vTzPq9ZmPYOtVr4kim/k19gzmoxEIK1ehS87gwgag5HcgM+P1FMnHIyrmSvTVaMh0NxwXmNS+JETFL7OrmgRYNpkxkkO4VBA0pfSn3dA9ujnXpDnDiWEPxKdMgQspIOOI0Z3esNt3pj8qIj6dWPtGwtso48tjHl2o/kazfa82yvGORlFhGkeEJKQMno/Buc12C0foQw39XI8GjvlSkFN2eH4Fp16RLu8/hf7SqJQC3L1KacvzMW1d8BWEIgACCJDni29+YqxflSqSyYrV4Z+D66S0jYvUUL/vM4/q/p/YWX/vs/FtMtHQTj4PCpAmMNTgfkahuhb6rCvKHukbjA+WhUdwyxSqXU5YnpXCu1M2dzZgiXjIi+fnyn4CmXKindWCQtSwu+mCA2ILv/6vEHoYJgdlz+DXyRkFx+DH4Sl74HBCOXTOq5AGjq5h3LYfsre+UjCCUv8VgxbVprOyj35So7K0m+6faCFVSt35T3RgicDQfdiWUrW7kmHQVvJpvaq9Vu+63F/0X93cwqwaR0buMirxRx7qkFrRunSI4T+9fsN02t1fAieeu80lBSv83wr7BFneSsLsdVAND9xttTb6fClg7anr8/XVEVIkylB4B+ZcWQbH61XP1nn7oFP2VBg1h6XuuLp8FGSgYf/LW+54/KZci/MnanqQE6QQ="); + + private Property _skinProperty; + + public SkinData(String value, String signature) + { + _skinProperty = new Property("textures", value, signature); + } + + public SkinData(GameProfile profile) + { + _skinProperty = profile.getProperties().get("textures").iterator().next(); + } + + public SkinData(Player player) + { + this(((CraftPlayer)player).getProfile()); + } + + public ItemStack getSkull() + { + NBTTagCompound arrayElement = new NBTTagCompound(); + arrayElement.setString("Value", _skinProperty.getValue()); + arrayElement.setString("Signature", _skinProperty.getSignature()); + + NBTTagList textures = new NBTTagList(); + textures.add(arrayElement); + + NBTTagCompound properties = new NBTTagCompound(); + properties.set("textures", textures); + + NBTTagCompound skullOwner = new NBTTagCompound(); + skullOwner.set("Properties", properties); + skullOwner.set("Name", new NBTTagString(getUnusedSkullName())); + + NBTTagCompound tag = new NBTTagCompound(); + tag.set("SkullOwner", skullOwner); + + + net.minecraft.server.v1_8_R3.ItemStack nmsItem = new net.minecraft.server.v1_8_R3.ItemStack(Item.REGISTRY.get(new MinecraftKey("skull")), 1, 3); + nmsItem.setTag(tag); + + + return CraftItemStack.asBukkitCopy(nmsItem); + } + + public Property getProperty() + { + return new Property(_skinProperty.getName(), _skinProperty.getValue(), _skinProperty.getSignature()); + } + + public static String getUnusedSkullName() + { + _nameCount++; + return "_" + _nameCount; + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java index 8b89c1c83..de8ac1f19 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java @@ -4,11 +4,12 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import net.md_5.bungee.api.ChatColor; - +import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; import mineplex.core.account.CoreClientManager; import mineplex.core.common.CurrencyType; @@ -24,6 +25,7 @@ import mineplex.core.donation.DonationManager; import mineplex.core.gadget.gadgets.morph.MorphBlock; import mineplex.core.gadget.types.Gadget; import mineplex.core.gadget.types.GadgetType; +import mineplex.core.gadget.types.HatGadget; import mineplex.core.gadget.types.ItemGadget; import mineplex.core.shop.item.IButton; import mineplex.core.shop.item.ShopItem; @@ -188,6 +190,35 @@ public class GadgetPage extends ShopPageBase return; } + if(gadget instanceof HatGadget) + { + ItemStack item = ((HatGadget)gadget).getHelmetItem(); + + ItemMeta im = item.getItemMeta(); + im.setDisplayName(C.cGreen + C.Bold + gadget.GetName()); + + if (gadget.GetActive().contains(getPlayer())) + { + itemLore.add(C.cBlack); + itemLore.add(C.cGreen + "Click to Disable"); + + im.setLore(itemLore); + item.setItemMeta(im); + addButton(slot, new ShopItem(item, false, false), new DeactivateGadgetButton(gadget, this)); + } + else + { + itemLore.add(C.cBlack); + itemLore.add(C.cGreen + "Click to Enable"); + + im.setLore(itemLore); + item.setItemMeta(im); + addButton(slot, new ShopItem(item, false, false), new ActivateGadgetButton(gadget, this)); + } + + return; + } + //Standard if (gadget.ownsGadget(getPlayer())) { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/HatPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/HatPage.java index 4ff3ded5a..8ea9fff22 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/HatPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/HatPage.java @@ -5,8 +5,6 @@ import java.util.List; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.SkullMeta; import mineplex.core.account.CoreClientManager; import mineplex.core.common.util.C; @@ -15,7 +13,6 @@ import mineplex.core.cosmetic.ui.CosmeticShop; import mineplex.core.donation.DonationManager; import mineplex.core.gadget.types.Gadget; import mineplex.core.gadget.types.GadgetType; -import mineplex.core.gadget.types.HatGadget; import mineplex.core.shop.item.IButton; import mineplex.core.shop.item.ShopItem; @@ -40,14 +37,6 @@ public class HatPage extends GadgetPage { addGadget(gadget, slot); - ItemStack item = getItem(slot); - if(item.getType() == Material.SKULL_ITEM) - { - SkullMeta data = (SkullMeta) item.getItemMeta(); - data.setOwner(((SkullMeta)((HatGadget)gadget).getHelmetItem().getItemMeta()).getOwner()); - item.setItemMeta(data); - } - if (getPlugin().getGadgetManager().getActive(getPlayer(), GadgetType.Morph) == gadget) addGlow(slot); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseManager.java b/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseManager.java index 4b39e5a77..ee25da25d 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/disguise/DisguiseManager.java @@ -9,35 +9,6 @@ import java.util.HashSet; import java.util.Iterator; import java.util.Map.Entry; -import net.minecraft.server.v1_8_R3.Block; -import net.minecraft.server.v1_8_R3.BlockPosition; -import net.minecraft.server.v1_8_R3.Chunk; -import net.minecraft.server.v1_8_R3.ChunkSection; -import net.minecraft.server.v1_8_R3.EntityTrackerEntry; -import net.minecraft.server.v1_8_R3.PacketPlayOutAnimation; -import net.minecraft.server.v1_8_R3.EntityPlayer; -import net.minecraft.server.v1_8_R3.Packet; -import net.minecraft.server.v1_8_R3.PacketPlayOutBed; -import net.minecraft.server.v1_8_R3.PacketPlayOutEntity; -import net.minecraft.server.v1_8_R3.PacketPlayOutEntityStatus; -import net.minecraft.server.v1_8_R3.PacketPlayOutMapChunk; -import net.minecraft.server.v1_8_R3.PacketPlayOutMapChunkBulk; -import net.minecraft.server.v1_8_R3.PacketPlayOutNamedEntitySpawn; -import net.minecraft.server.v1_8_R3.PacketPlayOutPlayerInfo; -import net.minecraft.server.v1_8_R3.PacketPlayOutEntity.PacketPlayOutRelEntityMove; -import net.minecraft.server.v1_8_R3.PacketPlayOutEntity.PacketPlayOutRelEntityMoveLook; -import net.minecraft.server.v1_8_R3.PacketPlayOutPlayerInfo.PlayerInfoData; -import net.minecraft.server.v1_8_R3.PacketPlayOutSpawnEntity; -import net.minecraft.server.v1_8_R3.PacketPlayOutEntityVelocity; -import net.minecraft.server.v1_8_R3.PacketPlayOutEntityDestroy; -import net.minecraft.server.v1_8_R3.PacketPlayOutEntityTeleport; -import net.minecraft.server.v1_8_R3.PacketPlayOutEntityMetadata; -import net.minecraft.server.v1_8_R3.PacketPlayOutSpawnEntityLiving; -import net.minecraft.server.v1_8_R3.PacketPlayOutUpdateAttributes; -import net.minecraft.server.v1_8_R3.PacketPlayOutEntityEquipment; -import net.minecraft.server.v1_8_R3.PacketPlayOutNamedSoundEffect; -import net.minecraft.server.v1_8_R3.WorldServer; - import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; @@ -73,11 +44,39 @@ import mineplex.core.disguise.disguises.DisguisePlayer; import mineplex.core.disguise.disguises.DisguiseRabbit; import mineplex.core.packethandler.IPacketHandler; import mineplex.core.packethandler.PacketHandler; -import mineplex.core.packethandler.PacketVerifier; import mineplex.core.packethandler.PacketInfo; +import mineplex.core.packethandler.PacketVerifier; import mineplex.core.timing.TimingManager; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; +import net.minecraft.server.v1_8_R3.Block; +import net.minecraft.server.v1_8_R3.BlockPosition; +import net.minecraft.server.v1_8_R3.Chunk; +import net.minecraft.server.v1_8_R3.ChunkSection; +import net.minecraft.server.v1_8_R3.EntityPlayer; +import net.minecraft.server.v1_8_R3.EntityTrackerEntry; +import net.minecraft.server.v1_8_R3.Packet; +import net.minecraft.server.v1_8_R3.PacketPlayOutAnimation; +import net.minecraft.server.v1_8_R3.PacketPlayOutBed; +import net.minecraft.server.v1_8_R3.PacketPlayOutEntity; +import net.minecraft.server.v1_8_R3.PacketPlayOutEntity.PacketPlayOutRelEntityMove; +import net.minecraft.server.v1_8_R3.PacketPlayOutEntity.PacketPlayOutRelEntityMoveLook; +import net.minecraft.server.v1_8_R3.PacketPlayOutEntityDestroy; +import net.minecraft.server.v1_8_R3.PacketPlayOutEntityEquipment; +import net.minecraft.server.v1_8_R3.PacketPlayOutEntityMetadata; +import net.minecraft.server.v1_8_R3.PacketPlayOutEntityStatus; +import net.minecraft.server.v1_8_R3.PacketPlayOutEntityTeleport; +import net.minecraft.server.v1_8_R3.PacketPlayOutEntityVelocity; +import net.minecraft.server.v1_8_R3.PacketPlayOutMapChunk; +import net.minecraft.server.v1_8_R3.PacketPlayOutMapChunkBulk; +import net.minecraft.server.v1_8_R3.PacketPlayOutNamedEntitySpawn; +import net.minecraft.server.v1_8_R3.PacketPlayOutNamedSoundEffect; +import net.minecraft.server.v1_8_R3.PacketPlayOutPlayerInfo; +import net.minecraft.server.v1_8_R3.PacketPlayOutPlayerInfo.PlayerInfoData; +import net.minecraft.server.v1_8_R3.PacketPlayOutSpawnEntity; +import net.minecraft.server.v1_8_R3.PacketPlayOutSpawnEntityLiving; +import net.minecraft.server.v1_8_R3.PacketPlayOutUpdateAttributes; +import net.minecraft.server.v1_8_R3.WorldServer; public class DisguiseManager extends MiniPlugin implements IPacketHandler { @@ -382,9 +381,9 @@ public class DisguiseManager extends MiniPlugin implements IPacketHandler for (Player player : players) addViewerToDisguise(disguise, player, false); - if (disguise.GetEntity() instanceof Player && disguise instanceof DisguisePlayer) + if (disguise.GetEntity() instanceof EntityPlayer && disguise instanceof DisguisePlayer) { - if (!((Player) disguise.GetEntity()).getName().equalsIgnoreCase(((DisguisePlayer) disguise).getName())) + if (!((EntityPlayer) disguise.GetEntity()).getName().equalsIgnoreCase(((DisguisePlayer) disguise).getName())) { _blockedNames.add(((Player) disguise.GetEntity()).getName()); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/disguise/disguises/DisguisePlayer.java b/Plugins/Mineplex.Core/src/mineplex/core/disguise/disguises/DisguisePlayer.java index d5f933f83..d81a3086e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/disguise/disguises/DisguisePlayer.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/disguise/disguises/DisguisePlayer.java @@ -2,29 +2,25 @@ package mineplex.core.disguise.disguises; import java.util.UUID; -import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.block.BlockFace; -import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer; -import org.bukkit.entity.Player; import com.mojang.authlib.GameProfile; -import mineplex.core.common.util.UtilPlayer; -import mineplex.core.common.util.UtilServer; +import mineplex.core.common.skin.SkinData; import net.minecraft.server.v1_8_R3.MathHelper; import net.minecraft.server.v1_8_R3.Packet; -import net.minecraft.server.v1_8_R3.PacketPlayInSettings; import net.minecraft.server.v1_8_R3.PacketPlayOutNamedEntitySpawn; import net.minecraft.server.v1_8_R3.PacketPlayOutPlayerInfo; -import net.minecraft.server.v1_8_R3.WorldSettings; import net.minecraft.server.v1_8_R3.PacketPlayOutPlayerInfo.EnumPlayerInfoAction; +import net.minecraft.server.v1_8_R3.WorldSettings; public class DisguisePlayer extends DisguiseHuman { private GameProfile _profile; private boolean _sneaking; private BlockFace _sleeping; + private boolean _sendSkinToSelf; public DisguisePlayer(org.bukkit.entity.Entity entity) { @@ -46,6 +42,29 @@ public class DisguisePlayer extends DisguiseHuman _profile = newProfile; } + + public GameProfile getProfile() + { + return _profile; + } + + public void setSkinData(SkinData skin) + { + _profile.getProperties().put("textures", skin.getProperty()); + } + + /** + * Currently not working. + */ + public void setSendSkinDataToSelf(boolean sendToSelf) + { + _sendSkinToSelf = sendToSelf; + } + + public boolean getSendSkinDataToSelf() + { + return _sendSkinToSelf; + } public BlockFace getSleepingDirection() { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java index 8439e08cb..ae95d1832 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java @@ -205,6 +205,8 @@ public class GadgetManager extends MiniPlugin addGadget(new HatSnowman(this)); addGadget(new HatPresent(this)); addGadget(new HatCoal(this)); + addGadget(new HatRudolph(this)); + addGadget(new HatGrinch(this)); // Music addGadget(new MusicGadget(this, "13 Disc", new String[] {""}, -2, 2256, 178000)); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatGrinch.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatGrinch.java index aee21df5b..45cc41fd2 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatGrinch.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatGrinch.java @@ -1,5 +1,6 @@ package mineplex.core.gadget.gadgets.hat; +import mineplex.core.common.skin.SkinData; import mineplex.core.common.util.C; import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilText; @@ -14,7 +15,7 @@ public class HatGrinch extends HatGadget super(manager, "The Grinch", UtilText.splitLineToArray(C.cGray + "Great! Now where’s the Roast Beast?!", LineFormat.LORE), -3, - "christmasgift"); + SkinData.THE_GRINCH.getSkull()); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatPresent.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatPresent.java index 16d6fdd2f..d02b55944 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatPresent.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatPresent.java @@ -1,5 +1,6 @@ package mineplex.core.gadget.gadgets.hat; +import mineplex.core.common.skin.SkinData; import mineplex.core.common.util.C; import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilText; @@ -14,7 +15,7 @@ public class HatPresent extends HatGadget super(manager, "Present", UtilText.splitLineToArray(C.cGray + "WHAT IN THE PRESENT? Oh, it's just you...", LineFormat.LORE), -3, - "christmasgift"); + SkinData.PRESENT.getSkull()); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatRudolph.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatRudolph.java new file mode 100644 index 000000000..1dfd9fa5c --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatRudolph.java @@ -0,0 +1,21 @@ +package mineplex.core.gadget.gadgets.hat; + +import mineplex.core.common.skin.SkinData; +import mineplex.core.common.util.C; +import mineplex.core.common.util.LineFormat; +import mineplex.core.common.util.UtilText; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.types.HatGadget; + +public class HatRudolph extends HatGadget +{ + + public HatRudolph(GadgetManager manager) + { + super(manager, "Rudolph", + UtilText.splitLineToArray(C.cGray + "WHAT IN THE PRESENT? Oh, it's just you...", LineFormat.LORE), + -3, + SkinData.RUDOLPH.getSkull()); + } + +} \ No newline at end of file diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSanta.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSanta.java index fa572fed3..d49221995 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSanta.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSanta.java @@ -1,5 +1,6 @@ package mineplex.core.gadget.gadgets.hat; +import mineplex.core.common.skin.SkinData; import mineplex.core.common.util.C; import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilText; @@ -14,7 +15,7 @@ public class HatSanta extends HatGadget super(manager, "Santa", UtilText.splitLineToArray(C.cGray + "Now you can work the Mall circuit!", LineFormat.LORE), -3, - "Presents"); + SkinData.SANTA.getSkull()); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSnowman.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSnowman.java index 9d02dd720..1f2b44ab6 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSnowman.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSnowman.java @@ -1,5 +1,6 @@ package mineplex.core.gadget.gadgets.hat; +import mineplex.core.common.skin.SkinData; import mineplex.core.common.util.C; import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilText; @@ -14,7 +15,7 @@ public class HatSnowman extends HatGadget super(manager, "Snowmans Head", UtilText.splitLineToArray(C.cGray + "Do you want to be a snowman?", LineFormat.LORE), -3, - "snowman002"); + SkinData.SNOWMAN.getSkull()); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPartyPopper.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPartyPopper.java index 8082041b5..92da2218c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPartyPopper.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemPartyPopper.java @@ -69,7 +69,7 @@ public class ItemPartyPopper extends ItemGadget implements IThrown UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.INK_SACK, data), player.getEyeLocation(), v, 1, 0, ViewDist.LONG); } - + /* Item ent = player.getWorld().dropItem(player.getEyeLocation().add(player.getLocation().getDirection()), ItemStackFactory.Instance.CreateStack(Material.INK_SACK, (byte)data, 1, "Ink" + Math.random())); _items.add(ent); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/HatGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/HatGadget.java index 91d5c2da7..9e2ebc269 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/HatGadget.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/HatGadget.java @@ -4,8 +4,10 @@ import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.SkullMeta; +import mineplex.core.common.util.C; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilPlayer; import mineplex.core.gadget.GadgetManager; @@ -19,6 +21,10 @@ public abstract class HatGadget extends OutfitGadget { super(manager, name, desc, cost, ArmorSlot.Helmet, item.getType(), item.getData().getData()); _hat = item; + + ItemMeta im = _hat.getItemMeta(); + im.setDisplayName(C.cGreen + C.Bold + name); + _hat.setItemMeta(im); } public HatGadget(GadgetManager manager, String name, String[] desc, int cost, String playerName) From 35ab40727bee2035cc21a71f7494b54126d8abd1 Mon Sep 17 00:00:00 2001 From: Mysticate Date: Sun, 13 Dec 2015 18:55:21 -0500 Subject: [PATCH 44/81] XMAS UPDATE OMG :O --- Plugins/Mineplex.Core/.classpath | 2 +- .../.settings/org.eclipse.jdt.core.prefs | 6 +- .../mineplex/hub/server/ServerManager.java | 2 +- .../hub/server/ui/ServerGameMenu.java | 4 +- .../src/nautilus/game/arcade/game/Game.java | 39 ++- .../nautilus/game/arcade/game/SoloGame.java | 12 +- .../game/games/christmas/Christmas.java | 140 +++++++++-- .../arcade/game/games/christmas/Sleigh.java | 235 +++++++++++------- .../game/games/christmas/SleighHorse.java | 34 +-- .../game/games/christmas/SleighPart.java | 93 ++++--- .../games/christmas/content/BossFloor.java | 24 +- .../game/games/christmas/content/IceMaze.java | 27 +- .../games/christmas/content/SnowmanBoss.java | 16 +- .../games/christmas/content/SnowmanMaze.java | 109 +++++--- .../christmas/content/SnowmanWaypoint.java | 6 + .../game/games/christmas/kits/KitPlayer.java | 19 +- .../game/games/christmas/parts/Part.java | 147 +++++++---- .../game/games/christmas/parts/Part1.java | 36 ++- .../game/games/christmas/parts/Part4.java | 43 ++-- .../game/games/christmas/parts/Part5.java | 37 ++- 20 files changed, 682 insertions(+), 349 deletions(-) diff --git a/Plugins/Mineplex.Core/.classpath b/Plugins/Mineplex.Core/.classpath index ea3a54132..067e728d7 100644 --- a/Plugins/Mineplex.Core/.classpath +++ b/Plugins/Mineplex.Core/.classpath @@ -1,7 +1,7 @@ - + diff --git a/Plugins/Mineplex.Core/.settings/org.eclipse.jdt.core.prefs b/Plugins/Mineplex.Core/.settings/org.eclipse.jdt.core.prefs index d17b6724d..a698e5967 100644 --- a/Plugins/Mineplex.Core/.settings/org.eclipse.jdt.core.prefs +++ b/Plugins/Mineplex.Core/.settings/org.eclipse.jdt.core.prefs @@ -1,12 +1,12 @@ eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.compliance=1.8 org.eclipse.jdt.core.compiler.debug.lineNumber=generate org.eclipse.jdt.core.compiler.debug.localVariable=generate org.eclipse.jdt.core.compiler.debug.sourceFile=generate org.eclipse.jdt.core.compiler.problem.assertIdentifier=error org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.7 +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ServerManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ServerManager.java index 10f889fce..83962381a 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ServerManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ServerManager.java @@ -862,7 +862,7 @@ public class ServerManager extends MiniPlugin public ShopBase getMinestrikeShop() { - return _serverNpcShopMap.get("Mine-Strike"); + return _serverNpcShopMap.get("MineStrike"); } public ShopBase getWizardShop() diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerGameMenu.java b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerGameMenu.java index 4e3bc8320..f33ab68fe 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerGameMenu.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerGameMenu.java @@ -4,8 +4,8 @@ import java.util.ArrayList; import java.util.List; import org.bukkit.ChatColor; -import org.bukkit.entity.Player; import org.bukkit.Material; +import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import mineplex.core.account.CoreClientManager; @@ -127,7 +127,7 @@ public class ServerGameMenu extends ShopPageBase setItem(22, _superSmashCycle.get(_ssmIndex)); - setItem(24, ItemStackFactory.Instance.CreateStack(Material.TNT.getId(), (byte) 0, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "Mine-Strike " + C.cGray + "Team Survival", new String[] + setItem(24, ItemStackFactory.Instance.CreateStack(Material.TNT.getId(), (byte) 0, 1, ChatColor.RESET + C.Bold + ChatColor.YELLOW + "MineStrike" + C.cGray + "Team Survival", new String[] { ChatColor.RESET + "", ChatColor.RESET + "One team must defend two bomb sites from", diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/Game.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/Game.java index 832053604..1d6947f06 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/Game.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/Game.java @@ -1,6 +1,5 @@ package nautilus.game.arcade.game; -import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -36,7 +35,6 @@ import org.bukkit.event.entity.FoodLevelChangeEvent; import org.bukkit.event.entity.ItemSpawnEvent; import org.bukkit.event.hanging.HangingBreakEvent; import org.bukkit.event.hanging.HangingPlaceEvent; -import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.world.WorldLoadEvent; @@ -54,8 +52,8 @@ import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilTabTitle; -import mineplex.core.common.util.UtilTime; import mineplex.core.common.util.UtilTextMiddle; +import mineplex.core.common.util.UtilTime; import mineplex.core.disguise.disguises.DisguisePlayer; import mineplex.core.itemstack.ItemBuilder; import mineplex.core.packethandler.IPacketHandler; @@ -72,18 +70,24 @@ import nautilus.game.arcade.events.GameStateChangeEvent; import nautilus.game.arcade.events.PlayerGameRespawnEvent; import nautilus.game.arcade.events.PlayerStateChangeEvent; import nautilus.game.arcade.game.GameTeam.PlayerState; -import nautilus.game.arcade.gametutorial.GameTutorial; import nautilus.game.arcade.kit.Kit; import nautilus.game.arcade.kit.KitAvailability; import nautilus.game.arcade.kit.Perk; import nautilus.game.arcade.managers.GameLobbyManager; import nautilus.game.arcade.scoreboard.GameScoreboard; -import nautilus.game.arcade.stats.*; +import nautilus.game.arcade.stats.AssistsStatTracker; +import nautilus.game.arcade.stats.DamageDealtStatTracker; +import nautilus.game.arcade.stats.DamageTakenStatTracker; +import nautilus.game.arcade.stats.DeathsStatTracker; +import nautilus.game.arcade.stats.ExperienceStatTracker; +import nautilus.game.arcade.stats.GamesPlayedStatTracker; +import nautilus.game.arcade.stats.KillsStatTracker; +import nautilus.game.arcade.stats.LoseStatTracker; +import nautilus.game.arcade.stats.StatTracker; +import nautilus.game.arcade.stats.WinStatTracker; import nautilus.game.arcade.world.WorldData; import net.minecraft.server.v1_8_R3.EntityItem; import net.minecraft.server.v1_8_R3.PacketPlayInUseEntity; -import net.minecraft.server.v1_8_R3.PacketPlayOutScoreboardTeam; -import net.minecraft.server.v1_8_R3.ScoreboardTeam; import net.minecraft.server.v1_8_R3.WorldServer; public abstract class Game implements Listener @@ -124,6 +128,7 @@ public abstract class Game implements Listener private boolean _countdownForce = false; private String _customWinLine = ""; + private NautHashMap _customWinMessages = new NautHashMap(); // Kits private Kit[] _kits; @@ -492,6 +497,11 @@ public abstract class Game implements Listener { _customWinLine = line; } + + public void SetCustomWinMessage(Player player, String message) + { + _customWinMessages.put(player, message); + } public GameScoreboard GetScoreboard() { @@ -1156,7 +1166,20 @@ public abstract class Game implements Listener UtilPlayer.message(player, "Nobody won the game!"); } - UtilPlayer.message(player, _customWinLine); + if (_customWinMessages.containsKey(player)) + { + if (!_customWinLine.trim().equalsIgnoreCase("")) + { + UtilPlayer.message(player, _customWinLine); + } + + UtilPlayer.message(player, _customWinMessages.get(player)); + } + else + { + UtilPlayer.message(player, _customWinLine); + } + UtilPlayer.message(player, ""); UtilPlayer.message(player, "§aMap - §f§l" + WorldData.MapName + C.cGray + " created by " + "§f§l" + WorldData.MapAuthor); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/SoloGame.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/SoloGame.java index 7384a3cc6..3d5ca5cf0 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/SoloGame.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/SoloGame.java @@ -1,8 +1,9 @@ package nautilus.game.arcade.game; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; -import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -13,8 +14,6 @@ import mineplex.core.updater.event.UpdateEvent; import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.GameType; import nautilus.game.arcade.events.GameStateChangeEvent; -import nautilus.game.arcade.events.PlayerStateChangeEvent; -import nautilus.game.arcade.game.GameTeam.PlayerState; import nautilus.game.arcade.kit.Kit; public abstract class SoloGame extends Game @@ -36,6 +35,11 @@ public abstract class SoloGame extends Game _players.SetColor(ChatColor.YELLOW); _players.SetName("Players"); } + + public GameTeam getPlayersTeam() + { + return _players; + } @Override public void EndCheck() diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Christmas.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Christmas.java index a508ff1cd..ebe29c61b 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Christmas.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Christmas.java @@ -1,6 +1,5 @@ package nautilus.game.arcade.game.games.christmas; -import java.lang.reflect.Field; import java.util.ArrayList; import java.util.Arrays; @@ -8,9 +7,8 @@ import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; -import org.bukkit.craftbukkit.v1_8_R3.CraftServer; -import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer; -import org.bukkit.entity.EntityType; +import org.bukkit.craftbukkit.v1_8_R3.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_8_R3.entity.CraftHorse; import org.bukkit.entity.Player; import org.bukkit.entity.Villager; import org.bukkit.event.EventHandler; @@ -18,13 +16,16 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.HandlerList; import org.bukkit.event.block.BlockFadeEvent; import org.bukkit.event.entity.EntityCombustEvent; -import org.bukkit.event.entity.ItemSpawnEvent; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; +import org.bukkit.event.entity.ItemSpawnEvent; import org.bukkit.event.entity.ProjectileHitEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent; +import org.bukkit.event.player.PlayerInteractAtEntityEvent; import org.bukkit.util.Vector; import mineplex.core.common.util.C; +import mineplex.core.common.util.Callback; +import mineplex.core.common.util.F; import mineplex.core.common.util.MapUtil; import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilMath; @@ -34,7 +35,6 @@ import mineplex.core.common.util.UtilTime; import mineplex.core.packethandler.IPacketHandler; import mineplex.core.packethandler.PacketInfo; import mineplex.core.recharge.Recharge; -import mineplex.core.reward.rewards.PetReward; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import mineplex.minecraft.game.core.damage.CustomDamageEvent; @@ -45,14 +45,22 @@ import nautilus.game.arcade.events.GameStateChangeEvent; import nautilus.game.arcade.game.GameTeam; import nautilus.game.arcade.game.SoloGame; import nautilus.game.arcade.game.games.christmas.kits.KitPlayer; -import nautilus.game.arcade.game.games.christmas.parts.*; +import nautilus.game.arcade.game.games.christmas.parts.Part; +import nautilus.game.arcade.game.games.christmas.parts.Part1; +import nautilus.game.arcade.game.games.christmas.parts.Part2; +import nautilus.game.arcade.game.games.christmas.parts.Part3; +import nautilus.game.arcade.game.games.christmas.parts.Part4; +import nautilus.game.arcade.game.games.christmas.parts.Part5; import nautilus.game.arcade.kit.Kit; +import net.minecraft.server.v1_8_R3.PacketPlayOutAttachEntity; import net.minecraft.server.v1_8_R3.PacketPlayOutEntityDestroy; import net.minecraft.server.v1_8_R3.PacketPlayOutNamedSoundEffect; import net.minecraft.server.v1_8_R3.PacketPlayOutSpawnEntityLiving; public class Christmas extends SoloGame { + private GameTeam _badGuys; + private Sleigh _sleigh; private Location _sleighSpawn; @@ -201,7 +209,7 @@ public class Christmas extends SoloGame for (Location loc : WorldData.GetCustomLocs("129")) { _barrier.add(loc.getBlock().getLocation()); - MapUtil.QuickChangeBlockAt(loc, 65, (byte)3); + MapUtil.QuickChangeBlockAt(loc, 166, (byte)0); } //Parts @@ -250,7 +258,8 @@ public class Christmas extends SoloGame if (event.GetState() != GameState.Live) return; - GetTeamList().add(new GameTeam(this, "Christmas Thieves", ChatColor.RED, WorldData.GetDataLocs("RED"))); + _badGuys = new GameTeam(this, "Christmas Thieves", ChatColor.RED, WorldData.GetDataLocs("RED")); + AddTeam(_badGuys); } @EventHandler @@ -366,7 +375,7 @@ public class Christmas extends SoloGame for (Location loc : _barrier) { - if (UtilMath.offset(GetSleigh().GetLocation(), loc) > 15) + if (UtilMath.offset(GetSleigh().GetLocation(), loc) > 20) continue; breakAt = loc; @@ -458,14 +467,39 @@ public class Christmas extends SoloGame for (Player player : GetPlayers(false)) { - Manager.rewardPet(player, "Christmas Elf", EntityType.VILLAGER); + if (Manager.IsRewardItems()) + { + if (Manager.GetTaskManager().hasCompletedTask(player, "CC Reward 2015")) + { + SetCustomWinMessage(player, "You already earned your reward"); + } + else + { + SetCustomWinMessage(player, "You earned " + C.cYellow + "Winter Chest x2"); + + Manager.GetTaskManager().completedTask(new Callback() + { + @Override + public void run(Boolean data) + { + if (data) + { + Manager.getInventoryManager().addItemToInventory(player, "Winter Chest", 2); + } + else + { + UtilPlayer.message(player, F.main("Inventory", "An error occured while giving you " + C.cRed + "Winter Chest x2" + C.cGray + ".")); + } + } + }, player, "CC Reward 2015"); + } + } Manager.GetGame().AddGems(player, 30, "Slaying the Pumpkin King", false, false); Manager.GetGame().AddGems(player, 10, "Participation", false, false); } - SetCustomWinLine("You earned Christmas Elf Pet!"); - AnnounceEnd(this.GetTeamList().get(0)); + AnnounceEnd(getPlayersTeam()); SetState(GameState.End); } else if (GetPlayers(true).size() == 0) @@ -476,7 +510,7 @@ public class Christmas extends SoloGame } SetCustomWinLine("You all died..."); - AnnounceEnd(this.GetTeamList().get(1)); + AnnounceEnd(_badGuys); SetState(GameState.End); } else if (UtilTime.elapsed(GetStateTime(), _gameTime)) @@ -487,7 +521,7 @@ public class Christmas extends SoloGame } SetCustomWinLine("You did not save Christmas in time."); - AnnounceEnd(this.GetTeamList().get(1)); + AnnounceEnd(_badGuys); SetState(GameState.End); } @@ -504,7 +538,7 @@ public class Christmas extends SoloGame } SetCustomWinLine("Santa Claus was killed by the Giant!"); - AnnounceEnd(this.GetTeamList().get(1)); + AnnounceEnd(_badGuys); SetState(GameState.End); } @@ -572,30 +606,55 @@ public class Christmas extends SoloGame return; if (!IsLive()) + { + Scoreboard.Reset(); + + String line = ""; + for (int i = 0 ; i < 10 ; i++) + line += ((i % 2 == 0 ? C.cRed : C.cDGreen) + "█"); + + Scoreboard.WriteBlank(); + Scoreboard.Write(line); + + Scoreboard.WriteBlank(); + + Scoreboard.Write(C.cWhiteB + "May your winter"); + Scoreboard.Write(C.cWhiteB + "be filled with " + C.cYellowB + "joy" + C.cWhiteB + " and " + C.cYellowB + "cheer" + C.cWhiteB + "."); + + Scoreboard.WriteBlank(); + + Scoreboard.Write(C.cWhite + "Happy Holidays!"); + Scoreboard.Write(C.cWhiteB + "- Your friends at " + C.cGoldB + "MINEPLEX"); + + Scoreboard.WriteBlank(); + Scoreboard.Write(line); + + Scoreboard.Draw(); return; + } //Wipe Last Scoreboard.Reset(); //Rounds Scoreboard.WriteBlank(); - Scoreboard.Write(C.cWhite + "Challenge:"); - Scoreboard.Write(C.cYellow + (5 - _parts.size()) + " of " + 5); + Scoreboard.Write(C.cGoldB + "Challenge"); + Scoreboard.Write(C.cWhite + (5 - _parts.size()) + " of " + 5); //Presents Scoreboard.WriteBlank(); - Scoreboard.Write(C.cWhite + "Presents:"); - Scoreboard.Write(C.cYellow + GetSleigh().GetPresents().size() + " of " + 10); + Scoreboard.Write(C.cGreenB + "Presents"); + Scoreboard.Write(C.cWhite + GetSleigh().GetPresents().size() + " of " + 10); //Players Scoreboard.WriteBlank(); - Scoreboard.Write(C.cWhite + "Players:"); - Scoreboard.Write(C.cYellow + GetPlayers(true).size()); + Scoreboard.Write(C.cYellowB + "Players"); + Scoreboard.Write(C.cWhite + GetPlayers(true).size()); //Time Scoreboard.WriteBlank(); - Scoreboard.Write(C.cWhite + "Time Left:"); - Scoreboard.Write(C.cYellow + UtilTime.MakeStr(_gameTime - (System.currentTimeMillis() - GetStateTime()))); + Scoreboard.Write(C.cYellowB + "Time Left"); + Scoreboard.Write(C.cWhite + UtilTime.MakeStr(_gameTime - (System.currentTimeMillis() - GetStateTime()))); Scoreboard.Draw(); } @@ -679,4 +738,37 @@ public class Christmas extends SoloGame UtilPlayer.sendPacket(player, packet); } } + + @EventHandler + public void updateReigns(UpdateEvent event) + { + if (!InProgress()) + return; + + if (event.getType() != UpdateType.FASTER) + return; + + if (_sleigh == null) + return; + + if (_sleigh.getSanta() == null) + return; + + for (SleighHorse horse : _sleigh.getHorses()) + { + if (horse.Ent == null || !horse.Ent.isValid()) + continue; + + PacketPlayOutAttachEntity packet = new PacketPlayOutAttachEntity(1, ((CraftHorse) horse.Ent).getHandle(), (((CraftEntity) _sleigh.getSanta()).getHandle())); + + for (Player player : UtilServer.getPlayers()) + UtilPlayer.sendPacket(player, packet); + } + } + + @EventHandler + public void preventStand(PlayerInteractAtEntityEvent event) + { + event.setCancelled(true); + } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Sleigh.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Sleigh.java index c4c5e0950..a41031b6c 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Sleigh.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Sleigh.java @@ -2,30 +2,28 @@ package nautilus.game.arcade.game.games.christmas; import java.util.ArrayList; +import org.bukkit.ChatColor; +import org.bukkit.Color; +import org.bukkit.Effect; +import org.bukkit.FireworkEffect; +import org.bukkit.FireworkEffect.Type; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.block.BlockFace; +import org.bukkit.entity.Chicken; +import org.bukkit.entity.Entity; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Player; +import org.bukkit.util.Vector; + import mineplex.core.common.util.C; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilFirework; -import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilPlayer; import mineplex.core.recharge.Recharge; import mineplex.minecraft.game.core.damage.CustomDamageEvent; -import nautilus.game.arcade.game.games.christmas.parts.Part; - -import org.bukkit.ChatColor; -import org.bukkit.Color; -import org.bukkit.Effect; -import org.bukkit.FireworkEffect; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.FireworkEffect.Type; -import org.bukkit.block.BlockFace; -import org.bukkit.entity.Chicken; -import org.bukkit.entity.Entity; -import org.bukkit.entity.FallingBlock; -import org.bukkit.entity.Player; -import org.bukkit.util.Vector; public class Sleigh { @@ -41,6 +39,8 @@ public class Sleigh private ArrayList PresentsCollected = new ArrayList();; private Location Target; + + private Entity Santa; public void setupSleigh(Christmas host, Location loc) { @@ -52,24 +52,25 @@ public class Sleigh CentralEntity = loc.getWorld().spawn(loc, Chicken.class); UtilEnt.Vegetate(CentralEntity, true); - UtilEnt.ghost(CentralEntity, true, true); + UtilEnt.ghost(CentralEntity, true, false); + Host.Manager.GetCondition().Factory().Invisible("Sleigh", (LivingEntity) CentralEntity, null, Double.MAX_VALUE, 3, false, false, true); //Presents PresentSlots = new ArrayList(); - PresentSlots.add(new SleighPart(2, 0, 0, loc.clone(), -1, -2)); - PresentSlots.add(new SleighPart(2, 0, 0, loc.clone(), 0, -2)); - PresentSlots.add(new SleighPart(2, 0, 0, loc.clone(), 1, -2)); - PresentSlots.add(new SleighPart(2, 0, 0, loc.clone(), -1, -1)); - PresentSlots.add(new SleighPart(2, 0, 0, loc.clone(), 0, -1)); - PresentSlots.add(new SleighPart(2, 0, 0, loc.clone(), 1, -1)); + PresentSlots.add(new SleighPart(this, 2, 0, 0, loc.clone(), -1, -2)); + PresentSlots.add(new SleighPart(this, 2, 0, 0, loc.clone(), 0, -2)); + PresentSlots.add(new SleighPart(this, 2, 0, 0, loc.clone(), 1, -2)); + PresentSlots.add(new SleighPart(this, 2, 0, 0, loc.clone(), -1, -1)); + PresentSlots.add(new SleighPart(this, 2, 0, 0, loc.clone(), 0, -1)); + PresentSlots.add(new SleighPart(this, 2, 0, 0, loc.clone(), 1, -1)); - PresentSlots.add(new SleighPart(6, 0, 0, loc.clone(), -1, -2)); - PresentSlots.add(new SleighPart(6, 0, 0, loc.clone(), 0, -2)); - PresentSlots.add(new SleighPart(6, 0, 0, loc.clone(), 1, -2)); - PresentSlots.add(new SleighPart(6, 0, 0, loc.clone(), -1, -1)); - PresentSlots.add(new SleighPart(6, 0, 0, loc.clone(), 0, -1)); - PresentSlots.add(new SleighPart(6, 0, 0, loc.clone(), 1, -1)); + PresentSlots.add(new SleighPart(this, 6, 0, 0, loc.clone(), -1, -2)); + PresentSlots.add(new SleighPart(this, 6, 0, 0, loc.clone(), 0, -2)); + PresentSlots.add(new SleighPart(this, 6, 0, 0, loc.clone(), 1, -2)); + PresentSlots.add(new SleighPart(this, 6, 0, 0, loc.clone(), -1, -1)); + PresentSlots.add(new SleighPart(this, 6, 0, 0, loc.clone(), 0, -1)); + PresentSlots.add(new SleighPart(this, 6, 0, 0, loc.clone(), 1, -1)); //Sleigh SleighEnts = new ArrayList(); @@ -77,65 +78,71 @@ public class Sleigh for (SleighPart part : PresentSlots) SleighEnts.add(part); - SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), 0, -3)); - SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), -1, -3)); - SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), -2, -3)); - SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), 1, -3)); - SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), 2, -3)); + SleighEnts.add(new SleighPart(this, 0, 159, 14, loc.clone(), 0, -3)); + SleighEnts.add(new SleighPart(this, 0, 159, 14, loc.clone(), -1, -3)); + SleighEnts.add(new SleighPart(this, 0, 159, 14, loc.clone(), -2, -3)); + SleighEnts.add(new SleighPart(this, 0, 159, 14, loc.clone(), 1, -3)); + SleighEnts.add(new SleighPart(this, 0, 159, 14, loc.clone(), 2, -3)); - SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), -2, -2)); - SleighEnts.add(new SleighPart(0, 44, 7, loc.clone(), -1, -2)); - SleighEnts.add(new SleighPart(0, 44, 7, loc.clone(), 0, -2)); - SleighEnts.add(new SleighPart(0, 44, 7, loc.clone(), 1, -2)); - SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), 2, -2)); + SleighEnts.add(new SleighPart(this, 0, 159, 14, loc.clone(), -2, -2)); + SleighEnts.add(new SleighPart(this, 0, 44, 7, loc.clone(), -1, -2)); + SleighEnts.add(new SleighPart(this, 0, 44, 7, loc.clone(), 0, -2)); + SleighEnts.add(new SleighPart(this, 0, 44, 7, loc.clone(), 1, -2)); + SleighEnts.add(new SleighPart(this, 0, 159, 14, loc.clone(), 2, -2)); - SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), -2, -1)); - SleighEnts.add(new SleighPart(0, 44, 7, loc.clone(), -1, -1)); - SleighEnts.add(new SleighPart(0, 44, 7, loc.clone(), 0, -1)); - SleighEnts.add(new SleighPart(0, 44, 7, loc.clone(), 1, -1)); - SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), 2, -1)); + SleighEnts.add(new SleighPart(this, 0, 159, 14, loc.clone(), -2, -1)); + SleighEnts.add(new SleighPart(this, 0, 44, 7, loc.clone(), -1, -1)); + SleighEnts.add(new SleighPart(this, 0, 44, 7, loc.clone(), 0, -1)); + SleighEnts.add(new SleighPart(this, 0, 44, 7, loc.clone(), 1, -1)); + SleighEnts.add(new SleighPart(this, 0, 159, 14, loc.clone(), 2, -1)); - SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), -2, 0)); - SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), -1, 0)); - SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), 0, 0)); - SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), 1, 0)); - SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), 2, 0)); + SleighEnts.add(new SleighPart(this, 0, 159, 14, loc.clone(), -2, 0)); + SleighEnts.add(new SleighPart(this, 0, 159, 14, loc.clone(), -1, 0)); + SleighEnts.add(new SleighPart(this, 0, 159, 14, loc.clone(), 0, 0)); + SleighEnts.add(new SleighPart(this, 0, 159, 14, loc.clone(), 1, 0)); + SleighEnts.add(new SleighPart(this, 0, 159, 14, loc.clone(), 2, 0)); - SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), -2, 1)); - SleighEnts.add(new SleighPart(0, 44, 7, loc.clone(), -1, 1)); - SleighEnts.add(new SleighPart(0, 159, 15, loc.clone(), 0, 1)); - SleighEnts.add(new SleighPart(0, 44, 7, loc.clone(), 1, 1)); - SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), 2, 1)); + SleighEnts.add(new SleighPart(this, 0, 159, 14, loc.clone(), -2, 1)); + SleighEnts.add(new SleighPart(this, 0, 44, 7, loc.clone(), -1, 1)); + SleighEnts.add(new SleighPart(this, 0, 159, 15, loc.clone(), 0, 1)); + SleighEnts.add(new SleighPart(this, 0, 44, 7, loc.clone(), 1, 1)); + SleighEnts.add(new SleighPart(this, 0, 159, 14, loc.clone(), 2, 1)); - SleighEnts.add(new SleighPart(0, 44, 7, loc.clone(), -2, 2)); - SleighEnts.add(new SleighPart(0, 44, 7, loc.clone(), -1, 2)); - SleighEnts.add(new SleighPart(0, 44, 7, loc.clone(), 0, 2)); - SleighEnts.add(new SleighPart(0, 44, 7, loc.clone(), 1, 2)); - SleighEnts.add(new SleighPart(0, 44, 7, loc.clone(), 2, 2)); + SleighEnts.add(new SleighPart(this, 0, 44, 7, loc.clone(), -2, 2)); + SleighEnts.add(new SleighPart(this, 0, 44, 7, loc.clone(), -1, 2)); + SleighEnts.add(new SleighPart(this, 0, 44, 7, loc.clone(), 0, 2)); + SleighEnts.add(new SleighPart(this, 0, 44, 7, loc.clone(), 1, 2)); + SleighEnts.add(new SleighPart(this, 0, 44, 7, loc.clone(), 2, 2)); - SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), -2, 3)); - SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), -1, 3)); - SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), 0, 3)); - SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), 1, 3)); - SleighEnts.add(new SleighPart(0, 159, 14, loc.clone(), 2, 3)); + SleighEnts.add(new SleighPart(this, 0, 159, 14, loc.clone(), -2, 3)); + SleighEnts.add(new SleighPart(this, 0, 159, 14, loc.clone(), -1, 3)); + SleighEnts.add(new SleighPart(this, 0, 159, 14, loc.clone(), 0, 3)); + SleighEnts.add(new SleighPart(this, 0, 159, 14, loc.clone(), 1, 3)); + SleighEnts.add(new SleighPart(this, 0, 159, 14, loc.clone(), 2, 3)); //Santa - SleighPart santa = new SleighPart(3, 0, 0, loc.clone(), 0, 1); - santa.AddSanta(); + SleighPart santa = new SleighPart(this, 3, 0, 0, loc.clone(), 0, 1); + Santa = santa.AddSanta(); SleighEnts.add(santa); - SleighHorses.add(new SleighHorse(loc.clone(), -1.5, 8)); - SleighHorses.add(new SleighHorse(loc.clone(), 1.5, 8)); + SleighHorses.add(new SleighHorse(loc.clone(), "Dasher", -1.5, 8)); + SleighHorses.add(new SleighHorse(loc.clone(), "Dancer", 1.5, 8)); + + SleighHorses.add(new SleighHorse(loc.clone(), "Prancer", -1.5, 11)); + SleighHorses.add(new SleighHorse(loc.clone(), "Vixen", 1.5, 11)); + + SleighHorses.add(new SleighHorse(loc.clone(), "Comet", -1.5, 14)); + SleighHorses.add(new SleighHorse(loc.clone(), "Cupid", 1.5, 14)); - SleighHorses.add(new SleighHorse(loc.clone(), -1.5, 11)); - SleighHorses.add(new SleighHorse(loc.clone(), 1.5, 11)); + SleighHorses.add(new SleighHorse(loc.clone(), "Donner", -1.5, 17)); + SleighHorses.add(new SleighHorse(loc.clone(), "Blitzen", 1.5, 17)); for (SleighHorse horse : SleighHorses) horse.spawnHorse(); - for (SleighHorse horse : SleighHorses) - UtilEnt.Leash(horse.Ent, santa.GetTop(), false, false); +// for (SleighHorse horse : SleighHorses) +// UtilEnt.Leash(horse.Ent, santa.GetTop(), true, false); } public Location GetLocation() @@ -157,6 +164,8 @@ public class Sleigh Move(CentralEntity, Target, 1); + Santa.setTicksLived(1); + //Move Sleigh for (SleighPart part : SleighEnts) { @@ -184,24 +193,6 @@ public class Sleigh { for (Player player : Host.GetPlayers(true)) { - if (!Recharge.Instance.usable(player, "Sleigh Bump")) - continue; - - for (SleighPart part : SleighEnts) - if (UtilMath.offset(player, part.Ent) < 1) - { - UtilAction.velocity(player, UtilAlg.getTrajectory2d(CentralEntity, player), 0.4, true, 0.2, 0, 0, true); - Recharge.Instance.useForce(player, "Sleigh Bump", 400); - } - - - for (SleighHorse part : SleighHorses) - if (UtilMath.offset(player, part.Ent) < 1) - { - UtilAction.velocity(player, UtilAlg.getTrajectory2d(CentralEntity, player), 0.4, true, 0.2, 0, 0, true); - Recharge.Instance.useForce(player, "Sleigh Bump", 400); - } - if (player.getLocation().getZ() < CentralEntity.getLocation().getZ() - 24) { player.damage(1); @@ -211,6 +202,64 @@ public class Sleigh Recharge.Instance.useForce(player, "Sleigh Bump", 400); } } + + for (SleighPart part : SleighEnts) + { + for (Entity ent : UtilEnt.getInRadius(part.Ent.getLocation(), 1).keySet()) + { + boolean matches = false; + for (SleighPart cur : SleighEnts) + { + if (ent instanceof LivingEntity && cur.HasEntity((LivingEntity) ent)) + { + matches = true; + break; + } + } + + if (matches) + continue; + + if (ent instanceof Player) + { + if (!Recharge.Instance.usable((Player) ent, "Sleigh Bump")) + continue; + + Recharge.Instance.useForce((Player) ent, "Sleigh Bump", 400); + } + + UtilAction.velocity(ent, UtilAlg.getTrajectory2d(CentralEntity, ent), 0.4, true, 0.2, 0, 0, true); + } + } + + for (SleighHorse part : SleighHorses) + { + for (Entity ent : UtilEnt.getInRadius(part.Ent.getLocation(), 1).keySet()) + { + boolean matches = false; + for (SleighPart cur : SleighEnts) + { + if (ent instanceof LivingEntity && cur.HasEntity((LivingEntity) ent)) + { + matches = true; + break; + } + } + + if (matches) + continue; + + if (ent instanceof Player) + { + if (!Recharge.Instance.usable((Player) ent, "Sleigh Bump")) + continue; + + Recharge.Instance.useForce((Player) ent, "Sleigh Bump", 400); + } + + UtilAction.velocity(ent, UtilAlg.getTrajectory2d(CentralEntity, ent), 0.4, true, 0.2, 0, 0, true); + } + } } public boolean HasPresent(Location loc) @@ -222,6 +271,7 @@ public class Sleigh { PresentsCollected.add(loc); loc.getBlock().setType(Material.AIR); + loc.getBlock().getRelative(BlockFace.DOWN).getRelative(BlockFace.DOWN).setType(Material.IRON_BLOCK); loc.getBlock().getRelative(BlockFace.DOWN).setType(Material.GLASS); UtilFirework.launchFirework(loc.clone().add(0.5, 0.5, 0.5), FireworkEffect.builder().flicker(false).withColor(Color.YELLOW).with(Type.BALL).trail(true).build(), new Vector(0,1,0), 0); @@ -267,4 +317,9 @@ public class Sleigh { return SleighHorses; } + + public Entity getSanta() + { + return Santa; + } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/SleighHorse.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/SleighHorse.java index 10a772184..0f0e5ed2f 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/SleighHorse.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/SleighHorse.java @@ -2,6 +2,19 @@ package nautilus.game.arcade.game.games.christmas; import java.util.HashSet; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.craftbukkit.v1_8_R3.CraftWorld; +import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftItemStack; +import org.bukkit.entity.Horse; +import org.bukkit.entity.Horse.Color; +import org.bukkit.entity.Horse.Style; +import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.util.Vector; + +import mineplex.core.common.util.C; import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilPlayer; import net.minecraft.server.v1_8_R3.DataWatcher; @@ -14,19 +27,6 @@ import net.minecraft.server.v1_8_R3.PacketPlayOutEntityTeleport; import net.minecraft.server.v1_8_R3.PacketPlayOutSpawnEntityLiving; import net.minecraft.server.v1_8_R3.Vector3f; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.craftbukkit.v1_8_R3.CraftWorld; -import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer; -import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftItemStack; -import org.bukkit.entity.Horse; -import org.bukkit.entity.Player; -import org.bukkit.entity.Horse.Color; -import org.bukkit.entity.Horse.Style; -import org.bukkit.entity.LivingEntity; -import org.bukkit.inventory.ItemStack; -import org.bukkit.util.Vector; - public class SleighHorse { private Location _lastFacing; @@ -40,9 +40,11 @@ public class SleighHorse public int horseId; public double OffsetX; public double OffsetZ; + public String Name; - public SleighHorse(Location loc, double x, double z) + public SleighHorse(Location loc, String name, double x, double z) { + Name = name; OffsetX = x; OffsetZ = z; _lastFacing = loc.add(x, 0.5, z); @@ -182,6 +184,10 @@ public class SleighHorse Ent = _lastFacing.getWorld().spawn(_lastFacing.subtract(0, 0.5, 0), Horse.class); UtilEnt.Vegetate(Ent); UtilEnt.ghost(Ent, true, false); + Ent.setRemoveWhenFarAway(false); + + Ent.setCustomName(C.cWhiteB + Name); + Ent.setCustomNameVisible(true); Ent.setStyle(Style.BLACK_DOTS); Ent.setColor(Color.BROWN); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/SleighPart.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/SleighPart.java index 2c0406f27..877d36049 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/SleighPart.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/SleighPart.java @@ -1,9 +1,5 @@ package nautilus.game.arcade.game.games.christmas; -import mineplex.core.common.util.C; -import mineplex.core.common.util.UtilEnt; -import mineplex.core.common.util.UtilMath; - import org.bukkit.Color; import org.bukkit.Location; import org.bukkit.Material; @@ -16,6 +12,10 @@ import org.bukkit.entity.Skeleton; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.LeatherArmorMeta; +import mineplex.core.common.util.C; +import mineplex.core.common.util.UtilEnt; +import mineplex.core.common.util.UtilMath; + public class SleighPart { public Chicken Ent; @@ -23,38 +23,32 @@ public class SleighPart public double OffsetX; public double OffsetZ; - public SleighPart(int rise, int id, int data, Location loc, double x, double z) + public int Rise; + public int Id; + public int Data; + public Location Location; + + public SleighPart(Sleigh sleigh, int rise, int id, int data, Location loc, double x, double z) { //Base Ent = loc.getWorld().spawn(loc.add(x, 0, z), Chicken.class); Ent.setBaby(); Ent.setAgeLock(true); + Ent.setRemoveWhenFarAway(false); + UtilEnt.Vegetate(Ent, true); - UtilEnt.ghost(Ent, true, true); - + UtilEnt.ghost(Ent, true, false); + sleigh.Host.Manager.GetCondition().Factory().Invisible("Sleigh", Ent, null, Double.MAX_VALUE, 3, false, false, true); + //Height - Chicken top = Ent; - for (int i=0 ; i _heightComparator = new Comparator() + { + @Override + public int compare(Block o1, Block o2) + { + if (o1.getLocation().getBlockY() == o2.getLocation().getBlockY()) + return 0; + + return o1.getLocation().getBlockY() > o2.getLocation().getBlockY() ? 1 : -1; + } + }; + public IceMaze(Christmas host, ArrayList mazeCorners, ArrayList mazeExits, Location[] presents) { Host = host; @@ -71,6 +84,8 @@ public class IceMaze if (_blocks.isEmpty()) return; + Collections.sort(_blocks, _heightComparator); + for (int i=0 ; i<20 ; i++) { if (_blocks.isEmpty()) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/content/SnowmanBoss.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/content/SnowmanBoss.java index cae20e196..b97da2215 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/content/SnowmanBoss.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/content/SnowmanBoss.java @@ -1,17 +1,15 @@ package nautilus.game.arcade.game.games.christmas.content; import java.util.ArrayList; +import java.util.List; import org.bukkit.Effect; import org.bukkit.Location; import org.bukkit.craftbukkit.v1_8_R3.entity.CraftCreature; -import org.bukkit.entity.Creature; import org.bukkit.entity.Entity; import org.bukkit.entity.IronGolem; import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.IronGolem; import org.bukkit.entity.Player; -import org.bukkit.entity.Slime; import org.bukkit.entity.Snowball; import org.bukkit.entity.Snowman; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; @@ -147,7 +145,17 @@ public class SnowmanBoss else { if ((minion.Target == null || !minion.Target.isValid() || !Host.IsAlive(minion.Target)) && !Host.GetPlayers(true).isEmpty()) - minion.Target = UtilAlg.Random(Host.GetPlayers(true)); + { + List valid = new ArrayList(); + for (Player player : Host.GetPlayers(true)) + if (UtilMath.offset(player, minion.Ent) <= 25 && player.getLocation().getBlockY() >= minion.Ent.getLocation().getBlockY()) + valid.add(player); + + minion.Target = UtilAlg.Random(valid); + } + + if (minion.Target == null) + continue; //Move UtilEnt.CreatureMoveFast(minion.Ent, minion.Target.getLocation(), 1.6f); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/content/SnowmanMaze.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/content/SnowmanMaze.java index 5aeecaa3b..140bcb805 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/content/SnowmanMaze.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/content/SnowmanMaze.java @@ -6,17 +6,6 @@ import java.util.HashSet; import java.util.Iterator; import java.util.Map.Entry; -import mineplex.core.common.util.F; -import mineplex.core.common.util.UtilAction; -import mineplex.core.common.util.UtilAlg; -import mineplex.core.common.util.UtilEnt; -import mineplex.core.common.util.UtilMath; -import mineplex.core.common.util.UtilPlayer; -import mineplex.core.common.util.UtilTime; -import mineplex.core.common.util.UtilWorld; -import mineplex.core.recharge.Recharge; -import nautilus.game.arcade.game.games.christmas.Christmas; - import org.bukkit.Effect; import org.bukkit.Location; import org.bukkit.Material; @@ -28,6 +17,16 @@ import org.bukkit.entity.Snowman; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.util.Vector; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilAction; +import mineplex.core.common.util.UtilAlg; +import mineplex.core.common.util.UtilEnt; +import mineplex.core.common.util.UtilMath; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.recharge.Recharge; +import nautilus.game.arcade.game.games.christmas.Christmas; +import nautilus.game.arcade.game.games.christmas.content.SnowmanWaypoint.CardinalDirection; + public class SnowmanMaze { private Christmas Host; @@ -163,48 +162,90 @@ public class SnowmanMaze if (south != null) nextBlock.add(south); if (east != null) nextBlock.add(east); if (west != null) nextBlock.add(west); - - //Random Direction - if (!nextBlock.isEmpty()) + + if(nextBlock.isEmpty()) { - data.getValue().Target = UtilAlg.Random(nextBlock).getLocation().add(0.5, 0, 0.5); - UtilEnt.CreatureMove(data.getKey(), data.getValue().Target, 1.4f); + entIterator.remove(); + data.getKey().remove(); + continue; + } + + if(nextBlock.size() > 1 && data.getValue().Direction != CardinalDirection.NULL) // they can do a uturn if they're stuck + { + if(data.getValue().Direction == CardinalDirection.NORTH) + { + nextBlock.remove(south); + } + else if(data.getValue().Direction == CardinalDirection.SOUTH) + { + nextBlock.remove(north); + } + else if(data.getValue().Direction == CardinalDirection.WEST) + { + nextBlock.remove(east); + } + else if(data.getValue().Direction == CardinalDirection.EAST) + { + nextBlock.remove(west); + } + } + + if (nextBlock.isEmpty()) + { + entIterator.remove(); + data.getKey().remove(); + continue; + } + + //Random Direction + Location nextLoc = UtilAlg.Random(nextBlock).getLocation(); + data.getValue().Target = nextLoc.clone().add(0.5, 0, 0.5); + if(north != null && nextLoc.equals(north.getLocation())) + { + data.getValue().Direction = CardinalDirection.NORTH; + } + else if(south != null && nextLoc.equals(south.getLocation())) + { + data.getValue().Direction = CardinalDirection.SOUTH; + } + else if(east != null && nextLoc.equals(east.getLocation())) + { + data.getValue().Direction = CardinalDirection.EAST; + } + else if(west != null && nextLoc.equals(west.getLocation())) + { + data.getValue().Direction = CardinalDirection.WEST; } } - - //Timeout Move - if (UtilMath.offset(data.getKey().getLocation(), data.getValue().Last) > 0.1) - data.getValue().Time = System.currentTimeMillis(); - - if (UtilTime.elapsed(data.getValue().Time, 2000)) - UtilEnt.CreatureMove(data.getKey(), data.getValue().Target, 1.4f); + + UtilEnt.CreatureMoveFast(data.getKey(), data.getValue().Target, 1.4f); } } - + private Block getTarget(Block start, Block cur, BlockFace face) { if (cur == null) cur = start; - + while (_waypoints.contains(cur.getRelative(face))) { cur = cur.getRelative(face); - + //Stop at intersection int count = 0; - - if (face != BlockFace.NORTH && _waypoints.contains(cur.getRelative(BlockFace.NORTH))) count++; - if (face != BlockFace.SOUTH && _waypoints.contains(cur.getRelative(BlockFace.SOUTH))) count++; - if (face != BlockFace.EAST && _waypoints.contains(cur.getRelative(BlockFace.EAST))) count++; - if (face != BlockFace.WEST && _waypoints.contains(cur.getRelative(BlockFace.WEST))) count++; - + + if (face != BlockFace.NORTH && _waypoints.contains(cur.getRelative(BlockFace.NORTH)) && !_waypoints.contains(cur.getRelative(BlockFace.NORTH))) count++; + if (face != BlockFace.SOUTH && _waypoints.contains(cur.getRelative(BlockFace.SOUTH)) && !_waypoints.contains(cur.getRelative(BlockFace.SOUTH))) count++; + if (face != BlockFace.EAST && _waypoints.contains(cur.getRelative(BlockFace.EAST)) && !_waypoints.contains(cur.getRelative(BlockFace.EAST))) count++; + if (face != BlockFace.WEST && _waypoints.contains(cur.getRelative(BlockFace.WEST)) && !_waypoints.contains(cur.getRelative(BlockFace.WEST))) count++; + if (count > 1) break; } - + if (cur.equals(start)) return null; - + return cur; } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/content/SnowmanWaypoint.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/content/SnowmanWaypoint.java index 78e197277..22c0deabf 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/content/SnowmanWaypoint.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/content/SnowmanWaypoint.java @@ -6,6 +6,7 @@ public class SnowmanWaypoint { public Location Last; public Location Target; + public CardinalDirection Direction = CardinalDirection.NULL; public long Time; public SnowmanWaypoint(Location last) @@ -14,4 +15,9 @@ public class SnowmanWaypoint Target = null; Time = System.currentTimeMillis(); } + + public static enum CardinalDirection + { + NORTH, SOUTH, EAST, WEST, NULL // such order much not care + } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/kits/KitPlayer.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/kits/KitPlayer.java index 9af09d62b..3c3efcee3 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/kits/KitPlayer.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/kits/KitPlayer.java @@ -1,12 +1,15 @@ package nautilus.game.arcade.game.games.christmas.kits; +import org.bukkit.Color; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.EntityType; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import mineplex.core.common.util.C; +import mineplex.core.itemstack.ItemBuilder; import mineplex.core.itemstack.ItemStackFactory; import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.kit.Kit; @@ -21,15 +24,23 @@ public class KitPlayer extends Kit new String[] { - "Help Santa retreive the lost presents!" + "Help Santa retrieve the lost presents!" }, new Perk[] { }, - EntityType.ZOMBIE, + EntityType.SKELETON, new ItemStack(Material.IRON_SWORD)); - + } + + @Override + public void SpawnCustom(LivingEntity ent) + { + ent.getEquipment().setHelmet(new ItemBuilder(Material.LEATHER_HELMET).setColor(Color.RED).setUnbreakable(true).build()); + ent.getEquipment().setChestplate(new ItemBuilder(Material.LEATHER_CHESTPLATE).setColor(Color.RED).build()); + ent.getEquipment().setLeggings(new ItemBuilder(Material.LEATHER_LEGGINGS).setColor(Color.RED).build()); + ent.getEquipment().setBoots(new ItemBuilder(Material.LEATHER_BOOTS).setColor(Color.BLACK).build()); } @Override @@ -43,7 +54,7 @@ public class KitPlayer extends Kit item = ItemStackFactory.Instance.CreateStack(Material.BOW, (byte)0, 1, C.cGreen + C.Bold + "Toy Bow"); item.addEnchantment(Enchantment.ARROW_INFINITE, 1); player.getInventory().setItem(1, item); - player.getInventory().setItem(28, ItemStackFactory.Instance.CreateStack(Material.ARROW)); + player.getInventory().setItem(9, ItemStackFactory.Instance.CreateStack(Material.ARROW)); //Axe item = ItemStackFactory.Instance.CreateStack(Material.STONE_PICKAXE, (byte)0, 1, C.cGreen + C.Bold + "Coal Digger"); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/parts/Part.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/parts/Part.java index 7a96132c4..ea8e171cc 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/parts/Part.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/parts/Part.java @@ -1,35 +1,42 @@ package nautilus.game.arcade.game.games.christmas.parts; -import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.block.BlockFace; +import org.bukkit.craftbukkit.v1_8_R3.entity.CraftCreature; +import org.bukkit.entity.Ageable; +import org.bukkit.entity.ArmorStand; +import org.bukkit.entity.Creature; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.HandlerList; +import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityDamageEvent; +import org.bukkit.event.player.PlayerInteractAtEntityEvent; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.SkullMeta; + import mineplex.core.common.util.C; +import mineplex.core.common.util.NautHashMap; import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilMath; +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.common.util.UtilServer; import mineplex.core.common.util.UtilTextTop; +import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import nautilus.game.arcade.game.games.christmas.Christmas; import nautilus.game.arcade.game.games.christmas.ChristmasAudio; import net.minecraft.server.v1_8_R3.EntityCreature; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.SkullType; -import org.bukkit.block.Block; -import org.bukkit.block.BlockFace; -import org.bukkit.block.Skull; -import org.bukkit.craftbukkit.v1_8_R3.entity.CraftCreature; -import org.bukkit.entity.Ageable; -import org.bukkit.entity.Creature; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.HandlerList; -import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerInteractEvent; - public abstract class Part implements Listener { public Christmas Host; @@ -42,6 +49,7 @@ public abstract class Part implements Listener protected double _objectiveHealth = 1; protected HashMap _creatures = new HashMap(); + protected NautHashMap _spawnedPresents = new NautHashMap(); public Part(Christmas host, Location sleigh, Location[] presents) { @@ -53,38 +61,63 @@ public abstract class Part implements Listener loc.getBlock().setType(Material.AIR); } + @SuppressWarnings("deprecation") public void Prepare() { Activate(); for (Location loc : _presents) - { - Block present = loc.getBlock(); - present.setTypeIdAndData(Material.SKULL.getId(), (byte)1, true); - - Skull skull = (Skull) present.getState(); - skull.setSkullType(SkullType.PLAYER); + { + Location standLoc = loc.clone().add(0, -1.45, 0); + standLoc.setYaw(UtilMath.r(100)); - //Present Type - double r = Math.random(); - if (r > 0.75) skull.setOwner("CruXXx"); - else if (r > 0.5) skull.setOwner("CruXXx"); - else if (r > 0.25) skull.setOwner("CruXXx"); - else skull.setOwner("CruXXx"); + Host.CreatureAllowOverride = true; + ArmorStand stand = loc.getWorld().spawn(standLoc, ArmorStand.class); + Host.CreatureAllowOverride = false; - //Angle - BlockFace face = BlockFace.UP; - while (face == BlockFace.UP || face == BlockFace.DOWN || face == BlockFace.SELF) - face = BlockFace.values()[UtilMath.r(BlockFace.values().length)]; - skull.setRotation(face); - - skull.update(); + stand.setVisible(false); + stand.setGravity(false); + + ItemStack stack = ItemStackFactory.Instance.CreateStack(Material.SKULL_ITEM, (byte) 3); + SkullMeta meta = (SkullMeta) stack.getItemMeta(); + meta.setOwner("CruXXx"); + stack.setItemMeta(meta); + + stand.setHelmet(stack); +// +// present.setTypeIdAndData(Material.SKULL.getId(), (byte)1, true); +// +// Skull skull = (Skull) present.getState(); +// skull.setSkullType(SkullType.PLAYER); +// +// //Present Type +// double r = Math.random(); +// if (r > 0.75) skull.setOwner("CruXXx"); +// else if (r > 0.5) skull.setOwner("CruXXx"); +// else if (r > 0.25) skull.setOwner("CruXXx"); +// else skull.setOwner("CruXXx"); +// +// //Angle +// BlockFace face = BlockFace.UP; +// while (face == BlockFace.UP || face == BlockFace.DOWN || face == BlockFace.SELF) +// face = BlockFace.values()[UtilMath.r(BlockFace.values().length)]; +// skull.setRotation(face); +// +// skull.update(); + + _spawnedPresents.put(stand, loc); //Beacon - present.getRelative(BlockFace.DOWN).setType(Material.BEACON); for (int x=-1 ; x<=1 ; x++) for (int z=-1 ; z<=1 ; z++) - present.getRelative(x, -2, z).setType(Material.IRON_BLOCK); + { + loc.getBlock().getRelative(x, -2, z).setType(Material.IRON_BLOCK); + loc.getBlock().getRelative(x, -3, z).setType(Material.IRON_BLOCK); + } + + loc.getBlock().getRelative(BlockFace.DOWN).getRelative(BlockFace.DOWN).setType(Material.BEACON); + loc.getBlock().getRelative(BlockFace.DOWN).setType(Material.STAINED_GLASS); + loc.getBlock().getRelative(BlockFace.DOWN).setData(UtilMath.randomElement(new Byte[]{14, 5, 13})); } } @@ -157,35 +190,38 @@ public abstract class Part implements Listener return true; } - @EventHandler - public void PresentCollect(PlayerInteractEvent event) + @EventHandler(priority = EventPriority.LOW, ignoreCancelled = false) + public void PresentCollect(PlayerInteractAtEntityEvent event) { - if (event.getClickedBlock() == null) + Location present = _spawnedPresents.get(event.getRightClicked()); + if (present == null) return; - + boolean contains = false; for (Location loc : _presents) - if (loc.getBlock().equals(event.getClickedBlock())) + if (loc.getBlock().equals(present.getBlock())) contains = true; if (!contains) return; - event.setCancelled(true); - if (!Host.IsLive()) return; if (!Host.IsAlive(event.getPlayer())) return; - if (Host.GetSleigh().HasPresent(event.getClickedBlock().getLocation())) + if (Host.GetSleigh().HasPresent(present.getBlock().getLocation())) return; - if (UtilMath.offset(event.getPlayer().getLocation(), event.getClickedBlock().getLocation().add(0.5, 0.5, 0.5)) > 2) + if (UtilMath.offset(event.getPlayer().getLocation(), present.clone().add(0.5, 0.5, 0.5)) > 2) return; - Host.GetSleigh().AddPresent(event.getClickedBlock().getLocation()); + _spawnedPresents.remove(event.getRightClicked()); + + event.getRightClicked().remove(); + + Host.GetSleigh().AddPresent(present.getBlock().getLocation()); Host.SantaSay("Well done " + event.getPlayer().getName() + "! You collected a present!", null); } @@ -276,4 +312,21 @@ public abstract class Part implements Listener _creatures.clear(); } + @EventHandler + public void onDamagePresent(EntityDamageEvent event) + { + event.setCancelled(_spawnedPresents.containsKey(event.getEntity())); + } + + @EventHandler + public void PresentParticles(UpdateEvent event) + { + if (event.getType() != UpdateType.FAST) + return; + + for (Entity ent : _spawnedPresents.keySet()) + { + UtilParticle.PlayParticle(ParticleType.HAPPY_VILLAGER, ent.getLocation().clone().add(0, 1.5, 0), .3F, .3F, .3F, 0F, 1, ViewDist.LONG, UtilServer.getPlayers()); + } + } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/parts/Part1.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/parts/Part1.java index c37047bce..6839ff135 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/parts/Part1.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/parts/Part1.java @@ -1,41 +1,33 @@ package nautilus.game.arcade.game.games.christmas.parts; import java.util.ArrayList; -import java.util.HashMap; import java.util.Iterator; -import mineplex.core.common.util.UtilAlg; -import mineplex.core.common.util.UtilEnt; -import mineplex.core.common.util.UtilMath; -import mineplex.core.common.util.UtilParticle; -import mineplex.core.common.util.UtilServer; -import mineplex.core.common.util.UtilTime; -import mineplex.core.common.util.UtilParticle.ParticleType; -import mineplex.core.common.util.UtilParticle.ViewDist; -import mineplex.core.updater.UpdateType; -import mineplex.core.updater.event.UpdateEvent; -import mineplex.minecraft.game.core.damage.CustomDamageEvent; -import nautilus.game.arcade.events.GameStateChangeEvent; -import nautilus.game.arcade.game.Game.GameState; -import nautilus.game.arcade.game.games.christmas.Christmas; -import nautilus.game.arcade.game.games.christmas.ChristmasAudio; - 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.entity.Entity; -import org.bukkit.entity.Player; import org.bukkit.entity.Skeleton; import org.bukkit.entity.TNTPrimed; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.entity.EntityExplodeEvent; import org.bukkit.event.entity.ExplosionPrimeEvent; import org.bukkit.inventory.ItemStack; +import mineplex.core.common.util.UtilAlg; +import mineplex.core.common.util.UtilMath; +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilParticle.ViewDist; +import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilTime; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; +import nautilus.game.arcade.game.games.christmas.Christmas; +import nautilus.game.arcade.game.games.christmas.ChristmasAudio; + public class Part1 extends Part { private ArrayList _skeletons; @@ -145,7 +137,7 @@ public class Part1 extends Part _presents = System.currentTimeMillis(); - Host.SantaSay("Theres some of the presents up ahead!", ChristmasAudio.P1_B); + Host.SantaSay("There are some of the presents up ahead!", ChristmasAudio.P1_B); SetObjectivePresents(); } @@ -189,7 +181,7 @@ public class Part1 extends Part } Host.SantaSay("Clear the path! Watch out for the undead!", ChristmasAudio.P1_D); - SetObjectiveText("Clear a path for Santas Sleigh!", 1); + SetObjectiveText("Clear a path for Santa's Sleigh!", 1); } private void UpdateClear() diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/parts/Part4.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/parts/Part4.java index 7286d1512..26b282b57 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/parts/Part4.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/parts/Part4.java @@ -3,10 +3,22 @@ package nautilus.game.arcade.game.games.christmas.parts; import java.util.ArrayList; import java.util.Iterator; +import org.bukkit.Effect; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.Sound; +import org.bukkit.entity.FallingBlock; +import org.bukkit.entity.Giant; +import org.bukkit.entity.Zombie; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.entity.EntityChangeBlockEvent; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.inventory.ItemStack; + import mineplex.core.common.util.C; import mineplex.core.common.util.UtilAlg; import mineplex.core.common.util.UtilMath; -import mineplex.core.common.util.UtilPlayer; import mineplex.core.hologram.Hologram; import mineplex.core.hologram.HologramManager; import mineplex.core.updater.UpdateType; @@ -17,24 +29,6 @@ import nautilus.game.arcade.game.games.christmas.ChristmasAudio; import nautilus.game.arcade.game.games.christmas.content.CaveGiant; import nautilus.game.arcade.game.games.christmas.content.Snake; -import org.bukkit.ChatColor; -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.entity.FallingBlock; -import org.bukkit.entity.Giant; -import org.bukkit.entity.Spider; -import org.bukkit.entity.Zombie; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.entity.EntityChangeBlockEvent; -import org.bukkit.event.entity.EntityDamageEvent.DamageCause; -import org.bukkit.event.player.PlayerInteractEvent; -import org.bukkit.inventory.ItemStack; - public class Part4 extends Part { private ArrayList _roofIce; @@ -51,6 +45,13 @@ public class Part4 extends Part private boolean _b = false; private HologramManager _holoManager; + private String[] _evilElfNames = new String[] + { "Bing", "Bling", "Blitz", "Larry", "Buddy", "Buster", "Cedar", "Dash", "Eggnog", "Elfie", "Elm", "Elvis", + "Evergreen", "Figgy", "Flake", "Frank", "Frost", "Gabriel", "George", "Henry", "Hermey", "Ice", "Jangle", + "Jingle", "Jinx", "Kringle", "Kris", "Louie", "Max", "Mistletoe", "Nat", "Nick", "Noel", "Pax", "Peppermin", + "Pine", "Ralphie", "Rudy", "Snow", "Snowball", "Star", "Tinsel", "Tiny", "Topper", "Trinket", "Wayne", + "Wink", "Yule", "Zippy" }; + public Part4(HologramManager holoManager, Christmas host, Location sleigh, Location[] presents, ArrayList roofIce, ArrayList mobs, ArrayList snakeHead, ArrayList snakeTrail, ArrayList gate, ArrayList checkpoints, Location giant) { @@ -85,7 +86,7 @@ public class Part4 extends Part @EventHandler public void GateUpdate(UpdateEvent event) { - if (event.getType() != UpdateType.SEC) + if (event.getType() != UpdateType.FAST) return; if (_gate.isEmpty()) @@ -187,6 +188,8 @@ public class Part4 extends Part ent.getEquipment().setLeggings(new ItemStack(Material.LEATHER_LEGGINGS)); ent.getEquipment().setBoots(new ItemStack(Material.LEATHER_BOOTS)); ent.setVillager(true); + + ent.setCustomName("Evil Elf " + UtilMath.randomElement(_evilElfNames)); ent.setHealth(9); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/parts/Part5.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/parts/Part5.java index 741b7f3ac..2dceaca60 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/parts/Part5.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/parts/Part5.java @@ -2,41 +2,37 @@ package nautilus.game.arcade.game.games.christmas.parts; import java.util.ArrayList; -import mineplex.core.common.util.UtilAction; -import mineplex.core.common.util.UtilAlg; -import mineplex.core.common.util.UtilEnt; -import mineplex.core.common.util.UtilMath; -import mineplex.core.common.util.UtilServer; -import mineplex.core.common.util.UtilTime; -import mineplex.core.updater.UpdateType; -import mineplex.core.updater.event.UpdateEvent; -import mineplex.minecraft.game.core.damage.CustomDamageEvent; -import nautilus.game.arcade.game.games.christmas.Christmas; -import nautilus.game.arcade.game.games.christmas.ChristmasAudio; -import nautilus.game.arcade.game.games.christmas.content.*; -import net.minecraft.server.v1_8_R3.EntityCreature; - import org.bukkit.Bukkit; import org.bukkit.Effect; import org.bukkit.EntityEffect; 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.entity.CraftCreature; import org.bukkit.entity.Player; import org.bukkit.entity.Snowman; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.bukkit.event.HandlerList; import org.bukkit.event.block.BlockBurnEvent; import org.bukkit.event.block.BlockIgniteEvent; import org.bukkit.event.entity.EntityCombustEvent; -import org.bukkit.event.entity.EntityExplodeEvent; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; +import org.bukkit.event.entity.EntityExplodeEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent; +import mineplex.core.common.util.UtilAction; +import mineplex.core.common.util.UtilAlg; +import mineplex.core.common.util.UtilMath; +import mineplex.core.common.util.UtilTime; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; +import mineplex.minecraft.game.core.damage.CustomDamageEvent; +import nautilus.game.arcade.game.games.christmas.Christmas; +import nautilus.game.arcade.game.games.christmas.ChristmasAudio; +import nautilus.game.arcade.game.games.christmas.content.BossFloor; +import nautilus.game.arcade.game.games.christmas.content.BossMobs; +import nautilus.game.arcade.game.games.christmas.content.BossSnowmanPattern; +import nautilus.game.arcade.game.games.christmas.content.PumpkinKing; + public class Part5 extends Part { private ArrayList _spawn; @@ -385,6 +381,9 @@ public class Part5 extends Part @EventHandler public void Damage(CustomDamageEvent event) { + if (event.isCancelled()) + return; + if (_boss == null) return; From 0c383f8bf4858c4e3a32658f8d2b54e171b761eb Mon Sep 17 00:00:00 2001 From: Mysticate Date: Sun, 13 Dec 2015 18:58:03 -0500 Subject: [PATCH 45/81] Remove bad message --- .../Mineplex.Hub/src/mineplex/hub/server/ui/ServerGameMenu.java | 1 - 1 file changed, 1 deletion(-) diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerGameMenu.java b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerGameMenu.java index cd1a4d1fd..86b7852ec 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerGameMenu.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerGameMenu.java @@ -4,7 +4,6 @@ import java.util.ArrayList; import java.util.List; import org.bukkit.ChatColor; -//Mysticate@184.154.0.242:7990/scm/min/mineplex.git import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; From 0e9e8c155f2f680cbded4a75eba11f57ee723626 Mon Sep 17 00:00:00 2001 From: Mysticate Date: Sun, 13 Dec 2015 19:11:06 -0500 Subject: [PATCH 46/81] Quick fix that I don't think i caused. --- .../Mineplex.Hub/src/mineplex/hub/server/ui/ServerGameMenu.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerGameMenu.java b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerGameMenu.java index 86b7852ec..6b1411ecd 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerGameMenu.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerGameMenu.java @@ -248,7 +248,7 @@ public class ServerGameMenu extends ShopPageBase setItem(42, _minigameCycle.get(_minigameIndex)); setItem(44, new ItemBuilder(Material.SKULL_ITEM, 1, (byte) 3) - .addLore(C.Reset + C.Bold + C.cYellow + "Player Servers " + C.cGray + "Player Hosted Games").addLore(new String[] + .setTitle(C.Reset + C.Bold + C.cYellow + "Player Servers " + C.cGray + "Player Hosted Games").addLore(new String[] { C.Reset + "", C.Reset + "Join your friends in their own ", From a827f95eb448564d925f861bb3d386db9ecf02c6 Mon Sep 17 00:00:00 2001 From: Mysticate Date: Sun, 13 Dec 2015 19:24:24 -0500 Subject: [PATCH 47/81] Fixed scoreboard. VIVA LA FIESTA --- .../game/arcade/game/games/christmas/Christmas.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Christmas.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Christmas.java index ebe29c61b..7def0ed30 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Christmas.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Christmas.java @@ -610,7 +610,7 @@ public class Christmas extends SoloGame Scoreboard.Reset(); String line = ""; - for (int i = 0 ; i < 10 ; i++) + for (int i = 0 ; i < 20 ; i++) line += ((i % 2 == 0 ? C.cRed : C.cDGreen) + "█"); Scoreboard.WriteBlank(); @@ -619,12 +619,14 @@ public class Christmas extends SoloGame Scoreboard.WriteBlank(); Scoreboard.Write(C.cWhiteB + "May your winter"); - Scoreboard.Write(C.cWhiteB + "be filled with " + C.cYellowB + "joy" + C.cWhiteB + " and " + C.cYellowB + "cheer" + C.cWhiteB + "."); + Scoreboard.Write(C.cWhiteB + "be filled with"); + Scoreboard.Write(C.cYellowB + "joy" + C.cWhiteB + " and " + C.cYellowB + "cheer" + C.cWhiteB + "."); Scoreboard.WriteBlank(); - Scoreboard.Write(C.cWhite + "Happy Holidays!"); - Scoreboard.Write(C.cWhiteB + "- Your friends at " + C.cGoldB + "MINEPLEX"); + Scoreboard.Write(C.cAquaB + "Happy Holidays!"); + Scoreboard.Write(C.cWhiteB + "- Your friends at"); + Scoreboard.Write(C.cGoldB + "MINEPLEX"); Scoreboard.WriteBlank(); Scoreboard.Write(line); From 0dd7db27cd6196b22acdc2ed751efce63ecbfaf7 Mon Sep 17 00:00:00 2001 From: Mysticate Date: Sun, 13 Dec 2015 19:49:41 -0500 Subject: [PATCH 48/81] FIXED FORAMTTING --- .../nautilus/game/arcade/game/games/christmas/Christmas.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Christmas.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Christmas.java index 7def0ed30..d3644f231 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Christmas.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Christmas.java @@ -620,11 +620,14 @@ public class Christmas extends SoloGame Scoreboard.Write(C.cWhiteB + "May your winter"); Scoreboard.Write(C.cWhiteB + "be filled with"); - Scoreboard.Write(C.cYellowB + "joy" + C.cWhiteB + " and " + C.cYellowB + "cheer" + C.cWhiteB + "."); + Scoreboard.Write(C.cYellowB + "joy" + C.cWhiteB + " and " + C.cYellowB + "cheer."); Scoreboard.WriteBlank(); Scoreboard.Write(C.cAquaB + "Happy Holidays!"); + + Scoreboard.WriteBlank(); + Scoreboard.Write(C.cWhiteB + "- Your friends at"); Scoreboard.Write(C.cGoldB + "MINEPLEX"); From b5bdf7ced4341d29116c6efdd91a7bc85b65fd91 Mon Sep 17 00:00:00 2001 From: libraryaddict Date: Mon, 14 Dec 2015 15:42:32 +1300 Subject: [PATCH 49/81] Remove custom name on players on join and arcade spectator --- .../src/mineplex/core/CustomTagFix.java | 22 ++++++++++++++----- .../nautilus/game/arcade/ArcadeManager.java | 3 +++ 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/CustomTagFix.java b/Plugins/Mineplex.Core/src/mineplex/core/CustomTagFix.java index 790df2c43..d757499b7 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/CustomTagFix.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/CustomTagFix.java @@ -35,6 +35,8 @@ import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerToggleFlightEvent; import org.bukkit.event.player.PlayerVelocityEvent; @@ -81,6 +83,15 @@ public class CustomTagFix extends MiniPlugin implements IPacketHandler, NCPHook _loggedIn.remove(event.getPlayer()); } + @EventHandler(priority = EventPriority.LOW) + public void playerJoin(PlayerJoinEvent event) + { + Player player = event.getPlayer(); + + player.setCustomName(""); + player.setCustomNameVisible(false); + } + @EventHandler public void ncpExempt(final PlayerToggleFlightEvent event) { @@ -140,7 +151,8 @@ public class CustomTagFix extends MiniPlugin implements IPacketHandler, NCPHook { Entry> entry = iterator.next(); - for (Iterator> innerIterator = entry.getValue().entrySet().iterator(); innerIterator.hasNext();) + for (Iterator> innerIterator = entry.getValue().entrySet().iterator(); innerIterator + .hasNext();) { final Entry entry2 = innerIterator.next(); @@ -247,7 +259,7 @@ public class CustomTagFix extends MiniPlugin implements IPacketHandler, NCPHook _entityNameMap.get(owner.getName()).put(spawnPacket.a, entityName); _entityMap.get(owner.getName()).put(spawnPacket.a, new Integer[] { - newId + newId }); sendProtocolPackets(owner, spawnPacket.a, newId, entityName, verifier, true, -1); @@ -349,7 +361,7 @@ public class CustomTagFix extends MiniPlugin implements IPacketHandler, NCPHook { newId = new Integer[] { - UtilEnt.getNewEntityId() + UtilEnt.getNewEntityId() }; _entityMap.get(owner.getName()).put(metaPacket.a, newId); @@ -469,8 +481,8 @@ public class CustomTagFix extends MiniPlugin implements IPacketHandler, NCPHook _entityRiding.get(owner.getName()).remove(attachPacket.b); - sendProtocolPackets(owner, vehicleId, ids[ids.length - 1], - _entityNameMap.get(owner.getName()).get(vehicleId), verifier, true, ids.length > 1 ? ids[0] : -1); + sendProtocolPackets(owner, vehicleId, ids[ids.length - 1], _entityNameMap.get(owner.getName()).get(vehicleId), + verifier, true, ids.length > 1 ? ids[0] : -1); } else { 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 fbf22d621..016289a6f 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java @@ -921,6 +921,9 @@ public class ArcadeManager extends MiniPlugin implements IRelation ((CraftEntity) player).getHandle().getDataWatcher().watch(0, Byte.valueOf((byte) 0)); + player.setCustomName(""); + player.setCustomNameVisible(false); + player.setSprinting(false); player.setSneaking(false); From a04eaddc427553f97bb159e35970e76c3e4664c0 Mon Sep 17 00:00:00 2001 From: Mysticate Date: Sun, 13 Dec 2015 22:25:18 -0500 Subject: [PATCH 50/81] Fixed bump --- .../arcade/game/games/christmas/Sleigh.java | 50 +++++++++++-------- 1 file changed, 28 insertions(+), 22 deletions(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Sleigh.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Sleigh.java index a41031b6c..26ef62540 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Sleigh.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Sleigh.java @@ -207,17 +207,7 @@ public class Sleigh { for (Entity ent : UtilEnt.getInRadius(part.Ent.getLocation(), 1).keySet()) { - boolean matches = false; - for (SleighPart cur : SleighEnts) - { - if (ent instanceof LivingEntity && cur.HasEntity((LivingEntity) ent)) - { - matches = true; - break; - } - } - - if (matches) + if (isPart(ent)) continue; if (ent instanceof Player) @@ -236,17 +226,7 @@ public class Sleigh { for (Entity ent : UtilEnt.getInRadius(part.Ent.getLocation(), 1).keySet()) { - boolean matches = false; - for (SleighPart cur : SleighEnts) - { - if (ent instanceof LivingEntity && cur.HasEntity((LivingEntity) ent)) - { - matches = true; - break; - } - } - - if (matches) + if (isPart(ent)) continue; if (ent instanceof Player) @@ -322,4 +302,30 @@ public class Sleigh { return Santa; } + + public boolean isPart(Entity ent) + { + if (ent == null) + return false; + + if (ent == CentralEntity) + return true; + + if (ent == Santa) + return true; + + for (SleighPart part : SleighEnts) + if (part.Block == ent || part.Ent == ent || (ent instanceof LivingEntity && part.HasEntity((LivingEntity) ent))) + return true; + + for (SleighHorse horse : SleighHorses) + if (horse.Ent == ent || (ent instanceof LivingEntity && horse.HasEntity((LivingEntity) ent))) + return true; + + for (SleighPart part : PresentSlots) + if (part.Block == ent || part.Ent == ent || (ent instanceof LivingEntity && part.HasEntity((LivingEntity) ent))) + return true; + + return false; + } } From 42244ae79876e2075ddeeccb057c26116e7a922f Mon Sep 17 00:00:00 2001 From: Mysticate Date: Sun, 13 Dec 2015 22:43:11 -0500 Subject: [PATCH 51/81] Snowman AI fix --- .../arcade/game/games/christmas/content/SnowmanMaze.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/content/SnowmanMaze.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/content/SnowmanMaze.java index 140bcb805..a9d5d3767 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/content/SnowmanMaze.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/content/SnowmanMaze.java @@ -234,10 +234,10 @@ public class SnowmanMaze //Stop at intersection int count = 0; - if (face != BlockFace.NORTH && _waypoints.contains(cur.getRelative(BlockFace.NORTH)) && !_waypoints.contains(cur.getRelative(BlockFace.NORTH))) count++; - if (face != BlockFace.SOUTH && _waypoints.contains(cur.getRelative(BlockFace.SOUTH)) && !_waypoints.contains(cur.getRelative(BlockFace.SOUTH))) count++; - if (face != BlockFace.EAST && _waypoints.contains(cur.getRelative(BlockFace.EAST)) && !_waypoints.contains(cur.getRelative(BlockFace.EAST))) count++; - if (face != BlockFace.WEST && _waypoints.contains(cur.getRelative(BlockFace.WEST)) && !_waypoints.contains(cur.getRelative(BlockFace.WEST))) count++; + if (face != BlockFace.NORTH && _waypoints.contains(cur.getRelative(BlockFace.NORTH))) count++; + if (face != BlockFace.SOUTH && _waypoints.contains(cur.getRelative(BlockFace.SOUTH))) count++; + if (face != BlockFace.EAST && _waypoints.contains(cur.getRelative(BlockFace.EAST))) count++; + if (face != BlockFace.WEST && _waypoints.contains(cur.getRelative(BlockFace.WEST))) count++; if (count > 1) break; From dcf3c1ea8840475263b53f4a8391f67500685868 Mon Sep 17 00:00:00 2001 From: Jonathan Williams Date: Sun, 13 Dec 2015 23:14:17 -0500 Subject: [PATCH 52/81] Deleted and added new Cache since renaming was jacked up. --- Plugins/BuildFiles/common.xml | 10 +++++----- .../.classpath | 0 .../.project | 0 .../src/mineplex/cache/player/PlayerCache.java | 0 .../src/mineplex/cache/player/PlayerInfo.java | 0 .../Mineplex.PlayerCache/Mineplex.PlayerCache.iml | 12 ------------ 6 files changed, 5 insertions(+), 17 deletions(-) rename Plugins/{Mineplex.PlayerCache => Mineplex.Cache}/.classpath (100%) rename Plugins/{Mineplex.PlayerCache => Mineplex.Cache}/.project (100%) rename Plugins/{Mineplex.PlayerCache => Mineplex.Cache}/src/mineplex/cache/player/PlayerCache.java (100%) rename Plugins/{Mineplex.PlayerCache => Mineplex.Cache}/src/mineplex/cache/player/PlayerInfo.java (100%) delete mode 100644 Plugins/Mineplex.PlayerCache/Mineplex.PlayerCache.iml diff --git a/Plugins/BuildFiles/common.xml b/Plugins/BuildFiles/common.xml index 4200a7c8a..7cbbd04a4 100644 --- a/Plugins/BuildFiles/common.xml +++ b/Plugins/BuildFiles/common.xml @@ -86,7 +86,7 @@ - + @@ -158,7 +158,7 @@ - + @@ -210,7 +210,7 @@ - + @@ -249,7 +249,7 @@ - + @@ -329,7 +329,7 @@ - + diff --git a/Plugins/Mineplex.PlayerCache/.classpath b/Plugins/Mineplex.Cache/.classpath similarity index 100% rename from Plugins/Mineplex.PlayerCache/.classpath rename to Plugins/Mineplex.Cache/.classpath diff --git a/Plugins/Mineplex.PlayerCache/.project b/Plugins/Mineplex.Cache/.project similarity index 100% rename from Plugins/Mineplex.PlayerCache/.project rename to Plugins/Mineplex.Cache/.project diff --git a/Plugins/Mineplex.PlayerCache/src/mineplex/cache/player/PlayerCache.java b/Plugins/Mineplex.Cache/src/mineplex/cache/player/PlayerCache.java similarity index 100% rename from Plugins/Mineplex.PlayerCache/src/mineplex/cache/player/PlayerCache.java rename to Plugins/Mineplex.Cache/src/mineplex/cache/player/PlayerCache.java diff --git a/Plugins/Mineplex.PlayerCache/src/mineplex/cache/player/PlayerInfo.java b/Plugins/Mineplex.Cache/src/mineplex/cache/player/PlayerInfo.java similarity index 100% rename from Plugins/Mineplex.PlayerCache/src/mineplex/cache/player/PlayerInfo.java rename to Plugins/Mineplex.Cache/src/mineplex/cache/player/PlayerInfo.java diff --git a/Plugins/Mineplex.PlayerCache/Mineplex.PlayerCache.iml b/Plugins/Mineplex.PlayerCache/Mineplex.PlayerCache.iml deleted file mode 100644 index 54892e832..000000000 --- a/Plugins/Mineplex.PlayerCache/Mineplex.PlayerCache.iml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file From c34ac3ec523a993bb9f6bcc801ad0c4ff2005fbc Mon Sep 17 00:00:00 2001 From: Cheese Date: Mon, 14 Dec 2015 15:21:43 +1100 Subject: [PATCH 53/81] xmas --- .../nautilus/game/arcade/game/games/christmas/Christmas.java | 2 +- .../game/arcade/game/games/christmas/content/SnowmanBoss.java | 4 ++-- .../game/arcade/game/games/christmas/content/SnowmanMaze.java | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Christmas.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Christmas.java index d3644f231..226fbcb51 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Christmas.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Christmas.java @@ -475,7 +475,7 @@ public class Christmas extends SoloGame } else { - SetCustomWinMessage(player, "You earned " + C.cYellow + "Winter Chest x2"); + SetCustomWinMessage(player, "You earned " + C.cYellow + "2x Winter Holiday Treasure"); Manager.GetTaskManager().completedTask(new Callback() { diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/content/SnowmanBoss.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/content/SnowmanBoss.java index b97da2215..82b334134 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/content/SnowmanBoss.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/content/SnowmanBoss.java @@ -49,8 +49,8 @@ public class SnowmanBoss _minions.add(new SnowmanMinion(_spawn.getWorld().spawn(_spawn, Snowman.class))); _heart = _spawn.getWorld().spawn(_spawn, IronGolem.class); - _heart.setMaxHealth(1000); - _heart.setHealth(1000); + _heart.setMaxHealth(1400); + _heart.setHealth(1400); UtilEnt.Vegetate(_heart); Host.CreatureAllowOverride = false; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/content/SnowmanMaze.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/content/SnowmanMaze.java index a9d5d3767..e65212177 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/content/SnowmanMaze.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/content/SnowmanMaze.java @@ -254,7 +254,7 @@ public class SnowmanMaze //Spawn if (!Host.GetSleigh().HasPresent(_present)) { - while (_ents.size() < 36) + while (_ents.size() < 44) { Location loc = UtilAlg.Random(_spawns); From 94169a5b8a16b364d2386a597866ceed6c68d4fd Mon Sep 17 00:00:00 2001 From: Cheese Date: Mon, 14 Dec 2015 15:29:34 +1100 Subject: [PATCH 54/81] it made me push it :( --- Plugins/Mineplex.PlayerCache/.project | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 Plugins/Mineplex.PlayerCache/.project diff --git a/Plugins/Mineplex.PlayerCache/.project b/Plugins/Mineplex.PlayerCache/.project new file mode 100644 index 000000000..5321c2157 --- /dev/null +++ b/Plugins/Mineplex.PlayerCache/.project @@ -0,0 +1,17 @@ + + + Mineplex.Cache + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + From fe3431ba0436834ced9353389f23ece576af3714 Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Sun, 13 Dec 2015 23:31:21 -0500 Subject: [PATCH 55/81] Cosmetic Menu Update --- .../mineplex/core/common/CurrencyType.java | 8 +- .../mineplex/core/cosmetic/ui/page/Menu.java | 280 +++++++++++------- .../core/shop/page/ConfirmationPage.java | 2 +- .../mineplex/core/treasure/TreasureType.java | 8 +- 4 files changed, 190 insertions(+), 108 deletions(-) diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/CurrencyType.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/CurrencyType.java index 6a007fefa..e54f9f28f 100644 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/CurrencyType.java +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/CurrencyType.java @@ -4,10 +4,10 @@ import org.bukkit.Material; public enum CurrencyType { - Tokens(" Tokens", Material.EMERALD), - Coins(" Coins", Material.DOUBLE_PLANT), - Gems(" Gems", Material.EMERALD), - Gold(" Gold", Material.GOLD_NUGGET); + Tokens("Tokens", Material.EMERALD), + Coins("Treasure Shards", Material.PRISMARINE_SHARD), + Gems("Gems", Material.EMERALD), + Gold("Gold", Material.GOLD_NUGGET); private String _prefix; private Material _displayMaterial; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java index e29d110ca..b191a0d93 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java @@ -1,5 +1,8 @@ package mineplex.core.cosmetic.ui.page; +import java.util.EnumMap; +import java.util.List; + import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Creature; @@ -11,6 +14,9 @@ import mineplex.core.account.CoreClientManager; import mineplex.core.common.CurrencyType; import mineplex.core.common.util.C; import mineplex.core.common.util.F; +import mineplex.core.common.util.LineFormat; +import mineplex.core.common.util.UtilText; +import mineplex.core.common.util.UtilUI; import mineplex.core.cosmetic.CosmeticManager; import mineplex.core.cosmetic.ui.CosmeticShop; import mineplex.core.cosmetic.ui.button.OpenArrowTrails; @@ -29,6 +35,7 @@ import mineplex.core.donation.Donor; import mineplex.core.gadget.types.Gadget; import mineplex.core.gadget.types.GadgetType; import mineplex.core.mount.Mount; +import mineplex.core.pet.Pet; import mineplex.core.shop.item.IButton; import mineplex.core.shop.item.ShopItem; import mineplex.core.shop.page.ConfirmationPage; @@ -53,114 +60,189 @@ public class Menu extends ShopPageBase // " " // }, 1, false)); - addButton(1, new ShopItem(Material.NETHER_STAR, "Particle Effects", 1, false), new OpenParticles(this)); - addButton(3, new ShopItem(Material.ARROW, "Arrow Trails", 1, false), new OpenArrowTrails(this)); - addButton(5, new ShopItem(Material.GOLD_BOOTS, "Double Jump Effects", 1, false), new OpenDoubleJump(this)); - addButton(7, new ShopItem(Material.SKULL_ITEM, "Death Animations", 1, false), new OpenDeathAnimations(this)); - - addButton(19, new ShopItem(Material.MELON_BLOCK, "Gadgets", 1, false), new OpenGadgets(this)); - addButton(21, new ShopItem(Material.LEATHER, "Morphs", 1, false), new OpenMorphs(this)); - addButton(23, new ShopItem(Material.IRON_BARDING, "Mounts", 1, false), new OpenMounts(this)); - addButton(25, new ShopItem(Material.BONE, "Pets", 1, false), new OpenPets(this)); - - addButton(37, new ShopItem(Material.GOLD_HELMET, "Hats", 1, false), new OpenHats(this)); - addButton(39, new ShopItem(Material.DIAMOND_CHESTPLATE, "Costumes", 1, false), new OpenCostumes(this)); - addButton(41, new ShopItem(Material.GREEN_RECORD, "Music", 1, false), new OpenMusic(this)); - addButton(43, new ShopItem(Material.NAME_TAG, "Taunts", new String[]{C.Bold + "", C.cDGreen + C.Italics + "Coming soon!"}, 1, false), new IButton() + int[] slots = UtilUI.getIndicesFor(12, 1); + int particleSlot = slots[0]; + int arrowSlot = slots[1]; + int jumpSlot = slots[2]; + int deathSlot = slots[3]; + int gadgetSlot = slots[4]; + int morphSlot = slots[5]; + int mountSlot = slots[6]; + int petSlot = slots[7]; + int hatSlot = slots[8]; + int costumeSlot = slots[9]; + int musicSlot = slots[10]; + int tauntSlot = slots[11]; + + EnumMap ownedCount = new EnumMap(GadgetType.class); + EnumMap maxCount = new EnumMap(GadgetType.class); + EnumMap enabled = new EnumMap(GadgetType.class); + + for(GadgetType type : GadgetType.values()) + { + ownedCount.put(type, 0); + maxCount.put(type, 0); + + List gadgets = getPlugin().getGadgetManager().getGadgets(type); + if (gadgets != null) + { + for (Gadget gadget : gadgets) + { + if (gadget.ownsGadget(getPlayer())) + { + ownedCount.put(type, ownedCount.get(type) + 1); + } + + maxCount.put(type, maxCount.get(type) + 1); + } + } + + final Gadget gadget = getPlugin().getGadgetManager().getActive(getPlayer(), type); + if(gadget != null) enabled.put(type, gadget); + +// addButton(slot, new ShopItem(gadget.GetDisplayMaterial(), gadget.GetDisplayData(), C.mItem + gadget.GetName(), new String[0], 1, false, false), +// new IButton() +// { +// public void onClick(Player player, ClickType clickType) { +// playAcceptSound(player); +// gadget.Disable(player); +// refresh(); +// }; +// }); + } + + int mountOwned = 0; + int mountMax = 0; + Mount mountActive = getPlugin().getMountManager().getActive(getPlayer()); + for (Mount mount : getPlugin().getMountManager().getMounts()) + { + if (mount.HasMount(getPlayer())) + { + mountOwned++; + } + + mountMax++; + } + + int petOwned = 0; + int petMax = 0; + for (Pet pet : getPlugin().getPetManager().GetFactory().GetPets()) + { + if (getPlugin().getPetManager().Get(getPlayer()).GetPets().containsKey(pet.GetPetType())) + { + petOwned++; + } + + petMax++; + } + Creature petActive = getPlugin().getPetManager().GetPet(getPlayer()); + + GadgetType type = GadgetType.Particle; + String[] lore = getLore(ownedCount.get(type), maxCount.get(type), enabled.get(type)); + addButton(particleSlot, new ShopItem(Material.NETHER_STAR, "Particle Effects", lore, 1, false), new OpenParticles(this)); + if (enabled.containsKey(type)) addGlow(particleSlot); + + type = GadgetType.ArrowTrail; + lore = getLore(ownedCount.get(type), maxCount.get(type), enabled.get(type)); + addButton(arrowSlot, new ShopItem(Material.ARROW, "Arrow Trails", lore, 1, false), new OpenArrowTrails(this)); + if (enabled.containsKey(type)) addGlow(arrowSlot); + + type = GadgetType.DoubleJump; + lore = getLore(ownedCount.get(type), maxCount.get(type), enabled.get(type)); + addButton(jumpSlot, new ShopItem(Material.GOLD_BOOTS, "Double Jump Effects", lore, 1, false), new OpenDoubleJump(this)); + if (enabled.containsKey(type)) addGlow(jumpSlot); + + type = GadgetType.Death; + lore = getLore(ownedCount.get(type), maxCount.get(type), enabled.get(type)); + addButton(deathSlot, new ShopItem(Material.SKULL_ITEM, "Death Animations", lore, 1, false), new OpenDeathAnimations(this)); + if (enabled.containsKey(type)) addGlow(deathSlot); + + type = GadgetType.Item; + lore = getLore(ownedCount.get(type), maxCount.get(type), enabled.get(type)); + addButton(gadgetSlot, new ShopItem(Material.MELON_BLOCK, "Gadgets", lore, 1, false), new OpenGadgets(this)); + if (enabled.containsKey(type)) addGlow(gadgetSlot); + + type = GadgetType.Morph; + lore = getLore(ownedCount.get(type), maxCount.get(type), enabled.get(type)); + addButton(morphSlot, new ShopItem(Material.LEATHER, "Morphs", lore, 1, false), new OpenMorphs(this)); + if (enabled.containsKey(type)) addGlow(morphSlot); + + lore = getLore(mountOwned, mountMax, mountActive == null ? null : mountActive.GetName()); + addButton(mountSlot, new ShopItem(Material.IRON_BARDING, "Mounts", lore, 1, false), new OpenMounts(this)); + if (mountActive != null) addGlow(mountSlot); + + lore = getLore(petOwned, petMax, petActive == null ? null : petActive.getCustomName()); + addButton(petSlot, new ShopItem(Material.BONE, "Pets", lore, 1, false), new OpenPets(this)); + if (petActive != null) addGlow(petSlot); + + type = GadgetType.Hat; + lore = getLore(ownedCount.get(type), maxCount.get(type), enabled.get(type)); + addButton(hatSlot, new ShopItem(Material.GOLD_HELMET, "Hats", lore, 1, false), new OpenHats(this)); + if (enabled.containsKey(type)) addGlow(hatSlot); + + type = GadgetType.Costume; + lore = getLore(ownedCount.get(type), maxCount.get(type), enabled.get(type)); + addButton(costumeSlot, new ShopItem(Material.DIAMOND_CHESTPLATE, "Costumes", lore, 1, false), new OpenCostumes(this)); + if (enabled.containsKey(type)) addGlow(costumeSlot); + + type = GadgetType.MusicDisc; + lore = getLore(ownedCount.get(type), maxCount.get(type), enabled.get(type)); + addButton(musicSlot, new ShopItem(Material.GREEN_RECORD, "Music", lore, 1, false), new OpenMusic(this)); + if (enabled.containsKey(type)) addGlow(musicSlot); + + addButton(tauntSlot, new ShopItem(Material.NAME_TAG, "Taunts", new String[]{C.Bold + "", C.cDGreen + C.Italics + "Coming soon!"}, 1, false), new IButton() { @Override public void onClick(Player player, ClickType clickType) { - player.sendMessage(F.main("Shop", "Comming soon!")); + player.sendMessage(F.main("Shop", "Coming soon!")); } }); - - for(GadgetType type : GadgetType.values()) + +// if (getPlugin().getPetManager().hasActivePet(getPlayer().getName())) +// { +// Creature activePet = getPlugin().getPetManager().getActivePet(getPlayer().getName()); +// String petName = activePet.getType() == EntityType.WITHER ? "Widder" : activePet.getCustomName(); +// addButton(25 + 9, new ShopItem(Material.MONSTER_EGG, (byte) getPlugin().getPetManager().getActivePet(getPlayer().getName()).getType().getTypeId(), C.mItem + petName, new String[0], 1, false, false), +// new IButton() +// { +// public void onClick(Player player, ClickType clickType) +// { +// playAcceptSound(player); +// getPlugin().getPetManager().RemovePet(player, true); +// refresh(); +// } +// }); +// } + } + + private String[] getLore(int ownedCount, int maxCount, Gadget enabled) + { + return getLore(ownedCount, maxCount, enabled == null ? null : enabled.GetName()); + } + + private String[] getLore(int ownedCount, int maxCount, String enabled) + { + if (enabled != null) { - final Gadget gadget = getPlugin().getGadgetManager().getActive(getPlayer(), type); - if(gadget == null) continue; - - int slot = 10; - switch (type) - { - case Particle: - slot = 1; - break; - case ArrowTrail: - slot = 3; - break; - case DoubleJump: - slot = 5; - break; - case Death: - slot = 7; - break; - case Item: - slot = 19; - break; - case Morph: - slot = 21; - break; - case Hat: - slot = 37; - break; - case Costume: - slot = 39; - break; - case MusicDisc: - slot = 41; - break; - case Taunt: - slot = 43; - break; - default: - slot = 1; - break; - } - slot += 9; - - addButton(slot, new ShopItem(gadget.GetDisplayMaterial(), gadget.GetDisplayData(), C.mItem + gadget.GetName(), new String[0], 1, false, false), - new IButton() - { - public void onClick(Player player, ClickType clickType) { - playAcceptSound(player); - gadget.Disable(player); - refresh(); - }; - }); + return UtilText.splitLinesToArray(new String[] { + C.blankLine, + C.cWhite + "You own " + C.cYellow + ownedCount + "/" + maxCount, + C.blankLine, + C.cWhite + "Active: " + C.cGreen + enabled, + C.cWhite + "Right Click to Disable", + C.blankLine, + C.cWhite + "Left Click to View Category" + }, LineFormat.LORE); } - - if (getPlugin().getMountManager().getActive(getPlayer()) != null) + else { - final Mount mount = getPlugin().getMountManager().getActive(getPlayer()); - - addButton(23 + 9, - new ShopItem(mount.GetDisplayMaterial(), mount.GetDisplayData(), C.mItem + mount.GetName(), new String[0], 1, false, false), - new IButton() - { - public void onClick(Player player, ClickType clickType) - { - playAcceptSound(player); - mount.Disable(player); - refresh(); - } - }); - } - - if (getPlugin().getPetManager().hasActivePet(getPlayer().getName())) - { - Creature activePet = getPlugin().getPetManager().getActivePet(getPlayer().getName()); - String petName = activePet.getType() == EntityType.WITHER ? "Widder" : activePet.getCustomName(); - addButton(25 + 9, new ShopItem(Material.MONSTER_EGG, (byte) getPlugin().getPetManager().getActivePet(getPlayer().getName()).getType().getTypeId(), C.mItem + petName, new String[0], 1, false, false), - new IButton() - { - public void onClick(Player player, ClickType clickType) - { - playAcceptSound(player); - getPlugin().getPetManager().RemovePet(player, true); - refresh(); - } - }); + return UtilText.splitLinesToArray(new String[] { + C.blankLine, + C.cWhite + "You own " + C.cYellow + ownedCount + "/" + maxCount, + C.blankLine, + C.cWhite + "Left Click to View Category" + }, LineFormat.LORE); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/shop/page/ConfirmationPage.java b/Plugins/Mineplex.Core/src/mineplex/core/shop/page/ConfirmationPage.java index b253a4ea7..c52c84e2b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/shop/page/ConfirmationPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/shop/page/ConfirmationPage.java @@ -79,7 +79,7 @@ public class ConfirmationPage Date: Mon, 14 Dec 2015 15:33:09 +1100 Subject: [PATCH 56/81] xmas a little harder --- .../nautilus/game/arcade/game/games/christmas/Christmas.java | 2 +- .../game/arcade/game/games/christmas/content/CaveGiant.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Christmas.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Christmas.java index 226fbcb51..8d129fc69 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Christmas.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/Christmas.java @@ -488,7 +488,7 @@ public class Christmas extends SoloGame } else { - UtilPlayer.message(player, F.main("Inventory", "An error occured while giving you " + C.cRed + "Winter Chest x2" + C.cGray + ".")); + UtilPlayer.message(player, F.main("Inventory", "An error occured while giving you " + C.cRed + "2x Winter Holiday Treasure" + C.cGray + ".")); } } }, player, "CC Reward 2015"); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/content/CaveGiant.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/content/CaveGiant.java index 153e41aa2..65c5b40d1 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/content/CaveGiant.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/christmas/content/CaveGiant.java @@ -32,8 +32,8 @@ public class CaveGiant Host.Host.CreatureAllowOverride = false; UtilEnt.Vegetate(_ent); - _ent.setMaxHealth(200); - _ent.setHealth(200); + _ent.setMaxHealth(300); + _ent.setHealth(300); _tpLoc = _ent.getLocation(); From bccade55bc5c597cece36a4054ff1fdb72f3e3af Mon Sep 17 00:00:00 2001 From: Cheese Date: Mon, 14 Dec 2015 15:43:45 +1100 Subject: [PATCH 57/81] reduced coal fumes size --- .../gadget/gadgets/particle/ParticleCoalFumes.java | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCoalFumes.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCoalFumes.java index 364d388d2..587d8d56d 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCoalFumes.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCoalFumes.java @@ -28,19 +28,12 @@ public class ParticleCoalFumes extends ParticleGadget @EventHandler public void onUpdate(UpdateEvent event) { - if(event.getType() != UpdateType.TICK) return; - -// int dur = 200; -// int tick = Math.abs(event.getTick()%dur); - - -// double d = tick/(double)dur; -// float xz = (float) Math.sin(d*Math.PI); - float xz = 2; + if(event.getType() != UpdateType.TICK) + return; for(Player p : GetActive()) { - UtilParticle.PlayParticleToAll(ParticleType.LARGE_SMOKE, p.getLocation(), xz, 0, xz, 0, 5, ViewDist.NORMAL); + UtilParticle.PlayParticleToAll(ParticleType.LARGE_SMOKE, p.getLocation(), 0.8f, 0, 0.8f, 0, 6, ViewDist.NORMAL); } } From e8b0e5dd8ed0a255c1a60f64da7dcc7a27c069e2 Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Sun, 13 Dec 2015 23:51:47 -0500 Subject: [PATCH 58/81] Fix IntellIJ Files --- .../artifacts/Nautilus_Core_Craftbukkit_jar.xml | 9 --------- Plugins/.idea/compiler.xml | 2 +- Plugins/.idea/modules.xml | 2 +- .../Mineplex.Bungee.Mineplexer.iml | 2 +- Plugins/Mineplex.Cache/Mineplex.Cache.iml | 12 ++++++++++++ Plugins/Mineplex.Core/Mineplex.Core.iml | 2 +- 6 files changed, 16 insertions(+), 13 deletions(-) delete mode 100644 Plugins/.idea/artifacts/Nautilus_Core_Craftbukkit_jar.xml create mode 100644 Plugins/Mineplex.Cache/Mineplex.Cache.iml diff --git a/Plugins/.idea/artifacts/Nautilus_Core_Craftbukkit_jar.xml b/Plugins/.idea/artifacts/Nautilus_Core_Craftbukkit_jar.xml deleted file mode 100644 index b855273ea..000000000 --- a/Plugins/.idea/artifacts/Nautilus_Core_Craftbukkit_jar.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - $PROJECT_DIR$/bin - - - - - - \ No newline at end of file diff --git a/Plugins/.idea/compiler.xml b/Plugins/.idea/compiler.xml index df8666836..ec08cea77 100644 --- a/Plugins/.idea/compiler.xml +++ b/Plugins/.idea/compiler.xml @@ -23,7 +23,7 @@ - + diff --git a/Plugins/.idea/modules.xml b/Plugins/.idea/modules.xml index a734c3f2e..c3f549fab 100644 --- a/Plugins/.idea/modules.xml +++ b/Plugins/.idea/modules.xml @@ -5,6 +5,7 @@ + @@ -14,7 +15,6 @@ - diff --git a/Plugins/Mineplex.Bungee.Mineplexer/Mineplex.Bungee.Mineplexer.iml b/Plugins/Mineplex.Bungee.Mineplexer/Mineplex.Bungee.Mineplexer.iml index 872b77ead..a1a0bd8bf 100644 --- a/Plugins/Mineplex.Bungee.Mineplexer/Mineplex.Bungee.Mineplexer.iml +++ b/Plugins/Mineplex.Bungee.Mineplexer/Mineplex.Bungee.Mineplexer.iml @@ -13,6 +13,6 @@ - + \ No newline at end of file diff --git a/Plugins/Mineplex.Cache/Mineplex.Cache.iml b/Plugins/Mineplex.Cache/Mineplex.Cache.iml new file mode 100644 index 000000000..54892e832 --- /dev/null +++ b/Plugins/Mineplex.Cache/Mineplex.Cache.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/Plugins/Mineplex.Core/Mineplex.Core.iml b/Plugins/Mineplex.Core/Mineplex.Core.iml index 06f039df9..c6de528e3 100644 --- a/Plugins/Mineplex.Core/Mineplex.Core.iml +++ b/Plugins/Mineplex.Core/Mineplex.Core.iml @@ -20,6 +20,6 @@ - + \ No newline at end of file From 55fffdad59346768d936db22c68eded32e81000c Mon Sep 17 00:00:00 2001 From: Cheese Date: Mon, 14 Dec 2015 16:03:51 +1100 Subject: [PATCH 59/81] fixed some colors --- .../src/mineplex/core/cosmetic/ui/page/GadgetPage.java | 4 ++-- .../mineplex/core/gadget/gadgets/outfit/OutfitRaveSuit.java | 2 +- .../mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuit.java | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java index de8ac1f19..ffc32a7b4 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java @@ -86,7 +86,7 @@ public class GadgetPage extends ShopPageBase if (gadget.getSet() != null) { itemLore.add(C.cBlack); - itemLore.add(C.cGray + gadget.getSet().getName() + " Set;"); + itemLore.add(C.cWhite + gadget.getSet().getName() + " Set;"); //Elements for (Gadget cur : gadget.getSet().getGadgets()) @@ -95,7 +95,7 @@ public class GadgetPage extends ShopPageBase itemLore.add(C.cBlack); //Bonus - itemLore.add(C.cGray + gadget.getSet().getName() + " Set Bonus;"); + itemLore.add(C.cWhite + gadget.getSet().getName() + " Set Bonus;"); for (String bonus : gadget.getSet().getBonus()) itemLore.add(" " + (gadget.getSet().isActive(getPlayer()) ? C.cGreen : C.cGray) + bonus); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitRaveSuit.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitRaveSuit.java index 7ff4e8986..bc1656359 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitRaveSuit.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitRaveSuit.java @@ -33,7 +33,7 @@ public class OutfitRaveSuit extends OutfitGadget int cost, ArmorSlot slot, Material mat, byte data) { super(manager, name, - UtilText.splitLineToArray(C.cWhite + "There's nothing more suitable for celebration than this high tech flashing outfit!", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "There's nothing more suitable for celebration than this high tech flashing outfit!", LineFormat.LORE), cost, slot, mat, data); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuit.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuit.java index 16cb9a226..9d29e4e43 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuit.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/outfit/OutfitSpaceSuit.java @@ -23,7 +23,7 @@ public class OutfitSpaceSuit extends OutfitGadget int cost, ArmorSlot slot, Material mat, byte data) { super(manager, name, - UtilText.splitLineToArray(C.cWhite + "Designed specifically for combat in deep space for a sport known as \'Gravity\'", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "Designed specifically for combat in deep space for a sport known as \'Gravity\'", LineFormat.LORE), cost, slot, mat, data); } From 7f9e5c4ec9e976f5ca21d964b9500173bc29a354 Mon Sep 17 00:00:00 2001 From: Cheese Date: Mon, 14 Dec 2015 16:06:49 +1100 Subject: [PATCH 60/81] more coal --- .../core/gadget/gadgets/particle/ParticleCoalFumes.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCoalFumes.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCoalFumes.java index 587d8d56d..2ccb3701e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCoalFumes.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/particle/ParticleCoalFumes.java @@ -33,7 +33,7 @@ public class ParticleCoalFumes extends ParticleGadget for(Player p : GetActive()) { - UtilParticle.PlayParticleToAll(ParticleType.LARGE_SMOKE, p.getLocation(), 0.8f, 0, 0.8f, 0, 6, ViewDist.NORMAL); + UtilParticle.PlayParticleToAll(ParticleType.LARGE_SMOKE, p.getLocation(), 0.8f, 0, 0.8f, 0, 12, ViewDist.NORMAL); } } From 048a9a81b8aeb4e09bca43b8886197ab771115e3 Mon Sep 17 00:00:00 2001 From: Cheese Date: Mon, 14 Dec 2015 16:20:39 +1100 Subject: [PATCH 61/81] gadget ammo should no logner be purchasable --- .../core/cosmetic/ui/page/GadgetPage.java | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java index ffc32a7b4..24dddffa1 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java @@ -294,14 +294,14 @@ public class GadgetPage extends ShopPageBase public void activateGadget(Player player, Gadget gadget) { - if (gadget instanceof ItemGadget) - { - if (getPlugin().getInventoryManager().Get(player).getItemCount(gadget.GetName()) <= 0) - { - purchaseGadget(player, gadget); - return; - } - } +// if (gadget instanceof ItemGadget) +// { +// if (getPlugin().getInventoryManager().Get(player).getItemCount(gadget.GetName()) <= 0) +// { +// purchaseGadget(player, gadget); +// return; +// } +// } playAcceptSound(player); gadget.Enable(player); @@ -311,10 +311,10 @@ public class GadgetPage extends ShopPageBase public void handleRightClick(Player player, Gadget gadget) { - if (gadget instanceof ItemGadget) - { - purchaseGadget(player, gadget); - } +// if (gadget instanceof ItemGadget) +// { +// purchaseGadget(player, gadget); +// } } public void deactivateGadget(Player player, Gadget gadget) From cdbcae7e3e70f253fa824988e92ca370f148003e Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Mon, 14 Dec 2015 00:28:28 -0500 Subject: [PATCH 62/81] Cosmetic Menu Update --- .../artifacts/Mineplex_Game_Clans_jar.xml | 2 +- Plugins/.idea/artifacts/Mineplex_Hub_jar.xml | 2 +- .../artifacts/Nautilus_Game_Arcade_jar.xml | 2 +- .../cosmetic/ui/button/OpenArrowTrails.java | 14 +-- .../core/cosmetic/ui/button/OpenCostumes.java | 15 ++-- .../ui/button/OpenDeathAnimations.java | 15 ++-- .../cosmetic/ui/button/OpenDoubleJump.java | 14 +-- .../core/cosmetic/ui/button/OpenGadgets.java | 14 +-- .../core/cosmetic/ui/button/OpenHats.java | 16 ++-- .../core/cosmetic/ui/button/OpenMorphs.java | 19 ++-- .../core/cosmetic/ui/button/OpenMounts.java | 27 ++++-- .../core/cosmetic/ui/button/OpenMusic.java | 17 ++-- .../cosmetic/ui/button/OpenPageButton.java | 48 ++++++++++ .../cosmetic/ui/button/OpenParticles.java | 15 ++-- .../core/cosmetic/ui/button/OpenPets.java | 19 ++-- .../mineplex/core/cosmetic/ui/page/Menu.java | 88 ++++++------------- .../core/treasure/gui/TreasurePage.java | 9 +- 17 files changed, 184 insertions(+), 152 deletions(-) create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenPageButton.java diff --git a/Plugins/.idea/artifacts/Mineplex_Game_Clans_jar.xml b/Plugins/.idea/artifacts/Mineplex_Game_Clans_jar.xml index d44ba58ec..cc62eda71 100644 --- a/Plugins/.idea/artifacts/Mineplex_Game_Clans_jar.xml +++ b/Plugins/.idea/artifacts/Mineplex_Game_Clans_jar.xml @@ -20,7 +20,7 @@ - + \ No newline at end of file diff --git a/Plugins/.idea/artifacts/Mineplex_Hub_jar.xml b/Plugins/.idea/artifacts/Mineplex_Hub_jar.xml index 55d803b0b..8ac831c95 100644 --- a/Plugins/.idea/artifacts/Mineplex_Hub_jar.xml +++ b/Plugins/.idea/artifacts/Mineplex_Hub_jar.xml @@ -20,8 +20,8 @@ - + \ No newline at end of file diff --git a/Plugins/.idea/artifacts/Nautilus_Game_Arcade_jar.xml b/Plugins/.idea/artifacts/Nautilus_Game_Arcade_jar.xml index 619cdf3df..79c3170ce 100644 --- a/Plugins/.idea/artifacts/Nautilus_Game_Arcade_jar.xml +++ b/Plugins/.idea/artifacts/Nautilus_Game_Arcade_jar.xml @@ -19,7 +19,7 @@ - + \ No newline at end of file diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenArrowTrails.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenArrowTrails.java index 2664fb9c7..e280de6c2 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenArrowTrails.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenArrowTrails.java @@ -5,19 +5,19 @@ import org.bukkit.event.inventory.ClickType; import mineplex.core.cosmetic.ui.page.ArrowTrailPage; import mineplex.core.cosmetic.ui.page.Menu; +import mineplex.core.gadget.types.Gadget; import mineplex.core.shop.item.IButton; -public class OpenArrowTrails implements IButton +public class OpenArrowTrails extends OpenPageButton { - private Menu _page; - - public OpenArrowTrails(Menu page) + public OpenArrowTrails(Menu menu, Gadget active) { - _page = page; + super(menu, active); } - public void onClick(Player player, ClickType clickType) + @Override + protected void leftClick(Player player) { - _page.getShop().openPageForPlayer(player, new ArrowTrailPage(_page.getPlugin(), _page.getShop(), _page.getClientManager(), _page.getDonationManager(), "Arrow Trails", player)); + getMenu().getShop().openPageForPlayer(player, new ArrowTrailPage(getMenu().getPlugin(), getMenu().getShop(), getMenu().getClientManager(), getMenu().getDonationManager(), "Arrow Trails", player)); } } \ No newline at end of file diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenCostumes.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenCostumes.java index 347a007be..01f528d6e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenCostumes.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenCostumes.java @@ -1,23 +1,20 @@ package mineplex.core.cosmetic.ui.button; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.ClickType; import mineplex.core.cosmetic.ui.page.Menu; -import mineplex.core.shop.item.IButton; +import mineplex.core.gadget.types.Gadget; -public class OpenCostumes implements IButton +public class OpenCostumes extends OpenPageButton { - private Menu _menu; - - public OpenCostumes(Menu menu) + public OpenCostumes(Menu menu, Gadget active) { - _menu = menu; + super(menu, active); } @Override - public void onClick(Player player, ClickType clickType) + protected void leftClick(Player player) { - _menu.openCostumes(player); + getMenu().openCostumes(player); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenDeathAnimations.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenDeathAnimations.java index fad54be30..f16d51e65 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenDeathAnimations.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenDeathAnimations.java @@ -5,19 +5,20 @@ import org.bukkit.event.inventory.ClickType; import mineplex.core.cosmetic.ui.page.DeathEffectPage; import mineplex.core.cosmetic.ui.page.Menu; +import mineplex.core.gadget.types.Gadget; import mineplex.core.shop.item.IButton; -public class OpenDeathAnimations implements IButton +public class OpenDeathAnimations extends OpenPageButton { - private Menu _page; - - public OpenDeathAnimations(Menu page) + + public OpenDeathAnimations(Menu menu, Gadget active) { - _page = page; + super(menu, active); } - public void onClick(Player player, ClickType clickType) + @Override + protected void leftClick(Player player) { - _page.getShop().openPageForPlayer(player, new DeathEffectPage(_page.getPlugin(), _page.getShop(), _page.getClientManager(), _page.getDonationManager(), "Death Animations", player)); + getMenu().getShop().openPageForPlayer(player, new DeathEffectPage(getMenu().getPlugin(), getMenu().getShop(), getMenu().getClientManager(), getMenu().getDonationManager(), "Death Animations", player)); } } \ No newline at end of file diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenDoubleJump.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenDoubleJump.java index b433181c8..4506defc4 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenDoubleJump.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenDoubleJump.java @@ -5,19 +5,19 @@ import org.bukkit.event.inventory.ClickType; import mineplex.core.cosmetic.ui.page.DoubleJumpPage; import mineplex.core.cosmetic.ui.page.Menu; +import mineplex.core.gadget.types.Gadget; import mineplex.core.shop.item.IButton; -public class OpenDoubleJump implements IButton +public class OpenDoubleJump extends OpenPageButton { - private Menu _page; - - public OpenDoubleJump(Menu page) + public OpenDoubleJump(Menu menu, Gadget active) { - _page = page; + super(menu, active); } - public void onClick(Player player, ClickType clickType) + @Override + protected void leftClick(Player player) { - _page.getShop().openPageForPlayer(player, new DoubleJumpPage(_page.getPlugin(), _page.getShop(), _page.getClientManager(), _page.getDonationManager(), "Double Jump Effects", player)); + getMenu().getShop().openPageForPlayer(player, new DoubleJumpPage(getMenu().getPlugin(), getMenu().getShop(), getMenu().getClientManager(), getMenu().getDonationManager(), "Double Jump Effects", player)); } } \ No newline at end of file diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenGadgets.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenGadgets.java index 79a62a52f..a981afc88 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenGadgets.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenGadgets.java @@ -2,23 +2,23 @@ package mineplex.core.cosmetic.ui.button; import mineplex.core.cosmetic.ui.page.GadgetPage; import mineplex.core.cosmetic.ui.page.Menu; +import mineplex.core.gadget.types.Gadget; import mineplex.core.shop.item.IButton; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; -public class OpenGadgets implements IButton +public class OpenGadgets extends OpenPageButton { - private Menu _page; - - public OpenGadgets(Menu page) + + public OpenGadgets(Menu menu, Gadget active) { - _page = page; + super(menu, active); } @Override - public void onClick(Player player, ClickType clickType) + protected void leftClick(Player player) { - _page.getShop().openPageForPlayer(player, new GadgetPage(_page.getPlugin(), _page.getShop(), _page.getClientManager(), _page.getDonationManager(), "Gadgets", player)); + getMenu().getShop().openPageForPlayer(player, new GadgetPage(getMenu().getPlugin(), getMenu().getShop(), getMenu().getClientManager(), getMenu().getDonationManager(), "Gadgets", player)); } } \ No newline at end of file diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenHats.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenHats.java index 48cd8a98c..126382e58 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenHats.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenHats.java @@ -1,23 +1,21 @@ package mineplex.core.cosmetic.ui.button; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.ClickType; import mineplex.core.cosmetic.ui.page.HatPage; import mineplex.core.cosmetic.ui.page.Menu; -import mineplex.core.shop.item.IButton; +import mineplex.core.gadget.types.Gadget; -public class OpenHats implements IButton +public class OpenHats extends OpenPageButton { - private Menu _page; - - public OpenHats(Menu page) + public OpenHats(Menu menu, Gadget active) { - _page = page; + super(menu, active); } - public void onClick(Player player, ClickType clickType) + @Override + protected void leftClick(Player player) { - _page.getShop().openPageForPlayer(player, new HatPage(_page.getPlugin(), _page.getShop(), _page.getClientManager(), _page.getDonationManager(), "Hats", player)); + getMenu().getShop().openPageForPlayer(player, new HatPage(getMenu().getPlugin(), getMenu().getShop(), getMenu().getClientManager(), getMenu().getDonationManager(), "Hats", player)); } } \ No newline at end of file diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenMorphs.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenMorphs.java index 8666c1bfb..34d6ac932 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenMorphs.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenMorphs.java @@ -2,22 +2,21 @@ package mineplex.core.cosmetic.ui.button; import mineplex.core.cosmetic.ui.page.Menu; import mineplex.core.cosmetic.ui.page.MorphPage; -import mineplex.core.shop.item.IButton; +import mineplex.core.gadget.types.Gadget; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.ClickType; -public class OpenMorphs implements IButton +public class OpenMorphs extends OpenPageButton { - private Menu _page; - - public OpenMorphs(Menu page) + + public OpenMorphs(Menu menu, Gadget active) { - _page = page; + super(menu, active); } - - public void onClick(Player player, ClickType clickType) + + @Override + protected void leftClick(Player player) { - _page.getShop().openPageForPlayer(player, new MorphPage(_page.getPlugin(), _page.getShop(), _page.getClientManager(), _page.getDonationManager(), "Morphs", player)); + getMenu().getShop().openPageForPlayer(player, new MorphPage(getMenu().getPlugin(), getMenu().getShop(), getMenu().getClientManager(), getMenu().getDonationManager(), "Morphs", player)); } } \ No newline at end of file diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenMounts.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenMounts.java index d71c566a8..17dea9154 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenMounts.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenMounts.java @@ -2,6 +2,8 @@ package mineplex.core.cosmetic.ui.button; import mineplex.core.cosmetic.ui.page.Menu; import mineplex.core.cosmetic.ui.page.MountPage; +import mineplex.core.gadget.types.Gadget; +import mineplex.core.mount.Mount; import mineplex.core.shop.item.IButton; import org.bukkit.entity.Player; @@ -9,15 +11,28 @@ import org.bukkit.event.inventory.ClickType; public class OpenMounts implements IButton { - private Menu _page; - - public OpenMounts(Menu page) + private Menu _menu; + private Mount _active; + + public OpenMounts(Menu menu, Mount active) { - _page = page; + _menu = menu; + _active = active; } - + + @Override public void onClick(Player player, ClickType clickType) { - _page.getShop().openPageForPlayer(player, new MountPage(_page.getPlugin(), _page.getShop(), _page.getClientManager(), _page.getDonationManager(), "Mounts", player)); + if (clickType.isLeftClick()) + _menu.getShop().openPageForPlayer(player, new MountPage(_menu.getPlugin(), _menu.getShop(), _menu.getClientManager(), _menu.getDonationManager(), "Mounts", player)); + else + { + if (_active != null) + { + _menu.playAcceptSound(player); + _active.Disable(player); + _menu.refresh(); + } + } } } \ No newline at end of file diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenMusic.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenMusic.java index 72d1c2d18..b158901cc 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenMusic.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenMusic.java @@ -4,22 +4,19 @@ import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; import mineplex.core.cosmetic.ui.page.Menu; +import mineplex.core.gadget.types.Gadget; import mineplex.core.shop.item.IButton; -/** - * Created by shaun on 14-09-15. - */ -public class OpenMusic implements IButton +public class OpenMusic extends OpenPageButton { - private Menu _menu; - - public OpenMusic(Menu menu) + public OpenMusic(Menu menu, Gadget active) { - _menu = menu; + super(menu, active); } - public void onClick(Player player, ClickType clickType) + @Override + protected void leftClick(Player player) { - _menu.openMusic(player); + getMenu().openMusic(player); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenPageButton.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenPageButton.java new file mode 100644 index 000000000..7e0a4159a --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenPageButton.java @@ -0,0 +1,48 @@ +package mineplex.core.cosmetic.ui.button; + +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.ClickType; + +import mineplex.core.cosmetic.ui.page.Menu; +import mineplex.core.gadget.types.Gadget; +import mineplex.core.shop.item.IButton; + +public abstract class OpenPageButton implements IButton +{ + private Menu _menu; + private Gadget _active; + + public OpenPageButton(Menu menu, Gadget active) + { + _active = active; + _menu = menu; + } + + @Override + public void onClick(Player player, ClickType clickType) + { + if (clickType.isLeftClick()) + leftClick(player); + else + { + if (_active != null) + { + _menu.playAcceptSound(player); + _active.Disable(player); + _menu.refresh(); + } + } + } + + protected Menu getMenu() + { + return _menu; + } + + protected Gadget getActive() + { + return _active; + } + + protected abstract void leftClick(Player player); +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenParticles.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenParticles.java index 37e9cf1e1..b464e0b22 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenParticles.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenParticles.java @@ -2,22 +2,23 @@ package mineplex.core.cosmetic.ui.button; import mineplex.core.cosmetic.ui.page.Menu; import mineplex.core.cosmetic.ui.page.ParticlePage; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.types.Gadget; import mineplex.core.shop.item.IButton; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; -public class OpenParticles implements IButton +public class OpenParticles extends OpenPageButton { - private Menu _page; - - public OpenParticles(Menu page) + public OpenParticles(Menu menu, Gadget active) { - _page = page; + super(menu, active); } - public void onClick(Player player, ClickType clickType) + @Override + protected void leftClick(Player player) { - _page.getShop().openPageForPlayer(player, new ParticlePage(_page.getPlugin(), _page.getShop(), _page.getClientManager(), _page.getDonationManager(), "Particles", player)); + getMenu().getShop().openPageForPlayer(player, new ParticlePage(getMenu().getPlugin(), getMenu().getShop(), getMenu().getClientManager(), getMenu().getDonationManager(), "Particles", player)); } } \ No newline at end of file diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenPets.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenPets.java index fdaaa0e19..78c7790e0 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenPets.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/button/OpenPets.java @@ -1,7 +1,9 @@ package mineplex.core.cosmetic.ui.button; import mineplex.core.cosmetic.ui.page.Menu; +import mineplex.core.cosmetic.ui.page.MountPage; import mineplex.core.cosmetic.ui.page.PetPage; +import mineplex.core.pet.Pet; import mineplex.core.shop.item.IButton; import org.bukkit.entity.Player; @@ -9,16 +11,23 @@ import org.bukkit.event.inventory.ClickType; public class OpenPets implements IButton { - private Menu _page; - - public OpenPets(Menu page) + private Menu _menu; + + public OpenPets(Menu menu) { - _page = page; + _menu = menu; } @Override public void onClick(Player player, ClickType clickType) { - _page.getShop().openPageForPlayer(player, new PetPage(_page.getPlugin(), _page.getShop(), _page.getClientManager(), _page.getDonationManager(), "Pets", player)); + if (clickType.isLeftClick()) + _menu.getShop().openPageForPlayer(player, new PetPage(_menu.getPlugin(), _menu.getShop(), _menu.getClientManager(), _menu.getDonationManager(), "Pets", player)); + else + { + _menu.playAcceptSound(player); + _menu.getPlugin().getPetManager().RemovePet(player, true); + _menu.refresh(); + } } } \ No newline at end of file diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java index b191a0d93..cfbfd261b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java @@ -1,5 +1,6 @@ package mineplex.core.cosmetic.ui.page; +import java.util.ArrayList; import java.util.EnumMap; import java.util.List; @@ -41,6 +42,7 @@ import mineplex.core.shop.item.ShopItem; import mineplex.core.shop.page.ConfirmationPage; import mineplex.core.shop.page.ShopPageBase; import mineplex.core.treasure.TreasureKey; +import mineplex.core.treasure.TreasureType; public class Menu extends ShopPageBase { @@ -54,13 +56,19 @@ public class Menu extends ShopPageBase @Override protected void buildPage() { -// Donor donor = getDonationManager().Get(getPlayer()); + // Treasure Shards + int treasureShards = getDonationManager().Get(getPlayer()).getCoins(); -// addItem(2, new ShopItem(CurrencyType.Gems.GetDisplayMaterial(), donor.GetGems() + " Gems", new String[] { -// " " -// }, 1, false)); + List shardLore = new ArrayList(); + shardLore.add(" "); + shardLore.add(C.cGray + "This seems like it might come in"); + shardLore.add(C.cGray + "handy. Maybe I can collect more!"); - int[] slots = UtilUI.getIndicesFor(12, 1); + ShopItem shards = new ShopItem(Material.PRISMARINE_SHARD, C.cAqua + C.Bold + treasureShards + " Treasure Shards", shardLore.toArray(new String[0]), 0, false); + addItem(4, shards); + + // Cosmetic Items + int[] slots = UtilUI.getIndicesFor(12, 2); int particleSlot = slots[0]; int arrowSlot = slots[1]; int jumpSlot = slots[2]; @@ -99,16 +107,6 @@ public class Menu extends ShopPageBase final Gadget gadget = getPlugin().getGadgetManager().getActive(getPlayer(), type); if(gadget != null) enabled.put(type, gadget); - -// addButton(slot, new ShopItem(gadget.GetDisplayMaterial(), gadget.GetDisplayData(), C.mItem + gadget.GetName(), new String[0], 1, false, false), -// new IButton() -// { -// public void onClick(Player player, ClickType clickType) { -// playAcceptSound(player); -// gadget.Disable(player); -// refresh(); -// }; -// }); } int mountOwned = 0; @@ -139,36 +137,36 @@ public class Menu extends ShopPageBase GadgetType type = GadgetType.Particle; String[] lore = getLore(ownedCount.get(type), maxCount.get(type), enabled.get(type)); - addButton(particleSlot, new ShopItem(Material.NETHER_STAR, "Particle Effects", lore, 1, false), new OpenParticles(this)); + addButton(particleSlot, new ShopItem(Material.NETHER_STAR, "Particle Effects", lore, 1, false), new OpenParticles(this, enabled.get(type))); if (enabled.containsKey(type)) addGlow(particleSlot); type = GadgetType.ArrowTrail; lore = getLore(ownedCount.get(type), maxCount.get(type), enabled.get(type)); - addButton(arrowSlot, new ShopItem(Material.ARROW, "Arrow Trails", lore, 1, false), new OpenArrowTrails(this)); + addButton(arrowSlot, new ShopItem(Material.ARROW, "Arrow Trails", lore, 1, false), new OpenArrowTrails(this, enabled.get(type))); if (enabled.containsKey(type)) addGlow(arrowSlot); type = GadgetType.DoubleJump; lore = getLore(ownedCount.get(type), maxCount.get(type), enabled.get(type)); - addButton(jumpSlot, new ShopItem(Material.GOLD_BOOTS, "Double Jump Effects", lore, 1, false), new OpenDoubleJump(this)); + addButton(jumpSlot, new ShopItem(Material.GOLD_BOOTS, "Double Jump Effects", lore, 1, false), new OpenDoubleJump(this, enabled.get(type))); if (enabled.containsKey(type)) addGlow(jumpSlot); type = GadgetType.Death; lore = getLore(ownedCount.get(type), maxCount.get(type), enabled.get(type)); - addButton(deathSlot, new ShopItem(Material.SKULL_ITEM, "Death Animations", lore, 1, false), new OpenDeathAnimations(this)); + addButton(deathSlot, new ShopItem(Material.SKULL_ITEM, "Death Animations", lore, 1, false), new OpenDeathAnimations(this, enabled.get(type))); if (enabled.containsKey(type)) addGlow(deathSlot); type = GadgetType.Item; lore = getLore(ownedCount.get(type), maxCount.get(type), enabled.get(type)); - addButton(gadgetSlot, new ShopItem(Material.MELON_BLOCK, "Gadgets", lore, 1, false), new OpenGadgets(this)); + addButton(gadgetSlot, new ShopItem(Material.MELON_BLOCK, "Gadgets", lore, 1, false), new OpenGadgets(this, enabled.get(type))); if (enabled.containsKey(type)) addGlow(gadgetSlot); type = GadgetType.Morph; lore = getLore(ownedCount.get(type), maxCount.get(type), enabled.get(type)); - addButton(morphSlot, new ShopItem(Material.LEATHER, "Morphs", lore, 1, false), new OpenMorphs(this)); + addButton(morphSlot, new ShopItem(Material.LEATHER, "Morphs", lore, 1, false), new OpenMorphs(this, enabled.get(type))); if (enabled.containsKey(type)) addGlow(morphSlot); lore = getLore(mountOwned, mountMax, mountActive == null ? null : mountActive.GetName()); - addButton(mountSlot, new ShopItem(Material.IRON_BARDING, "Mounts", lore, 1, false), new OpenMounts(this)); + addButton(mountSlot, new ShopItem(Material.IRON_BARDING, "Mounts", lore, 1, false), new OpenMounts(this, mountActive)); if (mountActive != null) addGlow(mountSlot); lore = getLore(petOwned, petMax, petActive == null ? null : petActive.getCustomName()); @@ -177,17 +175,17 @@ public class Menu extends ShopPageBase type = GadgetType.Hat; lore = getLore(ownedCount.get(type), maxCount.get(type), enabled.get(type)); - addButton(hatSlot, new ShopItem(Material.GOLD_HELMET, "Hats", lore, 1, false), new OpenHats(this)); + addButton(hatSlot, new ShopItem(Material.GOLD_HELMET, "Hats", lore, 1, false), new OpenHats(this, enabled.get(type))); if (enabled.containsKey(type)) addGlow(hatSlot); type = GadgetType.Costume; lore = getLore(ownedCount.get(type), maxCount.get(type), enabled.get(type)); - addButton(costumeSlot, new ShopItem(Material.DIAMOND_CHESTPLATE, "Costumes", lore, 1, false), new OpenCostumes(this)); + addButton(costumeSlot, new ShopItem(Material.DIAMOND_CHESTPLATE, "Costumes", lore, 1, false), new OpenCostumes(this, enabled.get(type))); if (enabled.containsKey(type)) addGlow(costumeSlot); type = GadgetType.MusicDisc; lore = getLore(ownedCount.get(type), maxCount.get(type), enabled.get(type)); - addButton(musicSlot, new ShopItem(Material.GREEN_RECORD, "Music", lore, 1, false), new OpenMusic(this)); + addButton(musicSlot, new ShopItem(Material.GREEN_RECORD, "Music", lore, 1, false), new OpenMusic(this, enabled.get(type))); if (enabled.containsKey(type)) addGlow(musicSlot); addButton(tauntSlot, new ShopItem(Material.NAME_TAG, "Taunts", new String[]{C.Bold + "", C.cDGreen + C.Italics + "Coming soon!"}, 1, false), new IButton() @@ -198,22 +196,6 @@ public class Menu extends ShopPageBase player.sendMessage(F.main("Shop", "Coming soon!")); } }); - -// if (getPlugin().getPetManager().hasActivePet(getPlayer().getName())) -// { -// Creature activePet = getPlugin().getPetManager().getActivePet(getPlayer().getName()); -// String petName = activePet.getType() == EntityType.WITHER ? "Widder" : activePet.getCustomName(); -// addButton(25 + 9, new ShopItem(Material.MONSTER_EGG, (byte) getPlugin().getPetManager().getActivePet(getPlayer().getName()).getType().getTypeId(), C.mItem + petName, new String[0], 1, false, false), -// new IButton() -// { -// public void onClick(Player player, ClickType clickType) -// { -// playAcceptSound(player); -// getPlugin().getPetManager().RemovePet(player, true); -// refresh(); -// } -// }); -// } } private String[] getLore(int ownedCount, int maxCount, Gadget enabled) @@ -227,21 +209,21 @@ public class Menu extends ShopPageBase { return UtilText.splitLinesToArray(new String[] { C.blankLine, - C.cWhite + "You own " + C.cYellow + ownedCount + "/" + maxCount, + C.cWhite + "You own " + ownedCount + "/" + maxCount, C.blankLine, - C.cWhite + "Active: " + C.cGreen + enabled, - C.cWhite + "Right Click to Disable", + C.cWhite + "Active: " + C.cYellow + enabled, + C.cGreen + "Right-Click to Disable", C.blankLine, - C.cWhite + "Left Click to View Category" + C.cGreen + "Left-Click to View Category" }, LineFormat.LORE); } else { return UtilText.splitLinesToArray(new String[] { C.blankLine, - C.cWhite + "You own " + C.cYellow + ownedCount + "/" + maxCount, + C.cWhite + "You own " + ownedCount + "/" + maxCount, C.blankLine, - C.cWhite + "Left Click to View Category" + C.cGreen + "Left-Click to View Category" }, LineFormat.LORE); } } @@ -255,16 +237,4 @@ public class Menu extends ShopPageBase { getShop().openPageForPlayer(player, new MusicPage(getPlugin(), getShop(), getClientManager(), getDonationManager(), "Music", player)); } - - public void attemptPurchaseKey(Player player) - { - getShop().openPageForPlayer(player, new ConfirmationPage(getPlugin(), getShop(), getClientManager(), getDonationManager(), new Runnable() - { - public void run() - { - getPlugin().getInventoryManager().addItemToInventory(getPlayer(), "Treasure Key", 1); - refresh(); - } - }, this, new TreasureKey(), CurrencyType.Coins, getPlayer())); - } } 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 889765b9b..9da74c1e0 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/TreasurePage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/TreasurePage.java @@ -47,11 +47,8 @@ public class TreasurePage extends ShopPageBase List shardLore = new ArrayList(); shardLore.add(" "); - shardLore.add(F.value("Treasure Shards", "" + treasureShards)); - shardLore.add(" "); - shardLore.add(C.cGray + "Useless by itself, Treasure Shards"); - shardLore.add(C.cGray + "can be combined to forge new"); - shardLore.add(C.cGray + "and undiscovered treasures."); + shardLore.add(C.cGray + "This seems like it might come in"); + shardLore.add(C.cGray + "handy. Maybe I can collect more!"); List basicLore = new ArrayList(); basicLore.add(" "); @@ -130,7 +127,7 @@ public class TreasurePage extends ShopPageBase christmasLore.add(ChatColor.RESET + "or Purchase at: " + C.cYellow + "www.mineplex.com/shop"); } - ShopItem shards = new ShopItem(Material.PRISMARINE_SHARD, C.cAqua + C.Bold + "Treasure Shards", shardLore.toArray(new String[0]), 0, false); + 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 Chest", basicLore.toArray(new String[0]), 0, false, false); ShopItem heroic = new ShopItem(Material.TRAPPED_CHEST, C.cGold + C.Bold + "Ancient Chest", heroicLore.toArray(new String[0]), 0, false, false); ShopItem legendary = new ShopItem(Material.ENDER_CHEST, C.cRed + C.Bold + "Mythical Chest", legendaryLore.toArray(new String[0]), 0, false, false); From c508b5ea965e45f7c1641767492f730f3183568b Mon Sep 17 00:00:00 2001 From: Cheese Date: Mon, 14 Dec 2015 18:13:19 +1100 Subject: [PATCH 63/81] chest visuals --- .../src/mineplex/core/treasure/Treasure.java | 6 ++++++ .../mineplex/core/treasure/TreasureStyle.java | 2 +- .../animation/BlockChangeAnimation.java | 20 +++++++++++++++---- .../animation/ChestSpawnAnimation.java | 8 ++++++++ 4 files changed, 31 insertions(+), 5 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java index e4645cad3..a9eecb3f7 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/Treasure.java @@ -14,6 +14,7 @@ import mineplex.core.common.util.C; import mineplex.core.common.util.Callback; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilServer; @@ -174,6 +175,11 @@ public class Treasure UtilParticle.PlayParticle(type, block.getLocation().add(0.5 + xDif, 0.5 + yDif, 0.5 + zDif), red, 0.2F, 0.2F, 1F, 0, ViewDist.NORMAL, UtilServer.getPlayers()); } + else if (_treasureType == TreasureType.CHRISTMAS) + { + UtilParticle.PlayParticle(ParticleType.SNOW_SHOVEL, block.getLocation().add(0.5f, 0.5f, 0.5f), 0.1f, 0.1F, 0.1F, 0.2F, 5, + ViewDist.NORMAL, UtilServer.getPlayers()); + } else { UtilParticle.PlayParticle(type, block.getLocation().add(0.5, 0.5, 0.5), 0.5F, 0.5F, 0.5F, 0.2F, 0, diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureStyle.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureStyle.java index 38828ee6b..f69e4b130 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureStyle.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureStyle.java @@ -30,7 +30,7 @@ public enum TreasureStyle CHRISTMAS( ParticleType.SNOW_SHOVEL, ParticleType.SNOWBALL_POOF, - ParticleType.FIREWORKS_SPARK, + ParticleType.SNOW_SHOVEL, Sound.FIZZ, Sound.CHICKEN_EGG_POP ); 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 aef2e303f..2d6e42d38 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/BlockChangeAnimation.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/BlockChangeAnimation.java @@ -54,18 +54,30 @@ public class BlockChangeAnimation extends Animation if (getTreasure().getTreasureType() == TreasureType.OLD) continue; - Material newMaterial = getTreasure().getTreasureType() == TreasureType.ANCIENT ? Material.NETHER_BRICK : Material.QUARTZ_BLOCK; + Material mat; + if (getTreasure().getTreasureType() == TreasureType.ANCIENT) mat = Material.NETHER_BRICK; + else if (getTreasure().getTreasureType() == TreasureType.MYTHICAL) mat = Material.QUARTZ_BLOCK; + else if (getTreasure().getTreasureType() == TreasureType.CHRISTMAS) mat = Material.ICE; + else + continue; + _blockInfoList.add(new BlockInfo(b)); - b.setType(newMaterial); + b.setType(mat); } else if (b.getType() == Material.SMOOTH_STAIRS || b.getType() == Material.COBBLESTONE_STAIRS) { if (getTreasure().getTreasureType() == TreasureType.OLD) continue; - Material newMaterial = getTreasure().getTreasureType() == TreasureType.ANCIENT ? Material.NETHER_BRICK_STAIRS : Material.QUARTZ_STAIRS; + Material mat; + if (getTreasure().getTreasureType() == TreasureType.ANCIENT) mat = Material.NETHER_BRICK_STAIRS; + else if (getTreasure().getTreasureType() == TreasureType.MYTHICAL) mat = Material.QUARTZ_STAIRS; + else if (getTreasure().getTreasureType() == TreasureType.CHRISTMAS) mat = Material.PACKED_ICE; + else + continue; + _blockInfoList.add(new BlockInfo(b)); - b.setType(newMaterial); + b.setType(mat); } } } 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 54fc12cee..65c51b163 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/ChestSpawnAnimation.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/animation/ChestSpawnAnimation.java @@ -16,6 +16,7 @@ import net.minecraft.server.v1_8_R3.MathHelper; import mineplex.core.common.util.UtilAlg; 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; @@ -115,6 +116,13 @@ public class ChestSpawnAnimation extends Animation ViewDist.NORMAL, UtilServer.getPlayers()); } } + else if (getTreasure().getTreasureType() == TreasureType.CHRISTMAS) + { + float spread = 1f - (getTicks() / (float)ANIMATION_DURATION); + + UtilParticle.PlayParticle(ParticleType.SNOW_SHOVEL, _centerLocation.clone().add(0, 5, 0), spread, 0.1f, spread, 0, 30, + ViewDist.NORMAL, UtilServer.getPlayers()); + } //Spawn Chest if (getTicks() >= ANIMATION_DURATION) From fac255db12934925ee6aa0a939c9a0aa2ddd4fa7 Mon Sep 17 00:00:00 2001 From: Cheese Date: Mon, 14 Dec 2015 18:24:05 +1100 Subject: [PATCH 64/81] art --- Art/BlackFriday.png | Bin 0 -> 174285 bytes Art/ChristmasChaos.png | Bin 0 -> 448594 bytes Art/ClansBanner.png | Bin 0 -> 1041082 bytes Art/TitanLogo.png | Bin 0 -> 384335 bytes Art/WinterTreasure.png | Bin 0 -> 1500317 bytes Art/WinterTreasureTrim.png | Bin 0 -> 1415618 bytes Art/y5O7WYh.png | Bin 0 -> 39246 bytes Art/zKzkfLE.png | Bin 0 -> 95417 bytes 8 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Art/BlackFriday.png create mode 100644 Art/ChristmasChaos.png create mode 100644 Art/ClansBanner.png create mode 100644 Art/TitanLogo.png create mode 100644 Art/WinterTreasure.png create mode 100644 Art/WinterTreasureTrim.png create mode 100644 Art/y5O7WYh.png create mode 100644 Art/zKzkfLE.png diff --git a/Art/BlackFriday.png b/Art/BlackFriday.png new file mode 100644 index 0000000000000000000000000000000000000000..d63feef857fa8f14b489a70dff163eb2162a027d GIT binary patch literal 174285 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%0DAih9=4kEMj>pRkT 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�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 literal 0 HcmV?d00001 diff --git a/Art/ChristmasChaos.png b/Art/ChristmasChaos.png new file mode 100644 index 0000000000000000000000000000000000000000..92bf27cd34787e0889ea0d1faadf5c0e587fbbcf GIT binary patch literal 448594 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 kBdLYnHMI|!%oOBQ-f108tFDwuGmxdMgZ zJb|0U|4i8hl$Od{jS}7t^5Mjae0Uday2!(pyKIwQIg7vEsi{T)vJ?SY^1HqV?M6we zy)2*Y)YX*T<&%1L4paZW{Ga&A{a=M7HzVBnj!7a|K^&oE%gDD6ruv3*e z-}WIt-sHpSJPIUmTA(ExPk}O(yf=GaYsSK`K<>OdBC0w^#p^@&r|_v>_YHs|Z>)H` z+z*{Pl*eP+vYDv%#+ai@CfLPTaavk~v+M7XjrRA?;$Z5MuJE+8r(b_A%m zfIDFP{K^{DMK^@(Q#zmAJM!e6Q|YHO9CfIYz^DT4!8JUzL?_p8`kL`6F~t~-L^djr zA}788#3)THKems-S-2B`KJqShWeRghy>b9qrkj)@!agm67EAKfPi5UYO-wEhVhNC- z+U`J0&2IN&V{j%%*VR`W{q)~=0hHK!ee4{wn7cF#qDXKC{=VCKl%to-roMR|CWg5W z4WuT4cd9>&&o%VrYq_0-UgEv3H~NhaFU2>dV0i&=htWGen;j5&+_Ztay89T^-6aY_ z*elD<#eK7fD)DLmd||r#%k-G^tF-pK?N5V@e5B1)f@t`4tr%rk9+}zssC_vV|DyDB zL}~ICR>P-~00!(Yi?XG=J`JIu>^9ewDVda$QrQLv{$iIZgM@s0f#-iKp90tkJljeez&WGkoo!Nl4NRf@gGx=_8;vsL)A&-cWKb}t>U%JLR$8Mvk zOF!Yc?r(r04Btr(j?Zn-Z3Vom=1f~X^IX-;nR^JcggWikD}uq6AMf^~u>~;63cXmZc|p7|LqmJQDL1pQ+xAEqD2KW^dHd z`ZBz2>K@g6tS8u1cvan>zs|%rs``R=WH3zlq8Zo zT45Z8&Gf4I-0!5Yf&Y{X1RyMPc!&%ENa``;LVs`1)6T@CEO##OxPA1dRP*?2#DJe* z?058yF5@NECa8gzSY_uC)Q@*b1c{&?TU0*9{_^U>y03`K#5Yz~A92r?$++C_vyYLR z`f_Sw1|g?6;J=?QHYD7FdqV^}gUMI-p^vv}_F|iU;}yC(n(i5Q;u(mpJ-!sv-4-mR zBVmqAhWLjI3+fM!xw5*a;%TMY#u6WbZpFtrSm_P5>^<~j!dZ)7F4oBkwd1=>p@MR1 zRFc|yq5OP7ey^iRW=AXoWwNi0N1o(4JtYluh06P`Yzm+$-fURl9JjzHfKZv%D_QB# zthJIt?@`2cp57d+QWUQv{(qKYCy>`SFyGtd1_EjrD2@^kSft%ne~}eqBs+IqCw6q= z&dUR*$5#hF6RmQ*&LFRLC$l%23D65ioBY(TonHiN*t-+kYdG|Ht~UHbfu`g5{n}Tu z$-6qfx$#;YOnO=OJ*kNPW5+W9%Sz32HiX`rSoJ@)Mwx3_Z{Rj%O-Jsp*bo$J!eZ}G zr<8M+0zdOB3`xoq3x|}KalIAmu%GR@mQgNV+BqNF3?WisMc4FF!PE}A!&hJTM_w!ml-8Iv#F6&~O0pH|FMqLhjcBX{8KVpp&YWVxE zQ^&&|Q^tOHnv)5^Pw|AG6VI^K?6S+m;W6P%m&m73%Z%?KK{!yiMF!6|r@_&!a~Ad5 zN_pkI|AasM?vrK)r_9VCRwN zhyWU0r9{{A zguf!eH}=^7vr9sY4-QXt%;@Z;VlA_OogM z*WdN7;p{NQVmros*Fy?avR~x# zAxBJiCb9g=48)DjuU#b>isP3A){eMdKCBsBhF574wpJ7}xs}>xZ7yp7B6k&;-~6(d zWqQ2}i45w0tR({#Xeu)eEitHG96L8%TZlB(uct1zqTLQuxUibw8qEpd=qq+p@x@() z`ada>l^vJpL{fCKK&t!z=h%b4 zYd{o`wFJYGipXe*Iui;b z>(sA0H2M~*b4PBNCg@0S;W*jGliJ4d_0DBtF+Kl9tfMz(a+$Hk)+;4hR6)rIt`*nH z$h1`0H+^#lU@lX3j16;R6@1g9j-^`swjCKbrd}RPJ8vY1-Zea+6FiEZSY#jHo}IX- znh^QMXiY3c93sOPzp2-bb4x6}>2j9^2fvS2b>6EhlWa>U`U*qA#>FlHZz#akESXPwnmEbDD8$RehX^ik zil_3wW$28T&ZU7xSJvls3$)`Tp!(bjn(4g33WQ$*=(yA~0*+DM`{kUCx{C6?5ypT) zv>x1R`TNp4 zYQvBK><;Sj-uA}S{?(XZH2)?Hb)B=12LGH&2B8D*)u6k!wz_Bt;-3tQW|n@R>y~N! zRSAcZ^+&Mby0D>}@~WcQ5^)?TZ%=kWFk6Ol3&^E^iiLeQp9)G}-w@`(WGPhFYYAe5 zKjzzTnda)|OYUXGFKhV?ooJSWaufDq-5=8bX0G?uLl*tY4^AWa!D7zZF*|akLg?EP zIEpf&mdT!5j%b4U`%eeKP#SV*&(Ph~8^SxYk8ok}otBYY7vpQu2U%UStZl4WQw8t{ zEhZMwgt95FvkF88a5;qN+(Yg_pqrO0``{Pn`@JTsNoTjNc;BQh6xrcJ6EV;$q z0BWNaDi~5<`y8aG!y=*zsydztR;~r^hW)#ryIcoL%iubp!t-To@!CbJ(4EPTjz$0@ zWo#bfrEFaEqemRaNv{Ad?v3B+o`X;boN?PvKs%4?{rMVe{h|?&bFOpc1YZ(CaFgrJ z-~EX>8fwGN^fBBvq}q0jyiXy7i+7Qn6QQp2D6n_ciX z8=QXs$pb+he-ZA#XAZyq=Q!Jsk-2y^-E7j2PanOeGH`36H_j@~BHa%*f8^|eUFUgD z?@+YZmRCVL6w=fJWgQzmW&Ez;5S|b(pZI*DpPWCD8{(h zXK!zQXNdTGW~nBIu&>Q$hf>UhTe&+CW38Xzcc@lZ5h{KpHsVN7uU48txbx*LMIJj_ zfsrKGpZ%?%l+CF=T)0w*saL`I$AxI~mHrhkl$23G;;-S%wZr`O@EKiD7Gf5V9j{&T|#rg{V9jQ(vvv?3Z0>pD4?lF!*Q+V9e|hnZgsxyw7i2~V&ZByoiFG%QAh^v> z^k@x7Z`#sxeWeQ(Zu7>BTx|NW2Xm7r_Zv;->)q$7QL`QV>%$*Iq3cZ#!U&!PlRY)9 zgsz8&VPmn`R!~-S3j+8i_E=9}ABk6g8Y)N=#~P@1In1a(t)yLPKfP z7KKbntgvahcCG9baKF&MflmgwK+2U5qn2 z;XzlvfU=0DUwCK#3mS<9re0rK45?UfsQUY~uZ(m~N)kRopo9u3`)*N9&w3Eo1dJbx z8*|Y9xd64pI&;@Xcyc;e1fAm|Y9AknzUeskYqifJ02qVQL@!R@*0XcM>*AtKC=BHI z=anVXD6`etPMSY2t|xmh7@4fWr_i$F*h^j&5?z(vcVI3pW0oB~{3wMK9nMhD`WgO) z1pm$ZfYdnk-CGl7+Ezx?TN}JB<7u}HbZfj@cw45s4=G2t2~aK{lQvUvZ4mGFp0F0s z#GP~`p-Il*68XPljYr~C5SfZ7lxPeTS`&>lpk|`nO0ym;(>ukX5h}_Aim9Rre8`@f zTVJmx7xrGekuOl9O)b}AwhcOwrbbbBW-XVgj!efhp)Pi6c`??D6rkY@ib|SVj=txn zhldAKfv}rYRaDqIyf;9+nX5?)b8~Ov;fnNF3yX^0SZg3@UXzntuV+0qXRiO48XGm= z23)phUv3gg{S`WR3{lzKmYFnwd@yRq(RV=Bq+b_0ZPP3WFnJZBga=DIbKU#b@k_%=P1bnQj7P}9EK=-lxUx%TL+gl2QMsC81TwM@N|&Y`P@+Jyan z$;2D3*0H)n;#elt%E>usxC6uaGH8-yuy98`PX#h+$xXwyp{Y3onmW}ST6wIGYjgEU z9kNpI9R9xvsYqDM7nexn1IYV#CJ`%F<>cgq?N{Ylv)b|&O-p)3k4$MDU7#YT5W{x^ z=_|p4@P;2VAKi*(e1+98isjv(;QH^e!9p1d+p6dg*@JPm?Lc^QFMsOcSOIYpkj6SS2NpJf*Eb_vxZv2F5v%)^wS=N1e|^* zh4ZKVl}v#c2`jAezt}L`irQ$>V+jkRaIV>Z?$U-k0Q$23uH1MX3Pkk9f*KtyL)NRb z3pn$S-`ioV8rdY=IoqV`5)hvot}aVSD7Eb2T}R+JE?!!O-NC8716Qg2QdjwJ!vF5C z@l}58EKa6~gDU5+x!9?<%b@xldtKr=5B}aliu@m+S5+|K!BaHmpunxuCqZ;$LdUwC zdOfGe%1Wsw&*{y8xkFDZV^hNJ#JR#bpP0;2;-Y35FgSmT_`2g0+9T5g4AGf%j^`AG z&GNc+tORspq)46On`5p2!7*JE_Pv1W#4HK!)n89r-!)^6=D-G47~peOL$`rp2Hg^; z{VrE0`?+Y{N`HgG;8Gk5KcIAJyOh`-VIBB&m1CuHShPMt232sUoj-^-=~Wz`;mQoR z4`nenj<|uWCPLX8Iye$vT-wuG^&2DAjsAE*XUNn=;15##*srSB;)0WnMcepf+6uX+ zVF^O>TCzaH$^GH}AYUlXBon&rR|D{_R0)@JO|ap``swaJp-C>tAQ2Wth0On-YHb`{ z6GewcJ>0{fHzDnKl_aWuz#aH@d>0rsI?mbOsXDQW`oophH&|41kA@IoM1QRKIA-qS zZ}!Hfo;WivT;~s^H=O-G$i_t@sYoXS!7Xuq32d?b^<2Wjj&uG|HTT#-=c9*2;sw1= zUlw8aZBySH)STNRYj$0;iC05PYq4sR_vS%pWW*ryOgz;X5*y>Z0zP#&^VNunYOmZxh^xy}xzOFDSP%9}Q#t}MkH%-bXJ*8NpF`B*g=4fXM;Mj}1ViuLbV`o2=-aiiaZ+He_MJ!`MLEBVByAeid z@$vZSCk&*wB)%@uDH5*7iIvaV;zJm1R=BS?WuAZ3HIzsh1(vAP(3!mJtzT#=lntKcDwZc| zCZlK$`tswB+#X1B@t&K(%{M{fe$`nT8nD<>mFmBw66ciUK;VyIjIuvd8tUGN{? zZ`0KrvrXKraJrMh`=>u#HeWjh$!tWT2W!5~2jsZ(=6w2WF&U9QflT1_*Zk{Woa9>8 zh{uAZQo4NoG)L&VUmi9tyx0os0g1>etptaZN=c++2jykSK5_aFR_x1@new`P?zAFp z-Su!$oZrWc^?zervxb#|*0#q?-o16)chu*pVEb=9?9meUR`OokpZ1CZ4Bb$cSX!m% z9aGr!pR3{oF2_9&2^CYnoh{HZueLW3USe*oa1)JN6rjlNARUcUt4WZt^!XNkHNzby z1tmEU8EjgUMgvWHl7n%-y5`FW(%{YA^YS7X$0Nm)$VnG8rl>uXqw&1i^#o>bV_7Sx<`L(!1^!%rqaLVD3e~>kM z{-`pyAxHVN;!s`M%0kdCjT{9qw+Mf>KjY1%8LXM_fzg1qUiS01_w2&paoI9Xwi9rXz!K`9l ziIWgjn&`Zi|6^NJzhpYg`^-+hrLReZ8#@HUoO|>W^GQ#81rA_IM=2X8aW)`;iMJ(J zDf9T&i8rruA$_18ot`XuBU2G+O+JWE%@Q3fB~J7OxF){~7oFcmScGNd?bft*(_pPX zHybm8w`r$EF!dEte=X9nttLz;gi}9r47D!TXN^z51PA0NPV#{U5iIg-5CzXmlFbs( z;wDy>X|3AUhV1n_Xbx{Na6?YwwJ**w_Y`OcyvczjL84K2wAzNLfth{qN(!{^EHW|9 z2#<52er@3jX(Q$jn0>#0|K7`s`TU=(|+fxJxnPzz+iLn9uNZYj-X zpC2t=-IlAdC3rdV(o*z`v7jL|&k^M01aBJhLkXbgB8uVYAl|@$#Y{)~^pl3u<-QH} zVT3|1^%CDbY5a#qzh^3!D_QbvSGcaWVdw=-cmDR)iv*&O?monx^s8F zsm`l&gb&YkO5#joAtztFIz#N;ut`%D=3mJk0_kjbNUky(e{HRrb`>EH*O~@o%MD@m zCI*-HQe?#LEAcz{oZOemtWwPBhoQ!&pmtBor;pkBGdQs>Qw{W@@5U%E<{Ba?>&F5i-?%?EyuLLb;Ezp z*VmgSjGB)D(kM=Zvws}t76Ej5$=ObX*8tDVbHs7sc~c2WmZe90>3%7@Qix$BJ+Ob+ zbezw)HaI#u!nuQ4tO3p-V^$x5dC3GG|4oi>H8?Hm|GFS-ZqnBUih`joiaa=jpIvYl z_q_{*d%nTxF;M!LHLl)uS;kPe2`ntdhl_cegBc+qiKyV8CiSiW$?j_&4p8Q*zb2eIo(dWJu{ z7zAal$PH!mw3H#Yx@icYLTr!L7#AG|!r8Y)0)b2Gn+@SZZc`T77b(t1d0ze?D8|9| ztv2;LgQ0@5a#KM0NF&;T(|VT{j)#4r>V0N)72>w?ocL_xa#A+;T%HX}6SpA2TCegM zzDaYJB%_RO^wOrb|b!Lit7>h&NhR&F8~wSu95avnt@;b)$J%43WJ zf&>`ZyZ#bre$%&(W}`ncy!^e|7AkP<_*S~QjqQDFJ(Nm;TYXKQ{-4x$#q!WUPC?!8 zp@@686`GTL9;i!L4|>3UQPrTIGi|=jGpkY!|77KVb9Er4!kGh3rn(RHtgnJ*2ey^@ z4IF>8s;kvHzFu_l8Tk6l>a7;n$+^QvYy>yvxy zbLLh*Uqk(&L7&RCkHW-3?Xyjss$Vr25{6J_IV2D&r5WIMeB^_U-nhs6Nxlrg^ga!U`c(%Dm9Dz8%CS_ZHYg76 zcGB}K-M`dkrcEN5eQRJ zM86rHJ{8q^-0vBkB{*o*KKBh-=)SrQAH?P3E8FUv+hZB4E z?bA!++PfS?{__tc)RFp;Ox2LGx7^;f?EEA+AVOsWw>3e-X$~YHlz1r|#0iSUAfARI zmUk(?9c!xbT*W~ z({j#>ETxo62~JnSy;8bG5j~NPWw$J9_Ry$jvKuIG|4TRKJiWmJ)6=NNugY9iGa52ayK6}86j-V-JNFiY!il*q`Q18wS0|g zr`pBJ)ySJKY3-jHqVogaNZ!+%S3`o2C0T?hf5mBQU-@1VihbPQVmDX`&6vEm5F!%1yHiB2+W@ zEN&sutEWPZbKPDe;F=Yhb}pCISDj?SouBHYt<9?x)b;2D6efr_Zdlav_OXrO#iXHK zXg~H;flBjaz&Z?Td)G5FgO!S_AlhXy{&LjPYa&B(>?;n&60uzr58olu)m4~8NYuNC*m8qk9=1DNh zS__4H6#G6pI>V=Re%U6#Xl4FbuKSxiU-PFyN7geYyKMx&OzQRh%cj?3%AH{aU~Z;;2GKlkiz z@Z9n*cF!>&z+F>}WBc)|&s%ECPTaJsZpHEa=&n512kXnpiJLN0tnxMRyoon@i9Oh61@%hmUXBOhX4u zJ{5GfmmAlx{wmzK{mpnfz0nf34U}{5iKezUVqRF;bX{%7cPm2NRMI;;<&-oQ!W~Ir z0i+_7HE*zN|E+A=xT1~V=7NX)iQTuQ5Yg;Z{D&j|H(39MW+p#NYMJ3N$oXxu z7t@A+tMt2TznKkpTr;Y&R-zQ$R$`?){802b*0$Ltl~y$x8e;yja1Bm6APVw?i&Z3E zPf^tO9FRTWt!6z%+; z_D5*kC+h!;m*bu!3!&w&M(sf88VB&`st&~JVp^z`k^)>8|e?7Z2Eb?_$hR|0dP*7Do^{xK%q_7U=`s5DCW^q5ErqhYnHaR4xtKJscP$VG ztJ7sK$+?^f0e@UJbz_C14)b}R=mnrh;T&J=XuA%#=60aFG+)CIrvlbA#w-QE2QZk* zuf5pWxuL)+yHDQPFh7);iWoH2WBx$`PxymF0#kmU&)7n6U)(5$dgek-?r{?&arHq@ z7w7#-rp6+%JRFx~3@vl>g6Rwrt)rtdnY?Zy-4Jr4N~Rknla8Yj(!U=+TKy{1T9bf8k#G*cPcScU!?Z8>5d(fqe41+xU`j zKpxy)0y)@R`$%zH!=;TE?-Z4+S}aOG{y0u8-vLx;4&G{qI$nEd&>@+FmMG?C<)vq1 zSPn0O6!rFb52%$y411T00IKF1>F*k~0#g=#ynJ-b8z>kbys_BVJ8GBziy zIrUSqTQC(eHlj|Kq&LZL0Z22#wHC;1)iP*vpACmJ>Qv+bypQx)Z*f*z#DBHJ&mxlc z3JJvEF_nBgd%TWoV0sPDgM`g*N5j;#s(jhAN)8RCYR=S;CNTVhIw*#U0ZtvI#wyv* zho5q}b5!H&cN>%l7Wa?NU?!2zox&Xsr=87bCOj06?!AjMH*cF88@KZWBKwydxYA9) z0mAQoKjKA?Qv8zDxqEEat+HnIS#RDh4=)N8pSiE*ayjgnCZL73kGHu>CkFR^Dt z-jnX@^i~i3|7S&H73foIY4-l$ zE;x9#Wx}x&o{u!Mob~a(X{91i*#2`eS5CxT+*dW=VB%wYdGOoE&F+?~fX15vsh-&# z|Dyp`AXsXFZQJZg3|M|X{BW|sXvZRN4lu0DU-;WV*HbUlg_=aqT}wQi!L~Qr z-VzZXkQG{hFqK&=GFKx%%>8Rb7*!TJ{lxRlL3Jn*&>*0SR>sGTegE7g?bXAtyZQK4 zs9hZST+j#j`+5j@g^56oRD6Qv zNKv`@14WSw5P)i>PU`#ZI;#?KkR95=O3Y#I6c=tf`3&VFlAlpKoKTJz^*5n1|$UoBJxzYh^^#KJ6Vk)pHv>Ukq! zUFG#U8Fe!X84ij@UCw89Hdd=dTiPrjNN3Z`uIo;&A?)ksoCv6KbA5fEmX#7<-F_ci zm)J3TcG{o$M=i(6WKiIVJ|SX68p(S@oyD^&TH>iTK~W!zA*!Lt$c;Rs00{dbucZiH z!YE3%O#BZhwpK8Yq{>l!X|dMtHLV3lvK4U)QuYM~oGVEmHY`6NzEc%p#_8uuYuF21 z6Ny0{>5a=AN3@t>)G75gqwLU^;9{_`JocQ-?k~UOdBAbx#9QybERr8Clzei3fcO$P zfLNJtd0sg)8=?_ZZSC>->95T@ZFDq&7ySx zWQ5=QVJpF2LmxB7VXC%Xm9nhUgAuiY0u^XOL> z`uFIssu6MorVB5$Q3!>Rh!Yc&l=-6+5>IQ(tSj&8taz;-MgHv}3kVjx4%1;3Xnq3^ z5#mh=tSGE##c?~cY4z?j*w$ybByJUnV2j{KSGwG|3{d~|u1Hvrw#&!YiA1q>bhRZ2 z5oZnhKWzc*nhToJtxRS6xz}Yvk25ebmaeCSL#=Y`s`eD>OgAVI>X1% zZyDdoI2qN~u_45;pQlO2NP?SMCzhk6x09`K{C8@eU}U3vlFK&_Cqc&-Ar#(tf^b8@ z8Ol_vL7@A|vRp1`D`>tf4zil}m;XCq?)A2pZy-@Z)DNd`uMr*(^`G{upeV3RBgBjd z=}m|HmiJ_w?rurdMwC&P65O@jAtyac8KPDd^?P7qQL~)e%aX1+5vHd#te)N-^Wy=k zVzxQE{z^=}se~WjdSn!z)VKn^Wl2zZ$~!H-QU&-tI&8++wo59eq0-$nJULiuBTQp(oVKWHGHxLLujf zT*vN{u(bGm?^LMSL~hE$u{VN|%l`5OcU6TL6RHI9XS?ice(J3UONB}7in8b+>U>`A zR;!ZMMUf`?coz8VE8(op%cdOn^AxhoKF;l*zk=p4bqXTz%r(6!z@}98LTDyE~|D<|56= zV#WZEyPJ!no0j)l615YrQu>Itr$i9{^d<_3#i0?47AIDmIb*`qA=>GV zSlQ$1buV4p-}N19qz^HP`ED`9Lu_oOC0JZ5@mn$^&GkA7@bi zsfL)2DT5#C*VTe7E_P#GK>71bgNLQ=G zG5YREq!%#l7ec>)t>Toda3o9VA@3LMpkn{eL*U)ehe^8<>Yssx3(dy* zSK(iL-qavL%exnL77hip8KfMr)CsitpPcwy@Eu8z`}N410!CS$~ce4 zwwQ86qg4O;IXF_|SXZ;_a9yfHtx5^96i};caQbzQXGs%1f58RzbQ&y5-5fO)eG-m& zs3hW*!Sp~dcx4)OJU6`v)=5exg}NURl|PH;OgS0!)0U)9qH;pj0O#MQnQLde7q9N& zrpX<}esh%9mSSTQir*2ZJwI*M9Vu;o+KF?%W@uFS?WSa{R}e4U|GYZ@rOXL_&wEye z3d(jl{Z%}-S*69?JCO=B&lb0oz^ck^viU%pZ0z4~k?3pwwqM!k$zte=f|2;SbI&>T z-<_+eidWm!O&z#{VXQ=2acp$l48E3pVZ#LWQ~i2}jN{ZBM(Am*2-Ah4QLxcxslNNt z4aYh*A9NcQO(XlRNr&~vOF&BewMD=-ez`zulk(v0n_~>azGW4$_hZyGR;Zy&+d0`{E1dUxTt~E11oBwALs-? z4x$I~HF8E15|_M}#OAtp>*x-~w&(=5-|j?xa&?wd&KQ2l$0k_T|TqCpzsB;XM+wrTA@as!=z!F_;orASb`vk?B6IDd^fwN5_F>}CXnqZe} z-274d!0qBxqq7-LQmEMKcmK7HhQY2N(tkB2+W)5qCc1O6t$Xqqmid zA3nA5`UOf|w$2Fw1B;TCn(43A>kqozkN{+D^oF+1jlc}w5V0Sv&xPFiJ~2RY6`va$ z>UM%WIZHqr{>&Cgd3QdiH%2?}1#3w6w!iFnAIE*;1Os^K&X^KYYqz3iZ;9pn0_5h+ zbk61auB!H`xSl|S+(u?;rCb?_iUWcwMZ-U77Wj(Ykf_AYsHo2J)xgS1cA1~pSxDo( ze9%ujxG2=0>&#&=YbC{h>6gDCqY8nYV>d##+nb>+HMZ1**q;lc8( zVFDnFITP@yQCxPg+*})?^SWyYZEg=$V<6oJ*CykxYlGoi-@UoA?_9^EV@n6A39+>g zj^!ZE3{^dl$>iV4(O%USQ`i`*w^F7N!V7t?HQaSu1a_DwJ@{yF-3>)b3$?_%6 zvpBUUIwJOgi`Jr|R+ss^9Oyl}j$k5m)#+vo*RCtTEZ>VkNkXHu|d7L z5sur&I}w7Uw?>#L8$P(o4E7c7Ozhg-M~@xhvmVa9(r1#iB=PI=meAFM%$~uPQ+U^Y zD?_o3h?^W;OQpLTqH&i`8dFH=9-C2zJfH_7$sY-k#>O0FT#WG{LJwtbrK9Sweo>29 z=asle!_BZ0$4$f_J35#h^3B-OTe^kxOg*ZfWn3Afj^AzH%UlVDWRj6Owc9GSjb0vk z8m9!pr<|EwcKFq#8;bPi!!~^%&EcP7oplS3bwe;0&I8|!M+k1F^mFA7iIq|kS!@3?S(`?;Y?IJF`ZPB~~ z7=D3fCTg^lPt{hRCDyNCg;^h`GiM*1z^|{v4V+yYiC0zqYD>%$5ZoQo!&H#PAEI$c z%O_iIJMt`P)+NhrpnDbf{iA+QgUF(s1?QxFTliVr`%#`_Rz6g7wmQQ}S}a0J&El62{Oc?Z1k`US8ipAq;VBGO73_oZKYcc#r>tF; z(L=mPk0@=I^%cqb#3#$Cf(@!Uzn9L7k((OnNM1yzW)U*1CcY**^m_N z`1=`uq_uC$YO$rlJ(uvY zN$yd?zydy!yi*qcLWtRggryox`d;Nuf$DJ%pnmd+|F?KK_?Z0h*%tP|iI+6-^VHU^ zvC_U!HvS9r-i;zns|qf|taGV=AI)%jE-Q-NfM}Y0lvp57`7BoY)6kU|IOroz?9UmR zlsqb;kk^fg!UDE(opqfLSp)B!PTNx!b!V5rOtJ>x#@CL}`@{h#&3y(T`{eCuZTZ@jIccQVEFZWcxAJ>h4_3oYin!z#b4WnF*oSIVmapBCBC8gY*ZufN^ z5*e!6$HsbKVkeno_nG*YOq7rA7r2EGH>{mipO`PM2DS{>-v|4*2~-iK4}4o9XExh# zLD#f8kN3vEy6<@pU`ro%{&sFeUGeuu%_Ie)M1(wte2MS$I}zwKq?}!?&!c=&eWl8T z4KhXTs~I#cD`$LJDdL@rHixobbvE7;4M^pt0-ml1lx=rT=hm#s4h(yrR6vtq0vue4 zx^Et4xxCsO{Ety;_@^6t-7EKN^1)A*bgiim!L#l`WSIs6#CTm(5DTKS#C)aZx=QXi z$3@zUW>Ma+x@6ZjO;gf5d#+X!|1mmgl#>o)@DqLu=!DEyu;!#)pV9v(tH${&ol^BIV~h6^-12FqEw zvEFe44_eF&4bzPp6R-iwjsj#+iEQ8YKU`?X1bdcu@nMM_= z8riUvz#OCH4+R)oB7^3-(OUERiQz-7C3)^8jY8PxgF>AET8z?xbH zl3}iJ>G1Ldo+xWO)_{@N9DyDIA;PKP_XRXW*9R-HV>JA8UXKXIFIA*bDaHaboIloM zSo~cEUO~@{j3u?&gS)a|lC_fL{o|cVooEnqP)k>BTZ^jT1n6JxK3Lo~hD4u`1|vo01rXvGw!Xdm)V^y!T=MBmA(?0U{S0LJ!-|qhLWRP07R+{dv z!kZqKj+gzD*Rqc>$<4mmpt}a@Y5^6a-MP&1O!5{?B^JxeBV+NuSh@PwY8_Z^te31C~_aX@~dX8=`+*zZ~TgvW}L@_iq_d8UR6g83jUB zZ+C*(>|f1a%Ha02MQXU(p0=Xw+{7lY7Ft|*(`xQ`hgq0LY&d+MMQwoRR~;P;gw@y7 zDa`{QtXFc5NjuS_ypkKPw}wd(nT{= z{@$C448hT-0=n$VpVDK!v6Ih7S~fDw7+V$eru@QZ-fz$72p@8c*Yw~$vZ5b4XZsp~ zsXOXQUFDtSUP_a8VB|0CBEdjKLAd)0h2Mck9O@5`uiKzx5pMEAUSp;AbTUC`N9g&* z4>A~O$%~CKR!+S@VZ`9)UCG~V-{j4%QbWRG#h-9f{JLSFyCRP}pRM{kq$E?IXpTh2 z`dYU2a@OV1!25XaPzZDyIT|rPAb~{n=^;P{!yi(+5xbIfhM&16C-%51Z`4i>I{Dca zyjw3;2bg*B($BTEep2js}j8Eb5N@9?K>QE=q#StY&Pn%-74qBOb}l%C3Anwn&}D&boHu z($fJ$qb(#B5enuP`WDn?{&$k78tL+gH;rJEMI&5rqci!8&X*idVk1vKqUH};@pYHm z69Jg^=X7FSVv^Ro9V>hBTb0cu%Mu3j=3yO=%=ETg9G%CuZv=GUZ=Rx(BetoxwOa)# zt~j1#LrS_YWZzPhlPSmUWZ(tFkOxB=`A(bMnUxufb~0sM8x1?ntN{M%O_jPk`iX`Pf{}DANXyQ6Plkmh#0AgJ zY4?2MGYB^YDmf}n<2GgMZG9i*e0tQ15=SLkQR*i5B3v)%!`8!pOGifXg39oW{kn5c z=J(^^X8zyE5ZN{iLtvn$!`EAu$?-4|U@{U2q1rO?L_)YWBDl}8ig2Lt?+hPMvrp?cX*~c@?L~ zYJtUPIKLtj4P?{J5e;R#A5C7w-8KWS2iXmtc*y(>buN9C7lPzYRT-KJqGDB?@O@Oy z(H;a%bz2|J{YQ3(m-pm)e3d0lU6HDEyv%kxRGpTAqa!zOf0}%kGF3xcHWK-Pzk~bn zOJ~n7zbyl@Z`+_wiSOM4rQ>#FBC(@#Y(y<;LSHl-^q$pK6%WV#2>vz9D#(9n9SMP| z6T*}`>yjrT$)f;b()e=RC;0z5$rx!Cg`ecd@!b>5j(27e;Up8CEZ zoTBjm0Ny|$zpg`EOCwH-BWHb2={aQM9f7qyk`%G(Jb}Oy34vA27bW7xs)q>Bv!w9$ zwUXVn1~K~nY(eMiPG}hvq623ggD#TX5u8`-DIBUkglY4Hfb-qGufsKiw;>tJh|jUB z|91}kJ@!ui7;6hxAss8=p%dRgB9?G0+y29IvAB?;n52955w^Vbkh1v3o*q~)aLY|I zM$uca&ER^++%^Q}#uD|;mBp+QW}rR`MSFn-bGg^ck6}w^zvk_F=+^7Eox@*Hy2*bA z=URGlDM$)8RjWZ&mWQ`X;pTGIeb4hnEo6Q|Ig>lPPTQWR5G)No6ENcTyI9sv0=r~1 z8hs7D{3XY>Uv8S_ybDbd7;f%-5w`ce3@dY6#2Ds;;W$e}`I&mq8NmE3Cth4pw$jDw zmmGL^eY&ddYlP9VCZTEv!DG3l)n6L$ldXJ6yEt?klb|*6mDD2^FR>G z`7n$^2U0J2xd3i8k-`+gxjHe0{_ZO=dg3@5d-lNC`=lttre!iBUR)(m=gj&H>htQO zhcCDUT>edO#pGR|fIBjZ>({*am5uIv1vmu)~^Bjdy44lj8Y$?-*RPE^c4Z(4nZ{?)3;Cm`>n7goyL*M z(<7L;_c8brGkEA!;Dr~DD2F`XAF~~KFQrI8mm=ky#X0|KC@)yib$z968-=0VW}%>P zE%D%oQ6(_Y<|}Z1Ge*px7vsp5>O>?ZwlLH(0CSAwQr17VQVHu9yDo$$}@~fhKuIYaj?i>FiEXP7F zp8G<%QvS)g+&_Yg_ZWt81;2h%Z?A~QeW53Yb3^M@f}u@VKz!ly|EtXTS(Lf$w~;$N(i_S(WkjjDA2-fYWO*I85U}ux7p8{ z=i=*jX!$nRAgA|NCb&X@28&>X7121yO!J~?VmrUqcmZ1H^xLl63$NQ>vJWdLnFhux zl}nJw7vrWE-cxRGex0N5U!Z$AVOebHT*ns8vjrt~N9N_(0IRmT<^2S5Z=-AdFP3F( zS?I>zmtKu4`(BPM-8TqNqQF{i%}e+;H|EZ#YUK>XeZFwsE<7f3kH0c|9X6z|#G^ew z!hK`kz|_n>{-ZE!3sC=;&!YJ6|Ay4{HzE7V+mXKYRnU6-U?k$0V(*MX9%_X8^6}%C z{F}eRn!+xu$?w8w_% z2OGMs!wsFcV^zl%=vrKq7oDt~5EIq8cn@akBWcSr|1O)!z9FLPAM`x;X>m^^kS_!0 zkv}We-47T9%QfI5^oV_AcBFRN{gTNP`uqC{##dwOmd)6D#TIPYvL35e4xq0miAanm zs@U`42=%vPwAA6bCAigR)|nORdkXcN#>pv6-MM_`DbmC^V-})UC$Ba(&m&zMOds^*y!Wb|YHtM5nTvU@I3|w0&VsUqWvemZnl|25~(h ztmye>T|bJar+$k6Joa~_ARYvtq9eLOw8iO^ zucifl+B_-Z){EAdc+W2Tuix|m3}n`bl5$Nr|H1Kp!}pGSPF&Y3*Zdc;-|^x;B;!fT zvaLTlN9#G)LjHAD_}3G3-qP7g_wR)b=M3Txl*{=1=qPUM?#2#kmoCx{8PhlcFH-+_yJ=Z{?QZNm7Ov~q zg{%5sfwdhwMR~Nv3Eu($Z07!$R~vlUXmWp^$4Bt@W&Pcs`J@B=Gd+XGvf_+d^YC%@-^&6pf zI?_)S;BQ?*XcwA^a6-6qUL}wTMrgwIsr>7U|)@{J>@Jg&%y#j02^r5#qjeG~) zbA?CYA}teiulK>Xr{U85@qIJw)Xk~Lv+vAJFgM1Fn0|0SN>3bx+c1TTdyM+yV@FM# zEV|-o^gSNrICLpeB%n)?BIP*(boXXncc%s~xPr<6+>Fa+D>=tqA1ywPW3x|UqJBb@ zKx-E+bJW$78`#`Vujzig3y2&#^oE z@!B4Y8;4sV7FTq?7`JbDFLH@)5hu@H2yC7I;jw?icMtu8P;PHo^G@Mi@SS6SE4~UT z@t-S~%a5I|9hdvQu~_V_hGDGZ&v03_6oE?P1wQG|?ZR-nuU^MfCr%(wkiDBg{H2|p zn5b0np^ttPTh^|{Uw`UT_~Pe3j~ljb#qWLm;~;*9aPFbPc@bZPNtOGqjA9N~klu(6yMf9ZoRm#Ao7ML>U52hW02O zKS}RguBS(*7 z@5z&x8XrfU&d2Z`WlJ+1mnSQF3HrNf&97s$y-3%>->2zH-|jKsU!wQeZG&p|02rV) z+EWu2x^5mvyt8-?*m8cM%c^moiAJN>tE&1w$8p|3&u5~20w5hNU~A6}*wJ@0R%ADb zamMk?d9mew=>0Q4XhJ!owS4(d4CQpheNM2>6SAh?Kuk&ChQe*wk-Y&=l^?|8)%!)c zOS>|IeG@+s0L{tUczNuHKfr;%{}eht@SDIbw_@V&{|2iHJJ6%Az~0i2;HRT7o_IoJ zX6M-T`oj;wJaiB?^<`&bT+}f4*rSA#J66g9%srz4mnW#K!1C!)U$3|hPBji;b$knU z#9oBda0(q-H#(JW`VDv;estuYp*H9@ARmW9-K2}QHxrE7j)~(l`_Yviz#SX^s~GS3 z_u`f7ei7>k)W3c3?{KPopv$z(yE5tQtEsR3ciL^Q)Fec{J*_jP-BoJ1zr=OK-}IWB z@u81=lvvsoG5fK29_e(B#;{I;bNXQ2iPA zSB7$arWzyDn0@px%6pH&sWe0d0X3>OCl>J7h$TX2ViCo6T>p`VCA}l0NI;h&Mapv| zdPJYFObZRC8tQoJIVVeMTFKc)$L^UE_2W2RdJ2bU9>a<9UKEXqMf=3`m;lyvq!Z}@ z1$DQG<0p=zT&*Cc#?TR8fu88vWl5J^HV>`|xLkLVMlN>qM6PukQaOW~$?)q@?PW zX)bF$Kb*icin{>ckjL^l_1!%+aNgS(o4l+ zQ9yfz;G#^>!LZGc@6i3^_Y)HnDAM0}Jw7&uBtd_M{{F3ReM>AK_`nD7XMgr*$feU* zyK?2CbMd6WIPH6!fc@~{!#Hs8Aof4~G>#C&|Bzt5Lg#l)Q&{RVZ5H=DwJ$FzYR4o` zdbPE$cZondpWku4c4EhhutXa5j}6q$IeIQiX98)qo?kdPQTds?mDcYkFu!AAe0f)L zP*}^i^}dwGi+C5o#H zFT<6&>jRIeJ`KkP4&bL#cN3`p7>(+*xN!{{+fRM)*PsutggR5jwlyykUyR-7oufxl zJ8}$aCXM?3CvottcL0;cv;Q8#^ckdi=R77zY!TjE8)Dl_q`bVXCFYr zt0AeRM11{Rzfi?trmCk@X5~ny$~l+QJUJYsc@4-;E!i_%ceR(jC;-Ziq&s zAEQ%#((}9*Y{YUzQ}jYY{Z!fT-pNVUUVhU~{OxD{1^GhPB9j0xMuXu~@T|w-xdi88 za-jR)kOAAN8K@i_LH+n7tYVeMJsWCFpVxI98crTL8F=1ARHa0m{!~PR6e$wW zrAU$T+z3IzBfRGL@6qfoq~ke}yzOk%a8_nC&VVkgiY)AFGHh8{i=>)wDT4E$TnXy3TYdu# z%%a#B!T9u1RO)jI-9UC7cJ|#OY6o)}H&z090^y-k-@><_{(GdfJXWQ5h=g!Cy+^pB zbBQ$J1Wd&A9^RSzSF<|Jp5?_ z^v{d7+}`&R+`j(37%LyelT$x{%C%i1k$*1N>-&}kk<+-|5>UR@FwJeO$iJbdN5tbg zmq|QiGiF=CT)cF9VmB|0{pJur%k#vVW3o+JIKG}U)U!Lf$!pqHqjjAVzi|>OTG)De zgaGvBE3Uv@pZp|#=ffYyz2E;nzVVH3V0d`Absg_`$2$b5Uo5w7&J@l|E|(LrmS-yr z^c8}3ww5!jKltE-t*QgdNj94m%ldWeaP!Mw-rCL<{qgZ}0qO?`*!S++i>LPP!y$UV zhqgC34xQSRUG6(Vi+dNHt3dB_v^~)V?d|dT7h4?9ou~2-ur-`(+uL?NqG<(sc1ov< z5zb^X7v#Qki9>!C=}33lj`OmG?)5A4Td}MEHf-wJEv)BUYI0s|IsDKY!&@*3;V-b6 zho>=8`?%OT?BfLD zdKAZ;L)6du;4uu9YltTb=*X>uLWGo|F}0>oi!s{9oj} z9IssW9^v->-9w+|3Fv}png2VLOudHs!EZKyPhUt9izu-|Qu~M5y8AYh?(MZ#Uy0BD z^H=BK+?ymQ{ywdX)YqqIJwvyq5zaO-h+n`eJk3Jt;p4zC?z=vcgI$OuV;H~Z@kQLv z*7NB)5&4)E-g`V%GrdWfyVjT zb#4^y=?g0BhFRRTR{XW$)G^Z-#i{as0-`-QNo#(;&;qYTH00u4=t&M^Ah`iu@nP}X ze4@4&2a6A4vVKbZrsiUu=#8xvV4ff_XZZF-8ML`MK+cZt!baI0$Fy}^)GM!=r4}XR z<2_i{aTO`VFT$$)6|LA#H>`ioO5MLa`TLldJ&Eldx3=n*vvu6{E#Y=wcgv_bv#2;z zsM@piy4X_oNEJkHa*e10`ne`1EJ|6$#ILEiT;}h{{}xD`L<9L2D2OSwyhsQ zS87mL&wqIQi)=lwx~_YbVHi&@sUQXxxg{0IuuRi8tJUglyYhK_bj=#!@_VU`!cF+r znh@RuZ+15fLAyqZ_^e~2M1WnQZADs_Z5tJOT?xTkz&CB$K(aYZ;D7&^j@f(kw8@sL*lXq(hSBh{N zo5rB_st^q1e15LK-EJ0N=*T|*`sNa(H7(_r!*8F+^`Yp(VtuT(9}kRt9s9w!240Mr*O~szhYBvH#VeqiZCL!ZhHalw>ru#^%Ijw4s@b6I)mb&F_a(J3oSms zuz5V9;QkR8@BI4_c&-QfKA$KV?yo=FPnIob0Hj<5krs3*=+rj&Dhcr|U*E?ZX3 zE=Ji(?au@9FtHl~w|91fFBy{=wB(3@C=uEa`o zL#Gn|xQ6#Ej+qZ*+C7T?$Yuieb>Q6E zd>ymSNgOvG$BZ$8roNkqrm(iK6I;4&6j09Aa#nQOGa<9JpRGElW)C5!cjHOx$9S@M zk0{s1mJ!3P!tknM&F+lz`d6$M>pFLeiG{4*gEd`Okiu3FP(Bw&uaF`h$7KB^zINa* z@$~dhg$~l6Sc~nsTak%%Qo9|+p2>SfOdPfQ=j-+Q)63o$QoNP}blSebFwK{;75WX` z-Os7@yxr|w#hj<9C~e2qZBim9c_HO-iWJFFQb?!h^$aPP)a_7ZOE@hKCzo38JCJh9 z*5JX;POMn50)w;+4Gm${s#OBC3WWla1m}CE$s~L z4?p~{fcCxn_v4ZAaS`h)K$rR`$I186J>m+}S$-ZlNnRVQKO4aAwe=N##rYQo=zdRC ztDK!}9l`ZO1TD4Y0R5bd3X1T0$Qa}m}yFFt+*(+}*!>YsfnCW{uHeqsV^q7k@@ z=64l5G2sa~=hBTdw){jUh?61#U5ba+UEn2NUOE_5Uq)JNV& zSPsK!abaBXbd-qo@LB44lqH~cVP9e$I^(-IESK5p;FT)5qeT($-eeQnlAG8%^s@`8 zg!;Lce+2Iu5ZwGHe>R1TuSGZQ;q>(Lh8HrNN3z*Fpf zwi?uVrf`Mj2Ig#21cmD%Q{;=SOSalFtvgL*Z0UIi&o%uTz2P<{X8{@HM~=M)`L6lJJ=_A$0y9kUpO9?fp?e^c#wb{#m6fv|f@KPSMZ z)N?-pIlJ#->)poodozP00`p#WAB@L&eKiXFCJU*JGXVFMl%TS*5)~B{sI9HV#0e8n zS6|OToc^Zg>3ydC`zAgK*y;B1kAIv$N9pm~7^JUXzaFbrujbHB>G4|z^wN?dQdDQa zUd#3=McI8uTD-+TO%1fb};wCs8*boX)H1WG^jNZ##zC@|eWr=s zH?!CL&@8&TKc%lHEx{9@xAO&bo5gTvqJqV@G2+2GK=YGI`^L zoeS2r>OO;HK|HQ%?@=ASX{MQgZklO_Xl}RL+z1DI@Jf=Ofnawy5-y9X0r*gDI3yAm zPfWdA zX19He%@QaQsxZ!5&r?5zgbn@SZuBH}qbso!{fTxC*d!R&;GTs_X(F%ZrtZ!i@(%Pl zx52@j|5CLA^D53kwPO-@cuO1={GNJ{7jmx2>1+4zMofu+JM!$stroWp?CdKjYTsTy%H>t2K2 z7n~*o2*!g9v?&t)ZX|-e>~V+zxSzciWiU?Z=*Wg2w#_~47%lbrc*L9Pz^Mj%EW01W zZUoVWir*G5*1IZDeLO|k*RET~YvWhF_a3$~fN$#Q;SRK$jh`B} zKkFH=SF(ZS)3Q_I3D1N<>}15yhJ|?&iOY_n)8j_=Jv3g!;cy*2=X5&nV7JHO@%Wa! zV~A&`><`clFh7}{TdoR)LKiSFcV)AFF+1;&@Ehq|kO&-2B4#EB1q00W=rQl%ok~sD z*lR+n#yktjvm)u~D7laaryqjAo_?;*J)hbn2kep)Zbu0RbJ~vaM1-AB!hBLyX6Ii@ zEf@41GpH0`*!`#-IG^iTK)Ksn-wzu4A{~e%La6eNVW8?|=U_V~m(Su;ZkOu}^8?;0dlJUI^z`LP@ zLP+?dkozO-MvucB$dz!Ey+>i+%Z@b?kfeRi?#qv#0hNLN)@{9*MOp@Vsr58**q^Xq zbDKUMt)kErQ?$M2ncg%L&`mRK6l^rrc>mjsIf2ZNkXxApIW-`6^BQqpVlLA+Db(@WWseL@w+mQK@aq(v)FPq#8Bk=Bhox@3;CJs8ZXe>z3c zw)DQm9I`*6&A*GkM$z)|t~n^TjpfUb*!q^btFgWBU9Jr5aM(3fQGT|+6kDo)E%Y7+ z?o)!%=!_{Y7fvWH=Kdo=x~gdhl}em~aEk%r1UghB9%7EpfRUcw!=Sr^-8vbBcgA8o zBJO7pp2)rkuw$@{0d@rg?>YwC1mV@y)tEeaGQX$PbOO6#uNO|2%RKNtEY3RHmosL} z;I~g)aRrYQ@7c2l8#Zjf+wZ)Cl?>XcJzP_FHz%GFc0APC7_eJJRI$-p#GbQi)F)X_ zg{Lvt&&FaGdwv}B)^o`M@RaIHpW-K)q^hEx^6W->21Opvv+US@md|b)oYOkDwXq@Zr=~5r#NV8|QHP%>?TX$px>ooKM@NsVVwEgEwX>bz6%+>T$N*}s*#Gfc9| z@}o|t^P{3D-oX~I@q?_{#NfQ9*dadA6;O^NIH&XbvL_$LjET+I_vgFNzitmi$;!Z6 zf#me*?-_vH7hy2YuJ@6+F8r2E zX37xg7!d_yLX90eR#9)0>9E36>qA>l46WNbv7~Mv~C!5ecPs2M2&au2WFONklL16V zG7jdc^;GuL-Nt42!fh|fTDwA?qW+r{-hUNCf;oxI(f980Z^YXzPhe~J3Xq^Qsj}C) zrlQI=5us!+&mgd{|Gb_GYGsFY9k1|ZSgp2Ikx1mNLdz#nD_uBB0HgcGTJJn93lD`anA^7QX5UKEa|DbXY}0v`sVsh5Dusu{1cFg$VM zM1H&IqKo)=-n(}%uVH`dt+(*b%9Yr>bt~TQ?d33DW0f$@YQq?IeyL#NF~Dwrr&e@M zC#JA5c{=qeE^s{Z@ofNhD#hJzlv)@iBEMjO{akh`Iz8_mMz2H^L^@er!j8MIF)&}4 zef*J8lzc(mIha*_GQ75OL*pWnJ~!|QN;Sb#wo_oP9|xSqvqac4K%PqB77ZxR9H-)c z^*G7~cDe>QZAHBFh@$9}%|r_8Bo0dV1n~O)6$f31vLBD;8Hx4}T`RkS&3xj3+Od(6 zJWbRz6i>q^kG>PH?Ro?&Tc6?Qadx}d;c%SJuC))c{rmu1ME3^{&aJ{&k6l>S6;$R> zn)uXdQ?YE>otRef7MdRVUxfGcF%Y-u8#>pN(eK%@Vj2GUpo|q;sT=l6FV?)U50*d>PP+{;CI6ah z!G;b6YC_>^?rIWmnP+j+Oh7lyv{5pG1Je%9$SGtnxQ*H`QJ-=(OKn&eiL-FEb`b~S zFlyXU<>GRN0&niC8tfJi##-j^_oSjA1l{pugga!Z##;pQy)iz2fQjX^u(M|aw)d^X z$@Np%Yc}5NJf?(r#GhKP73$%xJA3LOY$K7Yvn$Cs|L)c8&tY57D!oRWMDCmw80$QS z|CZf}l_<7U@%O7n&FSv`jcE37fn?>1yAP@A;M`g}b8JX`JjTGdP=tkmgoM=CD+}ss zY9P&+fxkcV3`7R#Hntw)*!^q-GxpE4L)$RPbeD&a|;>u3^8&C@|(&r9t1xJ*vSH?ZSxZa$b- zx*M>t?mXVPfm)^U^y@q@msP5xmi3fgA*DBttSEgd;xD8lx`L)FcBgu8XP=Wz%e`J8 zt4l>H9iF1=2{pz+Js9ifDe-z5{NT(3A*(~Yw*N02VW3^$02+!9FsO{8qNpCl&N4oM z;IO!H-jr)F!FLQ^+WC9*L|W+FUc|=Zt!!LgZnN3G$JX)xjNyFb!?{hE?6Qi>dP3?9 zs@6Da)-*i+*Dqn5_%b&C`eh^rWOgmGMs)q|J)eyY)PN3o zJNCua!DA^yjeSOX`-P$d*x2_fbJ`N{INYsqS$-n_y9gR2qXo}U>5o)1%dCvOXMAI0 zBPNa=%T>22(!S`_Q_yofQ?Z zF~}~TIu+9y?4L&vK5iV3ijQSC5@RbXE92{BnrWlzEU?TZamggAjVuw1kWu*dFeo5Z zc>;6>LXGV9Z3aUhcez|Au>-3OS?^7OFbOWQW9a&5G&(Esw!qyo`5>tb>iZ|QJ--T?qCvD} zFu-OJ5Kh?f^ppR<;vx}^b4sDvL@pNF^{v-zR(c2Tn zwv8P)YlZ|RZ|F{r!Dv zSPobsir;{1-J!8roj`QNY|b1IfwxUb8fwMEy_=#cyY(?u(9)B%z0jdQfCbi7kDJS+B*(jM;Rp1n&psb8JF2` zl65C9nRe8X(??vNH1NlJ&>7ie}++cp^a_DKo)^+!7S zcT&nbl~&QXp%$ALP5nA1m(9m3yBZ=zMK0LOZ)4O3tjdf`?^Lu_HMnnk^2qzUq z`D;F$Q_XI2h&E{{C%>qu=ySn9;CyO#b@GxWTsga?r3K9lz-c1n)mLA|n{U2}-Me<- zyWjZ^hwo>fdk!ZoUW^k@I00ko>M?QR1g@M;sfVVScBERcpMe#FaZ>$%@#Uw`6_??i zG7Z%L14}RFD^$poKyLVj?SXdI?cdn1GM!PX(8j<(^tDAV>R?O0bTqT+Hj!|F!4OSk?ACKkpm$>6h5;_H*5C_a7Lj z-^CVlM5u_Dx-I9iyGIzD^WK(coG}5v`TinU)@(rYmR4A7QW~_Wew$i{KeHi(N4F^W z^cNT4i(i@Dc`+L##`Uc3o!JJ6@VH*nUnrt`_u;Vo5!{p4!<^-68c8CjqwczFGKO$vxQCvl8n%Uq)}V75;b^ z24X#E5AGVgP8MBg%_VtI;RqJ_{WH=|eGjY?}HDx^lZ8MxDL$p0PviB{cVkgQvx(dgQ|iID<+rk1`@iaEP4 zVf*J5HpY+Z?&&%CV;}n%?@LX_mWO@&_Tlx{U&oVAK8e2me$1RX6ZhP655D)k@0rnY z(>`!U-5tnzmJ>40UV1(jEj$q?E?UAP?O*)H=g_uo8!mRcIh-elVNM3;OW1L9o}5fR zO&L~_B$ct}t`7!-*D*lPk&vcy3DuZSDPO=R^7I;W1I!J;jwhms$`LLM$Fba)=t_ya zWm4LaZllKQX@v}&55;?FNY4?H%YL2xmsF9RFt2~VFc=~~1X1xrooq;DNa+(RB0KLp zcqSONa8un09$gQ~0S4cB6mA&U3 z^9*d73FxMoHi|~VTBaSEF&Ny=?vCq^b?_E4njy9$S*);$HbhDEO%O&97}wH~rI9#` z!_|tD3m#MTj59GQ>B`1z9ioXKkCsy!d$nskW|y7GeA^^Xm5-{-=}Ja;nj!tI*OE)T zmfmS~!y$TL6Wr`KIR?!p7zwKB3ph#x3yj}#T5BAMh}lJoT% zgsjsIgPjU?%>35na!q2#)6!@(dUqrenV8nTVEf;+O#^kaEJnAavfjM6vcF2Yq z%q5h#@w`QcXyZJGRFvF^m}fUkOYw5fdTMD=>KvLL4Cz{dhVQ%+2A&;%ch8_9@3H!c1aYfr|o`Fp>0o^pyM$ybZ=!a%TUF90)gnT*>??E`> z=P7_Z9h^BdHmi%L2MPzUJnlRm()_<3xk{zmQ$#HVv(Ie*1%G_pm&UMY3E))-s$)mH*TD-xw-i@zu!NXpom%_s)~jR z_ZVI#L#pf&19K92%kE=Ni=fFlim+0;vYw(YW<|rV{^ zL+?|z)#2`+PUYm49_dH^Sn?a8c#{A2>#jN)H=gc8=YoMXJFGzKsU{_QMCM8Lemc17$mM?PJkAc0|KRrtEvKv(c;8mbsw02XDG8C z8lD^Vm_{NiwK$8(5!fsaEE#_VmhXKWk8Zk~N5(7NV^QszfMQ!E9Fm(|Y;C$@%s;L2 z`a?=z7e?4Bj=o!E&M$pmzE{S3p$m4Tgo$Kw?3tr38P8>J2TGH-i!R8PUNEgE!5z4=FuCO{h5nQUumz zrR7+>@C4Xic@7E}f7GkClLaE^DL|*swKTU_`}+Fk(j*v%Y|V;AW6#G44VQA^E-ICg z)o2zZi0nM0A{q-IEC+dwuxQkNYli4$cAa_Z`81U0{4H=u*Q4zM&%&Vz0%SqHu)h;2 zkdDw7d|A_rgM`uSnJ)bM_xWM{&S93H4eNHRligfg4W2S4sBIgSGf?J)nwq3N$aPI+ zUkyaNIs8|8$8a$_Dy^dH?Bvn~sP#<3^5(x`Ma$FtJ82yC_Vrb{T&_plZud0|+TS^x zo5?N-POnq^MSoQN48bhbXW#baqw)D!R`}oB0fnyVDIg}m^*Zocrv-OC-H9`nPQnka zpAAcEE4Dno1&M($2YGRrs5!4XV^mJOPn#zY)3C8EjyId4cwd;fQdId;&kQI&= z9fW^nTs0LC&Y zaAC}(>Dc({bEsekX;MgWLhgx&&NwL~2nK@)i(wvRQxp~T#Zz#`#LuD8H=Ca);z}e7 zphON!p%_I_{k$b2&jJ$kTH-W}8)t}gow*@&nGfkmcd*F3rq|4C#uTB^H9`<_V&|Dh zL;sDuXZH)~M|wnDIG_P?5UJ(|a-Grmb&h(O7dZ%^ftVabZ@8U=?tn%6O2>|zVEv3Xk0u-M*o&}b}6;!49<(jl;iQ80)FyTGd^?K zR9ts@IsDJOg<$&thxkHKb3S<{8ma5lf-Xrl`YJZH#_`s!7*_6$p}Ai{u|ve-Mki*} z+SoA)+`80sVCIIIkp0cz6jJwxT#36i+KfRmY<9o=VbPJ43R_tVWpql z2f4#dHR?sSQuu5&%qg%A3FrAggT9lLe|4qb{0O?pBlEi>YtbTaM2S=bpS6}PTOG7S zs#hIjpM^v;wlC@I{R(@_m)Y_rQ`-7jXPt#}&N&Bj=FCa;I5*9-|7s)PrtS!Z<^U_J zY7ns5d4w!|-p@Lo$?1YAeKt;?^l5l(zN}Ps9n9&R5RL~B ziVpBJXKIHi!jgvTRGE1yT^&Ly`c0)W`Xpp_W=y*Kc^=qvnX4QqN9J!MUA`cc=k-V* z3exF}$fphSLH&b}u0B%m7XBTplF|dwL6U^!sB=gl+6RBMhl>U33jM-CM$`2%(;I5z zDeqOqV|bSlYS%}%#umVaPH>r;GUK$c}^B9XY=>2#jOVEuab_nV{jdtEkh zyvHFt)*evi(V~L_;#Vso`2F8^Y`AuD2^NmGV||N^ zSGPrQ!>J|MzyN+@a~uzxHIaHJBDT95a({>)rv+5I{wnk;M{@gSZ&`mRK^ar2`IHO_~i)A$dItj&v#4rNfB9t@mNnmbyEGg!;3PlKHcA3GwL)6)-@bh z{uE$dDf%`#fhnT~OL@30;DSJ|l{))2Cy~AGXOz4^w zG&wiHJ0G*Fmg4B@B|HmAPiGelpjLUbJjlSDpo=FVr~8wq+P7s@ou}KU35FP)kOj>t zp}1rkz;de7wbTSel1KD&65NM~q~`v;qhxkGX9F#n^xn0IvyP^!VWe(e& z0hJ>5m{MiMC38GjFxHOARW?+3EbMoS`1|@0UfCMquwL(zaO1LW%%14N)cFlO4?VoM zi>*%rqJ8l7Q)9=MHG{*g=rE3%qAG*dMP=9U z*2Mb=Xq^~qpN$5`QM`Y8Hk=d0)8GA;eNerA%v(AYmt6Wa$0iZK&fe znNr-&1N5Yd%JNDGUN7RoAlzwRJM-o^J1-pVa-k_6$6EFtn#`*$YQ&_9*}T0X9g_q= zRJIb12N8(&^M2TR-MS@xl1K@?rNEVfZ=xXN2){wgoZ9qN5Yj!*Gr*k=yQguVPbg-c zW3nMV|6DmJwLPO9SKw@w>A{{>m>=o6S1`xjNI_kaY$)|q^ERC!2I{2HPOoxNx&5mO z3^E#zq>{qhu_c12EE)s5QZ%D9-|JDTgOtZIE0@3uX~MeG=u+Z9E*-QjSY%x+(1 zzR!k(`AubR%Mu2re_?Q5MSstoQ;qvR*?@*{H~b-4uQ#W%jD!kbV+}mV&BTrWvk@;p zy%pa*s{|+4DF_ZE(h>GT!^*`#{8w-I@zPekoMe2N72i9r1arpNQCA`{P}fJeswbD= zud9Q2eMb~uSyGIt4B+3}7sskSas2WtlOa_A_CN{0`=G`Xh%|TUigJba6I+mry-#LH zvf|wqT+-keEU`#{?y+O@?hx0zu#s?N5-*vf+%yx=O*72|^dr_pQGCy0k-~{Y!rc|# z%LQ!6DWQlorTI}*iWF&6b$G*xs!)o%h=YkPeZ(qeR!+Sw^7T+&RK;T6Wrd9;BzT)is0i)5}Ot z0A%XLv!O0O!Mz})WB={fQt8)%N#2KLe9{KCvg;s4yuHpcy{CG-9|O^z{j2H^agC$Q zjZkcWFRR>BhhkT`e!WS?;k0_Nc-+S@ws;2K*!LKk`quE{Argt4Xt&${#cnsoVzJ*H z$aj{yEf=x7KQK5iqQ94((tsaaSc&4kP6Xpg4(F*-lA7bE!8vCNuD$IoEPs9r?m4d% z3mUA5B(z~C;0eB8+7iK<7QH>;apN7h_u_KYGcYF+IweUH8~Slaki2YNh}WWj^^_8f z^+~)f8b#8JtiZ`j#*vCG5*-7Gbq-|2>ITi^Y4A;|!LH^YI`;MBn1!W!&-DD6FS`wE zH}~;B?UK+XtJ(^4bem=Zx@o4FcElRH@Hb16w3z|={Eo;jp3+_<*?Hv0YO!%OcXA{! zR6leBfVqOXVBreLX`nwyM7N6`-C0p(M3o>{xOLgx9H4C$Cl=OSfHAJ4cjRth=3VcuOk~WXE+i#4KRS9NMa;WkI`s40i=uxSoWT1;^RPWcm|1aGs&^{HS>f z(n+XJOyjd=ta>3xN0yp93P4=eEI_tQ{1El%Bk7TDhQ$x}C{3llTiCV8%Wg$**^1E_ z+{>?1;z6kDr`oY~`1f!Xd1}W-9ZQl%$-?;3StxUj!Rq$su(I`O{+@U|?o$-yw@#;X zHoIou$QCnf$~z55pG*9Vn$&*fk0$LjPCj|jMBK8(150-&BC1})ttC`gTz1qiodan? zJ-&4Pt62H+R@`@C8D`bnb5q6(xBxD@fal(i;G0kO@*496<8(N$EVA&w)4y4uQWOD? zz8AtfyQ8@NR3C@)xWYy<$*OOQ;JC>yj6Zq|pACyN_aG6BK(tDQW=~*o*x;Q~k0+mR zK`|7JE4T96_nhra84scrTXuHvzpaw+&u}E!YmREuOh7lyw8I0I=0+Hu?U-~p9B;FS z^LrvK2*i7NI-h>w72&oQ>wrFtf1SEml9NKI=sZ>Y5d1}(=rq<%Lqs7Vr+AJ78c_n+ z-2Vnj?RD_kYtmJt2WwpZNlWU0FAR3fw7ll-dX@mNH@qHA!Ify7Gyy-p@h+Tu?zyO` zsWAtYX{L=7e6*o~$ZoT9p}4(SDYb?ALJQf)Dtn!xEn~wtpiPv z)%Za{da4~;Ali$V97cIj9got}H&N#Ss)1kJ@KMxxCgZJ^$FX&IOB2!q-3Eh%X*vh1}T#nWmcrz24kW?L))43!s(x zaP_s%W8FV@;J!;LFs0fy0yr1(?8Y#@`BX2cm-_s%cHC#cd3G;y4(Aqur?tPkCx#ms zoR48}9%FD$5%oR23GC=f;HnGiAk`G}RQu4*wjoavNhJyQ*m4M!C3xfY<(OV=h1X$0 zSkCngNduxMtnnzjML)#6GhS72%~4OvhDd*g7fZ3Gir+)4Y{Kv zuS3^su9cyq=vmH&h4(Cu;!p_PVR5DX(Xcweqx#uKDe(S87q<4l1GlvVQ+x}#syk0T zAA;3$TdEa$&&U$6$uhW5Qdy0xoV)5b5ei(r71`R8)AUjY0ic^O3Y#aou&#Vapp$ zxbGvCm{4v-bU$$JW^n$r0q0=`=X1vpoL8{#9t`Ky1N~1cgLtDUirddBMS}t794Odk z+te=eL-M54PGL?!EfSr(5Z>377OpEayXS4Jg%XNm)7n;?H_=t_DsHukXbou?=#Rl; z6MCYF*wj6`|~uc5(D)3q4-`&2IyYy=n!y66hBYx%Q&JcZ&7nn-4*Bx?L|Q8VefZm z#)3AqPgm#QQYr~(*jDTAPu6ab9w>%RK0k^C=@@(MF zszXml!I6oYW?HIc+OMU~9ePw=|K3!pdwODk>sDxk&Y!vU=vr1LP#&abDa8$y>Yi>9 zmzq@gPrl)>qIQZ9^;;JBoeyMYzQa+3sFzz`0oAk$&ors9z2QV#r+DC7E;C>m=Vn11s0Y~3~> zy!S2018jR*hY+P>%Orugy(@Pk($SA&7F8ml4u*KiZpF@y1d<5_jv~uTu}HF;BKfA7 zW&*ltrX3EbOeSIC`6xLV$z&%3vegXG&u9&9M@06c*jbT|02MiWT)}oEcugsPhoa=p z6<0+Uuf-$9_Lv$%Fy6->9K4)sax;6wvc<)i_hUZcifJy&K~}Haq*F@*uG`U7CimTGkE3Ym(kPR$$n1~W#yHquBk&!O*I@2 zI|Fko$b_}4Wrw4s~eLQj_S*@t6tHbQsvvKvXNWo*qw8aghN(Jx*hF7MLUbn9fbPZP*Ng&Mq;}EFcfk z3qx(;RQGhu-S|f{CNp>q{^6k7g9Ysm85_~H$!4*mzN8T?2MOt^?1y(dp5&_T^DECo zPq2-rzL&TvQ0lJXnk#Zbh7+YYecY9JyLB1%1>R?n9&KnJ5T9{M;u%(pu(`}_`Tamd z{WL|V=gcg_-IrFQ(Goz=uTbhCG)3ht%c_7pCUBJs*!o233(%O%%V{m>+Icke@!JasnK>Cj>1NhUbAU-kQi>1?Dh-JZf%3Ww` z3*)Q{E`zON3X;*M5ZpF&dOK-U&amDl)2+$+&$Gdrta>*j4uh%xKlV7}5{5!{i2D`-#r`?6Mt2aPQ z*o=C?9(>{xpWtA6L>?=$jNaZ}9^HTJvBywdU4>h3x*DJQZ`F}!2*OrA>4HH&G^4RK7y+lq+fN_7ht#B z&4X+d_T%esyn#&{H=(1Woll}rmP1ul6`wGfHf$8qRf^i3SW=(CMQ5UZ?gOE9pPS?mfg7p3!h#y3{ zJMVightcfc#wVs1R$Ty5_3^ZKY7t1VP8N`RQ0A<~iS-}Bn$8!orT1+NM3S|t1CLdE zExS7d$~iK-{GN4e1-^Zz4`o^q;VADN$fL+MUlD50oQI;uTKLy&!*BoR9qic^!tLi* zqSPgh2+m*M9>uMOAl$TS8}7SQS8I>vMa~J%|IEPrk1K(idj9=3lhTL+@aCsnfm-82)>O*7534~i*@^1LKT-;X6CwwB;F zt{}_RT`5J3LATpcjQ()vuuccPmqg;|{c%c3Jtzl`1eL5PvX)^$?%*oz0l6D;BE~MT zUM|>1mv@S=a|e9Xe9ir@EJZMUwpz@R&g7qPiN)B~_bz77JsQ9H&2QjvIF87D8;{31 zME~knzrxvPpN&8N`OmoL$G^d({Tx(@#Hzzy9?xoO$M%xb)IXam+EZamvYyaO#qUxcja<@uxri z3HSc^UYvNs3Fd)zkhc8IH}SQveHA{R2lM6}gSy%}wx6omzLnA3ya&sdzX|`q0N-bG z=gh$c7hZ^2vu1ICC$OiIAdBV53mv8TywI6|IpHPV5?G5%5bo}VH{FtL|1g@}-Yj)b zm@Fc@g&H_Pa~u}3l-+?$MY@ne>I|g|NkdRhNLQ<8(&n=s3C8kMeachRuH}4UFnb7j zk@5p+y_OqA&wjTNO%zP+mct3@sYrVBzz)btY{c7}PfUw8RJiKV8*M=g`+O+=Fc#Hb zf(pktUY{N@O1%yCHBuExMc)M;`{ zR^S>_j@ok;!sd0M`^8mw_K8hs>yh#GGs@txi(E~8e{lZJt{86mM=$y#NldD=;sFNd zV@vZ>)+tyo;4ci$3D8fU>cW+aynIk5Qxite`=&p!HiYjz-;WtH>al6_KFpmjA+)U- zi9i&hO)3cI4X4e*TG@*qUh_N}g%G}Q{yf;qicvamGD>DmK<}!p=zDJmk|7yMUomfd z`0+hAK~)m$XHly>D?|q6lGO#P%?+!)h~0bG-;TWHdU3)DC-U2^w|*1LmMz2Gci)Z2 zAAcOx)s^_|L-*t2i_XJ$zkff@J?9(-m|w$fx7`M-)oLDa2Vl`y4AcI?1&&p(f!{`99PFE2mhejDi>=z^bWLEs?`1W!>h z!bt)WOTl9_Tl_JlM-Q|gU>b0-!uwdt8?yfB2ad!FiAPI`RS`*L&T3!KL^1CEkr&-B9$=~R=>AicGJ z#{sFk6Le22J05!mHX_Dr(R=V(^Z()4+6&R>oew#wi@Ssp1L^OgPAijr$6{Y_BRWGZ z?7S`F<_l`@saZCt2?eroy-bP0)sh%oJb~6H-o(0<&1_k~Cyy%Hfk8Q?wKrB+bClkB2T0Fwuc8EiR`1<2m0!HS90EAI6=} z_QJw03DalH$C6XegiU!D-7B^X?tM-ZOzbyT9zPAsb^`Z5@FFgsq%rt+qwm?bq3#_I z(QbpqE}?Ax6ckTwKx|hl+ASXR_a#Ww??R{3d7j(to|H@`_n4#AG!xKGGtIOk-?3oE zE~-zmhYQ<6JJA){hY5~ZX-9z6YVDGf*VhUAaX9Q&JHoL;s6%JYvBz4F(qRQN8qVshcB-uydbRFj_K=-~-eTog5=_m;_P9s#U9T!TA>*@%wlO zgSDUhRi#C;@z#J-r%uI;88a|I~IGCUZFb>hwD z$Dr0KP!p2vz>TWh>DdR&+2e4Sy1K{ami#02XY<^r)&>)oR`jFan4Kz=V7)L;tG0JY=yPh4O_7bf$gnu*OjB@#OZk9soiMV z*T>Fvl3=k2KM4c^d(Ba5nhEHpnP%Dt##B{(N|K~I7=+vQ_%~u)$&7TGI|-x}IZ7Cy zhxY3n6F5^;Ow$I}m5$iK5sNsa`{gdK-S2;gn{T=$CsKW+*@F*0i0^*)yIkze?Q-IZ%g@Ip7oLUr3m2ojatwoRecjcr ztqjmZdbBcYJ7}tcxavndI)ISa49V(-!(9d^yHRvK1L`IC(U0zBkXOnhxH=%%aq*=e zW8bw1U-D%zw{4_i#WjDfXhY zw3O{;{|6d%ss)cQ z%9N2LHm1t3Th!Y^r9;+PgENydn`&ETAgz#^P-Ebb%3#k9o2Of^8BuX#IVsWfbRb-R zIo*B@Mm@W(1xIhzBbn(0ccU&n-JZ>e>LZ=zUI5GU^U?=FdR}aNSXK7|44=1rJ)&<^ zv#cep&fXu zWf^ZNN=BM22{i`EV#m6U7qO#nC2ESM;Fb#n1pJ*`n2q3^z?}AN<>I4Ix^Nn=&F+13 z19rDZ5lM=eS!>hJ`TK!$7lZRnZ8E<0csE)H6jT*i@Z*ciaZFt^=%$%w+L2*Kn)?cNzj*h+I?S&*n_c`$c$&MKOu%g~L2szTaA=2is;Lg0 zQqU>Q{b1|RErJ!L_IeKJBos%0PIY)z$)0vD9SjnMQK_la(ki+m|AfAd6N-+(w$3+k z>n*q7!Jq&9h})+mBt~h`zx$mIco&|3I==ShPhsBNxp0?K6gwl{7UutcQ zRjbg|)y2oq;Sl;0jLelGS&zL|Q&oc%(39XLXj#3-kp-J+-q(*#%@BYyhHM7Xlk7Qz zwgtWQnhxnH`8X|yJ++i5Tv}uUElTCkCx%Kolb3cJqMcp5QJka#rxq=w7! zPV3)66Xro#7l{ic`XMKy*c;e{_j}f&v1Bp6y2OJsCT@i&6ftOJ->tAQXtkhf$r+tf(cyf-So$`Ph; zu*;EOa^Vj4nfEsJ;CoBGSTf$q;e1fJi=y(@YmJv3k3avj6W3n%BK-b1J0JR<3x~s> zXXgslysDUH0=j9YnfAeQD3V;>^kL>uE^Z4pp)I%rQydGpgDG5r)kqhmlzW;Cpmgj*_uzyB zhJB8#%qdaTBx>vGj=23vYU)>9aRr`w>M6KfPTXwWGHq09R2JPm3q;w_0uZ+0P!t*oFpN zef3os@DK2Mc+&=(s;YSAnP)I<`gD|)mGO)ejU5YmW{PI)15t0Ibx0Fc4p?0cD7Kbk z&AO+scI_&(wDw@->aB1%oH+Nqb4OnRJj=vkdJ+?SSCv;I;dDTW#$hkOZmDS?>J`nw z*w{WvO~+(SKw9Wc$cFSR3Kj%ILM|;Dm&Kr3T3*fo@Kn3BtTg&;(K$mDE(P>L*8B9| zB;*LeX_}A)?fHLi4KJ0d69GW&x+kKek*c_ z_{_0I9MZGloNCb911fI*doOnNBv4f3!LJ^A7^k0l9GV~fEP7Wx1&iI2GZo^y+F{1_`D1(fEgw%$9g5@Rnp0YClIcHI2U*C5MD_{=fI=U?V+CN@xWj|Fz*Qh^h1FL zN^|!}rSRG+;g>u0Tcig*PkGvLCowuwbC0UQg9eC9Ln9$~(qRN}P6Bn!!7Vs$(L#LX zD_=R{;O@#RujFuESy7H({PcF5d+wRAIBFqTGb!oeU^{~Sd!Z)cY1Q^ZlP<$gYzPG% z=|n{go#PERFVo+?-*JHBz_P4IfXxcZA<;wtkb9(Pca5dJ9oIs+)LDTb@a z@u4~vDRSM^v=f(Iat^`+I}i@}xr3j|Akm}G49-b;pB)QylWcA-=0^g5q{e?B$Av|5 zVbj(Q{PpqI8Kl3*pZn%Fzll$N@{_RHY=`Z4TBtFxHbj_|J?|^_A;HF`qG<(BH>n6Z zmEojXs%gjqWMtCVkwVt2hUXcu&dFs@L%Lpju0y&Yq}Cxz1kQl^%(61=+R{;X`n>Uk zfE2(B**{ZXc1raf+1c>f_?@Q$Unl@RRK$76V0lU%U&xgDm^P}A?zR_mNN*e1X(+G{ zcWu--oa>)e__cRI&AI$qM*?yC{O`jb@5ii)^Ktq7<(M({4MbvgK0Y~|dz`3UI*+G( zH$U+v;@y7!nD%O2u|#F*`-gJ|#!cM`p4LtGLgS&O^wc^eX2xjLWy_3m)!BeI+bm?P1& z{}wZQb(m(_VKCu89LivT-ot>L#NyD@zXpBLc0Ow_iB>2{1x^NcR?!M=IC|5l4&BZp z?)z(tG@O${Ddg3TM*deI(SyElI|r1M14%94D59?&LP=S+0<^9Yt&MO$S(3N+d3o>aH0|*6IIJQFKkqdkx5blzKj`*3P5y+3(WQlO;)H z*T-jlE_>PO2?i}^Vj&Y*$Dr0|*-hFtzST7&fKfACP^M`_S zIf2qiH7Gu9KCb!JTO7`<>^o~qq!;?b@&yded(07NnhEHpnP%D{nbYaykSk7t%LTf1OW; z=-pr!Ku;5gdA%%TXq!26CVu_vhw$#ZE3jzMak%fk`!H|b zJl;ZYv`w-O4d^5c>GgPF^A;m23TYv?>~oE3JjVeY7G(GR)+5&$OwEP#{FZFU0JSz4 z(o?jb4YAn*a9Y-L$mz$fWr6=tpqzED<-MlmJ}msX!5BZ}Y+HJHTETZ5{G_UB!(LZO zrQPmBP4W12>%S47BPgoQj#-DrgQLn9Bb10?N8dIi6dP=k-bT&l^Pu{SIf%6Pq5Xwb zNX8NnB+G&M9}Ld-^((mkiEeD|khuWc-4~SM^l2_c3cz_FmgJFfii)2$)rDDgwj4Mo z{YQ$P|K!yHEL*J$y59Nii*e00)6ntko#Pt-v+${}{R_W;cs(4FfJ(3QSa(RhG$Lz$bL5%!-)3ftyJ@B!CZmft zfqFO`<~^emiNwFvX=2~E%5Jy6qAKdr&ArPpqvAw(oIV~!55#(*sPc#$3a+v)9Q^f> z;!+OLgEIRVbVQrb7jH)}IsliwD4jA&-$9cGB(9SyJD$skBiVX-Kjx9_9}z8)E$~%) zxO)4MWK?%f>Glo>b8LS49h`ICWq>8qHY*{A(busFsuJg^(Zl)iqeGvA$2O>aULuO# z&du=p8u0ngT!`+Dtz3xA05A7Q>yF`X1*KxU4m98Dn39;@s*8hYL`4@xVG(i3x3T0-kVpA|#{%#CrM0&@%r zR@tQoI;f_E{V1YNY49ZMM`Z_ghj+-?nFR|L;^miL#{Ks{fZJ~S7B0K&GA{B*k@e9M zjk62`5%im!4ksK=H=@+V!Gf$lNK+U3*0c4r+S7xMq$sQmt{;9Uh`V0w z!*NrKaQ8Vr)G&T82HNFvF{L;%<`EDzZyn7ttuQ~(jSCpitm?O?K6VOdF z&9u?w8pG)%C!LG5$#TxD`{4w3W7$7t7x|^l{;k+OumQ6iCv!nIHL0?TaF9F0`&$O3 zxmzV0V3U^`*u9|liP9GM=sBSb4qdMDeY=}a7z2XeGI#55c0#3I*2l%P}Jj4J#y^jpXlp^XW zP%o?Y^3Urarz4PMq+p%Y!8!^#9U0~DE{P1#B{*F+K1m?5W0kgXQq`a;`e#%{O+V&6 z$W?uLT2jmPcG(&Q2BJK&Uo*CpANMw!9X6|t_pA^4dk_c)c+*p`VyDj9Z zwC8kQO9OTapfz1Uj;p!Fb!?emP{CNdd!HS6`6VV=W<6Fzt z;Il3#E^#*_*0hhG6ApBrkboP5THLU#2kTqnTp;fI=aun3nCvr|kz0RN89L0}c9pJS#1NZ$tM#F}Z9W95y$+ zj#Bi8JGqmvKc|8sd{iSYCt^4hHTNQG1sBTkCpys^ZfA}_l=oUE=UwlI?nW@yf5?8K zg-4Y4zm$EUO{g1Jg)e>anj>nQw70k8o_l_TOD|fAD?j&X2-e&_){$U4Pb(i3IUoHg zo{{Zu9tGBcG8T*D#;;$=U~~XiT=5AkU;YN>%$dXYFQuAWmQAX;eJ*z4L(91un=s= zBQj#)IQqMT!~f3oVvMx(LCWR&-~OHuhjg1&V(ToU)K`jKyY?Uu=rb~DvObc~&jC?h z>n}36X0Xm2UaQT)pxVy=PO}@dLC0qLSdRrDNBxinTHy4Q!&OwxMdtF20R8pXU&qZi z-;9SIdI)Epc_!|?_g*Ysy!gh9_O=P-JiL#J?km6Gf~Q7@*+uzMDKrF+&Qy_euz#P`lC z#d${+fOAccoc}+2=K&~3RsH|(Z14N}%d2@MJ)}Y^2?R)}0qLPh6;Pxp@IytBA|hx6 z3m^z02!bF=3!wx;2_ym1doQo|?R|It_uQG?oh|R>B^1T~9GJZKcBjvsnftltobNHP zW$5u*;nZ=M4`)HNg?+!OC5pQiyAX;baPodFFA6Q%utA6G+uX6o5^9Eq zYX6^`nuD&IYX1pX7xLHZCUB>`^)Iahkzn{CiVF!~_VlgCKKEwc8zV5b8J!0doJw{h z2F_HL5nZaS)>k+M$iuE>8I~~v0ikB zc5^td`Y$W3M&-+*ksxmS(KRsHt22);5$7Ue$d_k-Fy~De%=`y`AxL#T7LDPaJAc4B zbF*;HISa7(^|!EP;|}PJ`V?@JH+uh$PM$N~*X856;%)}oW~+hCr_0Uf7LXD8zJFT> z_H1eAWOX1oAH?_q_x#fO2b?rgIXmVCU{;ghCOij95@ATBJr~7vJ`V_)(DIvH-#=uBUZaZ@2+mwT= zV%{9_oJ4fR(+fG@4Jsc!&*x$$rGFt2PSpl_#}cHMq1;iUXh#QUl-gBbD#Gl#Q?RbN z6bqhc!*AZvVP97TFVSYyN7(bH|97>4-FF1sRF{1Do)8a7zk7ZWgJc^5kwoquvD=Hv zs1elb*|Unm;_(?Mf~ix6;K|<|4@39}w7l~g{Chu2!8vU|!XW(T zi+VYnUpUo{yH71<`=Q~V=R7Oe_DyCz{;^w&@87qE!+E(w+sAh0oDNT1g>%(ZQvqEy z)&BP_8j1YVU@)$v@@i|^-{y7Asgv)tlyF!*AoQ|MhhD2^odokBfj)o7k<{D^ja7Ud zU7GU zn2&K2j$of;<_D87STyWU*DpU{pIuPoVQcsx3kNwx60Zby@^^zccL##{SX?S0_QwZq z$ArV`amuMD;i%OeBCM&vo0r9yBpfCs^ONy#vj=x;W$yvq9IS z85q=M)qP4m@VQ$gQ198r^$N1>+uy#JgE_VP?|tukXl-ph^!rY)mGjX1hsTQYO2oBV zu0oyNbd!Lt7fi@dI8SQ3A(57E%YgLcEQvIHXFxjAD(%_o?MjvQEP*)X;6Q49%9H~! z8@sb1UCayV84HX3;hZ=qAQun7>$#Agz!ws!P{Aobq>FJBT85y^UVX?4`s7Ks=cx|Mb-!e6Sdk$9L~du{_jRP z5=6*TOI<_nVTT>}E(>Anem{nfD8jQ3orEIYEVO*|5j77zDNQ;ex(Qh zT(&d{PEY+)})$h^1Y&- z0@YOeW*CV%(TgoREdGEme%8y^19vg7S+u?9GoFh+rgSC)VmlXV^M%|BPj>&{Wnlmv zWN`RJdUu8TO6S_A_jTyxVxj2Tsr#`-FZ8c~Dc4b`X|QVa)!b{&ITx>hj;*0ESZJ`ZUS zk5M_cSRVs+4+DD(Ocpy^#w2&J#e4@KX#}uq?Q=CF=Vp_#rqgQywCI7l0CMy)A zgUXeu`BG@RVqO7?ylw^?Jkear`KN7ZAm_Eq3F}D_IVqeyks(r-44aoC$c2p1_GHeu zs1T-01*(f;Dz!q)`8Nxkg@N zErC>6`|0ER@tkM83x)jmX*7m{#&SIPSrm(xwP8q=1AqP1bW}tu(fa9XxHrB8jo!=~ z19{%5EZa{QoPW48h+F0r;yW`Ph$Tei%O9tZ`cO21`Wc_*68VJSvS-yT?vcAiV# z@A38fvB(D-w7e8pG*2!p(B$8YQDa8nnrps~=9Xq$ckQ)!<>gl}w5|^I_4WVJYy9}* zPhiHh@i_eODLId4$}tX8?s?LCE~dS$1i$22jYL9-G7zT_dHOrSV2{o_g~sy`X~lV< z0T2>7ODH^i9M;)2HgW)Tz-)Ce7&J>@auCr4Hk$=6z5EV-|Im}T=BgVobL!Cug+l|v zu*d6y*+SlByA&!Pi}CQ$ucPt-k1!B4JiUa3-MB}WZC`@r7$VUK!jUi!KaXehJjKj) zuy#kw(|YteJq$(@_BHRuk`La7-E74C5miV;L-_3NWq9d%4}$FEI}4qt8#)AsjcLHx zk#!g`tcF2*3GD0~@=$rUeNw4{YRY7&iu62z116U6+v z^5Bb*IZwW2l0ys-g(TnS0Cw_MF{Ll}73HI6NWZJ3{nbEv0wuOe{>&wvl|zB_1b3stofi2k9c@ie<9f{eaS7Kc4Hc-II!X+NOu-ePj+R1ZHHOvnL z=R!Y&EmVtq$e3!pA9CWsr{Cv-oPYYsWYo1aVfSjr&xrsuS|e}BTrJ*3f^=P2(-g)X zrxfABDR!Q3o-ah5=I`|ekyT&-O&pxo4mUEa^p8*Sl$UddpAdr#R$ENoxMgVpEjMzOv8pzF*gK}pBf z7s=|RO5XDxbcA-}&Kn=*p6UxPybwEg?1Hnvi97DN1H*<5`;T4UJ$v?I*|LxE(C>Z< zi=#Z}dn&6XxIwnLm=Si6M;Idg8-Z#hcd=mUcW)Fhsk7y*<^yvZs&s}pRD*8Q-;;zmTw)!2Svi{ zSbBXy?CWx2Q*#G4?(f8VuPnv0Za-pdy+atFj~!i)BPNc*r18U1KePf4hgBYIBTu?? zY~hfPM@AS;R#@2e(XwreiT=)m6iOcnxX>M54@Y4gY|ga)!tJ;J9RGUhU--o@?!gN$ z{NvCD5slgb;l*h$fXT|9A-%mB`rfiL@>5sh1#K+N4~zE#;vX&PhmCMd+hbqnNn`+yoWQzsk2Xzg(sE8s3Kc0v(40>D0z3FTJr~G8~2y ztY~``y}>8wF+!?x9j@V=V)QwGY@wV9%A3(baH` z7=fG5f1N#RMcntDVVE3hM|Y=J62z3Fh$zQ>Pmfe*oyxP_cSZ@$m|*1!@cAA;G=H-z zhTC54!6&;zuv&B|vS^>{bVsga%lOrHqnc_epsS|Z|BPkSS%xIgHIPN3(Nz|+`S*c9 z;O38-UO;2fB-o4vD6*FEQ1kvf3#kzT9_H>3diW^+p+R~ArN*Jy<6DES@E%kKM=}`i zK$%nO(2$qjpf$2ihK~;z6xvD;8q%o)s@3T8en(~1CQKg7K)exWpM4IR)_M^)XfbE* z99(qKMPKuB!dYUY(gi+SyDrM><3Tdd=v$8pEZVh3T)_>Mg1bXVc;E=ydNe5N{Sq)EHA={#%c^} zsKn@zHK?g7Wq@sxV4b|StWEhmJ@9+`V6_*bu(%2aqm_H)^BILX@7>#in}2*iTH8DE z@FS1H?zFJw^eA@O;qD0{6pYB;@kGi)PX8S-c{*NteKyn60U{As`**uaP^F^c_Jx0XU_Gc)V_|q8ey+buwONi~X!oUq$1sb~TzOgxpy&qJ%J zG!jK17>q`k40;CW7Ped=wr-z|hko}Le72(r6YHxGi7{BUm@&D*imAgSaj9T5hE9(U zJKB4&c26r-ZQO~4OIGr_;gwZom^yhh<{UW@lP8Qo1p{~*AfN#kIv*7F9tj6vu{vQg zI|jUGcxgU%uep16@_Opdl1A39^e8MW!q0BM9oJuf0|WFI*)_1?_<3`A&eJ= zS^+`1HnVoRGISn-qJ0S|#s)G~-lY#@fKLtxDYV@)LAjrR_pDI&OwYKo(E30D?-=ko zuGU2VS`eMLuX1}We^0st-G?Z!Dk7Q)qr_5!xkE3(s`ka$pc*sWk$p!vMQc^FUiq_~uwbR12x8 zrdoe}*{>sfP&L&K1eyP9X0cc}5YSHs#5{kTI`vToCfv(rFz`+(g{doz=A+LEBC^eD zwes^tIn#A@b?ENy=D(ZRG9{&@aJgLk?*T{TbUG&k`c>g@xbfJA3o*C;64qG`p{aK} zd%=1#a#QoAc@s4E`a0ncWzKsrMzz;BxtF3NxC;{tPeNniM2s6cBjtr$x9>xAd)xT7 z%tjlEY-K5hYjIHP*TBd2uaE6#av!O%l0WXomcYB1G-VvTUO##_3$WU|8fd=ttaOhizBCv#ZgC&!?5}a9A#-3zc{yros?ku_fb!xB2E3IhbQUuRE`r5m;T~~n`)fCRj^F+1 zH+c8`w|Nvm`H*rhg4EsPV#jAid07Q-m(8vFF>3f|R9Dw>4>*Y!>SfP0iL#kYCbr)p zczquD{9bmwJ!oxfMSDjZ{Oo=#EM%Z)(ZkBl$&m6Ql(BPEF{BtZ)k9FqelIC5;4p5r znAm>l**zTM=eeV^7bSe&QXa(+=RBz6b;rrmFLlJz-p-^z813619(@jv{q6}oblJ(M zV%H;@m84073R(u;I#NSt*EJH4qs!yR=H@PZvTYwe*}4}^eO_4XHXMEA1e|jG3{0Cc z7R7}Qgd-aZVs$JzK z)xHi>J?N^b_6;|#vaZviltDTT1`H&!6^q5(4A8IBYBjHa()6-sRPi)aJ4d6?TF%4V zv)8lEPe>0|**)NB0267`AWU3A?`zwf5my)$fkMABX;g-XC17+VcVA7IBUunoHBVNMpP8DPLhFx9~9zMQSyv4@a|*)xVx(l zpYLwv(}qpE`1HiHZ({o4qcQ))X_z^66jvP&vH2;4zN>AI#=Rsa(10V2(oQk%@kg5WuRM$>dG378ZjERHFXTS$KdBb zx(6rEn~!H+_$%7lTXEik6EWeiI&5Zux_aGKY}&jFVj_a}&fU=Hyu4%^9TV+SJRymz zZP~U5k#I~g@TKQo=LzG6V&sUSn9jhqx~dFLhn4Mzk&ByYmc*m|t!>FLFk=@T(`&I}wjb{NV^oqRBX2Gt_rh_p;rI}NeVzklTd>}_hpV@p26 zFV36Gu0dAYq3y=S6u8qhF11@R_b@w-AJ+&kYcpF~yYSAs9e8WmYAk;9V^p#8eBN1e zaoWkV`0CtK#7p_q$lT<^V)@UzB>JUQq}&whTnx%>g}86JEQP@U*s-+P(f zK^4w=H1|ajjQR&5#@f$&h3BOU7*#YA1*ReRVE?lS#r#x79qT)n;fZA@Vo%p;IC=7W z>|NP|aMUoE9b|AGN5Qyy3_Wu?UR$)A!TEB`8)d<*a~(X&M+xU<*>isV3tfn?=hP$T zm11&@F)y48GR(ibEx^^~Nl0!;sm0HpjaM~y2LB#c{pPBvrUJTZs{Q}c85pdQV4TTh zS{MxaZ+UaqSXIoFc~Zyo)5)~o)BYj>dR4XZa_z9 z7pl#p(b~HQMYbUvl8V{Sy;`HxDPijmMf~XTw6l&!c`8?Zz)=KxuxWHD@igj$M?^om zB72e0i6{&=qS8DD`vV(LSY^Qt*WLJ~U5ECjUUW9Qcs=OKx;RQIoD!e~BD~Hwc@fDd z6x`DnKwqa9jzTLotlbQks~3|ejNzb{3@VOA1Mu|jMpx%Pc-`HymrujM%f`dDV{$n5 z>b1LZ^Bs@F7K`EOYtF*tx=Ie=qpcHyH>*71qN%NCq@G>(})o|gur+TJ~#`?)X~36$}3EUTQ~|J%QyqrDS%Uv&nK z8C8o=G{$ooX<)vpKZY_oA%$-*?H6RTG<5a)bP5y zd-1E^Jb{NFyanI=>^0`U1m>|FV{ciV0^b0AK(%_Ly&+TFs=V~ppDQ^W#!!^_GF zx$qjL0T9Sj7(XpbA>#CVe-@5JF#E{Ev1a{#JoES0aM|o}=-splH@>tO38N9?$Bo9E z*+*d75#vx-Tgh|9xzL;p`pFP}g7_a?a}h2+Zv|`50XVGbeb0YWv+Ga$CJ(q#B*EeJ z6`0ysh3_3d4IgaTi|3ZD#lqh`i^rdS4VRpE63#nkF3QV_xX0h?>E`XjY;|&#{{Eg5 zl7L(ouI?QOvE!LDYa;&s)bl)L=7QOiv9+xiYu2ulfn#90qlgP?`!vvyZ&r#jC}e=% zt+;XNjtI!nF=m|&TGlOzBPMyuWoXWZ^kf)uCZr4Ln(2~qoXq56Iy61$dFSEeGUSR< zsJkfVpF;-roIG|>8XVB3fM14i#qY{%Ckj~^;HeOH#g`d5>HUSf_m@qc|8Eib)Vb3_ zcIm7PmDIob_i}>2i-tJsc$8W^5j*7bPS-9jMq$*LQ0q91uY0F!6?#L>_@wPGX!jqD zmcA2l*0j$stYSL@Y`vtR(9g4l;M_T8D2ARo6}xuy;fibD#`p>ye)+9pULq}`D3L}2 zZ##Kddlx$%0l#B#K5B@b!FlfUgvNqRdJX=)&WAhS=w;9S1Zpa*ZQ*F*qRyV+duppt zO*IwJRZ~s1eqcTv4*!%v`i$MZ>t`)%dJ*#)F6Ul!f7p}vWu9#|lY@bC;EU`9>TQ$J z9omn5fpu``%h2O%L#e$A4s#*O9Mx#;+s&2S2}r}yAi6zmTsV%(u??8IMrD*pO`A<5 zdPZR6jm??r>*2vq1tA(Zf=Ij|W&yzyEzHa31K=anG5x5LZ5vDBIBV6aXe^P+MG zhx0fAs4hLAL1DnHdwbyN4&$B0A28U}qq?Soi@jMSu4fRxA8pNB5e#@`xEJ6oDCeQ> zBoIb|Y#*=Oikp7+7={&C@!(abvd*9l-f+0z{Y-)ku^~^VfOIa6dL5=Q_?t1T8kZk6 z5$|l=gO^ur!N$$I`809-a9nc1Jj|LthNo+|dRt+vv~fHzn@xCk>2kdIuf;fZ%2-Tq ztb~g}VhSHvhtJ7?xehPI*41pif}jn1+;K7zY#CyH3z9g@WfB+>&#R zvj&}L8wA{U{p?zH{dD;2U!KQ3=gq~{bC1A#8+T#Jy6t%2la+|;jVP-q$Jo)07&EGo z!#ah^Q`kRUI|?6v^{r)yhC)0)JvI0>=z%Sf4{(rKjC!0gWfV@DG#u}5*@r*B^C^D+ z$UpGUSC-8!j)dYgL>4mHJqu2U=# z;lEERo5$B#V;_ap9dE%E?!+$lQgmnF7 zaGAQ`3HId8my?}Ryn{zMm?ky_BmP75qQ_y=7NWs^1a^2L16w3hKY$kj!S z==3!4&P_5Gl+@!1(hF^6eB1p&x(F#>lsp$vg!z1CtrK;o$*44r;p=J*Y)46r16N&n z^_Mm3!3E$5$TeC`s?*-KzZdRaKM#{8IH%HE(O4P~d6~0Vf&pp|s;h>;>0l6LbntUb zwX65-T*1K9!$bDTW8y3<=Uy1Uua|@0dmnDVt#>?u=|jsHG|uCB=KgT>kUHH2qM?KY zfTeZ|E}cCdr%fJ#H#h9U-#=cDwd;4VX(vvcHw~9xG><{3jd%BH-vWUke*NH+u$v6H zV$Ng^lcK`sNB_h{NdcQe{6lR1-~RsZcQk6cb<7Y>0J8R`YGb%gz=4-J+c-rf4&vJU$hKA{`tdL`r&Haa^nSPsIP+G zALJr(G@wIy=@flIz@98OmVK-gCLaoidD;x!?`2LK`ntEEt-bAlfKJNzF(tOxF3_aQ2~OV`O}DCTX11mtQQV^CzS#JbM+u%quYxFdV9Wbf1H z@STJOu48c0q~+|n7Rbm;PekLe)|I3FhIixBr0w@o7bar)c@FUNEIOt|TwE^u-o8b5Kq~M%9pk!Wm7Z255x@;r< z@8^HUu?)`cIrlgox*dte56vT%wMdk_&5;E6)Lt-SEan~7fLB&+!{3&z!<+A{z{=0J z;D&3?$JJMje#cU=cMFfR1PBPujJ=b9obNNGI@=JZ)IIw9E+4*K00p{QIB zA?QP*y9GbJ<#OoQwfgx3kMXem%jQf*iQS5$$J#JwY&|cb<_d(-=L@1Q5JG^>L!r^6 z1yEl`(IM7cI6uU&R~iTjgrhtp^`cqhF>`ng9$dT}Z@;?&Yu9hbT|c`D^Nu}&?R!L0 zN{n>h|*enS6eb~2eA4ZNCalmnefoh@C zHVTT0A)3wUa(!$eulzfC1!Z|XC^N>>e&{3wr;tTfa2I8-dlJ4OmqFth>!~nyLDVQ9 zJsI+?D5VC-%I+F@ow7Gx8Iq2q#()gtf+9y;$jt*!rUqnWoTv6#Ssy*Sp8A0xU7kbe z57Gy^U$Ubc5(f|IgWa5Jsq1>!$c{+yJ8nC+k zE%>7@tnPdf&F@b{v+GD)bmVF{t=&?{JA3Y!%baL9ZaiLnc?cv-0H5JfRQ%$u2jDd)mbqoZH#S*ZvPO{JM|3IhJU*wK-{p0x!_vkN~cn_SW5~+SG zFUORxiy)OVA}=~YvM=O5L=TMA*&St{jWw}1u*vg2>|MnuvX%4oRu(p(!`+n86Xf1i zwrx_9kH#Vl*7r{4V?Xo4 zlN|icIsF0#bUJL=u?bh*a4BxQ=KpZPSr@_M^>B6Xrq+E}^wukwG5s(uv=$6`d2Mr# zyF(U&lK_!&z9|pgYB6KQ=R0uA&mYI!QMI`H+_~Iy5$Vq(JLrC3?u-=j><`D_Fd6Zk zIg@Z41NEmqT89^xug4wt{0Xbp?!;}kUX4Hh^(71`aNyjjqj|o0>IzdiGOae{-loWA z8w1tqLOUXQ6KaRn^KxDWql2r&Q(ip}M~_G45^RzH9DSBg!#}0iEhJUEHN4%@Pad?b zGo|wOr5flOiG~!TP08H#DYTh6*e2V8ydlKc35am%_e1HN_x}x@SBjjdEpcMuw@<_~^_5uo$_M!F zjrZe6Kez~&UwkSb6pG90Oq3!Kb$21et^t*1({oUl&c$0xmSgmgB2*VUd7CPhb`c{0SE%B&^t<#auB1*E5dIeG1q<=E2s=1EA0TuM#I zhIAxrq01t1sq$^gWs-0%d)Jj=@?vI)czUQn0p8hHtzVC~64(a==}I=vr});N*j#?P z&Y1gPAzg*@gM8bG40=rr(ks7EsC(`pU7QOTHaI7u*i?lTtuLe9zZ;#wwRqywZU)&W z;nJhlqq=Ah1hXB*qpR`TKYWg#KD-HGcH2F8b}42zS~A4m$aCK9i{p#;lqO z=&Grv+Lvn#%qps&22`S%A z$mo!fz#A{+q%rdk91M^{(E#W@d`Mx{Ttvr!356$MUEiBn)%_ZZEM+*XW+nrJQa<(g zI=I&}1In0rf_)4i!YHs7bB|!sBbV%YQaL1oC}kbvXd;AW{}x<#&6TLFt^HEYX-~Tc zkx-Pupez8#_LV}`|M2KS2H{>DJ?l8s4{gN9D?fq*LHzCU`%zF-f>Ys&9+&{&M~D_bnV{5!=Gt44D9FFnsR*p@dmhDZWI>SA%&akWic}$4FF;i zP|`r1(dCuHg{6?u%pJGb%VBj^BH-Fe@2i_Uj8eOo5E|EOSRWYUwQDtjf1*#1_AZtnWwP#%jZnO=&DlO_T1a})xxLI z)9b|#uaowdAU!!~5RHc5c89qq-C0nImewvTU%nbwP8-gn1R|8HYBs>E*J8(xor5}- zfoh@Cxv|;o5ZSsD@^#?h`f|>?4kiv8Q09!M>Y0maAvi_oduGk_WS+Nt%4EQowcjO> zPd*_8F{4&F4RT0hY_edSEDV=~b1|c0gaV{96yt>~#df4YSX6FTP>AmJC;Zl*Qha8J zdM5bi!9r2US8)yfdD0ImFJ1MbA2du;sJk!hh9}hXg-WkwUkLK1JB-DcQ+pwnxBMH; z-mM74oAKJ#CF~|!fCWc8F?OmOKU}yDPrui}mpX2Q5%b4c5QwJXoPxlpB--O2ySZ2W z+{5kcnLz?|c?RPcoCn#mzj(6`FRk&xY1Y7Q(%jY76a4u%S*cxF;?!s~!NQ(d1|z+L zgK+h#fUertV`}1&YO4JY*@4vDW3gBh1N26>$8$knU*AI>k7t!ur~AlkHaC=(ls?cF z-5Pm$>jSKd8i!tEO4VPb|8;^MJ>e!S-v0iW<>h2(yNZ#|6;kX@xh?CyB!enpEv#3USvdJaQx- z*3I_6u)=~XF2C|iIp3rZ-q+>j%GD`A(d)5e*H(CaQpkHtYZHm`;e$`!$LWWU#xKvD zjfMB#gx@^!8}#{mvE+j#e7Ru_wS50c*h>lBxWy2a#+SrJq+8Q{@%U~@kgnEH&2`0N9gHk#SPy*6F2|hN<6UWV?6WGT3Fbz z2$}KC?3~8=L`CS6EkART2S^Sy4U+T;e0|{vrVp>iV^^P!iS&x+FB*sl`n&P=yB`4oKaLz##|M4r&`HqFX*IKUJh(Jcok80_F0$)mwc5zdE=3za z7QahS8`eQD7*eYDslgeA^0+7q8uD;CS*&Yx0^7cUR6BSpu~$K_HGS#zv}1`VAMl=4b1vrAT?V_M81Bd(Z0_2Oe=VPd^MA2F z1?OaSHC1wX$@DrXU1n2jn3qsnz~DUAADrt1c*6MtJhXf)laV zzZQ#jKFp3Ffri2fXtnP_x3@Kwi=KJh8t#R6`+E>zkYP4j6*=pI0&WHF{crVe!`TZ? z#>kN)zm)4irP9cIuFO3ruwJ!p6-ulI9va@<+Jf@({b+CAg^7pHz?hmLc<}t=@W2~? zLwMh(IB#49?%%luo3`%8*(6Bj>y^Vzm4GgCDE-9)FTmf~i^r}%7dEzTN!2?E=2BTY zlikkY+frBvlfwa>(I~;bpnwWFY@F1#V+^We;SeIhAi|_g;13|mevgI29JW(x&+a zUb}!&TQWkLDe8kg2k`IL-^Gz5t5NE-@n`@#WP@IZ5}O&Vg9LQ)p!aub>AYIaR_L5g z#JW28u2KsQCm5`AeE>;sL6l)u5Oc%Wm7Z#@^sYD;N${1T-IK}LiZFGgK|dYpo>q2G z3&M#R9&=?@gi`ZgP>R_pJn8&uWR+SI<m)spB)k&|gfqH3d=Nm8 zJVTyH7ve@gF23jz{@v20OEGNNurDMON9EJ9U-;oj7@x2E9OJ7?*m=>SsjUS@^9I;8 zanvzj@`S>uDlWipzI_S;42sGM9N4nI4ZnHt2~;s~ojZFN4=+wgBOTDP4ujQV#9yC( z7auHLg(t2)9aV+)ln|RJdugpjMJTGPgO!1~mb}s;WDhjtvRB9eI9gb%*K>$8*=?yW zX_994(+mVJ(<{jI31EaNKY`FpgPe;U~S{`Ag;s2Ms2ciwpi|IA`5 zhuKoXYsULLZIbf3w~fJ~1vY0jpT}e=;#1Jq1yA2T#Ha#+LL9EY4O{I+9MS{+zN}i{ z0$0BG`P{ha+OyHu=faPlUCdR_r;n&*kRImV+TyyQ9MU6!AiSL&aJRMbbIQw(X|=hd z5P~vqIeo!|Y)DTxx_;Xy4dB=<2HbzqiEQ8A!XN+iJVuTjfdyyHMNdyBAIP9we?7ZK zYc}k}?(O?={e^Q=US|41;(EmnE4FlWAVekNOs0W56;unIQcDtI&Z(tiHXF?_+8u~@ zv`fz(4(M_AoG{7*21y~dv`|~h^DJhTLrWp10({dSC~BXJGLQ>NVL4Hu-ku!bP7k8XJTdRB2-kC zqr9pPYZ4BW>AGMNLx{2afl^K=AS{;152Xa>z5Y0U{7Mhr-w{N)L+6Rb#c%ictr zr;f1IYUR*EBf*jqxQ34cOQKkU67pd*8i%rVqKLuV(Arw|lCI>Qv$x-V8)uwx2EO~< z@8a{%KgVaEeu~v=*I>hj4cNVFH@eW814;k<=SzI#`Qe8j##?W{iI$dq=nC!2pa_G; z1QYA*k%u{~@$x|dUb{Lg1Wxdh%U=hb#>n8_3X9GOv&MndElV(>d@>&-=?-1-zk@I9&1^ zcQf$WwqpyveRv(>u_)R)nh^~7QCDo|UT+E$kMa?Eiu5({a$FZ5H3{!;*@GY6dLMrH z{c~{c8MC>3RgBGRv)b_bo6E8A4=>=BQ)V*wtA;lyd1!ekI$KdmV*^U+8#r(itS53* z!t=qdm=vW>hYrj0O5o1Gy1<#*PCODtBp70#DMP#8&mcF<7bs%ecMK`#+fBrjg8@

99La&PCtMy$^erNk*5w-agh^u-E}8UJ@phEal{nq zD+bYK$56gZBI-hb!KB~a%HX|>Et3`{GuujGG#9|@YT{n^1Bzp@?OUt`{GRf9d-(u` z^1h<>9E(M8`>hwFv%3d3{q=P`_rnW#{qPWj^qzhDP~~(&XEdOQ-E+>03V6G^;cjh3 z(CwB&>a*_E1A%v*=AHFN8e*xvnGJgU@`4k%klj!2{5>X&AC0kNhQaUk@H})uh~e3P zzK6-xB^X;>hKNGwj|NqW9d@`{+j;ee0|C000G-|M`E)4^tW6bYb?p3G5s^dwspUmD z6zHJL+*U}hLFsW8ld9`{mSoLyuQ!P=zC zTUMTV)(Aq*fI>t1^|cPIaKq~ z2W?!{J?cX&9z7&g_XAlx5#{Rcd=OLb#PrJ3;fwac9cf3gW(0O_*@W#>?ZjG&sn%Vv zoAo@8oFJTx##kxDT~xq1199B?at}V*8APR1*A|J3=dsT|{BMTxWM9Z=wy^hhi074u zL!p5qw^UQ@KiziK#;MwW`r-M%Xcmiwdz&tz=5x7R*tTsOpH{6}h3(t7 zWB>kr=ty*@>S{wV!obohUOpc_)&`#3(7{LS zPpC5C+eb}AFp>+RCW8*EcDLaNe_M<`UjV0_JPX%deHv;REWPyFXSnUIKVi=3TKxW! zQ#f#uhm&AfZ!u%Y$Po;Vhopqr4hV9h&`-y^pU+c~(_D>BZc~CZ5Rj0(n$N9g10VP9+;l{NP`23mqmeNPxv;5 zFxdUzgAY?F9|XjoeYOJa%^NXi_GH!>i*TVh3USY8;b0#;y?c3RJOs^v&!c4MywBS$ zL#-wYK6UVT0yyuAJ5kI!+<*T5*>cTx5fx*`z)>-T4_*lT9BTRRfxceuQTO-u$=~&} z4+0Kwy$<{wHR!Z(2ST{|Pya$u<1jq;mtXO7NhSMUdE*1z^uxRH(4{A0WL2qL5kOie zmD+pqy;XSRgY{VT=}I&Y(dB$$r!w%YxMDo58)^%zl|byE3UkghGH(rUa7E3`0_ zO8e<>?&R`{6dZXTgU-lPX)@+ZUIRg)DUkiGBJu)I21f{4`;PQ+X0-(&%hR2G?X%My za$+y!CX+F6qNswP+ShCJ?s5e?(eB>+mDHlAYf9xzN!fjL(M%qhwygQZJkMwytcC=N zEE-ffbr@A{!1!u5RT)uTpyT3+^k{Yk6CBRp-yT4PQ@4$Mer}5^w*J4dUrCW?^enR2 zY+QMr-ogBt&j6hU3L|0mnO?`+e=Hj1&>m8RxZCUw^!0SXVzu$`cltaO48Yyjt3thM zUyG?8bk$V*FEg{*JX5RD{4^YioJ5dMMqct`jyVSBo_j9l&7I4^R*FTyZ~V44W&_afoNfO3Tm`VL(Se z$>NC^+@Y?lj*W(gVOq3K9#U`D6{nz`Lh6%Ho`B?~i^RilmRhlH-Fhth=wp69X}ept zY&m2=_qlV0lqeK>0&({l-u*E$Jh{R3M9dXovZl2Y{U-wzs3q1h>i{nR7I;17#G!OG7z;ONNg?O@v*;!a_S9y!U#Xd+E>c^wL$h`h@B51;XgqwhcOi9%i=RVw?t%VtgAE zSzs+L=K1L!2I}Nlr>KO?Jayp!BQ6K(tV%z5$uyf8zrOfn-1_$=c=O%mxNyPASo+~- zxb5c;;yXuA;Q9zb8vV%1doE(viaMus&mIWS3CbzVJ=>9LGMcgUqj&Ji8!zGbx${uK zI>bB&o$9kwh`UywE_()r?^sNthL{R7&&d4-4(v(ini!f)MRq7knD z`Hb5^%nCM7)@T#b5&430K4l2JA}Bo-nJ#7lcxLoK-uo&QdY|9Z4&*7OmQh4qS;h@1 z)%tz~99jfc9MN_Yy_R~70`kts)3oy`Zj%@I3l9b?hq-^1>?a7r{&WbarXd-VE3 z3GDBUVfh~EIb3YjVn)3QXHK$VY=r@Ly}n11s{ZPp+%PLzkb5YoB}_ zpRC-#r*T6oapu%9s4FdyN|>?zE*e^kvf(3m4qZk_c^0Hbk*MP^~UV*FLBN+MC zDQDrue?Ny0mo396n~j%|iL&{kY*w?zCZ50g%H=GV53aLA;FIC@{P;AvA@C~Ge6=PhLfsS5uON~^Y9$ozZq++6yZT)CqAqr? zdl6t$Bo;&rVFcq|whwML^}ri;v+sgDoc;BUek|VPM@^9)J-)bDQ>c5Y!yCUL7!f@t z{eSSZv1cxMz$GZxARG+9WHxgTxf;5znhNNusixYOVtT#4%3`rR%fS3-WjOo&_ur3O zZn@=u`q&BNX>vFm1I|aDQx5Fgw_`m6b_%86v}qG|?b-#e*UR(xym8jKi1eTZ+o0DP zIINeNhr%ipqo}YL$DA;e0aZG+z`q()kr%FhVMp0Md#E(v!jlaCV8m>SPH_xBJ^MXkfj(YIrBZs57 zu8w;J6Y==qcUmb!EgXQY#RGx;}E5Tz0=dgmcfBgAbRl!*d_5#ck&thiF{Kz@K%9*|FQp%B1U- z^xX2u1SvJcXtBUl-+;oZD)@SO;A!vRdFqr-AZYW2zY7O8nRckgR#mp>zO97a{reg*-Qn zsQg?B=}BdGA;)8#gVjn-My97vS!X@-p6XxhE#q4u@286PAZA``J`|xLV`Uv2^PNQeL*=%9Y7b8q2Grv!Q0Y8#`CKbw6QvqEy z)l~b^%w#kc8;r)+8DvhRJa96b&4&B#yARh~bB%g}WTSl9+S*z^9XEGws?$$-@tZeq z=HhlMSFXgyjT_P2+{{(odxEWeqR{hdOEm-hHr`F8(0wR=9;}4|VFp==jQn%*X1DKa zL0fwZPM&obbnH7{ILbZWjpapBNi-qdDeEuXjzE0cuxcLi?hQp4=<7K`MB_1(4m^a~KwxhklvWRTjIk$-#E^uzG_=bQ25GcV)8`)*aN ziB!@f>{!Flnv6V;T&pv|)4PX*a4;Caykif??<$61-P(0H{fsm4?|=OZB_$;|<&^no zXl&q+``v4PigOms$IaJWipokOT-{q3pqFy5xmIV)3+j%dI@k)Td2TwDWs8J8h(&|! znnzRKZ&3zzi>&|#gPHA*hs_t1bEAR!x@xR^^Ftn5o@6*b16&6K^bFP$GY2vVlC*jq z3Mwjiz51Zb%|YGQ+rx$Wq#SllUij{p-Gt0v$di85VGU^M^}uX2D0C5oY(D2Jr95<< zM$(!X6rdY&A&;JI1&#s?ZybfyOBcgXQp&cYLr4xI*DAw%GeX4Eke(1V+@r1Zj`s`c za;|kctX&p}6E(7jOe&j;!Gn~I=@wEqVz8S3r}yV*0p?<*~B$E8&%w4Ek) zoqdr$Z0K5=(F6?a-DT41U^7XBXF84Kkq$;hjUXg`#X$YFSVHWJB?KNVLn(6EdOBYk zlxs9FnoOy%bw@!VANZEagvM1US4{GM{>{k z%$YOQlXM^u(Cg9A(7>np^XK!=dKi>ZZaKmFvSrJ#X3ZMx+rJO{o1}@BAx|qAso5Wj z1%0`qcRJRg*|m2UA`Bc!Xe%Lu4ux{3L)&FlSq7^)u%)n=T!+n6pJfA$QTe1vb+t+W##blRC2C35cOrzpO8a?iuDS7K*LsA0+YkWORn*fbnI9T zudBe3qwDdHf4+e$E;$pUN7N$}j--J{aefG@6Y&VIXHMfC^>vk)b>tCP`^l%U^flw? zV~@o{4?ToAvuAUa{%0QfJ+41`8XkP%HN5%GGW_t`OK{fdb79o?qOZ%%K)sBsyypXT z3WZOWW}}0kfdcZV$73PHB0=7%PQrTJ6lEPqGy65lJ^hdU^<_Nz=a(>l(lB18j7kXfI~V1l&4PR^DIS$Ts7a@A&0*QgR-!frk`-+fe9iUR#VrvS4-2Ls!eo!=pGkgFh0!c8NFkHUvbUQ4yAfZPrxKo|1>=0K1x zWc$-|J?RQ>wzNuubglHgAf#YgkgG#LOon+YAX~AeROy4PkaF5aa!twkL?JWld@zun zhI$23W&E9m<*5X6px;pU{ve%ia^R?*Lm)sE@DIhH@KN0%ArDDIpE)+1nHHgJs?hz9KA{ zYOXsgD$%ihdn%ll_Vc2nC*k8i{R@vi{tx`&w?AbkIFf&0ff;$XqY)p%0T=)7tkdUV z(V};8$2rGhUwaq6|Lp~sGG`tttIM&o$H(B(fERDM5Wo8O2e|pxU*d_UUcyzEosE-E zn9c6FIK1I*wqFG>T8d#X*!u}F6}b1Fro00--ewqd5wv#%vG9*C;GI|B!hPq@#gyUI zTm&uIK1j`;MBua*YkH7nAg?#6z>AWiy3uNdsj(3S6#m}T1$RdWALt;_Ij&+aDD@By zOapZ8sf1GA!IrFMWz;i3XOr9Q8Qj1by9oqMt~Zvp*;vOr?P&L*bL5?unFaTP9E|c{p=F z)4Gg;f|Zpu%d;R|dGuNN=$U_Koe?3oR{CJQ=DC9dhaje&h zeJz4!TtrTz$E@me7>sxG^swGgJ9@({>}N9~q{WetE-wu-5-^wzny4p~m>)^#p3@q& zZW=uPs$p3La@ABoS4}n5zVerhT(A7MUa#*5q*hKI-Sf{sAGh6h8!wxt+Lvbu1|UYQ z1yd$X!_29(cu4xwFFb}tZ@q#Q%U2#S?>+xI6H@+pMx`QwL2d+FcWgzu)5az{7m~{^ zd&CvZ%_dk13t(lFy}T4%yLKbc*Vk`}Eow8R4Gpqddn~h4tN<&$P9uqPG4uL@*w@yF zZF^g=tEmm`UA@@P;MM03rb_Ttl@(&d&}!6I55a_y^{6Q?;hzU1VSe87GTR}fKr81Z zuP~K_bG5W^FEDM7yy!;`ufdE_^?3fDZ{Xq!zlFmmjp2f8RK|@$%k>7U;#_MPq&J`^ zyq@Q)&zL#^)pa%a=kg7B@bXh}%=qE>Wb-cUU%i9Zjjt^&Kt+KA3okhZr%f4y$KP3r zAKY>ee)~`@&OPIJoN~fZ7&&|>#AqKPS`!4;UbK2EGz8>Y0~e7?M>&XcIXiY8_!L6O z--Eq-cj2`+KE$8?@*={$J-GM6<1u?o16M@nfG#L04jE#2$^nf0l%Cu!fmoc^Q!lKo z;pdU^(>+7}T|-JtH`$TI!_rFc_nB54zVV6+<~dMT1e*6*Vwe ztZ>o56y=c0Ito(t1u+XR^Fewt>^!aPF8Rf!TybQ;aIQB#?aNj|I?^T5l7FWi=o!lH z8D9HTet0Hyr`D7bwNt9g3t0kfiv5z|I6J_-KSK>Rr9A`5s!2nIsjn-^x_NkCXuG6Y9Vp2`88YRVt1MI$i= zL-CAWC#~1(^48YF*Vw3ygd+XQ~0vU;Xv=+eY^x2g$gRYp)`-Z ztP};+RSa%oIbL&~pQqRJ&s#csv6_MD+sjvD+3HQ$)6#)ZGy$v4&Z7#-%ga$vP{B2_ zqYN51b%wC`^Y`I)^}!${aQNtYTzuMG%%3wAR*MOKs$DM(vR?XuMCX!VlaQhT=y*D} z??~MrdaVvu&z*|pfBXmT|Lqfa?y29%4one|ke4g0E6rfE!(y+1&(*|^$&S-bnuEt4 zc^cbWyHQ!>z)4fbBPp;SWsvA+piD4$>|qU1!DeCZl#U&gdGJEc`y>m)kuNkpcaWnWNJrWWpIh?n3z`b&2W6ChE~&cvQ=)EPc^`#G zYsFHxzeVRjgZ*$0?v>_|7*~88Jdswk`L|-9XFG%Tc6b7jVVY3SqpUx3u}-Tav7Ghl z)l*G170^{v?Hd8+44@n~o9#@kR{QNxC^Vf-mY|$J`rLERVa}X6>WTUa&F2ZqVcl|v zmVt}WV1myb;2l|~(|OSAjD+J1JQ5it)+j2Xy|ax??KpnMXc%-FM8jDMw}K=pX5wM> zvZ^izaxF@SHNsL{gzjCt;U^)kgjBzsLc&WM8zneQq#=qraVC=ip>Px*uGx$i-dcv& z-d~B=2N0jo4Nm%dI*B9Z|hhD(Kr~ZZ8 zzjp!VA3c@lg2&?VEOry~_3#E}J*E0KTc4w12;2;4BMc@x)0YnWwQ%q1VR%-IY>ER~m`9h5X%IC~*FXN8$I6JcAFn?7>AxP2%O~gp5wFbU%_u zn?nBQjUR@i$JAqMOBdeVuoLfX*oAvO`5c0tbx14AF>+WP>g%ddTT_7ohn+_z(BMg* z%Y*$*ZP>B930t=AMn`)m>_#1Cvvr;It(llQyoRS2NTO?503=6GX!VAEFnFLu@I2?1 za-I`X8#7w0FxA<3_igz`u2Hakj+OX2dkIE}jH5O=-Cn1bePm#z{rl|pJ6wa$}Z{{PrJ4*)sJ zy8nM?doQ=wTl%FpNC*&+U?32R0xI|-7DRXzE27vzK`c}O3xe+-X(C++B1kWRP(m6> zNV~MVq4b)Nufbj#(oq7m3nFu>0QeywU40&D1n`97 zzbMbILS1(cYGXr{$ zTuwxNQ(R>MzxHJ9++V>u#;T z9?26LuKiJmFCk#|xz}5F|488QR_DZ;#{WW3N)7%Gfpla9Z8pu|MJ&AiF}it60XAyzNCs{#+5w5-m=OnxPe zI>(uRYR)U4@D)vl;L9I%B33W_^{yZ(m+xli9kYhYXDzfiU5Imwr0%8+O+A{cLg`X0 zX+f@wV6CwvaWG^_I}+xvud=>jaRCM!7~15(>o2(I?WDY?;p|{;{v|`b1^QX zpHG#Q*)dJf(KkFovIAF^v?tA-DSh#}RwR3+C4 zWd4!pH}~$_L}3MV#$%NCd!iDbr_o#2Y>Tj>WNGGT;4$HC*XmP!tchUsFQS;(Pj>Hh zCY|N2V!JrNELehGUS59);Z?2B?zH$Keoql)Ee3?^Zlx0gSt;9GA#b09I?2v*2- zr}V#RB&sWEL{~Xw@?xkbwn(xM>}i32FO?h&p~(HnHLv@@0Gl#m$6XB30)2_Y-wM1d z1bhQ*`wXz(Nf{F#CIcuZ0lXV%@aZfF&@2M$?o4uL8HydE(c^EX$RYo}g@&p^K>p{& z*FJjrF`Kd4613f3IE`XC|M&OqCjH%NTs^XC$an zL~KjI@5Cv#*;a=em62w}ja3orXz5hjxtxjYVu0JgIZf=-RwePV6Yk*WGEhXgvZ3A> z{5De5yFhcWiSy0vzy+*y2R8OxX6A17=%9PUAV~kwH5n=60rT&>g-4lLlhKcsD#|)6oCxvg7ncL$L<3pqUfKdRzoF@{UL2Jvq z*E;^c{*5CKauw{E4ZE62=D-E+LhewHj3coUI&2vphsxzIpt!79kh()(-i7BU$h*Y2 zq(TTgN1wojvNY4ku`&gGLa34OttPYAx1Jx}4Mqay+-jWL)3}l1T_vU* z8A+usA94`g-Rt&}cGnJ!ug;zRv5A!@oMwW$UMYFH6N2a@N+J^&+LvG3>OV$jcK_6d zP3|4&AKB9Cbk7e`SPFU609N}Ht>7JNy(LdvswR-Kvc7Gfwi{7mM%^IBW)}oAqNx6| zlUy$SB2BYfX(PG)#@yQ%C_uAJLK>%0rTWDc8vP_fCg79Js!iw@Ch2g7KIVgbabjp~ zFw}8-IWAl=N&|-Ol!;ywpndvAYuQ*#N?)x@R7nMxK%W<)1y`J|sLh&Thg|Sd*aa=d zC5mcUW^CKUG z&W~r`*RH*9$?$Kl^J`MI$2EdLk~ztl>n&dPeDAT-+mfT8w8nQx#8cjW!JxMQ?-$%3 z&eMjNS9L*fM21(&?y$#H+>D79>WV0XL%T{%7nTy@y$H1f;kIa%H_2SJi|6X8KM6U` zHN)XLCxdf?$XU8>)O|mmKL&p12@)}-^~6nd-{!zTgT~#@zxMQc8Fb@(xD4In10+02 zo&A>+h`N|IO+2sY3BEQsKE44AAz5H0Ne+~FD=#~IG4!y|BHcIU0C=h{93rItC}Z|* z{`E!MPoUn6L+!sgLa4RXHWFOF6D4-39gDgkmIcNu-j9RueseDX7~YOO9(>DbE7anwfIJ`GVHT9|@9A0sdP%z^HlW<6)+>9Sn7 zmMsZOKl_X2sDE-<^2q=e>A6}8Yl;CT!j-rSOytOuMpK;^uT}<$DXB{RE zg)uk5lc5%IDNjtw`h*r0{h-i~WeOejU-#)lrs>WzF>wy|FN-hqjNg#I57~5oZwJiI z%{4rk?YpcW80-TW=E|zMdgv$r4n6J%j85w)n&A~_7x)6BD=$-s)R=e3)7Giv?cr~- z%GXttp0t4c2luqd+PBgbZYjJz&M2P;zlr!+{+rMHQ3SP*Z1JV~?3v!}QUL!;j(oxR zCT!jxNvv}@+8)z-P27sZA7xbVA=f5n_lL99RA9L#ft**NC~0+7wcA%8U{~g*tLSpp z=3R?H=EQ+^@AjSp2?>cgv}@(a+ugjv9@)nu!tgJWDvud4>uc$6A#l)O|GA#;lt>6f zfL{wCKYR0jnlC_`!c#pzzts6C5NSBJYRS=vuZLxe>hg^;inY3Deg0#Y!wVAV8CI#S z9flY-B7wI8$cAId0%o4CU(yZ2_Y_{ZSb8qdG$$oVFRBTi(h=ke0Fj3#8I9${0^vTM z5_~Cnq3eeVw!JiE#35g8c(#XiKE`7iq8`bO6LYcNtoQX@s}_T?MYzd`);jB|JOW`# z2B#^(3p&|9zv>=($ppJYsCb5M{DkJy;dy;bsm)YS0?(*@UnG9ulvZ<%CFG@s-7%vf zETdW$n{jc=B&5UK7Cck63W?qzu&CNDlneRG2wiFm;KWT04%djP#-{jW^V_sY7tbQmwY|UNS1IXpTfkRnQ?W zwdG28L~l!|y3-#W*!YfNFP`QwkodLiX5FQIZq(}uWGk2}ps{O<9A{2KnwKX+##Cif zf=qYwrq+6LbY8T62iXvg?E*w*zF*%+Q)7{rKb|`T#K^L=@AvR6zh4Q$1B&Y0T}yZnOn!51DO~5nkta^rn)|270dFV*Bs?6})6O}SVn8d( zwh|pBE*p*8ckmwxNrtjPm?{4RgoyEkBv{g|;aQYA^^>6CT$q*EpOvG6OSv9@dh4)Y z+m<{t;@^61f@kJX{{U!g)X=G8#R7@z_M4;lckFa%d=6@YSZIa#f>Eek?3^#6`C?0T z5)puI^(`8rzx`K(&k zjSrqryb^gskbT2AzS&gTh_LP>v=6txqNwS2DW+JkOxCI!O<(r3ymtWRp+l2EI_(`N z+OutiiXJ&N=w4Kl$nk%ImnG1Leb9fD3wX^EZ6rI{?v-6hu9--esgyOo1VVVg=!XC^ zD!;T2L4E(E2=TsGhkIQY;ITY{EAaSSv_%*mw6VCj7*y+jUll$Zs&slj@O2zpfp$(} zPbQcs6Dx{WR~R&kAgjgjp@~WFC+G#wubi4jTaP*ujPo>e$NhI4f9XF zY3r#+^6PZJS@+Sm9yRVy1?Bugv41CG`RH?CbGsq2w67MUZc9(sRH>B>T-1t*!X7EC zsUf^mws>aB=DJ9m^P^) zKR-Xthozx7<)%WW;*+bt@>t8!c0Te$7!>WbTKdUmM{!pX?1Uz#S zE8#L3WELK|Gw-8m=|V^DWR;-Z-8u@Or#_Cg7n5}{NMg_Qh$YySub(_(tc%e5r&>-Z z_=q#l;4i3{sn6iAED4V4g6!cq)Au7-`KQKR#uMv%_dn9QiS#-DaFiayx}4x}Suf@( zeIgG3&AH5=JDI$ZIWAFT0w`S)tc&o3R2qNCU6J%%i2YD@b1*i^&f^sAVFrU&*ksub z2_~}aJ;ufCuQj86I#6i_%@8r@?|bbV zA-m+_QR zfNe}u6-|7(w_Opw(B+%f{(+nc{eb|0b+wf*9uO(`u&rS z4}zgf8%BBccNZ7VY&6ziw%v9GfK5*`p$;;COi6Cd+_kx1(>e8sWyB)!lO|HsxFd@9 z7tsh{IDXEIUv=K=U1=TTq9$DVEpzb!wJX6Tvgwo_21Lj+$2=vyaR3aKG9t-jIKM=; zk12DA`+#YHru6hO1}ofgiRp?erHd&q+y2m2v5I8)fuKeeO5efFKAafRG4XjSeXXLT z24W8+B6)E+se#tpXiKTV9jMGzQ+(3d5g{w;?ex7j(#X-Eg3z1DsmLO2@@)I*NUxwp z+??%)*=~j^I~hsh`3kB2n_c=yqaZOr_*(!K`+DMeaycmdRNjFR7^avj)x5>z?81=VQ(6Ld9_7}B zgI`f0h4mv_&UZw zc~83_2`+nd#!F|bkFrpD~|lcYpA3>M0gWNHHMS8x?DUOb2|$knE4V7@0_QQU2)h8ivYj8xe86 z5E2Qu)fh3YH=UtwlyAp3R^!iS$oCKH4|o%#0H|XsGcl4W^uKMv%aXN+&9hWv+XYH) zAowEYxN;!^lC>73-?q>05%c%{Tv+d-BHti~v3I);>FmurcXCqG!j%bqZ}nScm_UhP39;L!uybpR(yhWeFo>6#7hMxwRS6Vz*Jbexb>wPujp)Je-4{ibt6| zRw-Bts})ipW^1((JRFE_pQT1Yt(H;jXjLZ3B*#35Qlt&SseH})@PVac5k|r@@Vz!# z1d*nrl;yaw)O?&`uWW9@#jL7E=CVL-mWX#u=yI+yvxcbi*b!C(ww-t4XHAg}c(0{> zKh7jH9~N#O`9tpd-hrc~@G`wYpYKukR>--790h+z3^Lc&B&dVFqn}>IhzH<4pzf9s z-V+^IZZ)2nF+cC3J1t&b4*h*Xx!zA!FkbAu-1gwv3gw&@#5NgqxnRzT7DIkViQ`A^ zd3;KJ)ptHd_m8W(eB$Z8D>`l830?S5E8As5gF)@SE%{_tUgC1IRmEMziqm&yrQ&q} zb5nRJt08{kQ_zO6>U_?Pz>LfEY+9S8RmT83&-L%nOm(_h3wh|)I&=l6eecOjmcH0V zVy^*tk+*pzOS4OEvLatOFhbHrzr6<;v#npbA=5>Mc~e1&`Gn_>a;N5QKlLj&fn1V) zc&S3n)ZQ#VpBw1Nf5asCMn;1Q&juS^2_g9>?4m@Tfd`@Sj%BYU$D2sZe^qots!JQFGoH6yAAns(0U2O5Svmx>~x>^SZ2c8Glv%ZxRzw6dQvz%TVPev{%{d#yorcZ6lEbV zCYZU7V@^YtcA6dT2W&>ChaOqn?J`hq=*Y)4GfUeM!b-QB+n5@m{8Cqa2$=~yg`hQM zDk)S3x|dg#UP4JX-Z)-PBWK+?y5!Yj)kh@j`;nxl4WU;0{W z4~u@l+t;>{$)RI|7e4p%^YCPVBozm9aLi_65H;R=jydR+4o_}GVM;)PU(%Mg!{fZM zOmj=gCX{m1T;jRU+KBcBk zD1PhIR?=6+hm*kzoi_%S%h*6FPnY&a%5`>Rt)hplPjswXU#*HUT!WkBOic^aYump@F9Fii&uE=Ub&C^C$8S zF9cJ4^PePUO*w!q_8T1~o$lxTn(bZMT!cgD{#P)s@8BMdH#SAJFgycqq=0}cG2xX` zv5pYbq~otViFA_(&evmm*S+WNAW;3P?bDMma-l2NC-uq->|!vRw1=l{-Rc)TI$HWF&5k&*#X)9seL%53{T!wW5YVwO0ZY7qQ z5DM1?#}*XHIF;d&;*r-Il7(U<_n zVu*lMEDgH~diR2qL<%}b4VE)K#ojc)akPlQxw@^b-GGF~X7pzp?%imnnqD=?$5^}f zHcNaa*m<6o<+w&hyMw*e2Cwk`US?TSD=C=E46Oa6dhM-k(6P>SSHq+HikPr&`Y zYC^FuW`OLGp1N^70#8GV2Xc&wCiZBS=`6;|ll`g@)>DMh0HI>06r7f%(S@DkecMGT zv#xOTV5bXA*Kot5sb`-f!T5#stLRsKENI~r9XxQnsz0IGphbx3)8^C`4}vdE@RC^&FMPHx`OgYp zmhy-t*q0n2jOX!rbK6~~h+y^0M^j0eGu8asDYwyFhWC$IAWlj;r%^#9qiXvmb+MGu zlG}W#Vg5$Q`-Yt~T{2<}Qnp|jT(Z9}g}vt)P4?|EiqleA+D?*eclhsl3&;5LG`lrJ zZk?;M%s;&Twp{rd;Hr+cg=p0=d ze(KoR?^n9F*bO7`$TI4)vz2qUrOo+yB=y7Lzet5G5lr9Lvy$^g4Ffw`(Vp#KlsZT- z>7rmGKDojA%qM}6MltwU3T`-pvrx-I@C}ZUB0<5WGQ&He1@@w7+$>l04efqxZF%|j zCxzN3zrEpDaXUMR6F)f_A}sF$SxxBFL{7!v0vt6q!JQji1Y#$yFiyS&=Mdj$=RbFu zaNNdibyZi3p$boQo z0)zb|qxVBeUdC6z!diR34=J&n=7K-HD9vTd+%Fz4SMe3QK$!IIx^i(R|uyiCY}hK(!Gq`jU}2i@qeHp@F}J--Xt_CoZq{$ll5Y^HEA{sIV0?R_d>wUXynEkBl9qD=4hOzyvg> zF6m)+6u=8Y>E#rGiM-&-8=H1MhLRz2m=;YOIVCnmB*x43@qwB^*Je6hsHvxOrGB29 zP5Xm}d}xmYt4f^y`31}6C2`hj)$SZ~axIm+>XF^smEKsqW80g$Ra#^>4{gD6$0Z0A zD8g>9;73^DoDFIXt{f_H2r6(Q-qFWz3k?-bw=D1L{|8Dre#NIC{=UFAO?4 zKH%`f+%%+GffHZ2wG^H^1d4#Wt@3M@5q&{}EMFeMJKJB%zReN*>=9E#I#04<4ekU| z!^;=b(dj&bYu=Ztj~T8Q62+?A^+~s?rrUI@;{KjmEdFVM&&IE~F&AvAhhI>`66*7k z@N0y<>m;{ z7KMyzbJF|7W3ugBM;QvOb~7HqAVz(dH!}2hRF*6_^(;FwN0pA~;4#zvlBKrm{-b^E zW37Bd#m_VyYJmoTV`I`fI3u!zTonV2&=NfHj&G|uEzCBGy`I+%H(?v!=}*$|h}>_s ztZ)|97AFqO=tGWT&=SbYAA}5||Af+!L}LV4;eFOgT57#-+f#CAO3HA zWE$kHR<{Wh)m(*0H+}z9Afa^WQzLeyLJJmZCfPjRj3y7kzt|Tg23RB@XftM5V5dG& z(#LaXB28dyF~Rtv!`z|;yF9eV%kNhxm~u#*{`yYo`>)LoC?Y2HR9%G!W-?XISh0puQecD@4BIRslfkfz~?hht)# zJOpUmP~x}K8Y=~amWMZwSw6>03z4hcnOegpBAN-dz>h65A}LwvrFg|MA3LbZcFzex zb(cy4E;eFCA)9g-*Cst{-a8>jCTan1cUJJ_!}xY3)Q$0Gz+me6yzWx?nC|O`PBu0oivo5k=3= z$#cmRDE@;s+7&1L&MIul#?RBtK3F3BAd|NHD2@86KYnDmzvuL1C#Y#WthtLirEjY7 z=bF`kvSIg?Y#!ee^kJWq7Rr$4;FJ{88S$Lkx3Ol#YdlyOjm@0H{@suR%!Jz-a0vG^ z&lPi&Fs{^vh&Q)d=p7`j<(&aPeWyIkby1=?~teqF!Up&gL|EToe;;(Q+p!~E?dj)Nh3(&6^Yz_rb+*!~K8k?W2@<)Kzuxz%-$z?fq;;b+a zEbyl}XKo6DQ%1R>x!=xJ2=DcS%l{*;1cEnxJR!aF3A`^~cJ&yA4cWe{wVtdX6d=LS z_kk8u%GmBH@-8U6v!5}5qav-OUU*F_;d1;~NNBtOA_x2c%*uQ_LbEUr<7mi~4QUlK z5?dm8sqlI;y2L3QgoM&>RIyoO_XgO^R+p{E(;|Mi&@W{nmatF|(H`c;sgRiGo0v8z z3hI#=KZE{JFtB%9*wF$H6!4%VMRvN9Gi%^Dnm8z1u|POxU09Yyex@3WB^yf6>I}h+ zA<*$SAF93Z#3;+|NJ05ddiL-%{RSaWW*O`m)OLq7D(FXAG8X`=aQMaOQ{WmKd_LcI zCf<7}u>B<`ht6AzaWR+gt+=(=uAK%#ir0j|_;^?wD6VQ`FBO0fm_ccO?XRQIBd8UE z@Y|FV^skJ?l{5q=h7iLjXL%?ba8za5Kc|(AF-#w{TM8X(C-UHA?|4Z^82dPXs;wxh zL7Po~_(^|4_hqW;@`o3dSngtp*$fbq`hxB#*VWsaw$Z8j(m!WIV|PX95z0E-q&GJ@ zVv>8#N!9}G?IEGkC)tN__}QZHOUKT)m?3XJO3baIc-Z^@;?V=8tLG11wxVtUyu|iO z{sGS9fwF`|UfoZQJHA|z2}E+{6M=$wu*S*pVs3C*!>i{{f5rbX-W-9x?SpBtj!b(u zhkJ8Ab;tP8PWya=QC97+VOjPQGZeG*)7hcI&lZT*XB4xT&3 zyMAdKXdudCSK$}yNU2$*OA+IjI9sirjpF5p+A>}*&9B7<1^LTmDx$aQX~6(z?r}DM z`iY(FzpM)@|1RTjyncidQ9wXIxUPlhPFMv$DBaK3hrp8~`5v2HPnzEUDl+(N4inz$ zl7p_VRjg&$Dk`PK}lFgS4D8Zp+m~jm*_H3cT z@KJiekfS4#-cLScv2+Q46%l>0!ZmSF?FCA?R120aOG99&km%rFuNIbM;FHe!5ET~7 zUmN{8?z_v_@a1YXZG10zvSi_$d{SPSgI&7W&z5kRO2;b@=f$5>HO8_#3 zxN`(o*M!Fr5fJibP)JaOGTGlbW87p^hYNpbpKm%(AWLhEh-7V2R)WkQ`Akg$4uem1 zb$J3k5!!S(iwMO5@D;jbe=}74u=w4Zyydy)(^rA7+(oksruEu3d$UK;rW}~+EKFHK zzH@N@OLF+Q8HOK7(e?J=B1EM}C;}}mY`eI*y_(!$h-BO(E;`$HVr{!zU05XG7{VMy z*(T)PcBvc*2E7CVF1XH($=f43^hN7x`k z3h<(sUqn@wMp+P@JK1<*{a@I>(!gS?6oRMxL37TrgDy!YVw@MLnT^GbzEA97>}tXp zlakabzbWGz!a#W_2eR=DIH`Zs88OpEEiC9R(_t1#eeRTWUG7;Sf^Y3!mi}E14t&mr z_sQMF0HI$7@6UwHdd`IY?u*lGCc}4yTPp3n4-edOf?hwB!s=fU#I)??nCY`8ZWF+Q zIB~`sOL~v}1auJh=Cg$A^_ggoC5MB9(egANua%HQ`iO7o18AL#uw@%)wQGHSxr_w( zXFnmfOh^AX1B--&iP=rCve#j3cSD{jcDhm`eP*{l2QV|$mFkm*Z8)rN#&za-qNVG; zezwo&S3R#*$c|zabYxxTEx+?AmPVCF;ypLq7=2DvMjli|v~hPcGIv46{Yes`$uW6p zwRc*1{r82b-s4g~_d>aab-c+@m9TaV@Y6nnK^L9IbPEhqYy&!|tGcVaeHsd8&WE3i zSyeX*RTlG}63~w)X=y3|z{K`ZliarGxa zHRolv2Ml|AHAkakBb#z--uf|B4nwE|xTbYZT7G8)c;bTCVlr}d%WTH07?fjBp^a~^ zp0iz1o@X+UW9Zih7gnDs{v4L&2S%yI#(GOzJI2(r7ER{2pRHwdIDiNCKy<=i!(u|z z`v1E&eF{Me5(MFu%pY&jC69GEV})fJtgl4QGcoaHkX>+_eC}#wC?T+ckb68=xi;;m zLj=z87-ql;csWonahd>uRVLu&v{>is6-}KE(EDrNMaL=2g%b6>XK*?MIdHywj-t!e zY|`WFE)=w@4A`vijE@R=_=|L#a<$)#GdT^o@$~L~Ej-R(gg3TzJmjFTi-ci-sa4AP zRa|!#D|NMw^fBxZ;77vJz0Xv6(A02#dU`&z60Yr)UroFDAjN3 zu?IxeaU3p$lLn3Nrpk(7l-R`H%pf4ZJD%;c*U6DZz{0##pV?%stH!{FoK0r&q{F!y zMH0z}zAb%1L4X;(i7x3?;WbRCLG{zvFHH|}J@6AxX&uUM7eV~SqDqQv=C=4*Y1>sy z30+Uo^Db593fUx(5T_-};qkG(N=Tt%RFU-PcQZe$(aq8=ZLlMeMu*eI7Dq$xaXb*yip+*W1m%t}2bBrAm)r{sh#$I7NePg8Mvq7pKL1 zUFuMFT*=^f^&(3VFy#T1zkggsa!tO?2xc6qFy_P&9pQCn5;4(WA$>Qg=kg(QYX?%q z3_W*GnwRxlj#_`W`)|MI0mfcXjP?FKcGVvvA1yea z-p4uks_%iET5FpBHK&jMUMeN%$)?kzD7KIP$NqiYQ>PZ$UGlTwY>V8w>V@q@+81B% zt3CuTJFv)>zW__e5#^+&yefe>;+z!GEYAwwJ4PIa65Ib z(*30lp4f_ew4(NAp#M3)+3m$&#GmWxY4c!f;7jXzbS8uFBds>3)r6t;USiwfKbyLG zKhzrF0qAHI|GQx{%wGH-iE_^HT0M7megXdLd8U9QgQZHadf%X^>28MiMeOGkix4(| za`KMhP{$WdUJH&7xrqv-N5=!2yq!%@w;`fW=LHtWiir#IU*9fI8o0UHT#J(16RyFy~t)pK1 zuv+`yZRFUl&C%X<<-8|GqG(H+>1Mo&Ku}lMoY}lH8-aQ2)e#!pbVkEN5R2Flahdtx zPM!2)p&r2<2xzn#2U^?$>cB#0P@6-g{>r~CYT2K_1n_6+2L5~ygDuq>WP^NJdD1uf zooxR!nNry_OQNOj=&&GZ#?-;74J_$p4Nq!?hWr)L7PRC^c&ZS2r#vqDD-J2x%-H7C z3~s+?f03U&o1Rn5((G?KnKkYpjXNoFuBF(p&d#5e3s)wx4qf zS)&AXPoaF6)&7~GvZ~T)Y?<2dHBETyk&ch;F_*_%~Y{fpD$YwQIs@1#C8=XC+5E`2f2{xsIRaMq=4u5;d$%Ua13jAq*|4_JcJqkhOC59W7s)w#PwUB{r99oy&5oS(%c>N zEdSr3WPWW1FMiClRr`+zq!XZ|JpG-tReX7?H(?I~O1{H{DN1s_?ozVbS`*>-mR{JC zTFWJ*sMp6KB5yy`Enjnun)Gf?lioD^&SsjpG)2F<4+&|5xDQ-I*nXOQpk06LqXN6n zDc{Vgnk7Y*9pk@KS#GRGBbR-Kicc1gaVD}7mH4KEV-0i&;=mkihw34kA6_=OP5bk5 zpV18&KiVELZIpzDV8Hm;(_83ngLRL^?fAPAVe_{v(Ns}uATECCUL^gfx2Znt@cCnAHIaOJuTTN4`JWLG^^FQzJ4{j9>Lq| zn$C^scEN<{!eGhXztCH+!a>FWyadvYL0l@!rHVcM+ zPd#D^sq+<4+`>%hR3*--pH}ps7d+xqdwc~eRt==90+(fmt)9hqnwQ7N&FFnI!N0B( z7S?HbFHkSTl$v(;CJjVGY&e!&yL)X?E(sy-Im;fx<6_-3Y-Gu+s^_L)bojk}wP|I2 zV3$S{bMWoMwz;d6d;ON2DJUOv?OA;%FUtWmLP3`#1v+?)Zl@WXFK+PRyG1%UA4$f% z=sTnUuT}$AwX~YlP(Y(F9o%r=Mx}lrM&HW)Wn~>O`H9$(OgxNK&482h!1OzoG82g+ z7nu{^;u2fzLAW241ol|BA|N!@FzbRTWt_w9L=|%R3kiBu)wgf%=%^gERMF5Vb2V0c zCd+GzrHuJ$2rjt{_;|6jvl}9E=n4Ym1&}&)UrXAZKAeNtGeoAXJpjCV7d(@=r^(@R z&jc-9B)>nL%OW=KN?|%S@3_a!xwHIiMZE*4vH0YXK*>2j(Lipt`NS{iY78VSEy&Rb zY+)n;GmBvxZ*R($tp#_V;!Yu{z9DaZOg`n838%ezlfsZAmUUOHMQwmt;QPjzXHcAH{_Z~oCSRe~ zHad`4yTM%cz&DS_sgm@atgUBSk+k_Td2t7}@Z5JX&$0ZJ)z(qmoX(U8Qgcvyi@zWN zMO?NZ?uY-QgzZ`j>b$I^Uy8mze@_2y{1*ua12XmQXTj2EVfd`Gd%=W+8g)fhC4c!R zfhRwxIkP>|6yd3F(*9|nA{zh{tSQG|;Pa77`_Q z+1$VMW(~sZSn+Y26KaHd8oRp8GKuKXOL_GEvA{src%x;cfCbCU*&%-Y#wwS{)u&#+ zBRsI{E=bo$%QQTML(MN$<^Bl5V-px^@SYgq{PoQ`z9cbXc&=b-AliFvoFV-eJi@&> znntpBt9bMp7j(ZaE;1#OOvS#D=W>WGQ}DxVrKNaJn(Y%Uerb}$YFA-*2DnljYP0Lo zb3BksK|S#7e5x+M3T?K+HCT*Chb6=gd5BJ_#gqH*rtB$&0I?&EHk=WTP61dUce2QQ2umbwv@bX(*@&027gTmS+y6LucvRIYQ zp=mH~C}hd?JI`XT)(19Z$G~jQaFy=Mpk06u;fL>`R<{2M1DSU^+2b0FX8W@q7s+Kr-}tjf7s|CEVH_jM zKOOLH6(j{k1h}s)N6dqX{`v;B?(yNrmhngW&ce{0b6;Av;P*Q``sU^X;nM4wpB(9O zBpjy>K7D#cU)A4@r8ABkP7)y)%gd9IUr3X-Y?%zuhQY3xa*{BcdOe>%^y|~oHDsxk zHNDq~v;EgGo!^U@%}bCQS(B-1{$(iVy44S&k9)0x+0kusHvD{h+eKunnwy(v`Y1?T6{xLou zH=jzqaM`6jDsFsbqdL;ZzE;;Cfts$17~R<;oKtM6Q3BLrA*7Lcgjm8(mpHHahM&w+Xe1Gmv?&-i%A-5 z`h^q1L>3Ey6ySAJmS)CMcHLbBFHWG)AE^b<6?4B)Yh>{O?=EBRc@Fs+=l9tlrO(h$ z<^cL{^*jDYTzYbds_>UI?MdJo;5|8#eH5(`WF85{8|3lbdwM&oYYT~+42u7c z)XiWF*)xsp%fx%R6J*NbN1Q zB|i6!OUd)q=MoqJnQr1~6)avZTwp`4iQ|_$mv)>DEVy(?C#ZMXl~~vQd*_bl%8s{~ z-vdlpF!UH~gZBg`Cmj=$z*75SV)>t=N9rqqIjH(rUG8qPf;V+FIg_$U0&7}ZyepzM z+*!2sQ2Jql3NkfoKL@hv0r1Z&pH6dqF2-P<-@h{Ax8v){V5$o>&>#xh`Zj_h3J{ZPuhI z_9p4_xu;W+eKqKZY?T*5qon~BZ4A^BGWU#K^G>Xk`rdj#UJP;oTnB$AMhu-NU#Dd} ziHfk!r0C|aDR9UcF9D_;*k~;}w(aB;kGvONJyBZj$Db43bB=?F^4iU<79#sHlIB!r zv`(x92{`9^yv*8h(BadCe|*f_@W@V*;2~V;l4m{YxEm92C;Gdgk|MtJpfMYnOa;k` zMf=yA-E`zrVmp+uZ;#^=27OGmJ-?hr7C&uLPw`*tW_#{qy&hkz)!l4(?9@2*pOuax z^j@?Woz1Ghnhe2UyleDsoOu(9RKTsdU-Zp3md!};4EiI6-L4oPfSf3a)xG5Ab?Ixc zxQhaLHhr=4dbXicIK5J=qfDXuX2_?6-x?7|zIonUe)Ov@Q?{=smk(d~El9JPQ8Az# zn*lH8+Vey2f;IGRtVghvYCi9@`0!E7@b#A1lz=Goep}T1!=o2`R-CEBZAjHRf{X9D zfo5_@ptqY*L>{y%Imw51u9xHOx(hf#2_ctwCnk32$f)HgT>shg2YzHBFO16OrP_}Ro z*;VJ^cDplS%BmDZ<7xo?XkPBC@}bXyIDgY5E^r~f-(9a9sZr1n*T?AG_r3`Kdx(&q~d58zuY4W1&zl5K+uiIL-qUyfQrI6sm?UH~=B1gWI)4#8<&~M3YI9&+^yOxaj`1<%aDNMR- zZa|z}zL@!bBU65j-OZPZ$oDs9)bPX|rvT3!ft+pS&>fPzvPeVJGh?F6t)qw7@#NH) z9Vkde#Yg|8)wkIDH*dB;ED=!3Js4cwxRdt=p%&I}$ z&02RlbmC4yid@kV^(?aOZm8@>vjptveywMnw>^7q+q>A>yYTrS(;k)=UuO#hMor@H zWeg0I$6Ps+CDepn7)xu|rbw>pp&Uy*9dk&}w`a-G%;X*KBwW;W+_*Eavl5nlC5?Q# z@>HrncpAhjVgD43ao(TKh!d?rUX z|J8MNGz=Eqy~uCek>-Yr2j|!QR6p+)acI^HpR2=(AJHGbs#&770Z^Hur*-2AZh^ph zcr4ICrr)xf#OrnB`Z$JV=yrniyC6Z>#%@3Uv>e(E19e-kHnaGr&5d^SUuRv~yo-5B!A8i-vVe{Pi_Q?)`pzD}4K@HJ8 z+PL5!3f`4zfWq~QTewCb#9selvqoPR9Fy07aKHEZ@kV?0{^J@;blEakO+{0Da zh0`|G^^KirakAT;;OMh%vi%bFI*n~Ls+=k`>dspZP>`IjSinlU>{bh=G}q&$O`Eya0YSn@ zF2*S>(~wLi;2mtiqUyN_#rk>ZvD*9f;UHa&a^=gf73P4ZB$=pCSr=u+?<|7Rex%Y# z4(fDI$(@T*RWzXlq-XQt;5n!k1Z|Ey6rt^+B0XFvmW|VR(u=nlYCU`z$cqF13+scn zMto7IySCR0{YV+qLN?3A)ee>SlKMC$O7|tIlTIbtrc@oxJ=tx+O=#_3jg38TqCeh= zCg)W2N4j|B5R=7>{n~5NGORAVKllpzqaBE(2J)fkWH=nj1BCj6 zt_|{bdwo6**ff#BtcC$NdAiBNT@k3@-xGKfblV*cSW6gZQ=$~XlFjBO5i#~T5)AYA z1jrN`FNxC0z|5gpp13N!d>)FDJ%NkYi3Rm|UJaE5>Ez#03RgNK%Be-tcd0b{E}K=Q zaq)AUgS8Y@krCxk|BO`nlA_Np`1*J8r(gdZmwoOmeCgX);P_L{;D3)MUBOBTsE_6{}(J+fJYvAgy*Q=cH3=Owrm+9;gE?H*%kFeOZZw(h zHweNz(!S|lb-n3;t~b5?S2e5EI-SAL6AaELD8E00Jy5^G;GAyx>5mAUlNX$F&I!(= z8aOw|(=PViTkN6T&Y;S}9>$B!W=v)MW26WCz6MxqauC-A12IO zy9V-}6Rc90Aq{Q}BZPkrneiCf_DJEA6rKmIKpdNg0KMRigd+SsD}h|L@VDGxy2|ZB z^U>8f;e@%!#8Vhx1FjEtv|-hTZFuMH=kVAAcOjChcF$M7$@1_aA77yUBvi_rs|6`|gRhwA9Q*HBTJc*XEbzFsARbL8nIWy#p7W zag<^|w8`B<@s4GsY6KJwl1Zi1whi`v`uGMs`ql>Q*twGn(W#6lL);fBf@Q{(*|2-8 z=#K5ck=3WcV-27;)X77E)w#{1hxC!uNH2ga@=EN2Pz>pil{R9@2)h>2@Hl)ho2&(e zZW+=IMUY-lc2^WmD+%dP)hkyRfRxviqI{a55ROwT!2>ADz*m=5E0vqChIB=Ky|&kd zLb?d$$x~fzK{OP~@*Sc^S_Vnk_-Hq~Ijm2wJ`Tq=pM#ZqpM~GjfNJL$^rhP2WkB4y zrwxDm)6EQW2hrOldD;6z9egVLEFfbqd%jWi1gG1B3U+^_I^a!>4QOg;;P>Uax*7)I zH4>2feLNK1YO|MwZZdjC;|X3FqqBPuk$4wk?7Im2F2?THDOsB%lT`qxoL*4A&bn;K z$)D@F9p7Z2 z{;J#SzlVLdjBRI+o~y1m9nkfrxBr4>v)N{`2N}WnSmpO;RafIe_5c`Md9Mgny9zN4cPTeoe+xZ0`v zbw5Z@i^OLL5-6l__`fZbSZizF4YN@|z~fSvSR?Ty8niK}$>zKZIUtww;|k&4YRVO< zb}xmCvH_3LZbraeiG^cou<*qBw5x}l@dJyS~^Fdc;h*Osaf=MxfuJswD20R#O z598X)zJM8%#%M~bDO||{ih(-+(SR)L^DR5tQQ>u=(&uIav7E4;tazQ#sJjUYcvgZp zl-w_<*QJW^6?xu04Dx_fp%EZxLA``(b@BcT(P4^t$?!0Nyi3O-$bQqYCW6|4Pi<5wX_0^m(nuuE>U1F5KOlw2=OBnpV{0psO{cJN<3<&r zBcG359?)xR>M(oyT&#LyJ!Vuc;t?m6o*MLryAe%9N_x@@Zx0-#EBO~PuuEU(AYDGG z*k=;+8i@3ANT-N~tXQaTt%h2u$3*#ef>KppJFl{CdS2*FZ8T7Nu$6*z#pT)rP2F=% z{(8~8BZTx^NjE`}pHA0uR?baVYHS<^u2`z*&d6mL)Lw*uK>#`SDxx z_HsU7ynSev+vSzi(tz_c_TUE%C4n%K0f* zdtH=om4$wm?sbA9SV*eMVL-uPDa|55H~$;kUNX3I!-^o479^M@=uWaepi+vla0ubx zpfrVK0PkhjD*HYf4kO6!Rir9U%Ox+m%i}`@gYog>$8ke)RpVIJe{T4lc78m*a_KiQ zZ{f%A=j*QK-t=?6cnQw>+=Xy@Jcvi5^1U>Jw*CR2gL^92FgGh85sLA37|ceP>{bXC zqvRz4)uVM|!7;P3VBuU`mP(_is}HN*-+~vHuf`+y-ho?hz7gXlwBU?0PRFM|bq*Gt zun4a`^B7{m1p0S{Q8Ctq+NnO6T_#=|cwfhyyn|v;MB6|w&Ny)azIFZ?Y+yN5XuF_> zYq0>(+$*we8`iDffHC#eu&{F^nwH9?aj%A$MNw`z4WhEr-^Hw^ELcvwOLF;0gHD4X zAHuFKT`m^tQX2|Far|iHZ3Kcsp}ka?^iWCX>c3GqXl1~UBPKUv*;D`gP=LN>%^K|3 zy&W|R90*Ks!R9ri_2n!QeIj1}*E=|M`Kj>vy=ZUSt2S_O?#m+B6+t$Ug@3#Y9%~3= z8mf3W=}4TL)UQ^T8&NjsRrV__XKYOcyHO47<_8 zL!@0cFJj4PnO_NI@}m_H{~;k=p}Sr%=oCSE!OBKn=CDaMkK&{+%LE(v4hr1UPasam z&BFrJ`L#*;>e)0l4lc*~p4a()+WH)*Ow@5t_y7Y=hue)$eC{H&%$UPV0#c4T87w_6 zC+1C?#P83PdPDcZ9B6Ob+l|fbooxOLhf2xQo#oL+q??h=g`MYsSvL0a(rX48#Hm7v z93n0V$cxbxU>y0P$p&Bl$ECeS=d7(52v)Ju? zFqEYb?o2kHPc5j1wDKl#MPE5ImUc2x@PZ`GF%Ib_rwvA{S?ZlcHt$8Ntn%aJCCB3A zQx+mI5W=eUTk+HjZ{fjv?!cdK{}X01__6!_JolW+tI_t^d?w5~w-I~S3=Dl7BTspbnXClm z8KqG}p@uITOC(Mgq?1MgP!xtK8VvVziNKLQ*!sk9N5%FFCyfSN0}W-yvm2bQjRiXf?S+j*%q z^>5^Kg>r)rwyZrJZFq0ZyF8sDnT^3^3b17+WiOsk2JlNmy4Ih*Um#uK*)E3kf=Hn# z!)-Vg%&WZf0CxrW7KM~6(hQV5tSUaBD6N(QXQgOe{@Tl{vMY5FM72u1%HRM+?R715 zqu>=UDY#cWzY4rmrQma3_N-jVJm=Xxbf8Y<(Gr;$dgJXB3eCSurQ!&E&{w$kvHQ*w z_uPr5i7l8kZ6+EgOoGQ-fp8>>7gwy}hOe}IkIDnI5~c-1{=3|J4#_6u_g@L!%I|<; zkwFv{<|~{i26-I@8NdsQ`XV=qCfKu?!o~@_!|eGT8XQ1hcP9q>dU+`NKu-@(*`j%A zve;}q_ub)i!$)fH^^NdW1mF);!A=VB?0dJz%l__!lMK{u4+1_n7mV~UPW5h>sWH?QrvmlO}O^^-@x1j3-P6Ie;-q3%;Ca}BuZ-Fb>yYr z4@Q&dkM?0(=Ku$E@~V@-oWo*5OG^u`z4lsMcG+ck;)y44*IjpE`SRub9F0XHMmC*f zwpdQG+Uz@>ZqMT;v-v)@$h=owZ+g=KU2l3jJmI{FLD=Kku=aBpoPUYI9D#Y}qXg&d zp}(`gAKTc2oIK}(eB;=|zJEQF!Jb5d!@vUeV4uexa3(e-Kg9aDz#8k{O7c{*_p4W} zMQ~7pkq`Uuq(Kf1lx*ZF=^sExN5{wjT@Ej7XMj$v%IAWO4G7X%u`n=ZuU0m|$%V8R z@~LynkOy2GKr;#ml?Q6FCzuBP^!G$Og;Xd8BSAWYb)!|vq329UVViOtaVz`V(Z|fj z(F^C|C;dSze|J3|UiK>1z1)qpuMDF1gBXs!csvL6DQDK<&0Du2+?hb8M2v$Hj%H1n zhn#MUU)7ySk1}7FY!bY-Sg%MmxLjn0ffPuus7^psXi%e?vM% zMM8=e(j}WuED`3%#p|e$#pAM4luS|aGv(=)6KR9G?4PFoxdhzh3cD4&>ZQuD70%dF z72%85U0QIjNHGrDvT%hmlG;Nr8MUSDDwHZa=!0H%URAjpaO${A@V@&MY#UgG-pC#f zr@59+CDFdKl}{^Pcm@?!HJHdieaf68F=pZvI2oWCj3Q6%$nCWuw?Db=$=%C=5~UnV znMRaGn1a#9kcWIJdW+5}9)KZAh7U3_B-t~VJm3W3p@Du3_V%)8W4J;xLse}(CQh9RUu6~l?DhHiD?z%|%APkSvt(Fd>$R8-aIx#(=d{Dao;3vH zZuZ$>HM47V-^Y=RfTZLejwjia;vikao}bi61dgUL^QYm2zy1X;efdIMf9=)y&iQ9! z$=RR5`ImeXbxqBPvwKg@aGZm6>dC%voE^hBwsj41V<8F4RWj(WtgPgU?-yS9CA|Fd zE4(}#<*E0uu?&@2Wz!heKi{!A9N)CtoiBU*fxoi;e2VqgfDY<<(*a#?dON(}ywYN^ zJQ9gSl*yFbbN)pJa_Pg&b3Ur!%?Mo4CiY-%8yLXG&dxlT(_nQKn^v$vL4plxybN|f zW-?&{l~uv;bItb!!qsful!v~pbu)VVdJw3n9A#;=;$;)OP}m~n)s5)425Hc>ZTlAf zxzgie%Q7Lw1|7VEIG_kT|6I(6w2OrSxSVU9O))r4r4-z*&f(-xY0QcLh#b_@p(rv8 z`V1B`n~X5B0SDIz{-G6oOm>DyyDB4zyK^-PPJVub7G2x{^kNg zu?WI3HYj2P%W9v8^+8rTe@TUyV4W)?%TOn|U!{<3F`F;3raXqS`$&Q(MQFMxmk{G% zL(5BNrM@)hKwSn1)?Yl_ozJiI$|^ki!oGG`)Rb*g`*A6!`a7RL6FX7F(I4cztQ3w-MuYb$Zg zoGCCG4eDD$DM%-Cv&t3gb)y~>Y*e9kHj0?6l|L!-{F6r5ALt>t4QC_>#!Jut))_Z_7O zU5UEvg>BtOK6)u_07b8fGN=oO2-FGEo4iv{@0y6-=pJ4ReP?hz_J+6ca%>sRbA~+5 zZ@)s*^Qfw8z|=YOF#X5{XdFA9!z_h=)448a?;9oT8G_O|t}vS9a>H{1Y#hMJ3r_d` zWQ>QRM?)dXt41UoM37x;@mQ39PH=FQ6w(R6N%`IB_M)z#84iyJE;pOJKK5L2!eW)+ zo0RJfhJu)1K9Wh+P2tZ;gUFw8^#Kn89w$%fG8qj+LU@YZSIH0?Po@!N&#Mp@xJxrA zParOrTg%9XJPJ{tP+NgopEK_ncm99&z5_sx>PY+R$zf+UC#`ms6AB0v5jlzsA{(&b zz(ix5IOF?qz-J$h*yn6>hlwVbAWY6tB1%XoODIdb+MFlvO#fBYVS2(!D{=8GL;IgZ*;F5ns5$C7V`C8{` zyPo32-@UW54~^X+1idcQ7W--Q!B6YtamO7e+qP|6@yH{O;=uub){}C6V*w0Z3~f>d`1! z#`aJeN6x!xA>7c`CV#tV0pwCki)q1H$H11pXCwiRqv*A=ex97#wSv?Zh-P4Vo zP1{jjS+j2dI!6OsZUH`)(2n<#|f-E;P5yFu$wC84Au!y zvynAwY(2jH?Mraw#V6r!kGzJz{^3QefARy&zJ4SooL_FS(Z&N{T*k)AI_QYV?}c>8G0U#_R96l`I;J0a{<)JG`-zg zhRwt%IxsRoi$uxwD3eX2yBli7Fw3xMf=Ap}th{XI+lr8tg*tD!mKi6aDA-N)u8b0I z*2X!iCmcQl_dWR+0&}O1$Mi{~Fruasfg&%B=K;AFbR?WRKbRm&g(pyiPEk1ad4plQ!zxe z^P~BqvS>I;z10{UJea`wE_BD6(bT^IJNnlNc+UpwZMzy}d;6tlFmn7sIC#!HOgwmo zM4|cqVcm|jS0w*=TPqZZ0(vqo{ml0v3$k%^HzvYtw1xU*-AhS{Qm#Vc6czZYVRdE> zxX0(yfH%F)s`7S&?ru}k;9FJGBS6(e8V!exO|h^V_(+hF&H8TzVsM zbkq8{rM*XLst+TuUctXJVkB<5=_Y*jt6vrE3(ix2_St99-riwE)kjm`{fEcr|5|Zr z>5~M~@1X6qLPWjL3IM&(3hgs!G$A`(F4sK-&QGvT#3zuk`ENR{{qvl2zPCW07xx|l z;maEvX~7+UoBrnVX>TMF=wOjBG5}@}IG@9gjeQKx#S>3kDQ*0_G5Y?EWW3LrK|nh8 z$$>vdHH*lo;kJJL`n{Vl9d=Q0-@ap;{9RQNNcXJ{FkN1csQ#KpnyQ(;>OcZ10#lN6 zZjGF)X=JM!LP8vkkq|6{b2he88c4URCIIJ1dWw~T={bXSyNJp;wOnIs)|Z5YszRGcJM@0l@&|PaxTY~ zfmwH_p_Zpg7e9~nhvbl&yZcdE9E8X1K%_r{Bp;h$JPv5i2aS1vOu9L;!hni}TF#$i zI=hn8BIG))o%_y+GOAiJV5FFV;MAhQX5^4Ty4{vV%T+Q2?lR6v9pw2S_Z?Hpzjyr? zaN)Oqg9T@wjS1t%?$wwJ27+|075K_r2oCcKTe@~~2^=09!W}Vubk9z>oo-QzPBP`z z=0IuCkNTPl%pov7?~qA2Wc*0cO9=YCT3N_cQVi{AI4a|jSq6qa0}P|y0#6Oc2x}|Y zY1}brQFPiimwXygQ!dXx-ndajnv8o*-9ra)bZ|udD2yYZ(@ppI**-ru(Q6;lJkv7} zM^oryG=~ZF6HssPO+_&Qb*&C_GI!|h38W)8qPshgp3dLS1nI_j%BWASrps1Ysmn~` z?+JAf*eQX><vypk_wF)A{IDN9*pz?W`1etM)~vXk1zq9(l6MtpzG_ z1M9gUUCkXmInQ#YjL#@9T^plG0kkDWRq%NNs8=Uoa^(@|j<%vDv=!U?R%2)1dIIZ> z!uT*61Kf>kR>)RTUV$ky=i-pVjzazDal&dENF>ruSECa-${S-f^nPJ*Ih-!}Z3c!6 ztXW)C9LR1ryhTM)ZGM?wrqw1_GMsCf%I;9IbPuv^8~VE^ z6hSY|4<9$SLz^D8H6>-aAJT*YE#*ZMp@RvOwK>8nUYE6=>WrrLzA!raBJekNqK-g% zeOVACevi54{@WE-;KGY8!o394@4WM`cITDGSYh9=gD=o#fb#?zzbXI7k-jeM4!_cN{(zilg6dp~Z6T`qlf)LBa-6KnLiY zgT6P-N#LZtvrRT`O#3qo4ACYcy^}$+CQPV?3$lq?>|I2BlUn z6{eLkQnkju z_WQqM^_Cs@;rA}Z+!>ST3kIa`IVuv?>Ho?gpnFj7PWEe@dl(9d0p3lZysEqs3LQIx zWsSz3)T8El&OW!4g?ek0s8cL-a-`DYO6ECgIs3v+u+#fahX8eJl#qWT$^E96!ZRY{ zOr=+Bc}lBg3DOOzAF>+v<=9aTxa#bqaMQQGg(nt1E@N=0ZTy6B2)&v>q&tp8ctAwr zx_5-J`PDXbZVuD^mqIcU!{~-#IAqdj9C7F*%$_zL6GqgagvTda*K`aF7!m^(4_8Xn z>U7inZg<8Z%0_MG{COS8Rj%OUrF)Im_ET?0R(DiJMY(aZ$J8C>*(BPkjB73Q%WT>VLrIJ_F zJ-hr`R=u%3fb{%;-T>p-(Q6Z=>-29kZcSsnH{2z<2tIdFI%_g8jrp!pUfuKwf zWiUgm70p#-0yeXbyM;w!rMoM+`Oj8m?HsDR72GSix#sz_8Zy6QcYZ8YN^*UcqH*RN zL&xHBc+4ZMb&W<%(MXIdn}MA@8_*itDuBH;xfPu~yO4;bSw-C)?O61}(|GT-moRbq zp_p^bNf{eP%J4Y7A6NDBRj?zY`vnu}YVufijb{2h1P`4_zX@^kpojsFg>*M|(c zPKH+rW{!M6eSdFj0$V%#381^sP!^Eu;3%uXWjA~a=UjRPK6?Lcy!7Ow_~6agB!8dN z2xvRmS5$Nof%Mz$4#zF@RS6VYp%nmnp%vPG1?N2R{}+MtE3EmF(}O|WSYHn(P2P!r zA!-vZR-t$tA2l^eUNT2$-=y_NK{n++j>Jd zWXxzfMlDjV>d_C?suEXu|`w{8sF>__vaaJ1eqqZ!Fwd>Yp+{5ag z7zV2581a#T&2XoWzAwm%@$`Hyjq&lcEumvwBl+}6G=(>yjevT+Z!&EM!DaU&k&I>n z$syH9&z^7cf%N<}(oHaK$@9(z@7W-oTVJGGz`Ea4Yyxs6BOJ{`T#NcCreny2v3Wqc zrDU2J$;_@3pS~BFT72TtZJvFqPe583PvOeZ``ckg3X_P4Y>L44T&^p8)0{m&Paor}+>x zkvi=){ZX%0!lle|Lga(oi`M(g`kOYrx&}{I&E0*%xN=cnu@Ea$-z$rKB2;(o7cRzW zXP%8;{`_ZXTE7xg<{X7^I0D7CJBvawqw3sW9sMzMhGG)M=XZGxCJ-+4`FY2mjE(Ep z;DcA5!^=-E#O4j_xz4*SIgtE!0_o4w?uAHtp%nmnp%vQxY#xv2>R2rHouq{#HJ%L6 zZ!|Q}Vr)m^Uq~QC#JuQyIp>^JVSC9Sd6oKQCr480z0p1&j-kaY_z6|o_vUyi^aa1E zWhZ+3ddQIX!+Nd$+3#iHET$21397xCFzq&M+qqTCpCyB#q{yp9_H|p>##BU)*NpU< z(P7$@{K&wJ`eyhYR7-@6#mrPr-qY(RGkCY9L9C(!C82urF}Sp8ot*-lUu^dETRjF|;N^j$u^h&15 zs<9c;AU!8~q@<5WQT|C_VTgy(HRJ8}?_7=fSA8Gj#*M{QS6;E(kJ7w^Wy_Y~#TQ>f zcWW41{?>__(h5u&I|5f+a59cMYzn4M8iim*u?fmk;V6=!kY1)v)mRfoL{(3n5J!*! z#uUxr!KvN6uNqHk?-!Bn%8GBq!fWE89=fSw))mXP~y|8SU zjyqI88iRfY=-lFpL8FDtF$`r-pnHme`aAT!&Ft(UK)$(eDca*(ad6dfD0erYm%y(^ zd*2(7K3EyC>>D&6NJpCaucS1Julc%~2c&D@xIfyf^%s|6(}8s+NYBpuHpZUq z!SVRGa|t2|&5_GhMbM?M1x}|WpIpsw9P{(F%a&mMie;F2#IZQ(oQqIiRYUV}EImey z2|~%mv*|2{Jt_v|I6v|wbr??-TRPWVQ-wD`wq2v7o1$^rm=mGLq*l|N9b`h!r}-ro z4I>tbN`$$itrhj7$6(UIGsIb; z^Ww}azKT>Liqe1wji~|j(SEkUQF?|Wz~Qu;YiNSz+W!7N^mKK}{8e37k2y0A!Iw`x z3QNCs6Yjn1PW9!IyHZ+@`HgTr}IBg5j;;&!o-Q>Iga+uGU)p!cH4 zANa%ootxX`mQrhddkN4PxNP0NS)OyL87?_vRe64y{HQKk%&gq zHKMKHJf-(XDys~YSXFusu(dRm4ycXDmjN2BB1{}jXTFCbly{q%&nwJ@ghm$?kgn?K z0yZV%9F*O4!Jwer`nUE+oQ&7HnhN~+``6>*n{Po=V-x=4JKq*3iP3m2TDo*8o_y+Q zJomy2*tlUmjWIV)nKuo`&N&!I%$S66V}`>X)BvqGWjI<+_bJodMSw7+)1?jJHzU8_ z5D(NNc3Mh-s;g@2Yy=+5EHK6Wp&RP*Jx*Oyf&P=_> zKut}Jx&Kf&?mmyE)*jB9bBz%=g04|5-LD@JSYN`r2sCbcV;xwu^AU_JnT9&oL2xSp z5s|arGJ6ZskqOraEx%@#Ei)J{CP>c$&DkKG8A`D}xfTImiT;UffSit`n`{zQ`~K|u z;+YOTWKf%PsO~wq$Vx%aq`<3|5^mY*^Eu_&^3dcn84dZU?wK*(lxqBvQ4jpH1?ucH za69}sa>V%vy36s+pqZzm5^(CSV{Q*Hf5sA*|IY zlvnOOXLr@4#7lHrgxG9)q}yf+XBuOZ#}PBp7;H1UMuh0XVFBL!yuVkglOFD8wfL|+ z=dx{F!j0eO*Za9_TO_Pe-#Oo%=JsPxKN~aV9Zhq5T-FrrH&pBmV`4CpMY^86Vv2Zj zUU_Fd=KaR_jGrotD_y=U7d8EJsOogrit}Utgph< z>HwCmSdC}jdLQr6HLM#k>Zu)@H~xkCXlcQEF0=wbFSJ72PtEOiPo)Lso_IWNTE`V+ zDE~Ww^I>ENM*o$-xxS!rDYdrVUaY4D?JX{$MvEBJ`VJ$5{7~HhOMZ&S#aDnMXbv`N z!yy9cEvO&XKv3%wx(Mj|q{b^P+DtuWz(3TSV6MyD+|ne^S>@JGTPkfC!$D(6@^^Jm zWP%>6v1$O@l&aIa(-B)Enr1WTcyx@MKj$#OC4)-Z67<z9qA~zfOL)0 zZKK~d0JsS;7`$>H(pc9dkZid|e8?WXzsE5p{J{fX}5J2On=-2jWR>e5Il>(IhZ) znG*wg`8qwlLL5b^mP%pJ+O5ZLOXru$=jiiHZ#Pmbz)IE}G2{#jhaGNz5nb1aU|&u@N;uYB(( zD66cZTR4fKka9G!H4S8I(Qdm*IoHG-p^1bNARb@^^>~Z`cSt~YB-}5+GepN14uvH8 z+t<@2Ae_NB?-vU7AxiJ@=Oi5_PuT@2x5kV!TH9P6FN(`5L`goC)Y6o=%-fdrYjNl8 z|AqR|V==5@6l&`05e$~d93qw5^t73jApmL-7tADISV{1lJ2TTT8QS{h@v-J7?6GPtcrFSyqAzPdgC})n&NlmRqFq2A8WW zDJy%WC{X;x?#}j}f|`4w6##mn721AkPN%chX0!c05{XnAuXzYm-Pq88F+QJ&68$SR z_O|cr>_iJK;LDgw8r3469$Ju(p=}~9NCVh^`R2O==w8lArDN)(<7sZ)B?ijAXhlUu zvVJp-m?Ho~1?Z7z2%X*S^1P(T4=+=vbwh!_&*64y!ej!FbcB*J8j6=lU3U002|s&drUR=`spfZ}m!;7f9q<0z+n%F9a;?d%%_ zlv_Zkl3fEl51{4qN}UgYldw)$JVMaYzU5-b<%Z#IJ2CZ zp1Y_RqHi2=6rn!VG-gErkAqh(9i;PqHtqT_fVCTWq1kHmS-J5UuUqTA4+_pRcaBp( zpLEQ&|}B3v!~*_U%U}>rcXd6E2Fa_zfqf*LAj~atT{9c z8hgsf>1SFx0rI5eohJpf8-O7LI9U73I5%xF&>q=wq%$*2g=BkD*FI3;p|Q{9)(im0 zG}Mtb6=GU%-n<2K=gv*nRo(*%5kW|rclnqS%HUNX4ca>waXX#H^%^?9cc?GJbbPU7 z1nasNp~Jf!WBjvFNGQ9;FDW3}8w zKHGz)hb2|ah5jgwutKst( zp|`739KD=>&Ux5Omp1flx(L9pS-u3@K3gq9S z{6ukNF#VmK8pWmM2$q)W&KF6>f=2vGmxD8OSJ=VEIwex#PG2h&o03tEFH@D?m?IR^ zrr~4k>F&e_?<_)Bdm949C9>A@cd{eh>th`nheY}roKKrD7MGlPGPZ8ofKyJn6mPuo zhFqW8`VkL=L;croUcaUfg;r<^Ywx0&P!{Kqe-S_wR_fLcwJW_CV9WBCvfEas& zFWCS08lQV(R~Oc|wc%}gzFZfBE2c&G1X{!zKBau~!3=j7EzCjog46R*s2}@^`B)Mx zlf^e0jS5JoF)^gi?P}hI2=@^gR8=Kh2FEUoyJ2)Q{nrL9mmj9_4paHoNd|$-VHd-z zr?;O#b}yP~V-Vih-X)Ja+d8p}9-BJ5(caZV;A8LE9E~mQ`L8#fb1{LdaU+Id^0*P0 zd*~$0ATT&(;z+nlG-Z3Rx_T;46g%feQ1Vm0EtWQ`f^(#mjjSk_dJFjBW}_&n*E&~I z`tIqxXye+8keePMHlyqYNU)R+QXIMpvLO^_)7S#4115kG(RZ6hcNd_^!g`8L&jr;K z^d)LcMyrwUo))oIGOl9|2+ycJH&|zA&FgWayElZp7QTvmo_q~m^!%bzj=-r$9*U!8 zOh#>084Y>|(?+yomzv7iH--VuH6{OnP!vfn-#4K5m%-f7MXAz#h72C5^rv1c*{nxx zy#}nC;8M~$2?JWLDqk}vms_KIhUvOe<$`{ zfEJORM%QmR-EWH%32aPg<@(wp+tCwm#i*h~G0ZzrQbANTnE}#sVB)?2>8jx<$^yT6 zLAu72;cku%M9~}WM9^C%fFhIUtMfSq0qH3z~59ac9(4oJ5| z`ISMdpXa5zo5z-}%as?jXGigK#P2>W=P&_tt`gv|x!6sDlgD0(NTL@jT3#1=_=k&M zC!oF!3og4xKqyDhIeN~H7Dd0Ow8*y&haG=1nj3crIIpcADb7h=cR8JfspSm7nL5sN za*k^Eb$6qut6e}iN4tAzeU8xDCy{ZTTAtl_>~MKc58X#a#ighsfXvPV7Ib7F>SqA% z^+}y{u9?o!WQWTw0F?nXKN=1KDCx+yky~%35$TWI2Zlp$;vuszcFJ^N6mXyH+P;;x zE%@-AH}Tes&&X~Jj!P@5aLlP^N-4V3KtdwZeBOLc?0n#;K0mT^fgh`f)uX(sT7EBB zT86U9O8ET&T4Oawflcpg)A_A~e0CtP!{q&U-ai;s<);a%#KC7+6K%{B>He*0UHK^+7o;OefQ#Rrwi$bMqK! zF)gEG*-8s(I1`Zc8iS=ij?e<+*ylOq(UcC{kw=`l0f$`o@IFB;DLPkvxBgT%!u-aObm6oEc ztb~5M1Z4!IJsyV`w`@pi2C+&8-vBxo=r^^Zr>7So0>(RbwxG3@jJGw!PC z9C+M`@^Ml%!GNl>4TNGTQQ@SSH*HekEryk%*VvYCU=cl`sN40(xF)K{>EuRza}A60 zHA-nJ_EIn18bwq@6pfuzlGATMG9|y`A^+?!s3$|lhMR!*%kQqhf8FsYI=cIC&IxmH z!AXZ>!l*jf*=a-9Ch4-l=CDXJXY{jn{#+)G9UmMe*YeI2S}wTRKN|SXC?lUz^D~N5 zYDT`VS+`lL2B;Y|;$b*TB--bYa)L<$7XtF=y<)#dm>U~6ZQe_KuEOWj?#HA$w9iQ? zKxip2r_w#QhVH|6=vYD=aZE}u$PfOP%lMc$Ny>|asS$89*{K0RB(f&NG@f$|nwgPicYgE)KQ*Wq^h@Im9Va%@f8 zw&1SYe~dG~cqI-xWDa_Jx=gTWcx-LD_?px0CD0kg+poTW?)FxR==OGZ>e2VGP|^po zBHoG!nK=bmGuW=EsS}m)BAT1M1h_e}&9C!w2HX-Ar*+0@)J`{?1sNone1KcKUPH;L z&s|D2@i?B}Dr#y`HLMO(XB{R0nWvBd9dFaNtyup4Vyt-oZQT32U*f*s->x|cJU$E` zHHLtD1)USEYZa9!DJKwKACPmbB2Zlv2M__(z8y1m)3k9<0r?v5KB6?}j z2`RKfD**IDE3|#wyk76OqS5H(Rxort0rLy0s}Wb#eMaH_Ja}7qLF=bQbVX+;o}-i-~H?3cw@yntlip}_xCu0!LOfl&e^!}#v4&x zU4v2r#uD_3s7rY+mC zZF?i4(U?T@SFYP4+aK?J64e!@IC|DpoORq>97B)8YAOT(as)gzRBZ-5^u+>kQm-8> zx@5=Lni4JVKBcB<@dnjh=<{s(pmOWXapV#Bs}F8Tg8WyoX2OW=Ydj>)~u?@a2> znyGZ`bsi5E(fzzBu0_+^qubG&;Ar{`iKg4wX@ewkYI|Em(Ed4)o_;SMNKdP=XM*(f z@S*#J?%nQihk$g4-I;TQXd5;<4`K)nZRea9? z@&5!!A6&d|H}{zQrk0Pgzd^dSj3=`ixNdzk9!6)VS&r!7vg2u-I`Coh3pCHhL_F>9 z|MPnsb7~`I9dn{444O=*l(aSO#Hyw5N>rHvc|=%XibQ}puUmk3b*)g$10|&KUuHoKOJqohZcHL@*pnBHgB@^Aa9Zw#eH>y4Gn#CZz zx~2x(Hg3T7Et>?iPn(`+rcc3n^N+>rue^k>eB~>&K5C9d zufJ%u%kB9$x>g@}yuJgbvOu8~0D7Sn+W%E>emnuZ+pG%U2M2?=YPeQ0BlRyN{2>bt zEmBL`+p&;XhjD;cTc3<=hM-h7B4vl0uP?w_+2owdyxaRL;@H$jgcwXqk;V^1yYNhUYb!ku&Q!~8yOcykA(v7k~Hb?}Tb974y z(2S|8rr%3RO;;AF+tt;N){YJV=M4?@`0g#=!y$(rx;IyoHa9)EWj1&4=GD~DQ)Ki9 z$`Tkh5FsEK!Q44<`t2AJu_(Ifyg9o5(Ta6=_k)kH{G+v4zhR5?MN4}Z{{GyXvNhCJ z;dBC&=gmI?bEi!pgVKw5G%g}Xd+IAGkwZqAD6>Ep5O`iMDoGE=adT&5c}SRR^W|^|7jcvr|CCF<9*OtE?OQGTLOu#n* zKaS37z?;TA)2Ml^vg_d6;?6O(H>_1EG@-R*ZZu%G?4BVR1?k%Bx-gw7B*~(S^qZW! z%~5`i__L!SqEqmhiqC!E_Ih#9p>q%@E=Eh^PJHyp zTV&aFOlkK~pPzl&iI_UN0k?kt7X19@zmR_A^A41hK1$zyU2-7NUa*=AtpLyqt(#sCQU2hKmq`;TfY<(JS6&sCYB~AwHR5bt)9u(728?lkpQpzD#1-=l^0@b@ zD_(+jDbL%hWUqyPbFQX~chbIV8~$!(XV*WJv1EL7O{-aROkH1nEkx+?P1byy3^56D z`G5fyh+g1W!vAg~82H)F6_+;Mm&xU4bj)yoq%grmH30=|Sz$XtSI3S~uKv&nh2_an z-!AUS)g|+VQQy5(6v0dY1R_je(DDwCT2{8kuSnqbV|h8ZrzP~uT)I3Kq62O3B~FO4 z8aFbxIY|V&UMtkb#)f8-AIhd~J5E*C6P;;NA$ zrDg|XD8nffRnhDLW)`cqe<;R>1yhG>Skc62VX|fyKr9J8K`WgrMvll%d0Vh9`Upw{ zl5g&DuVfF*#HpyGXKZ0~?Pdg^R<1U!Y$fwbVF9B8<|pRR*_O;8^{RCTHyTjHbiYbt z(r{+ee;qkXsFuZGGDhVXyZ3yTkE zGD_5n)b_d`>MAQ6d9`+kjnI~wWw1wqsxTX_hOO%L*Q ztXzqu<6K`ov(RP0P1fY2i3(lNhr%P?sA5`sHdQ(b-Fbd!5mRH;x#^NH9CX zNPl0xPElMGQ2*98 zqA&Cj&%P7Ak<pEil_>OTtlSR2aZyuMR-m9JVZ&JciC{Nf zL=2W+X*g$N1&UxLJfM~e3X`NoOg`;=>tbhPmNvKM)_)q>s_`0WyY{A^%!xgz>LM%3 za*7bx{--^D%=&vM|3^9}Y#g}lJSY>p>Snxnt<#emuj7?O-*4A2cbvWXm1v$X3ah8{ zlyjJ>z?kS*0VzZ{yfi2LXYcSG)GJ2u&uMncCTL>=l7qLZ{C*eVu{ zd73leSaIm1On<#<2!&V0{Q3JmGSHcybyCNorlYKE3=W()oCZjN4ys)Aqu|Ai$T!|& z8nM+o3rcrpxxU|Xjs@FgV^6Jc0HeyYl?~Y+ol_J*7EK>CCFtes6 z^S4GK^Lnziu{-LXw^X?tGk8PB*Y&_;VqyY@Z0@C3v#o41&ID>FpM(1vco{KR)X%SzX(r9J^i20x&)#VXmY z>(oN{Lg%{RBRpF$`!{^LBqqu2n^kL6ER=DPVf(?C^%V<14oL$p!kj1Et0?PKBK7t> zaFU9jG)F-$38?^>yFd?q^%=>iW`?0M9)X_0IK+^i-oj5=cU4pf57t@{WQ&45C&q_< z3s?%GB3hGlLDTHms^~g+a8R^rm2>}Lgjj?7N^|@EDHLlKRMV6GxqMG_dWCX-U3A2!XU4@XH%svWB<%w1l>VEO zRUIFwUw-OEcqggCx$4hw*Pt?{FoiH1uhehj5SOjx!b1G7tfgT3`j^XsD*8ouwSz9> z1Zj3uuZ0w*SXq!HuQCZs#OZ2HdJKHokG6D0V%f-bMzgmY-RW%DET@2%^Sqru6o5HQ zBf4p30!YYCDnRLo5%#6fOz49ToUVZ%D`xJG0)0nX%s^C`+|9kfmiB2cEVbKnS|v2k zf^)-uU-LvKYJt?AisYzown<+S33_2=D3j)yl*AJ+-Bon@k3HE)B}M#Qv5BR-nOnRf zpy}xNvd~$1VSdb2St!Os`uXKk0QXt;7Xg&ItCK4W31i*q%rRwOe~RHGdpLQy&m_F? z?>|2W{tPF4b3gv-9Ie9-3X%Q@bsbCnP5st>Gll=t@04>WEv&hq0EIY1czS_+=Ah;D z1ZdIHaGMWPQ7O2@VNhozsQ*4ht@(VwOyE7uL*joQf|!)F7vSthcg3 zd$IF5Da@E&D6oWojDS&asnnR6Gf%9w|4%gezru-uz}LEtrIWWR85*a&y9VYkv_3et zqI-7uNkF~K*>5RFVZteeJc-J{8_=QaT9Gcu#~#(rjikEML)v}luQG28)Hfm^Aw8)( zvQ=pqW%ln~`mR?_HlYii_2-T%te>$K6hEAdZR?e2H~rjk-)~dBXWFfoAW<3!8Cl?X zn7YR8&8vC16Y)_*s9TwbV_gNELEB@8D z>(#)V9r>ze)!HUubI+I1#&W}cH__>B3x6$ningv}YqHZ^OVD2VtI89znf;ln1`Z2u zaLINvJhq9~h!tSBQiGBOc;h+uo*8(V?jQ~ya4&=1rT{G{KxJip6|Ex1?V*}a!p-lj zCFx_9<7lr%MN=yvP}U0^-KB!Qh*$?|ySZ@{^p*}nRF&C0y_BURd;CaNxe;14kCaq6 z8my(wP3R0?i}aXRZ@VUZKYPrtp80RyTc`yOe_ZrV+V$HBWAnoqt8VSRKag(+bvP+K zn!hItI;F!7*Y(fbBhKDPZ5S@PXmBSDtJQV-(8+)u&F9L*EGV+5kJyTae*L{H!e7A%gZMlrUa=biGwsi51NnP zMoS!RZ?2JfqOvHSwpoORN-uP8G9PBH`{us>9@HJ2jLe>ND}UW4ZNC}4nWsnYgh0D@ zpR0TzOPukUbMbU=W4+5yY}lLcs%%|)P}RKgRH;1)P2?`NafO3fk3VOKcRyRKw<19l zTBZXspg|_+6tPJtM8Hb4yc7mM+YLspgH6|U0Jr%i+dFC-t!%98>&;T?k&x{|@E-Eh z!T%nXFCCtMY!pziOv&0wPBq5mcD( z5oAwAu-bPwh6Xc3dgqy*tkfyV^J`|0mz6=B#?LnGZ=1x;PY7GRX)}F}=f9o~=>qzY z!BWP?K}U}CWc&yifLA!TQ=4^=qr|^T8<_l|s4wnH>`XzTNuOT5&WTjcap2@5ck-8d z0lpq#0mmTruIM31OTMu7YQg#hf2SjC<@>d1nt&q}X|ObG@wC=NUyYFm_0d#g0f1`P2(e9bXyCs?n-;p8GbRwo1^H5R#AL(-aFY@JWO&ZGrDl z;LN|#X5{pxFRY-ylMy;goTt`RYbom7^H3)sG(Z5a}aE_(JDhi3R$u>Hh zGpmuPf-J|JwN@S1*MY*-wtclXsS z^RD)Oawcm+80ay&{db>*_Zw58s_=|OXcFVFU38wA5E8tpDL>JQ!Wfr~cF%-jUxlWxN?&owhknsh*oueVSZ<#J0e!)%mbUq z{qR)3`^7I?BWUP11bQr}f-P!e13aT&^)JMjg?ghe83zcst%ObskhPoDy&xgj9==+J z<2Fv7@_LuaPZ%?;i)$OS6fGHQJKjPwOAEA*XGtJ!2GBY8M& z0^I0YO-oDSpo1zLwPdjx;iz7QF!)q7h;v<%BBLK2Or# zZVt^G&8M|v{b`1<42KWMSs5WUB<03pRkjvZLt{#v;UVm-gWk-G)ymPX0=nmK1y-(omh~1eU#oxrW%L^1u!uN!`-I75hG3+e6hp?^oqf}$ zz$wJb>{N;R)qZNH%q(;$ZS=^=3dW(W*nU&56OWxmKeQ>Oyf>6J8m{<(tt9vpn8Zy% z`b$m0AE;9Yx!(-4(_%8t(y2D~RjYpuh=qwtM;#G2_;2W92gZ@|Ichrb_TidI?eKR^ zUTc?g8B2>`IT-bhZshi296jQ)U)IrWR%#{PA06~vonmJc(yNgErfTvmKIjoogJY?W zNCf$_@{jafM6XQX%32M?mGaPxVYowf%c1XlD1767{9LJ9_)9@rSSwV1WvwQ=gxBN~ z!OQC5w{2l+-yHdjix*eviw>dfGB4d~!e2L`{CWJ&8y@M(3r5$sxP(+y$9c zxX|8+j^x7wHM>lOQEDGXw`ol14b73Rv?TjQWkG)KGwnmJ(|;zqZ$hTav>xO9ZsK`? z(t1|{^$+|;@=J0ze&oDY6h1q7_HvVaD(kj{t?0v;wyJSDlZsQ-{Lr&CqyklvJ9B;I0?_C=TnOKo_;0vVsyhii!w$1z1cXR7x zL3M9zlzH2=jke22+?W}!YBe}D)xJC7Zte2|quap1K=a;iq+_3kefK|E1Yfz1e)yEc zMjApDy~B&mFJc}6P~8;7SZz3`m3Q~c%+``A$e z|Mvx_-s zgsRX~%qHQ30oR{D+^mAhp+8#A31qA=9|Q>FXEsG2nb(OH^ff;7U#~B8v;N2J%*PBtiXp|Bl$njsiT7ey_efEAMT0)hM$;*?JX2J(+1xOB4V3)-Q+vsxC3+%q#pA<;S1!jn*_!sKYqZ#ee|- zn9U)Jl~1G9IpR0%k8=dX$(*}6%~{OxL3W_leMZ3X5Ruu(NfL#(QR^O~FjDJ38(+FQ zsOyp6V6)P2L`eLk|9syJgPEjFHUhT zb}bqHs73Db*&1G^DWKZr%o()Iie3c)8UEqKFxg)srd|E^Gy6_gnah5R1RPqx&h^4Q zhskHbDGrKlKXluYn4KsaEs_6muQ;KZ@10L-alFCMN;C-9MslwN*&aTCx=HCR+X84^^QC z({5?JfjB8?uI*FYh3~tufjCFqMTQPpw!67~cKE2BK7In{gxULmG9Zl16d!P9rM}JP zLg3&enKmo}TvFYQ5dQ?_jaNY#8iU|FiDBW)Q?1;~$rLc!oUC1k1Y0`W3D1n&Iq!EZ z(YEfvwFJzUE^=vdK~nn3jF1C81%Z?Dy34&prF6yNyq{O{JYD+u(ZT$TW?o{HZu^%bpk1$d(L~mN_P$tbDrZ>;bGo99-p4%EvMmzYpeq`Q~1>I3Ki$HtbCSvZr z6``(;Q!r>-`u!5}rW> zjZPsDA6tB3 z2!BZ9_qZHOcrKUcqRs1=x%i&=`D|?aRjN8;htd>kd~Br%hiZ(8IIIs`Nci0O3KcR! zYd~~=Ypn=$ThY7UEiyA!WVhQx#GYGSt!r#n!g@)xy8Hlc=Qc@)-uD6@9$>bWbN?My z)f7DA$s|XCr%Q2%)Age?j#6~DbLwZ^*^_vzAXJLxtxyd-`KPaTY)y$#FUw^4=|1cT z5iq+V$_N#}j}hV^7sU>NaMTYW7)XY=J9f6kZ6N*95L}n`-KV*@y)LgYS3#6OhFm+^ z1qHB<#Ww-hsUDXNKgg(z!EbR1H%q;N=Vin@N3B>Z zt^;^>V~)y+Fm9#v-VUb9#l_!U`)oyRx}srqE~bH!p^N#ci+f|?WpKgRM=60By;+X4 z)P+dBvHi<~Eh#$i$i=agGo(H00KknQl=C?=-Y#z6^E<0bn!*7~29#XI`k#Bcx!UBs zTYM&=i~)x5LQi1B51Vg+v9h9Gnod&?BN-;uC9CO-*P-BqC+Z+!fb&YdjbTH*v3C4? z;&G{5Qc8-P-P3;!V}j1$(HHARe)$+dl&+e_!k_~&v@~$nWLrlH9{uMkweh62Mo;SZ ztERTgRh8IC?N>-#1UH{vG5!WJK$Hh(-@6U}yAs$hZYeHdfUuJ~1FS1s@E|~=1u&)3 zC?x5o*aIUb1^gfX1fj)@SM7=*d&{o|zQ5(H+m=$KdyW(fR5P<}%W4t!!^6 zsj7S>P+~J+zXv^#`QzHZ?&+j`*I=!eeJGZ#_IyRG@{k_G;138+A4TjbQ6Fs~Q_zUV zbDg_vXGKHC$&lUWiT2xITD0=%gS$#N8Dlzj0sP^bRQ-{<7PBO(8Dg0@^f%ZQ9yOPp zcMjv{dh{ucljph#s`OQ_j{H^kT$OBpdtI9nH#$=NWF{vXJ()jG4B+14+aE8EQRWlT zh5b|&*3z;vQ{$rUPx!hFRSyY0lOXSvu(8WU9sAvmhpoOLVm>M}Or71qrz@qd28l+a z<3wt+Z-c*#!Mn|U=!3Ev0zDT*smCJghUx_q_=solmsT=zjXCrJlDNvCT^ASKDQW&r zW!XITS!#nb*B91FCV5hq8~z)l)}F7iN-F!f)TKF}MtQy3Xq7g6(sOq0e1STIz|_^s zgMtV117q-uD&D76A8`fndd6Fgjm<|&YJy7`LM_}>iv!fa=@)~igl6~e#th{a&*OfMB2 z#J}Z@@TR7w#knoHwWV@Q$@5D~bE{fGOfUx`=1Hl^)M9)|V`nKz@q;mBHa1p$2M2C~ ze3K7m@dD!i#QI@xaN5bsaSRGoy4le8P08CM5k6jt%k}P|>83J+j1__S18}pT=ch}d zNlX5|(otF?QR8bk&$q@kyFN%qrn#?D;h+*Z&@3@vZ&Uar5a7jw#39I&q0<I_SJDZb~J)3w*vu2Qov%DLFB3*Ti|wD94^k?#pQ2FiR`rnx!2_v7QI#; zYM4>mu#kL=jXUQ%R& zeHmO0$C#}ghYa2WWU-~UYeLv}Tg%u72Nl*Xb3X2bU!MouL;QxfjHISUzB@0(1lJi6 z^paNY><#akr@eFZZ)JBsC8x~opoEN)u^lx+`xk_8Dyye>L zPtghSx7y#>*6*X)cW#Z%sfnUb;Ols`tE{9-mV(YF$wV&aPabom^}E-|EBRhb7RQ4e z7ylIPCaEY6&Rfovum>TmKO(|MB2|;KteK`7ustk|$!Y^KI%b|aoa$wJ#wOE6sP9J=Ed?^U~4r`AHw1m)fT19)uP{{Ex`6k2o09#r> zQ&#d=mUSj5-GJtasEA1HKLNlcQuDY8Ob7VQ4N}{~yo#g5$EvG>^ivbB95eja4>q3H|d_UQlCIbyoz3LnzWdFw3_swE;;g{){2Iz`je_DQK z`7#5z9(#i~J`^^lZagr$0N0*}wXt_`cziwtcvz4A9C>KkkdR;$Mb4iswx~+t*&k29 z?S@KpOgznD)Nj6~+&WvCpn%j=ugX+|VAW_u6k;@92v6e=z&oGE@y-(EazZS3Rxnfg z4)wZius?vCniVF`E&@xILu_lS=kXYCUgOtC=h^n_nUf^^H&TUwo+bZZ?tK zW?*^plHamH_ASe++D1dqmsLn;^=i}mVi$4|7#d^m`qf~)WO}-_x*39y?WNY}c*iRM zE*7t!b%l%*v5|7^)xtLOL&s!}Lg2+BoVmN}5*~4}a|Re9UO1~w3aIXM(u#OiL^Kz} zA6Lo@j*G{4vvp8IK=^yEs~e@^nwdOIGTqF~|gyl20g0`T<8vN0mkFcpyvH@A7=;u(pfu)0$jr zyB^Gx+j`%e*A|GK^f_ zIG$3L^!;HW)tIb{RdWaQ&y|o9?w#`PEVd+81zj5Y80Y`4%zWt}Eh3rtkpq<+cw+Z5 zAH=M>3nnJyi1YVKWA2v3+jUjoK~SF&Wp1%X_mnjHzdqhlo0B}^K;7YGtpVmtjqPL!lLgU%zXAMY+J2% z8(!@##ROX)n-4ozc*a+|lFQAGiNDPq33=7m4}_|dllKV#UOb^_Wqr#v#`}WObnpaHB#eFk( z=`Yg*J}3Ep@vre07q-9pb}-}4?~`R+Ag(^sKibGfGr=SV#lT<3rChoWn~cq%$uLgy zdzbe2=eFM`o?FOEi+7Lv&hM5tpI4gs6m0p?0DvFa%7yY1wJ@x`8eXi<;c;tsA~Lk{ zq{P}Sb(`|2Kr3`q38L&b}wUn znoU};2Xh$N5yYL(xGVxMHc81E{&Mes{w0ND516VM6JI|5d<)zV`f;C^oT{-sucDO7 ziiKo6f_yY;ajDp4*4x3(~EW+6jCOBR(YUz`;gW}^4ArVMo*(2v^@EFW?TJnn$< z?ivc54K6sGDoJdRyVA1CuS+6L#hDtejjXN-Wn@hUfMm0r>>)Q0eD&V0|7?oPAV;GQJe}HPU;5&} za;+UN9^eBf25=){m`ku5%}5%2Gu~gqp;#oIsWA?(M3?s)8%pUjf%~i|E;@0j8a_2g zA^JcM1x!x>lzm|;{-=n~h;ZNKDB7EwC5jKctz?DZ;aA_{(*m?N>p?RlZCs{@s6k1U zr<1L`qOmCFNkQG!O#66R#Cl8~kJoAe z^ZGT?rT+XG^CzNZ8$L)~h%Z^jkMA5T^;0fT=dj`s#5#J>z{Q&dkG6HYo0Vw+V&A}z zk|{OcF{N2z)Jgu(zQ>&u)j6bh5;jK^+wKVFG zM%4!uTidOTcDEkPY=a13pd5E>ZWZcmYhfc&&02IY2m=@-8JQ|$(vcaJz4dodjTyZC1aH3koDC8~24`>|=<1A~LNSypI$okZ=UISeD)EP0?ASod zo_1ZG1kUS`{X=#d`pe(DhdaZWyr#>?-l3~?=c&kP-A+EIJ;ZU~4$nC79Q9kafErE> zVRv;zeS>GoMYi7+(z?^hk|TU{Ad?RtE}ei8rx@r(kEo7((5O&6x6=Y^5N{%xONa4> zEQHqkYt8tMoD`SqpzuL-Il-y{2Lstr+P`=Ij63@?y$t0nC?VSPY}}c<`{QrXxAaN% zGMVpfgB`y_rlPxWt+ARDu3`k6O#JwN0-SEzxS=}VzbV%)wwyjVZ+)2rCuQPt8{4T~ ze|$}usZpXj(*0Gz+79cl=f?ePtXF%^()?;g;x>PEcyg2{I1n~Fi-pN*tQR`F8&KVC zu^YB^l1$=&r)oUlp5Z%HQwygM8E=8JWAQCBl4Rl>MVe-pRK8yl0I;hbC5XCNFDU#Y zas1P_^k3w4i6wb7`raHUjC2`(xq+!K<8I~2*LM5(t9wMX1&-%@{y87(L=e~mZw@8o zIe2ih*%c+b`NDr@vmJ##(;HJtK|ltMLB(r@$8L@;s;5MHO48MnaMkWM?rGNN&WEs-Dz1poRw5XX|i~~9Iv)`ZxgcqYKR|(Bs@+im*s!M@7SxZt^ z&8=#a#{snouW~Q-LOlEb)nmbkk+;w6m3fF{5B2U`!hjlP>N(yWZY?}4sT50(w*wAt z*6mk*rc73);-%^E+YjQw5VRwbic597Y&#=OMh|+9oi1#BiB*bsGzxIB8zL3P=z1LK zGUkE4cc4jkw~-}F*BJxoK#Yl%EjwY476VLIkfiD;^VNsl6B`i`(LFQA(!2c8jN;^x zyjXz(S@bY{(l=gxfYBuH1hsF4ki!=7_te>!?#2uF%yjZ{=YCO5p&yxO0MZO@zr+{d z=gXZx;LZM!R6n$(Y&TRt*Zr2mlM88wP0P!uKTI#K9gpr3i~bTI^{R^rsjLk%&SKV~ zTuoFz>o_F@@DJmx$eOwxd5Wx)3}SVk_@QWNJpbQgey;eFIo!A(Zv%6N&Z}3a*J#bp zF+-4nl%~;UGnjnSfw9vcRPZ|i`t-_kdSfAM?Lz;z!Rtl-*C29!H&na#$%*FMS$4T3 z^Vp@JF(NbxNvIJs_Y22Okk|cbeYhkf-h3~!MFa{N+pBrZ0S=E|1iqmUKFn+D=v=-! zPwn*5f3vK*;w` z-r7Ls3e*hIi}IqH{-g(oA8ikEfCh-7j^*cFQrxa{5$%gI%j#_&0C9Nz`_hUYd<}8z z1M)P}I3xB0a3f9rD98#!&)&84Po$vbD>#^SuvY|ZdA)monni$Jk~8b{q-$1p!^YV{ zli~m2Eo$hz=BqjTNpQ;6=uouoatgF;Zn+A^Bj>42 zd@0d(^uebYHs=(Dsraxz%vD6z862%VJ8Jr%1lUXi{9{i|0YB6R;Dv!)EL=l@zm{--(Qo)FrlYROwmgse-rgjm@w{dX78 z3a9Y#?e{zP{QVSVT+@-MrC)SY6M!az)!$%5T|%*wjeh zf%nVC*PF{V)Q%r|UELmD;|QqZ7u9QU&8$AhYOl{t4?pMV6awG=%3@!=Y<=Jjk-6_e zd%ssilOM~SBG9SDW+CKZ0cAW{s+OW9?b-YOfc1lpXR+Gf>+JJdhhYn9$!O_yX?!Tue#stN`@ z^&)@-1yTjypYLKX`a0dG*=DD==}V_5fM}lMmMyVJ92(1W0$|r^!CCTqlNX3N2MJ}j ziGrMW;LuZ+eL}i>**cQ)mXw2$2BiPa^8ONQt-P$<3kwSR<$}Ge-F@+sVgot*cItO_ z)5NkttTsCGYz2BC&*v%l!=tTgQ>i*u3P7LZPngcr!^Q+kzmyRuG4uf+cM9K21~0x- zGSq(;WPdMEUV{8r4BdB1V*O(u8iA};xTz_iU(8kFrh0(&PO2v~=-+ZuS8mi9Uvd^y z>u~--C*i`nFmtG_b3=P*18J!9Y+bV%j!x{)GwyV|J1R3Lhtja5p@OVo7H87tB{A;q zkwZkVj#Gd02if9P8*fjz&OZS*AMM@R9rXb!bD(+*SXaaGL+8dYn>r})F!tl!3+(lq zF+F+I)m$OUG}$yM7KvjHz%^kn9U<~{d1gH#byF`iRo{bWt9}-zd}ZJu?j>!2iW_&QxhVtT^^MX zyv|7rA98XfJFmsik+@%*9-f``ks7>Uu>rjBp1&GC(oF;dGy^vWrsg~p5Z`naN`sPy zCML}!SGUz>TdETL?dJ5GuqiZj6*=3JG?9gcTOH>on(|w7;S0i{U!TTM92VIxzVx0A z*aBbSE8DIREEv$X7uLGMlh&fQM4#yV+=>oRwX3&TUJs>#y?Y}n2mou?Bx&)igu!ix zCrP9n=ZCtXBn}#Z4$4_^DLZ`MN+l{Ksjt-nCb#Wcu~j4k`}rerkT$gQmGAyQeUGb8 z>+TmF9#;japV6hA?n`Ju?(bJcyHP55+tWvNGji|`w5d5UE4CHIltE8o44+2&jUgR* zR3KkdmO>;{tTaOWv}ms_9K8&VWc~G{AB*Tf3^Z>Hg8Dl>pDWAK;&u(_D#W@o)QAWq>#H!EH)*NeJQLQ) zq8`WFYAeblN5@P_Y+)`j!m8|;vH#2{ml7oNLISqrzBGecZMH>mvs(#{Su}&*-T9s) z(L(J4q{ng;O8s|gzmCAi9k$N4ogT;n9%}1gVLJ|40*5sfBT5d?BBmtuN(ZbfZD%&< zH%|)s(*wN@FQC(71!35gZz8xd-EKv`>S_MxG5;T*c@C)0CO0SG0vxVH;dXf2DMJd0VbFi=MaKXt2hwY&#cv1(APrH)!ZZ z<-9-YARft`x537VRv}c_W<8E&`49Q}>-=tXtN4C1vGvT=d3VQb8Tjy%!ZP(YEsC9G zo(`MVwrzxXY`}TWN$JdLKHO?6=DB@x`z>thLN0m<`LfuqNbek;ZZt0Q($0Fm*$x@Z zQM`vPT%yEx#?q1rVG+gX>m1da*UfFg3oE8?yJ~oa_&Ar)=a1j}4aGW{^%kHHg!otSFf(hoCO;q3;x$hM2=yaa!a9^EVJhj8i^cUq978Z6s`FOv0dY=;P zQb{l#B6f{_ys7GnSU7RpUh48EG3Yvz)Aiq^T7T>E?P1XBghR<@gE*>iJ8I33F?q+NFZV2%_{KI%knm z^lJ#NB{#^4q(!=jwqI*-rYG~%nn3PTX;~W}=l#nXQ@UQ5LsejxiJ--iy%#yx!wmP1! z^Rg}n@kIKfq-vI!%xvYfByDsAQRjHed^y_RDr(+&(yL7OAU-6%@5SCi!9`&!82s}c z_7j)ymjD2ZAC$}#)a8&)=)^a0_1snz(C&>%s2%Nk)6$&1FPgkXy0^>t`Jc{g!?$pU z@3TL!5-2x+%1BWE)6Jj%OAAm})Ch|mP!)@|+__Z73|Hx!$;V2m3>lGU@cfPgA{>3w zZ%X&dD?lsB3xN0uUP#56#RXv-M~vc^bd56&H7CmWOS7L$c>Qd>pF0Wa%}YAFeC%0; zJozd`KUi?~S{*KB0Q#CAME9g3!O_eH-3O@}M^j0~17`kFgR@G~y*qq>UtB1MD=D9D zZN?h0Q4jetYzfgu%Wl)bf;`=u{JuhTYc_~d^o3g<^$Nz!0E_!)pXRDYymJQvJRt;) zxvQo2Xq>gM)kiAe{)0T*b4FEHOb818=*uZ*7dSDepZo)Y<*s}arc$dl|nt%gJe`!K0TC{7y7`w;E zqRwdP_h%la2$bq~$l@ivS7fAY??Ot%WxO2c+tR>K&Qf?2n!3Uqx!+>GAb9iPIBcLa|^7s5n>YE6dr4S#r8G8%m zMa7V@z~G-N2HLc3y@LTK_CI3UEs@;66+|EDrNBT@Ym!541ZAzSRv&pe>tQR{?Av%q zrN^^UbsqQFh7YpGkJBPPuY^MA_nYLgP4V)LfVW!}r>aVSQQ(okr?r(LSg%2AkQV#hLCS|YxQB*$XUvPub~yV?#>uXQ5%YvO|2@88IK1XJ}$ zA07)OaB23#io7R4d!&&AHxv1e)zLBpUdRqbV(zLhRxIcP;x&D$6L|TB-hWXUn(^h+ zZ&mtk?yj`hhwzE8 zW$ZXp_5ll-`RP#TFyUo{#D}|#gdfGJ>T;}qaZXNlene4cT@eMYDGRAfw=k36Z!!9K$prsQm>8eDaOzH)+IMeOS zqTuhoBV>!YH|fyX`aLe;@3#S8dmb(a*nI^>WvO^0-$>3^A_A)9>3-}AUZh7jUJK%K zVBAtE|0dP0e5b%Bx_Uwg`UdqVQfkNmPp5=)#Jhf%;O&JZI`LiV2V*tO*Mw9*`y#~; z-*>+4H)$wyuC-m-SC85N`De5t>M7ba(c4^M#}|an*o89v?wt2qf6e!*)B={g&GmT< z{d`jty(+8Ld+wu5bxaP2DNf5KS$^AD@ugH;sBu~3d1HXvO|#IS#s|9$v@)dG795?7 z4~9kwgI-2Y{BBdGTt5P$FHa2;f%P7wS02!3G?dk8kVk%W6FzH*YN74dnx_Vkxtbk9 zX{X&u#$xx!-I3)uo}yfo<5>GN&poko#~O?mDG#K9*ro~P?eD_fWuLtva31-df)ow$ zK_hF~7aaN6&?(*Kim7LwWs)NrRgT@h`d?2TOXY2s^XDJQFV_QIz+czLMB@UU&|jhb zee$Ra7Y*m+Ob2%ZDt@`sK!Y%CvDoyjxNWP??0J~H{SLwL^*G_q-g+aCLjH-yJSBrVPG1ISo`jd%pB$9%O7e|uG%Rv+ z%6a*yND^wZI3#$`qK!+>oKLpDf08;{;Efvyneeis?fv)PE~j}-tDfVHZ6CKc9^_?3 z?RXPQuiCcW@ly5NLcA774sSfQcaChaYDC{jBX$IwHL$-bi+9o0cqmwJFc+hGTiO5f zWhx2I%7bnjfR1Fv;PVcI67J$J$2;m-oL~pF;A`w0nX4O)E$aD>R$VO*&L|JKDBRRn zKeWma6cI!TByI|0CdT_Dk!;nnF|u!%IT_h)awTcfQIeqCfn@pr1tS-E_|HLBf7Y3( zFC~J*NVzQ%#li_9M@)Z-6WaIlrqMRaDr3V!gXzh_FD)ZSnEu*L(<8s^{{(3;AMw=;`UiILs*NYMR4HkYasjX<%Y|_{#pw zeJ)tf%o;Q!8$07sU#k##vVy$Vkprj*9U4ER^RLmU71zPIMxS!eDfJrx>_ z=C(S*o$mo;!&WhcMNQo3q#Er7Qy*;%UMIYZ!9EQ%8^7GnN`zxui z1>}tL`0n%OIwC^{)dkMX>iI6DiNAQOsL-R6+YZhcR|xq0BRnGoSlHM}yT^t_t@K=t z$z7gN1Xb~Dg+z$pN9Zb!Gq8UVeACyC3rkP%*~6OGz{lO**F$i4^X=+i>hd72>^iV{ z^!Xw{qAv1!$n?60A3OHU*0o3SdaQx*bJT@5rnvHxE>hZgs=(tje=x|HEJ;l5%9%^hi zZuO$1^jwzmUUsR#zS1{+S&O7KxpTVWHfvI5!d3~TW$O2GKFSd_nkT=7aX)sOU+~$4 z^syQ%7Px3Wu?U@#3XFFqp4IJ(T=l>8|tuJ7nzdgbq-0xVpNs)~87j z+p)#(TU(mJ9TTRYNkCK@K(I5*|%5>2ejMq+KJm{DJ|+lw;UEe&+x zo)j_;JpLnNfKP~h#_D=#QMUB;UwjgCwgnxuEVtVkAj07NUCU;ov?h}+^jH{1FVh@i1i(Tz*lT%*a)3But%IQk)b}b49oQSyGgTOVA^#391 zEZm}w+HOsWG|~+st#s!A(ozxv(kb1|Fm$(c&XA&Xcc(~q4&5=-&~pyQ*Zc{; z+0V1rUh7`AKmkNwktf)|N$dAojKpNc$^{>hKh zX_@9-jELQh+91sao&sS=3pMe#?L-%T%by{=xW5Xj{7;F?zF&zh39sn1xS``vS@-zA zZ0`wHdD39S%1YO{{G{yBRqo{YU?wacMo@7vCTCFuDlKxhc7GpGAum0Uno%*WX8b3F zV+q;6FW7iSYMeI8WV4G}@rxIp#O_!3Ak#7H1`5}8UZM}<>YvRzV-5Fc z2lbhsgg@lQp|E~ZK%fqHD_7F4VMKkW?Kn>heNCKbsGC5TFiEGpd)`w`X^1`#C4h-_ zAtk#w?vSaxR@}l*WUdnrmu)wg2Q1+I?y9!6sDs`PG13pnCLGj@&ula9C&@SL&Cg;w zKF>vo@nBJWcrty6T%Z&%?5f0^X5<2A$qKff#bv|rLt3I(x2p%=Uz z6B}K=>r^S8W54L$YM~z79v@1^oMTYzoqmte_`K!lEP zKSxHdN=GX?vx#WxpxZHa0ZG98HnxIIkXQNdotEs|^BY)Ck4CX#`a#yR&G{BYoW*n!+vemp*gDhd~L6AC^TIwEV7aobBF8qat;FuEOO~29Cy~V zKZ?lfpopZ};>e@rm%}y@@!u~?hlgLKDtC2Rnaz6B4a2QKqCy7~0j6ym`VjD>*d87k z1VP~H6UWIsV5t&{-%$o518zw3vS*segl*&NeeumfWvH)c`jUDGGI_7=swf>v#?U~n zi&8B4lY_D$TzIq`Gp`{4zZ#fcJJx6CRLJEtgorV)iu28g zk!4OxK_|86#X|Wtj75@|Kwmk04sB(I9tpL>ZbN7k{)&`tdEV)vO?5{8xG`a2@VLx@ z$d1N*e|4EXtyVlSNL|t1W7T>OfvoENvY@fTn8wUDtt2x7PabNE{{HZZ|nO5#c2flnxOqYkT{YP$N$dkNoy_gRbSHtACz4 z;}%sv_?CaBX+(+Ia$(r-{N+o_@6uFoatNiS`%558kqPb#ydFK4dC6@pes~#h4;gjQ zc-;uZmTLkk_zSv?Yjnyfd;x3tPwlEInIX{^mk)EI5QI${v+B2$OV2urnAG-m$!mKH zCr!z#(VICxJsoDSjB$ZQ`+E*ZrKrTd3K%SV&oypCNGra*J59%%u3rrdWc}kXm~nYi zBg6R#rF*Nz;M3yt?ry=Ua@ux1wj<%}JdM|~t=v20z!PA!4_9~DtnUKf%V@WQx z$a5S4Mevx{XVF^Z$BfJHCzL7s!M|Qdsa7a5WIFW##4}WMh3yHbSBKF1p9Fa9WQ16X zenN6WA!rl9C|8g7v1|`c_tvgXhb$U@#{0gmEySg1+4mEXuyxH06`j4M`~4gINhrd` znzolYI|9pMGuiLtsC#_px503A@NGzq06og8)z`tjF)*h=aIe<|WZd*5v)+8hbD-0V zi(E~9K5ll|@_YGTv+iOY){2=58V|SZ)+$5O*qh*=Q9H*=R-L;0mT#{X4UybB8TUiC z_ul0oSJbHW4HoTmUU)k@o%{gX1?Ywb`)7XN{&*nxAWCv~>PGFo+-fZ5lDm5H56C zSV#6LRIZ@<**=1P$M1ai z|4KZHKnXs>mj1a(m0P*mZf7>n)4LuHlTuiEZ5 z`4>8@8=~+N60wn+kIl8yS%Xc=JRHaNBGL}`NhVdV59$=lN*a_=WOQj z|NoKlWsP2U7<1l6z{>Trv!Xea!K{a))ju5{?U66|eQsg7;hUgv90jswr06#S6Ppt; z3!X^no|9J#ii5S`uhq^sN!Y8Ko1gWa54@W;T8694&qcQdPmp$w)u=xDRv~UVzs9&s z)~eR~Ox0W^Uan_^AMbI;OLpcLx_;eMwrsNcZU@hsbU$hgS=FffYpQ=4H(!=$gp|m_ zZk*A~nI2cEgKXFSn(`$L5Xca8eIYG9JWAK9iFm;3JiU2qVoobu8i}>T9QB2fR-n@@ zePEtB7#1=vHZB^+*jD~7J2nj2jjes(%5g9*=WUhmEaT(Dj=Ulf$3HPpqq9b~y`^+i#)mqiCr__g|2UnX7EBQJEt^1?`C zpornZRl7`wal%zDx*dt?N|RPu2ojPd*=9!c#*F3hi(8*$j3v!)vCV~miqf!6I!t->x!^DXW>lAtpb1$$x(&7QMQQruA7 zfW%xQF=drt;~X^@Mx?#g_?>j>B+|Z5O}O39+dlzJ{~_(U@%i;}*$1CSLw)z(z3I)m zA-p=w4RzAMp5hD+hU5w4s;G|&9hk3pO)EQ1)wVSjQy7L>=ptoW3d?g=1oHrwpU5LH zLwM|%x`kDRWd|0BH(%vwBj8**r=W>Ii*e&_mx(hiaXv8E=U2Ze0Td<7rJ$QN>Ka}V zL34Qjwqz5ie$a#mWjO5Xk7@~@*cHOCj63Rut%AkP|2q-E_KW;+0S>i`07={e$kA61 zdutXLGsh{#lHVro4<)T(a7HJ;z?P%3^2Nge&f76lEB`D*SE^{egQnGd+opIdEPqaC zUae9h5>^qa#uYb)F>z0HjOYvL$tWIAeHhU&-)JG4N;iX-b|S0R3;#voDGXQm=6rCcB%~ z+C)H_mO~<8kd%9D{+k5--3f=rjg{KnjVQ&`590H2{+(?^NBpqlahI&mdww|3OTH-G zQ_)P6#w|Ya9z&p(`JTQD2b*v*Mcsu11H3jyY#ZL(MxWdG`7$A%HsMBuc(Uj2v@%4> zOHrc@lG=*qdNCf>Z#5w#eYvBWrqdBsBk*-IdWZ?eZ+9lZ&vjYg;5OHV*TGC^t^=#HRmRp zsOdkwQQcj`9QpBRJb*%Tu9rYI4Nk#Rs|P;5cv~E(qdGJLa{vd%A~;Y{g4>VFk0y3MITdWnW8QNvUj?a zbvxSa3fjALS3@D-saE-7(Awj{n;9x=SS@++bRnA>6~o5JY*{IIDo1+~ zo}|c`=ScnNh2;H<@j$XJzSXL8-sP4%HsvnWWrU-JRHng3+KjdjYlv)5*RPp)jv6;~ zJ{XD}c6${++-ZGNKzmU8sL=x*l?sJFOK;tWRlR~#2^Um{<;KnB%u!FwbH!EUweQQ^ z<;@JT_DHWAI>YG1MAVk+b6|PTGSef(m?KeQ71smfSYf_HQsI))`=nKOVg<=NJc?G$ z0RobId(O45|C5fE^xys@xvZWwkD6#z*fs3z2bM4m8;(?XXL7`J`)ZW%P+6)0PZz;{ z&t%0D-A6?MQ(#cslhdh3oBj>yBF2x3K>l!WH`P}4Ng1cze|PNvd^sCVD~e8j5WxG6 z&KmrA5)ugKX*2iO^5)q!4Yg3vC=|;1bJD9F8uzd9yHzXozttXZc-`p(+P`4(^jgH~ z+dA*2^Oj+!ev7@lUoHAJ7`Tl0{DOqoMQeDJ9(>VX$-+x;WuOKx?0aZ_&#P-2JK7Bj zv8VAX&s-rrv}MapsO9$M`-g`z-(+YjTJI^_q7jPPc#Tkoy(+quWXoq$k+XW=d;-p+ z6ZQv}C2pZ0Usr3RSTcCx*js+R@op)sxYnT|fNbSY4gLMZEba`x1W1TYx#pm-I&TT5 zesxw^l~=ci!ABKx>?@|J&@ly3p2}K|@wmjFbKc-L!|^dS?bp7CivwzqjszUWo8*{A zGlFiQzUb_oUU{jh`1yd-WKsWCI@O+ELgb-?SD**ntwj>8S5JX{U^@`!-_7vfeTZ$X z=|^By{UOm$t|0eo%$q6xXJWK2xn*yX*lM1ndui!mTFBqn_5)V^#*c*31hG8F(Cvhq zgJ!p9qM^fBI#0@}q?sj+&l^b>li24q*4FvX}j9Ph^PgJpjz&RDFbEA=R0C zBJ8o*DKFG><3V?XWGswZmJVCCbWw7=1rE2=ye_q0smBHGgHwZ1wBp2GD-rARgN7_@ z0>Yb_QcaEr3qUD*ujeifix)QH;aPKS(X{_OIR8hmT_#0t88R=ScUqJUcHnw3w5V11 z&WCdsr*!5gLcU8$vv*j*E-Dc)W{*b}w})34zRGx0#{N7fJ6N65zeb;?lB4^(jJ4N- z1QKmq*^H)0oD-ByDVMmve47$!%Dk6oWM3|ahSM6p-9G#B962r)!M2S1@7eDb*>htU za)yimT;I06 zPwGLXg^NA^%VY#A*4$4gd4ms`pWWywmA#Q9FG!sf1d>0&=3zow>3e(15xuJnn%<^8!g5F`R%>&iy{~g_9=w?u?;T3g zWoL>wEKegZz>H2BFXi(E&_auM2&Sbmcn>vCvdzRf_%l%kM|6csf`8|%s*Ya1E<&l~ zt6=MuF|4r+(St$U1C|F-W_|MY^PAl2y>~62M+K)^30jwp^7hOm*m6jeRuSLu;;AYdcqry+(%l4l5_kVZtn2t-&IXLLpsa>6|K9b`flAB zn{48SlZ|T4ICk!d&QsH~QDfIW<@}9#YoGcUY$E>GfYA9BCTX>oOk zyF3KoQ-@<~_&t>GNXztL%>Kh!5+p5nn8Ps2wo(+c)>89d^#l6MVlYK8`Lpc@K}#LVWE6QsVZ&BGbX|gK?LcpG1&}HgCu#Mj(!n|?egB}0!o3R|BP&3@U zL82*ei5nX#-+WMf2t84N1`=tZRGl>1uR9RBdv z2ir)_1CLzX**2jnp^hC6cNG=Ny-*3l(uSE%^#zgW-3Uh8{XM_aKKgLtXoD_i@O7lv zF)`byC9iRg*hC#s*|oPd1;75U6xl2T-KY=68tZM-M+~`#fmtvMFg>4=#MiXyv};?; zlT#lbhciCr8Z8sGA)>$asrW0Q2=wUP*7LgB_S*9%^2wsx=#jT#RuSR-#mQD%mzFir zUizJ!6`dmTAUKxpiG(in5>X18q@j=;_+F2Ucc$IH>vRvG9rpG>7HKgICbfU=ArJ5` zx5PC3;~xY=r@+AYqUOJCJmqBERo26hKDg?p!Tx!2QZ4uAly4nPzYr0#TXN}v5gjQ> zGso@ccEP1)NBswp@aD==f2?rf##)cjxUbA^bNG*&fa`Le|gGDAK+?7)T)-+SwBH?ijc|*76l?MPlsucz+lxSyp~{5iT7I z>q!^3$FFFyBdh2*L>dvXX!xCXWAxz!g&G+VGg#FUh%730k~yKg>tgS>^dcgD*D2`q zTWuW>-nE%$BpS5Hv-jl|kT$&Gvt$6x@p64Q(rNx7H0S6`Mn!e?!N56jco=iE4&7@u}f&~$ud{4WG zuwKMwR2Z1Q9B_ZWS9l5A*(T0!a;wR1JkNMX{srcZU)a~a$%W2jxsUVa8!7G^U-h84 zjqLW-!{@=N4sn!pQsYD!RcKYjwba-9>m}{go=kVW>X-G&z6JAI(*tW)=S7)l=ljh? zW_CAPLY(0z(HVz#B=J+C58Of)4SnrL$7+qscAV+1RhC9nV2~f5q0Tw?^+|ck>7`U) z=*};^GLp%g(M)YnAp_IZt63NX5IlJ9_}PB_=8a%;K9Wg!W%~XTf6yv+c{wwB=)~?f zrk{-DzdkL6^wR1+%a~PV8ABahOia#qevf3x3=(`{iTh<$Ur$t+qRV3?3H##myEQR2 z-XTKHLuU&NH&;?VNdvtSrM}*{IX7!^_z2_RCdXG`Ih`^nR% zpC=IxTXA}5E_!UL%p6Z;+vebuKeRby9jdVOva}QynpQ7PEOgZU7(Qn6YzxN?EK~re zUCZv6U6m7uh$}<@kKT)(5(MIXc1eW z4lk)|r!T)8x?4&Yn=s?ux3B~eHS}mO5o!1`5%E~ zDTUHQ$FP+&PkSr;bwhh<*WQ3L6z8{<>GZ9V8j?vfIrwXeS+Y{kFKK2?e%Q!%Z5)ip z1#J!r`jqj(BA-^6I%9C5*J@sEV8Z=IUA9f$cj^79G8;XM&hznN zj3)&CdHB!Vn}wMPxG~ZIdY{k=WX((r^{FYzRxf_{);9myt|8qj3y(7Ix$V4O3}tt@ z%FMD{iSoey-!_K6*XjrTIy=A*mC9saIKt7#n8XOPi|yo9M0*dW62|ec;co$PaqM=h z7sOzob8JW#O=)Rbdd!wU091-6xigxbP|pFpDPLt9^w5|i3@q=MimJEh{L=v`XLN*%5iXxHJ~ z2*IC_k$uWeKca@ZshmWjOw52t!N&2-g^o5rRA3griSy{r?}qXIQf$?NA%m>_VpN_~ zP5sb}H;RR@C#&yoR+vU)F~8{Z{jDXki0C6T57Ohxhe890Zzi2FT`dvYWKR*xL?4;z z$Msk}QIG<~|D(dMqK_tvy;e{;jOcPyk_Y@OB8K zDmQfY;AL{^Ls(ucRyWV+4`zH+F~mwDwpcf|RM$Ve*ZJ1(&FPGfVaNE$MP+qp)bW+4 zfht|d_@q&iU7opybWTK*E1#B}%hsBR8&_}r%Cj?VW_SXesf8(mUTZ_Tjx$`HF0W2| z=T5S!eP=OsY8|lo?d}4RF^Xg2)KC%;0 z#MwOGfu4kMa4PU<-FbC#d&kn)GA%bn)-+1dY&mIw}0TTVX9`^T>u=ezLPpj!9(9L25!P_U}0@RW_y#I1?>ATIm-M0)mNGtxKhkb?(ONa>PT!^kj+e4SDVDPb7f0!ok)@o zH$68e{snf(`h?Iav^te+Fe!h#i9PU z`;?hWQeR>s>x>(=Oe@56>1Ni1_g7#;3y48xUul{6-lu8HeLi`Hi=O%?cUP?uAngJ= z0-3uJ-O4n568{JnJH0e{x;=PwU92s6B(s8v1sNK>-6b&$;UCAdt1yaNVPR;p`(h|4fRo;RXnF5cc6jY_Pyli{V_mLs>p%H8NI;cQMik{Y0hrM z|CoFYtzI}2(()&)Y`f>yDl=qnKD_fL*7rNd*9YB^rSsRT^VK2Ko=;&TJ12dPB|zPf ze-nED?dzNhcCU~36|0~N#y}rWIX&ig>m+LBtB3VV58O}5iJfU#MqyJIe?U?zDIM;a z8YX)2)L#Qd0M>cRI#r}uAz;N@@6UD0{^fp5nVYmKEL?m8)H<-~<8%HDEHsqf-;P#; zyX9}Io@a9w8n#|xl)z1h`;MUVRQ6EQ`pTW4>w&)JH{xhP9Zpi}tHf}r49+dUH#M=h zINJIC)lJ!>Ha{;t%R0zP=k5BER9`SF+g`=-_YpE~{%o7*B_=BCHM$RGC^gOSd+?O{ z$j497z=NI%i);OQBJPTTn+ezjnlW5nZ^kfs`;`9O>-JX&_fNTFSaf! z13ihug}d&W;Vi-AEz~4|8i`WSt2GTemrckk?e~d5{ZCNp?QP!sf+^tVTpZBnEgs-h zO5FnynVNB?Q3WD4{xy8C$FS+!CTbZWjt7T4`Qb8^SJU+t9r@!^clN$0|; zf2MVvo2X#2mL@C9P`XrGSztqVH%+w}^G(AA;YO1hq7ixJF)_(MSEk+{9@jJ%;0*<} zHPE~EXO#?6YFyjc@soco;`xgpor{Uyjk8U(QuDZjrsUTRlj0%uD%WyZI+zaZ(Ww82O%0Fz$n?6j2>D=K9ryGhlY@GX^@(C0)R1kA?))3pyRSuNYyMlgr^!CwkE>&Dfz$mr- zxn`&)A6(E&u8tWgP`3VqM;T3Z2f(EL%MaZ1h1h~930B}gZ=hH^;8?^7%h5q3V18{S zJg4<&0-E&Iq;a`ir^cy4lRTZLmb|Fw4yEfy`W^x+)@o1q;C6iV@mLJf|2x{5zkDD^5(mj10bhye!q#r znriw3UVSA!D2^$L>3jL@9Q@!GU(!bannY7tF`yS4YqfupZ3`(wc~! zKl1pqhFJ1;!!H^)z7BdETNwpUD^|+~C3=J1@2%0hR*|1?;w{OD--r9K&|Ic#$%IqGlo#s`}k{Z8y09I_R|La3{k)oOTq0Fua(0sOt)L)H=Ry+`ou zri6o}5NJUXG@JV2xZi$uiOB1voaXa489uT2r+mB(wiG=YznjLJcQ@1Jy3$3ueQzddlXRUY~i zI>O@0XSKt%$zQ^zhgV~LZ8JU!6RXl{^p1Y(_{LO=Pi2Jdsx6*7*@_=6mw9wfJCsln zURjLlJGhwu8M%K7Eh*m4D@5>rfqbJ|=aZ-DO3D!;1f}P}BxFy$|LG%6bi%{)cLPOO zg{nwKdcId5In`O>;?y|~XwLg4FELGD4u$j=oqo=%N3!qmQO@v>d7m>NPYrA)q>Nr5 zYAxAmkD292?&EXPb(OJVC%umMHc#j{|7=?Xh;$IhP{KU0_HQoG<+%+b z4TgHkr1#Fru35o}Mq^hK!IG8RxwYDQ9MeT{xERO$(MsxAJL%puLTjz{)mmNIp>Q4j z_{QE-CX|IlCN#!%QkMD=?8MU%ac>SOw=C zWV+8%5QCMCLmwE_y3_ve!gM5ED-uTC7*Y-SnoxKI*?R54zN>3m0?4tQf!3WCisA)$ z>x@T-v(9dlI833RvbN?sm+X4%YRQrgYMaS5aRhL4#IvLn5kZ}Cu*>@~cESlBW{u0K zj?se4Auzm>M(};d$T&fvYgR-8yU=FcNP*dwTlUUt9;KVOZ3^z0Etz0wUaCfGAi5cu z?IxzGcXLsaOraPwt}_ty<~S5L6uG2CRH_AmcQb)X@glEud9rs&!*y)BTO^gRlt2+L zLh@4MIHE^IV{U#t8Tz2X zLh_M+VOGRB3GYWVS*fA#_qOTUA1bo;20YhPc0E0JJm!fe%X;qV{!zO5(Ki|{KBK!a zyGzsK;(?w<-pElHihY+^WYVU(>2)6bSRW~C&h%$;qoUss5xugJqR#V{0rVIrM@9zW z#b6MUDxj8n_8Wt`_S0+dL*bxhGhctm5jW24PMF_@Z0rO_o93$uk&(K3tR1R7xAfhk zyuoQME@F@cI};<4jc$~r4;dHC(_L=)ysHv2kdnsMEi+8~m;8I6?{8E~>0y#R`#nRVP-l63cw7<2d5)*SjuYQq0j-#|^+=m5-zmuoY zP}2~LyoVvN8oHqpkLZOYZsPl{SLkg*7MmM!056fsQj@k-dpl`)xlOYFFb@gpMX4{u zZj&HS=&wg-?^w>mmRU^3*eDA>g$h5p+Q^svsv%O+ z3ZQu(=>X+C`trhwL-O7eZOZ@iDJb=Qj`;Gnhw9&Kw~i^EyOl|ApxPG`kByXpL1&*u zcV_6*M*A5n{c_c&vGYSYuWB1yF7Pep)r z(^4r+i7YN1{`au?lU3YbpQQ3`mHbsfQt_0+#rKTIcHVE4q2X2I zSLD095Gl|nL7N^YDF`X=RBfl+VRl+GBW6J9rgL@7I7(XiJA>6!XS`?vXJHM*<5Ws7 zB&etZ>-wH6T)e9~>AwoN9R*2mGU_Z4?z`hHB$O@?!MP$L^DFqWkz&8e$j&istyqsW zy|C)1cThzrKc`dNoyUE1Xv{P9NsAMB&wbu7O3$GU33GQmC36TsL+0&pI-w=H{zjB* zVr=!Sp+SYR!nTWwrb$b5%3V(Ht6?g~Q%&pqC+dGu7eQXXnf=3U`HsSDT+B8aEscCJ zJfY62G!ki#&i5U?7U4<6(X&{kqgc_SAC?bKE^?z0MvksAlmCKDVm5*<*;CH8FvnX_ zUN7^2Ah`ef!5*aV^ySoB^kM;HX&#?dWKUDy|LQvmtbfzwo2`c2z(Ogtl%b^1$d6X7 zTFUc8yZmeRFS{+qx;kyM`YJKDIi=w9+{`s-adJ9sfx$@gpax^g(0HZq5iQ=#!w8cX zcOSzUxd3y0f@AP6*6}1_UzLSpZK;Jo0Rx_YvkFkChrkp6DT9uyd%s2LA2t_13HW2slq;(YT*%La)SiJJVovBgr% zf|3eq4YSE_`?G}eTa$;8lvjd&JcZ$!u^6?))=7WqXB->hg5t!acp zADDKYeHZV~vCrgt5b|J8J2f}T(KLkHWIaMx>p_1``^7y00XgMIU$;cjJqj?H^4CjB zE~uqJH;9DcrC+yM0Jym|4(MeJmma!S<^-E4{{_%Zh_nQGWx z-JGx96_2(A^K3GlaE{4X_^0ToLf5bt+uIKIQrl6f0*0ay-q?qs=(>9;Us7 zlDu4rdcaoWdgJ-m&x@a98Hz`{)pdzE(j)&Q4V!-mL`-3#mZg|moIbd@%Ku{m(V`H` zWF951%%F}e&1GtU=zg*L?e04IgFsjqYGtLVA!(?4C!DD(d=9N#3yi8k5>}P`&hc`* z?_zdzt*e0fdKV*KLbn-ZM83Fmp%)9(;DEye&MEe=T(H{wPwb&HjXo$%S(ze51|2){neckHlk-9zY7? z&!VcdUyOKp7?vtYPa2j14F?bW@_02{^yI(c8Ni-!cb2K0jazwC-`*ykUa{IiSPPZ`%8~FpEJYPV3?lu@p&@jJkQf8ka;sy zJcjszE)dE=adO(t163GYaX({LQQTk37?%G8^8ZF;_@^}KB8i|{ML2$CwoYF;;h8d) z0~SG3$uAx{-JJkP8#DOID3XA5pl_-?EHW>%Rp;x*kV^0Ut1x~O14&ns*mYUoKPA8HW_|_7^xZnML z&aDKuMu-^mpQ^;Gt72^R^TQ=MS@OeE2^U|e@nZ!pG>XEpDF*As6z|93$raXV-s+&2 z!mTo@`FV^eK$GL)oy<1jbwwDO`jXSCP%*l6Eq>kjk)(B`E=OyM#6MFl>Y- zm|-BBg9VD^t505K#qFfr%XZwO?0X~m5r0MZ($%uL$sjcUuGV?-4%2yHQ%IeC_{+oS z*F)SG6K$?Wd#eQ%ySb759I9oM0biiJIMCwk|1l~1VR z_b@rNZ)(gR{5yU2y@g+F@z6pTw4driYY#vKS5QMuZDQkRmg)aErPVaPAr(&(lk{x5 z@?=M1ee;)iV#!3AOwa6iSIGoqG`C31|2y5~Z2i5oeSZ}QkZan9(WEXI^U z@n?`JO4sC(326IO5(XQzAtXt87t?CB{NsBk&bD7ChrKv9e)}r}{}ETRQ+tZ%*40=9{i4b#SrkF>R5-=5zF_x%KIeiHn-N0w|+$D@44qzV>nDF$j3A%}78vOWA(dlSZ zdvlkfqN@V>_H2F-GHCSjEb39`X(|^mpeF2yiJsU@?V}kCqdjF}6TQ-sT^5#p;0+%$ z0BMtyTwHwJcY@=^On3HvcAig3&JBj$3{p_2eKEVM`S-<+-uN_YP1N~)dr)fWzOUFY z7;g10OBc*2FOa*$M`42FNrEtcIaYA4@P$uTHr$MAcxHwuIKcN1eRKRR?*=E2luylm z7Qm3cIqm9wn%lcEl%)grskiW~cvHZAu0O?JWXR+&nD|hoeg1d4^G-}F-nV?_s| ze@1d2to@6If#J1So?n>nZf=(?kn%ow+CbFpD6M;_-SpZ3cMEbqo$3OWs$@R!u8^q| zrTtGn>UFoKBB3P5daU!SbogtirNeA!VZ?eJ_m5{Bjmj}#vTYlU1P$47povY2f?F#NSp&eprj(bb{&@Z=bL9+_3 z+UQJ>XsF4TRuaRZYgmp!aq!?GZEb1KC(kKc7~>o$8h1+{ngP$W?I)EMf36_{|lb zv<+9I2YSR)oX2@>zfcN^PxNExD`~vy#Tfa*g^Ib*&tzxj zjjmT`tS)tP2~$G20Wf~^O2E^0(1P}sy>G~M*F^n_5M6EDdDrTzVN6Y;%k~b@Yv1*; zijK~Wgxc_fGYUd6?itF2aS_&C>&wl;>DdxR7K#&Dn2<7pvvV(4TC)<35p{dP)!=$7 zigO|_8{2K}qtk0w3rd{S64}g^{_;k-skrjl+|JAIzT4Ln=Mxa>!QOa4 z>?=&~7!!qa{6`WOAEbkVd^dtGUr--X zRT5C2ravERsqb2RlgItTz}Ot;iBz8S8Csw1fex7$-DTmVQVdxw4r^iZXWSW0-kYns znAD)=IKaP@XQ7&Ryle2I)&O-(j(g}d#cy1Km_Ul{My4jodn$p@?BKaov&1C74{Zl+ z%37XjZSWO^zx6~6J4J(5zPynnIm7j_?&EtyfugpN9|=ha@|va(PS(uJkN#I+J9qn> zbdc>N=$l9?V@^*G9A6tkgxOWq|8#B_9s(Nn*{p8WfmpHz>PM`zDE_9~=Ygv6BUbNL zkDSH_SHlmc86#`FRig$)zn5r}_0^E!FylJ2(LEc#JoL$KB@cZo5hMW)lV@&x;N-IX zcmfqO3@U09q})I9SfD~i@&U?;_}%z-_O%<`;t=O}aL4R!3FHeJL2ZWR)V_B}U;yWZ z9NUYhr7A%vp(ylNN5wgjBI38s$4j-y9F97{*jaOCm#Ltdv*((o*YYpDFS!6c1a8>X ztZ2t3dK|Xz7~Cv=9zSj3x>{b6^8+E)R@T}Jk5)M->H6u5?>%fhueKC9W#`*%|0{$G z*m?P;%>T;5_pugNzUd()jlFx0s{VG1j$^8Rq~Bc|8X@-JVRAVq&^J6XdbG2&E@z<- zBZHxmA%cy$H{LgL@D1rK^bI?rM|3|u0nafTE-IbX(b;DAnrP^5s>k_^0Ka>bP5ok_ zyuo?f3gsPp8kyUU;JTa6Pelar=3iK?=u&dsYh(j~RSEM{2-x zqF#?wCD+@VR2_a-kmNP~QRpxL;2)Dp1_uh1+g1%}Jc~SFoM!N%U%~GlY;DgA7HidZ zT=M*o=Hykw;5K1yS=i&#eh+krb~b((mLCQ3R)oG?ytcE|XJ>l-6$+JL56Dl^(YQY^ zVTvD!e07rqxrw9+(?=-YkQJ!D+G+U4ru&xRRk!A^Ca@nLW`O{S->vzDCt6dMDIGx3 z!l6w(O*D&o51HtcG%E(-XI~(?WDCKlnEM$Da62=m(T&}a2Oqm2uavl(Qamb~NLN8b z?Lh)ZtW;Q3*^MT2P?I&T(L!LS=Z8lZ#qrL`_zwXe-crJ}|6PN?l7`J}q>+F3L4JOK zY;*a$XXJrz*Wk+214$q!Gm>=i1U}i@Qz3{I|7ffALuGjHLSAUCk?+Rh?Zw_{&lJOD zpWfp15jCxUeB8qFevQ{|eKl?OsxuMi?3&)Pu-dop`DA1$2yUP=b&h_owEKREar(431Ikz3+IM#ogSZX^x8X6nNG9SdZ>|Ij9--SHiSkeU86IDV(aV z10-Cmt;qnltML)PS4;RlRe|7u9i0Kp8p=edL`}#&6v3 z$5l(&RU$4X)k5@g---_wNaK!H9KAC5%s%=(T{>>1W>xfo)?S2GS6VQSd;yeI>CV3v zKWtk0)=f&1{*!qvBbm2Q6$~Pi4NgwQnshhGNeH|blxolExC#BEaemhhJWpy7UQz5C z3vv#WH}6S3!<_PS{n@0*>+XqTv^w)hKlaBLH_GlCQlt-`D^zOiZvV^3`_K0GO{Hm& zQ<3;mKP{OxX6U@(0;|fw!zawXRXfY;UTERx@afwSg&p}bIJDNEJgh?!f*Q^X3 z_F=|i|0uv#v88VDEr&N(UtV1Hkz)4m=zc+&I9TM=BZ#sc*IoEuZqrXUiKIWtFA4~{2Qr6$)RYIrbeV=xA`VVj3?pI>{ z)N61U$nji_d@aEtHF~~C+PK*nC`d2_NT1Tl3OZd7NDO!$_dt~I+BX!0G$g!Cpw_L0&vfA*nz?o zO)}c;dHN&~6Lzn+Lm{C68c8_oFkWinXRxW8mx zO@j}8t@$P#|9R9Hj8Gfk71?=NPxA%*>OsF_>u@@CJTs!{MD+B(wedZt=^TJ$C-bmEtK-}aS)&L$A+>i88wKya1K zsnc+W9=aRbTtGyfvrzkMEHLO^z!zc-@>y0B@T z8|#f|MH;VDx)k>+OyHBgQvIK{6YgllZb5DLOR|e#9Lj@$AvHww4V#oIVUbq)5h!QC ze45G1h=hYXTFm9CY>+XGprx3De{4$#;>hrqAkI>Ls88gygM`8m8YCNZ%zYFy%TP#jwiErB4jS};{xZ*Ldh4Pykkb6SF;|8wc zP$^gY>M>q1L#O;3k86*I|3lL|FxJ_1UE8r6qp@waKXj%y)}k-6 zl0S-)DH^(Sa!@6q3(4mN^B&=SMht<#TXX2ubboh}&(8U6Ek)$wadjc4 z=BnVX>+A2`K`YL?8QSeVv)tyJGOfJ*YMStAoz8*HaGQ?qulheR8FOzY)Gx~5^MUp4 zra5-ZOXm%ofL+Rw=)PUXdHVgJ=oU?WSHM|Yi;?gWLWr6}A7}Yod=}ow^l|Pu)m29g zi>S1EIBGQE=Y@0L%xQ>Yp!myZgC7xIHdjrXS4j}byG-Dnjv@DfbfSjp%r^fhe`P^Q z$|>)rm9R#`6je|s9OjSy_yoH~9uAQoR`0j_pDHAR;0L2mnRq8zIhP+!gL|h+h_OmO z@&!ry_%iU^rf>p6#vBJ;Ok|Ctm1g{+FF)^OJ=pvIEsR5DX94$R;-hR^GSPkK1k5%xH06{Dx4b|!PT1kxk{jlc3VO6gf z(!=R{3!HZ91ldvYdTu;GH;DkJH%B{L4+Tf~FHBB?h{M4+^X^BsuR-7H^NWW-mhU%J zMQiD)O4CBWEW@9l*m7w$YNt_vBfb>ksAHD{DZuxzXkdhrK2&FHtY+||O@)IpnN$_#I(0N^-&rQeDj~_C6dHxLvSk;0?6{JN)V?2wKcWwS> z>|k|puJhz&P<3yIv**xJ{S{jYPcl$h3?@)cN0)(#*Fg|^nf)twOey=%Hmwne)i(2; zZ$t%ii%qPC4eC3wtB_|=BMo`KTNWleer3s6b_{Z?O5dhSr~h?`GbeLr*K3aZTqK}O zQY1!vDv9;HnH9cxX_(9NFzW~NXJTW+e@-B_{pa3Pa|~=|Q`<|_2m6M2xRALR7V|MU zBRWVhHb=+3q-@^H0M02M*By%=B`%W&h3{KO>N|(4)=YzLUDveo>DuHwX9W7|OEf@b zW3%;Y1**N@XJUIM5qR-JroW)iT>0O!1}N3~W3(3d3-D@oN)kQCrp6_`hPNB_?`ur; zg;Qj7y1aS0>^Gy`!r}kg?9lWq3X4Hx}r&I;bFRaBVw2jy+ zU4!P+c+;r>cP{Qw(lCG0hu=!<;!k*=ki|yzBl-lsR7NHAq8Tf{-sy-oNBuYv* zPXF_l?hh6ny3ND3{6?s8-wNIO4B)sgcvrj7E!bCGsNQP7 ze$XO-?)p*ME)hD>SyMMe2nfd`#n9Pj**6uaj z|1M>T9;dd=-PsEM=nInjU65A54ET5!>DSIp#?B>1L4nV0z`O47%a|q61~&`Tei%dH zc*epXdl#SsI6-p7KpdUB>?J0c?N0f15XTBV5coQL+E1^q|M}+3+@x9A;vX}Z8(?{3 zS5vaikq=%y#Z7d1Ht z8~5%QqE2pV+gR!aP?~BShtsAtYeR3-#8MM16V3UvXbCV0Rhoo}w~Q&j;hwd; zY4=&jfQv1&2YIcR6OBXd`Ha`zKesb^a_@WJ1!QUC-pnMtHnRbiZ6;+N=&FXP;N$YML6y=@UQ4&q~ho(v`j3m|xelv2$y$eIh7mE<{?*{PAH|7eNM zR_|I|Lc*;i9?#T`yFea^v#4)Z@O#K6OwjRlpa8y*b$i?XJtmuP%YcGAQcODWD5>`2 ziNkj<_`sH;o29Ndc<;9=oda;ZYV#_jn*Q1VA=K0CKT@NRTn&#uhR2z*uB9=VQdBx( zPWU6>3RyGChJ0y|S3{tmX=oYIMW$2{eMoXlcz)ksd}RTf?<#=4Hij=+f<#KM2DY;2 z9c>ir89WBde)$BGgo?j+b_#J2*#;F4qqI-PNZ#U@04G|1d1VMDF*qlmj$uhRtPwcy zWZdvx@1{*S{{5P_O8TD}|2ww-S_8EIBzilrA0K3I|2>1-axsSQ_|b|J-qy;zEyvc7 zC<^L*;=49(EPLh27Ww>RZHGO>-i5-ZU#^*ks-pWyN9v!nIp?0&XUG=zFH?fX!IJYs z25j6D`K>E2BsQ{}wM_q2nIsAo+=qf7B$iq@&`8U@PX2oj%iGJ)n}-m{-fk<3SojID z)E)?Gm&3RI^{{3bSL4w=FgxP+PB-{0j65ID{y!UlE zA2X_yhR7P8rD>ITP4CM1m-S&QtE+tRP?pG-SJgHqB1S#qJg)Hg9G~ug505f0qxTyq z_coF-t*F#Ene+$Usx(W(oRZ&smM+K$#|rJ*E}mm7ugW{IGZ7~7iQ%3PUTS*2$IDe) zCVAX3lp=$&!Lcld~)8uEO=`Vze;Y( zxOH;U%Q2qNj&hIV%r5L;xQWRhhyehHi9g^MO6m#XPS;-KnF0@!d5)W+dzCm}wu}G6 z+cu|b@#D`H-AcKlx3Fh2`=X5zNUt7>#oyU33zCm5coIKZdT(^nU=LK;?vQZ%=%x0C z9{$$WXGE3pt?DZ%Q2O3%84MnzWFl4%Q}6VMd;X%cRQY5zb5 z?be;=6h_9!)0KTvPn+3wxri)-+NB!Z&Rk)uTAt{zL>h04Jq=7CypZm^tK`i%zxiK2 z?(-;aeCNcF-g3P?*K|Iy{F;=g4QyjGX~U(^!)EEniWIEKieQFQCI!h=$!!XY+zJIB zy?Qf(fP9kBRM^IdQoBaAp3V&7wSRB9j@>0VqWwTiKWzU#&SxWSs<%UP1*$Rmm^b}9 zCcyo%kA-DX{B9&FtjKwEd@~{eM_+nc_zBY~lyu>c;`iK`2CGCp3_2CA){7`b+L#GU&F()uPUXsQ zW+3*t?CTS=IlCB|BP47|xUe@N5fS14i>4>|LBI!;gP;8zRl_*qadoXglg^I!Vhhlq z5eh9QcR})WZ?8Ja5~wW_b-DTdFJ9T;5!R%D_$RF7Yp3(~Ur72ca*$sBix(5EAcjA{*5~GS75Ht_wL)#zzu`NW-jZ-Bm zTTXkKh#y0wjPK=%T3}L1ksk_~F2(J?sVM*a$mZSep$k$Z zzD)bI9BAq3l(n)#u%f4FC<=uw6CdvMyF9?ck}GYwu)=BYUB z1R{jlSh}EER8~Cn8Jy>95W~C%E!S7d%_pt>3t-o=(9(~j%I7(`GO0P)pzb*b0Ih$@*Ms@vX=w|Mhj;`P z0~xVv{*u>aJw6CoRD7JFAinO(B22PBu-4#m7x*~6AQ;?~tPOr*>uN4~QVb8hZQ6ke zQUHNGM?;GDMv}(i3qHZReV#6#AftEK1?^M|4v;)DBJFHo?!y=E(tYNq`Z$Ug-8=Ia z(Q5kkPZrfXWNwAo3$jH?gt@-4B|GptWP8Vshjh=mn{Pi_JsRu)RC5;>0)J~~KC;!<>!Csf8x4+P3dK(~(xAX;MfYSf9|2KtPPG+8N-f2C zGik!yz#k!ixs+ZXQ4U9Q4s1fIwOA`fp2_1`@WmSYo*~behr!I2E^U zBR4!fbpqf@zv!M{&O9e;r?Df|;L;Y<^qn7(!T}CQd>Dh_0@cn0!;MzkrUI0uft2bn z6-%Y{|dz1LT_G+XWSC zTRWJH^vr6?lVIGwS>e-3o(X-%Os#ZQ6CYCqIP(GbT=D`}Tk~eqA;Us+ijsO8iacMY zXcSW*qiq|F@sGY4PCYO|!HS8M=Gfyu7%w+^!FGKnT<$J#8(`Kh_8OLOOqV=pQGJ@I z`)chsE6rHPA4c?cJORS4z|1z95uyL6)#jwkU!usLJ%^>pu^Wg=I5@tYQM+xos7Y-f zR(qqM+<)6f%EpwUd?(EEL!NSDj0S z%Kv5l@m>Gy2H4ZM(c~}kqG)84<(={Mtx%E zuSjsc?fbmU;AE#kLnTv^%N*$IL1j2SitT6kj439-S*v<6b%M+prRWDDw>N=7#}2ue z*QER|fmIKlnGvt*M)UK{8^iK}UPl@B=ub#R&S6d+jo*AYh*!LzI4Q_v>X&2b{s*E# zZOfnqv(Su)yrQwMy@WPs5u>GZ2>~i6VfN?wj#fg5?R~HCDBO~Ab$6H(>!m6zk2yaP zk@vIusiA`ugBUD&b$QS30}fl*ZtL8V>SS#BT0Zm2Y07AybTu1Y4(nPiS!+LaeH*Q2 zM4wE^yl>Fu0=BV&&)nXZp>DbLU%HfpCF3zE)&1kF)TKRa(7Z^fG%pS^o!yyt#z{aA z?{WX%mMel<&GSHi#jLt|TUwRm;ND&mE}M0x6X%)d;++<- z!QBdf$oOl3p+~lIA^!U<4;|Zk&yE8FQKWgg*2Mo_g*R9TXE^{}Qd+T(*`q5=)nAzy z;cS~>YkkF)z?&%9<%T#YVT064kib8U$V3qthBQG8pZB1aw=#TIOeA<~v>>78HQHST zYwPl#1{%?6X>=T1^SQZQFluVPy|O?GW$n%V-*mM8S}+;7a4&Yvh_x0_@9%nWurEi; zJRMk#C1sY2fv9pMIsDT~G>`h2=!~Hbuy>xB-@oq?T+{wcac4lNRzf#SGtpXGORKfK zodL(ZEVT%VwJx&w6 zQ>!z?5%Jle(#IpL`_ay)xNOQx^**SSoYSVHx{&o!eccFJBo;m-E6lICOs4vX5=|+b z;BjIb80Z^-ZbuecsHPnj1zt01T8}D1JGKHD;CDoYRp|g)uo5(bLYU88Vsf;ZhL(NiJkK z))BzP+MY3MJT@%VmBvdk3gUKknc4+F3SpH_``UpmM5k2eso${$+`%i`nrdxwraVIS z-v}8w5iZ1!}#&vJ6SO5`+^kpo{&R0k_`Xfkfbb9LHj%4s+8l#2_1(i|FWk3$h*|b0E@0 z=3D@8y*V7t^w1Dri%gh;V-yMeF+um3UCUnwOyRD}B@0UjBRi?+n!4+`NXbCszZDgh zbW8)t_*MEuO%IOJS7bw6=!*GOL(E}=JRASUO{sIxf$q4fYA-d09}M8rxOa(ZZRPXv z=)bLL9qoW7?<3@~+n0Wy{D+h2p>s;YggE-{q{zZ=4glk4CCv)>@65b5$i6Q@uvh1o zn*q`3+;Gq_4pwne=0OX)53OGb?lc{UGbL7{vE=AKaT}lCly#*r0=X$F!JJ)%vnsw= zC*92u#KYh48CNLR}UVpt2aqGq3y)l|2iR<#8d=7I+GnU_;2IKRD+lm}{RIc9tn4S$k6 z9271SN?gDEIlpLKXu(TMqPz2?oZKQvH01z^HNVJh)E{t>au!YbL~cTlBa4e@Y~GHR8y9tWv~(f>Id8R8$1HY*r(tw(c0;_Od_w z%JNh8s;UjXS+AA_E^)xTKJ=ZIQyK2iD8yxpK{Qy+(yqr@W>q z78#FLty8&=RBh=vo%Gb9Y>M-M#dO6cZVj+ojx;%{&-C#K4pb1OBB^)*_ze$o+FiX* zz9r~kIu+=Mkjy$|JRcPCw9J$Knf2J$^H|q&g|?K4H2%uqex~mX`>0GTuV9_xmMhZW zx!tHing&<9-iz(b1$UoHAEqVmZ--rv#2+v=&XMaBvcxa6VwVQy(Z$C;-;IV8;iWZT z^yKtxvFgsNrvTcJJNIOPS0I!p8hl-NFp7j~c8{w1E;k-F`$2P#$co7Q{s)8AF$}zT zTE;>|A9k0&y>0N}tXsd&?Xs2lOFQ3-7Ro#fnCgyT)NuIB zVV+4XIH=#v1U|^r)!m-+5!n4iiCu$l9uELsfKOOdOR=F9GE#vFY>E5mO$I|cZ#<2* zbz^86)(ui;d!s7}TtnG)zq=AR4xm9)WP9I?{^PVx=H2OllvVnQp>Dqv^1k%i>hJP- z#r)&Z8!YVVPzC$QIH|y^-s4OcAVLGtK1l_}H>H~KKsWHb3ZDZY@;Edci8`hYpdW@Y z4a{XpCgLFO_T1)gIg2>86k4Mk;iz=3Li85e@g%BQ87xg*=}cPOo{$I%FW2-5<_#vp$H;oFn?NiBe$&( z;N7Oym^RLvMkwZffO2>;h92lGR67P!eP|{=PhXrW`)0k7-B0SI#G!%ggo`t zs6@E`cj1kbcS6MI6_P8wrJ&&{0C4hD-}c+<`ZFMr_HC^$ZqNV1S(R)unqm$-#jNC^ zQ3t$IcQn%C7pYxI8F-ih`Obkdj*4ZYZ{t+C4s*-BJ>B{+AX(8 z+GsoS=<(bp=1b=^$FU@JvO(&WH%_QblvJLXNTSv`I5s;~R3=K;x{TwhR z<sHomR4F410blCr@plLSRhE{*UwSUJ2dlle?8WrIJ>O2kTcjmb z>NM}-bU%e`6D>E{rsqY?4aUT3%;aYlcUH=9OVYhU_QL5hg-U-G(`M(@1}m$2bPD0! zUdYI#b99C0O2iQ%nal*PJPp2Y4ZRAx3pQP@2QBoHpxfan<~@%y!ppL2mi}F}Rfjn0 zF-w~Yks9Z@!^p6@UH=2~R^N=njCLeEx$}<;OmARz&J_tH1!5s68-K{Oo zo$76T@o6RL1gjYjQPvmE8pDgNI#2!)xO-4rTR+~ub|LOH3E>R;U`R4s=*b~3W!+X# zpsjMq*gR>Lo-I$+oJJq<-_^$4)|bIxvbM;}n7m9scU48>k&lH`BxE5GhVk#B!bE3^ zx-HoRvc>mXj^F+qEii;6LQLV&S=CxLF869gIOIglHj~32E}VUZ+IXeEduA+?({9|& za@s}X@m)X|*rSE&XLXnMS1M<^V2UN~iqLjUK!8_BCiFF)>%am(=bdd3AoDjm2<-1g zItMr6-Kz0W`ZFki2cOetz%0Z*nj9a<$VuvWL>b_6pN8<9gw;uL_xbVIjiaNdM~KY3 zkDB2;E5ma=fKh9+!lqfN4lqs&G_|mRQxbgVAbPp4zCOy2jR2Jh&Z*L=VLN0AyKAT6 z-vGythx7UX!E;BJTZ4Nt4NY7*xgJH*=^@waXJiFDv{>ign5k%r3ROt>G-iZRR=m-d!kA9h$E+Fg_@ z=H_y*wAq8S4^Yb>i}m;F+CcF0t*bk=Y6v)1taIhH2V-7X+h&@ZoGPt$ii?+Habu1G zp7Isseb73ygZcQZ?d71+xKS)aKoHayre)REsiSZ)fjowxp3obY#j-;fxg3I=#X68l z@PiRRCT@dhkCPrOA`Bo9#_8@9EybApNdZ_)rH}l7pBbEASNdOSs%&vNw1`{#4n;1z z5VErF7&D4Etx5AtB zogUZNC+OdddMrra8~?Ag{6N-l9;sC*#lqB|mHO4~drzqFwE&2tm)fG%9_t=E2M5$x z!H0j#-a^F53|eFrCmoKfO@IEt0OI-lLpBx-JdY^_9%B8ruc@njNUk zf80Ag&`wHb$w`Lb*h014gUr_n5hQmW+a*V2`6{DAaz)@cIThwZ%OpP>Ot$%<0a+>T zj4;Ra$of&lzL)B{o(JFh7T%+!F%?q~FO8w$i*@q%=-?9pX|-7r1h%fPEr)=ny!!Ol z?DqES2rJ2K#Sq#ZJ86&Dv2YFKE?^|7J)1r{b5BgZL!XE+VlotLVi&~Z<}h|OC) z%H%mX5S$fhR#fk3t`sl!rFV)8Z+~%)fd<9C&P=pQH7E7~fH~u>+4K0!2WseQf zV>pJ*Z?*6Xw}n32+dTFb!~l!z5d&rg3?Q*6rum~8SlgsoIfn-B|7+LDP$NcvCG$(8 zViKoGDB4-}RV?NwK~h^C8=dkZ0(8jGI7+eO=fNvL{~VYWcC+4y#OkNT~{lS zwI?N%VGyVo=eqXDaUl%|A`&LwBl2hGmOuodjfCM-|8k<7dNZW|$s zOdxy!5_86Eh z%)27BVs-VfeNiq}rWcyjA4CneG;7W9TJjngh0WG~l)4)j%9$~$wUs*YX zzZndtj3;T(dc0Y;`8q0G%Zv{KaE#`o2X`cT#IaQ&BnR~!r*low6Klz^X#mle<;tT% z(n|<2KFh?2TJ#WjDp37O2AR2McRqw*Zzl&cMNtT+o=l@U`9+f69;zod>$7Hnag7nv4zI+}GNdfPvEX4G9bQZo2A zFRpsb-176pe&{Jse#vn{W12jTWMcn7I<(U(>u7`nfPC<7Tes|_)AeovM<5khi_t(A z10Xx@NSRIyKq#QFZV!P`lj^)zR`e)wtL@7^G(w&1;D0 zOa-V}jfLqBF5s!9`d#-|r0IeLMDgnRT$z1+U|!~`Y3W=zcb=?u#ZSGBPOk1Sex>pF zzFlDL;ad#+jyuurBg8!27i{ZM-$Yzy^smp@gC|y!FmlnvEN3cMU%nRj#o5X4!vwYj zej3PQ4@vcC+&YbG z0?7Qd!5zv#R3Ozj#5lhdB6Sez=&RA1fvD2f{QC9~jGqh%U!l<+s|%(aB3ax(k5|5S zp#)Um*-5FTs(BWH{@(gYKu*c?Gl(G6TG$iYn+T_m+#gV7&z35}hc$yX$#Uu*_ad%} zIuZ?SBljcuA{^pO*%&0aDI5HU?4NKo7CzVIS7> z5(2LpOMZ`uw3UtP4u#1 zFsSJf*h5WUi#^R6x@_xS(TzgAw3suq^If9^TW3ZGZaqs^CsNqi)tK_O-tdK`E%G@S z?}g<=L&ri7MOoNP;T46lmm*(g~r9%(>HeQ*j z9(L;@r^X}F_dgYoRcY<*$eQJ^IS>y794Nf$myF^tDe1(WJqvn7^bACUGvxPM-kH4) z*GDEp7j?2EAW@wKfjcR_8JrW$()&bb8x@oiK=$^XqhfmGi%g=h7ga*X!hbirNMVOZ zR&8$;=(pYwr!kxC3%it>0)fr(!0N>hzhz6&5=Cu)@f#;5cwOT0Q~qmQ)~C?(Mxg6{ z!AfSphN!4mtjFL^;H6K(T|%4wTl-5wa$YCB^-JGu8NRW$-W@_o@|#!y6GO&QAdbPN zf38UIi9Lqn(Wr#(dheOmdCN%zq60|p5g}*LhpQriUn3N4Pd~J%nzYAT0%B9$8LsN zeA=bKidXbx48+0tZmx5ur{g;;M^N5n?4>&57Yhka3yW-xYt|fn-E?mH>%#*GA{Ca0 z^%9!kSoL*}*KfTgtezw@1IUtbiv5->Od5$E? z?IyJRXT+mOFd1QCx2J87=nbTUIDTctJjdA1Tmo1kfV)sGq~Q};b3%OIZght^cb&n* z3HcAF{-e~WqNH zzas(n;2AVo5Di||DS3>k72;$L+SsE>yUEaDu z#%@N6(TKD*E^QXQ)VJ~j=3jpu03H)laWWSKOv2jfyAJJy%MGT?$XY`9jwegkn%`YR z5&v2seVO@!6TM9u)Br$PmPV4ybWz6@r=C4Pmz6G`cInUiV&Qig?_u@rp+7JaWN}^Y z*TxKbZL0omu1VEZRUffo<{;PO^V2Wke0pv4YN*K=xBY6chQ2%a&XkA=|+?=EWF||Ou3qt3v zetNnqgv?vz6O4;D=Tw!Bn(TG5H0s5<&dc!OL4xk8N6UF$9m(!lxRGGT)%ZUdhb;Jn zy6V^M6+zQ=fBvbR))Wk--o||2VMMIt#+G3VdtcNYbji_0S!KUIT4}IB7+Gi^Kdm_W zQFZM}85c0+;TR`Gh20u>=_JAzu_e{|C-~;=mxJbpMOj9OteYSV`3Bq&Oq?urvAiso zXqw!wsQ#1rLlBJTW`!`@*B|}=$jW!P;H2>1by-_a@GUJ!%M)8N$kGfP64KHun9&iM zTZ@*vn?N~+cHORB2jj!H6`s%e{#v6sJAs=cIVgEIlgZUe-1w4a?z6sX-xrU+_^F~1 z3m2G?CTzGtKmFa*6cFE%qG1OXY;>WV@6PDx@Z+MOYknK?>l@T#g%Yx9%#&k(>jPC| zi4+w!5-oYZLAG2+ZeeEgcDeIG-2DaPk2T-qpnnBs@LghW zxqTo>aUah6t-JjKiSgX4tP;eiE(d{+z-PeK`I>MLy|8OJ+&Qi+#dR2EKz&Iz_bdQ| zcJ|G8!nGZGnrMp813fwt2L`q_>!okU`QnMgY5aiSG$x7si?3&0WP_rzj+ksvDuz1B z`Yqp0;Hq2N>f75WMo-F<2?=psA1cb*(POhrl+{IyEYbm1dd5Z^+H;}WXhli$e*lREXEV`8k z2&7FjYqE3*ElM+j%Ccb2@U*9_SzY8-2KfFf^o&){T)o%>l4QT-)K90m!!D&Hp$O)p zHevj$EPPQ1SJ}kt8>j0ZbwOgF_g?O{JB+x!drf|HXEb=T;=bKmJS~hGJZ>t*fR1^* zs2R4$p^&2M4CDJTzO`4`h~I$8oPez(U?~uG#%QfiG%(Zr&jJS$9z#<6IKv&RxVmd^>gQIzb`3!jV?(F|yV zv$*F>C&+7}N(5`n0`=POO=JomLaym@hW2zuJ=M>B;i)`v{#uG6AP&+K^|`g*Ve$Rp zv){xE7;>R?1sLq!<^}jS`~>4 zG2kx3Lv!vKiN1>fJ96+Qzc^9oB* zr9@Ef{n=hTxXEpDEOKz1a9`}1%)OmE*w>5csS`uhh`%C-aFHfheUoyUG9|1G6z zdEh}_^q${JWtK2tjSn72wKQJQPR1PO6KVQ=5_fo#Br+&Muo6*i&>U@)HaQ{r5|N5w&!;dEc z7?Sw-%9f|M1PP0&DZlrYdK9X;+NO!%{08=VGBu6?QXu157Pa+ z!LQHtAGgC|CxAJHzmtu^i7zW=t9h!S(oS&rF#0{DF2y1yMt?a6GMj;jN0oujMwU}8 z1@t8PkxEOuGpQmm;JEb31@ax9b^>irjCZ{UTGp)@w;I5Gv#DCUQ|Ub?|1Qz#W;6<> zH0DkUFg>UMl5MpaWNHrh*KCHurYg@n`S~J=^0}LUuxDrI4Fy%A)zECCK|A?%MmpU9Pyeijt083 z{NyI&lq$CZ$dOY~%1=(ZW-miSTd9XwuuTuZjd1UknD2e4B6WIEf2PcQ z_oB_a!neWqge2@LEOBfUF*2TMtv=-x!INIHSxCLJT7^qtH`IG292TaIcjU1F2I|L) zgBQncU=JO4cpv@o;0DZ99_PBUZrdK62-*1Fp?NlcAeOd-C1S+t3*f9leM6%Z>g?0{ z=9L8b8rno24@ZO=2V8trwo$%Al)O$dGxeyX4f*egL^^5}zor&jj(Grgc0YC@dO^<%AIwq!y22| zMpvQynTqE`HJ6w$!SJ|6v_yF~+7t9s*#p5nuM{5>{>e!@){peD5`n{JUqCQ|5(eOMlg70OE*dtrvMjvb$s!H7f!p9=++hh!4w_ zd&VL=%#WRTL$*_;2mZk^zW1<3q9JxyrvG9!_Q~dxJ~} z{9x;r358lL1lFD3DW3-J9}Qn)-r->T-Onc#N-C}l?LSe8j*ojyCnrs)qV|NA&Rk7s z?}u?pP@K_5Y{6JIG62uMDYKe7#ZL4Ev+y(|2%MOzjysS~t-n&}5c-Vdov*wwlZA`Rk(d>}#&OIOx15AkMlNb{NKg zUwILvqJNPV7YAnlp;D?H>;O~br2HBLph$XA3licB6DmSd_l4xpEY1B|1+V}2-}7OY zE2&baU3tqXIy-Kc0ekaD7R_QDY}f0UAiBY$D8Q@TS8Q4A@lA=4r@HE4Z=72<;*p?T z*U^$W_uc*Hod$P!Uv! zK;)?&Q4@!b5Hc-19U9OJey#h5uzUhVlq7hsi?^sP{_8Yxcefohq@`$%`5R*=76vNI z=s}ef6r9Zo>99eV*m;tlKaXld9m7qr4(B8;6(Qi(M}61pi1k-wF7C*G^evO(Z%hcy z4y9_4lSOJlePKV&zS+>Iud1%ob-0%&uztt_+%lMp_uB`-=6bgN$AW<_i#=3jAJQ(!LzBkQY$`3l6qb=j z`AD-8+u7w?UTZ5+CFA`bHBW|o^HX>iHofDzK13QvF}LbYc6>7o0=yB>bZuBT-P3vh>3_iy7BZYha6 zfym!P>yYXZ%{9R8T&Rl+vzZ?;CFWEcdeocFanDJ;d**&z(BYUCnNTNpi;{=$?EVI- z&g40Eit;MO9K6L&(tm;kV{E-zeggJPMG#r7SzO$R`T;F*0{;)|jsgTNc=U?EyDo(^ zq0v3ffpy8pR}=_VN3{|wtBS#MgD!|rA_0_K2TLtkOs*r@c~0jN2n~eRE;kH{To5AF z!I6p6PM^Wgm9RfUqNEwr2@Fxv-;XvRQ5I75jI`j8VEVsg&-GX9-3I;DzVEO*vUU+FPc03%?FLwdxJw4kHrMK?3b;<8d$okXLWM`xRuU~pN5x7X~ z3G{chjB(Vbu6n1elqQ0aK&ZLn2U5(V!7*{1uXvn{XnUVa?mRt{+F*-raJ((Q)8pQx z%1Y@N(ca!Aqr6^RsA+yN(u(5S%7Q6HL+wJ{y*~O8;}bXgnfFKPB!MFv$!fPre>{sS zAPF0r(dLP!y76Q#-SGUg_}J_aJd-2e5S?ibH#*dSO)1pmFf!#2J+>n7g zS&~gzq>tEwu(l!ge`A&zEI-LXvNVDam^mPCK;>c}!BKxtl_l)HhvP2KEDs~xw>gSV zyr5hCRU%4dY_;C!sD~fkw@u|W?xJ4D+Zmio$lNFCX8l(6h&4>d@yj_hT0jXy*C1&L zkGHAxBzewzcDSBkv{=cI9;|Sv;Bqeo+jNK9J)s`Mw^M^wWcv#J(8g0PglYDy^`i+p z-<#{=Z69;};D;t;cR_v5%4lr$zhnM}f?bt&8t5hV!$z>g0o+R+S>Q*yC{zM_8B17q zT`?jydOU#$e6fO%W0a62I=}r-9Iax8i><)v9r_s(nd%{mpjt;lD1!F8)xjrB&!|xs zK(4)tKJGs#0_m)*(`#bnV8%koI+cbKU>? z!O*AO0J^0Czf(Cq{n<|nZSwEcL#Xt@z2>(A>RSHKvm9P$)^PS{>*UV!zdEk65Vwa3Z12-@;-L(!NhqKRr7+`S z+!B{_&q3J;X$(G5vK$7|vI|@p5|nd=vjd-CN$IHwXj4Iqmb4<)=XJZhgp_6f7q};S zBWF?zsJ(gn>{jSUpSN;LO#PrOM<7HoGymOo|5ZSwP_SF2KpOCJge`GgE0R{{C^9qM z?{=a)JLg=+u^PDYd8V4a)1)m|>vHfF_I(Lc z9~htBCqHf0YSr9TEt1>Qg+Ez2IOZ`mr&?gT+*Z#7i(+7=o^DvzQsRw7cAhUl{7@QMrd#*u$~{qWuuZ(IJ}g4zF~jH+MD@Sw8c zRZ^orSglZt%W?@?3h?CRCerJ6{atzIfqZu30H(`?F2?=K?r!$#;orBNXJLi}$;{!1 zFAayzy?`_Fxdh1~_m1Q78^>~>T{91=WLVNtqoAN*5sO{2rJ8&;O1->0X+VD&-XExy z#5rTy_6ka+!f5OZl7+vP{ks2FSHc;T83;cqc1r1sz^=6jC!c`l#9!=RLF|bj+E7bt zE)c=5leE13uRH^8porzN{dkq~=$0%RA6(DVTVr2*RVGzxSZ=qQ67Zevc=3M{t#gA; zeec5-1IBx8+7Ljn-%(xp_2k;ckfT&K$pb5k+-b!D9?w>%TMCcgM{A~HN|=W4c5il_ z7Wl`BRRb!Rrr4C1Bug;wXt1GXinHNje0Qyj+p+>$Jz|XMX;bjJNx`}a#kpHWR2)*3 zZB6a3@ZKkq%&$CC4gXv9vR6?kApSguz4j-Uu?w-?IPVXG>W)(#gqS&d*@+71l`W8N z_qO{&VammtLU(xsJ?rEI^;K*!(U+s1eXo%l=6PhTd(@DXW&*=TSWd`ggE3i(k;j4kj*b zPQ0ko_nrk}fp3>WPBK8H4@E=&jg3kZI7jqk^OLECd06b}mQC^ZRt-wi3|DL6>Hz1< z@r93xLhd$LFR{~7Az9%BNvPHgaCL;A=|To=5dR+l;Xoe0hSRDCR9ZVm-4q7#?7l=Q zuH@*}Ky;pzpqyVW^62FvpJn6k<=oFX$I8XKmKb01I6JFUVt1BH?C8=c#?~nBT}j2} zKugtZ)OuSKo`H!}IPrL~*x|6awf1)K{HEW`Vipsio5cj^G&#~HW=aJEE?Nc?F+AjKhZ|p+z90~Z_RKlp{rdr(j)emFl49;;LA4QeZaC@pyQ`bJ` zRa`0=v`=)yOnZvFWkqq!l|sT{J{Hg)fE?t&usa& z*+zC=S}=bhzI?;i@QDv!hw92|VL?qBST@}*Hy(TP@A%t4{!{?s7@T)@?ZfT=bsN@f zSO>3U!9jHWLn9G%kdWfEu$9@OR&^KvJ|eKy0dEz+S_^=vtbCRgTUahAmol3b`Jhd?^o1TZaMHBLR4${gMI5mh#%eno|b_uq)@1 zGsha8*G_$@k)E5~?M82JA8Kl=@#qte21p8ETZ9I7#m_)PSL$Ld_>R?va;O@l8B=5{XvZ_IJYHoxfo#dMciMbcP*TMgg>zvj98Gb72hPjXxGb^_&-ZcvV3DIph&! zjFAqK^MUpOR*cC|!rkgC+5~}|)nXIRcA|zXThJX=x4NWDHul)iZ)P!z3DC`A0(1iC z1S~`rC5I}&Pi3p}c!4}CAK3ZSpO&X|Jy~2@P51gb36s3wS65Zwj@z!nyg4nSw45_b zxkKbT7jfsB3m?0&Nz%A5wJ~UyFsW8{bC?Y}VjAidfQl*D>#2g>T&Q9h~@{QwTUEkVqPnf3f@W&fPokm%sl3 z7o78c;SR5X2N!|7{hfPp)7Njrt8cu7Sp;NP3+4a;-bS8P_}M@6 z+>`kA?|vyh-~9QHWB%L@5o2Bq6mp-m>H1Gur1D9hxhHlS5Efx~Mb5Zof;d)a-tegl zg!h3~9_{T#OmJ|FZQk>_T&Sh%G}~-gpGb-|WjaE1ZZn2S%X9#JAhut`qFY!+tOD+I z9(b0sNL{s%EB#d4t%umMj%ZF6R`i$({<3cH`qe#aUC&7hnFF@7AYIO!Hw(CP!MH4= zxWzn&{6a3F%Z?JHmpTlj1EE1PP>axW;ka~md3W2r!UcXJt|STXEoD5q-EPZ_88gt{ z-k#aaVipsio5d__6iTPXOlc z3^0k9Sf>+DJ^MHo&R>k?rWRqH7thz>#6AM&pS$%stbOBU9Bp@EDFIm@QzYbBm`8N^ zmh;0YRZFmvEvz)_I&v-Q)_icBXN|T>xqz3|KJ1wNmfMZpw9Sr2v7AZZba9}{xuooM zbRGa!b<@DR2K>jWfH1Vk=X)GvJPIVmI{{LG`+wH;KkI!UdJKW(S?c@ETect&7!v)( zMgY)P=@~X0nfugWU=TmL|G%04181Fn0xrAcOaw#WqFtK7jD`B1G?A7iX`;cw1jAPq z={cMp!4$3^mrSC0+|kQ%`6VZ1_N@y9u#R~r#$rWh1uqjgQlD5%bMsItiG4I@Ojpt% zo|WcPT`F~+LtBPk75S>AbT-ah&U0DUK(gkRp7~C5k=Cs0(7VS&ga9RzF=WXFWMeD1 zi~^8u43A|UQ{-?!S1$NF9PBQx!Y>h|8yzG~n#yX-MTtxI3Xtx1*Qy}Bym!lUt}|;v zx7w^$(}Hdm6QG;LEc#MeS?Pdcuodp@mTBs$S89neK&Q<$3NpOOEG!}o(7ioI;9Mgy z`sCGT;XTJJM=%&MUjJodzX7)9Ra7>hvbw1x%bsraEXj?0EP!1q5zdz`Dvx{!w@+1V zGXeFP!a^|A->Fz|bbXz3$j_ZU13$dyt8lwr8K!quj!0@7y!XV@@VRSmMnhdAqOr&b z^_GOybKA}>n9(*f6IaLQ3lKp2(j8yKwzY5IBqp3<;I6Znmjuk!S9XK1AmOHxwkkR| z$Hw}tHdNTG@DixAOIeGszQuD~+cm%{7q_(MSh3aPY+{qKo36=Lb0@Xgp#*x`s6G~T zd|9NCE%_NxEoYCHPzc_0E%(`dRwIC&A7`(tuTU_^Qued1UfQNtU}!_Ys@92*ttBCn z+kE53P4HJ#p~_#4ng&1SEN&+OQ!-TC@Uv&d&<}ocH{MwNI$B$s@U`1MEsiZZK1G{Y z;1Wb+6AW<61)@h2FI%p0uFiutn}a~QyTF1Oizjg9W$(q&M;??pBx48)HVk3Qx;Dd(nK8|f_a)Pe52KC*?o z**_cgzBaWj%IEUVv#-PIQPw<33g?G#nZ+z7KsU>Od?DcAR%LAwNB2(dbUf`x)q!PC zr>EqAkJB??Qn(@2+Irf_N8ke&pMY>AT2v@yW^$LOGDnyYZ00U6YU?{x!BHMx%jLU~ zml3p=3g<^g0>cO#Bn(#8G{NVuLtwBA1ATiHi=e6-1Og!T0?1ZmfOnMV#RFpq`}I zbbcJUR6NdF8>e+7Ot-q6Xd{5%MAzc2k@oS{?BvaX76K9NOwdMKgTsz00`4x0Vx`V{ znP~k*`CKeOA+xEE-mVJvYh7;arh8ZriC}3oD%@rDUI13Pcucu|U*_q{*|A`e^RI8z zTe4}_vd76eiieEl9y%9xx{yVdb@BIV48HoR_Y%;4FR4mQKa*+FduH4n6Op z9FOj#adG2kE<}46c%2F81#0!q@NkA2t40#=d=fv1i{NEUl@dF%vI=~$;7E%qAVwy3NuVGb*8mvYIZ+F0DwHknD zso-;gLXMRV%)>zaOn8$}Ux_mVwj_x$5ukfk?O;kB^HS8yV(hS&2fMU;MEbXtp%A>> zP6n=t`m|;ieFTEKFQa(S-FyD$%#YMQrrlfSK65_H!g7~ZkK@-Aa78n*?ONMr;HZ_yqN3UZpWlPvU|4ud=-b{+?bO}VCBXUPPyIveyYAX6arWu& zK`;<99uQ>*x#dFMQ(IHOcgX41B&o13ayx}w|BN&a8^ZT_ln!a9Q>a`J0m6y(aiYeq|0m>^}HLzQq=p5RC za3WBaeCbZrf<8Dn*w5iUW-*Hi(9L3&Tv;$<#NwE`EKTchKbpoaNL07lDVWBCEt0R( zy{(NZ)>dY0zVXu+qPogAEGb-7ZL4r&4-w#0ETRO?Eq2s5&4IU~RtL_@1awE$FXS;_ zW+HO4bNe_P9yGTvLLwf`fZ%)`LogJ_7e8bIHptsFbmS@vrt! zAKO6pwvcu#p|NCjI`cq@lo7HE=P#nu*nGx8m8pKAcupH|q57S{yoq&NfxK#cb|#*-d;J=0q3DJK7e|{PG6% z(KywGN7A;T*U{jfsd8IL$f(6Mkgkomv=SqujXmc$)nZm~244{Z z=U=|*8dOyH@YUP@TUbR0hX(M)uUwC9JGbH^1kBi-nd8)pDFfKbcJ<|-z>T+l29H1e zD3&cbnB-b38t6BiQZ1P`-dI8AqH}ua7NvPco4&PdJ{QEU9-wuQd`v(Zeh?4&ClTBpEOG9rsn2!;a%u z9V`I)hENFGA`#5>c!UC{bUlC!ufrkY&owu9wxWj!pgS==z0i1liCz`;hsz-khY~%&#$Z$BI!W3 z{#DlH3W1JAr8}Siq-)buzQWK5q)P>77+E%wjhC&WznvnYiY)S_+l0G2 z-_&5FM@P0g+A#|RZRMhlVCL_qtikQs!dDpqph9CS6(c5*6;R<6%iRVojfF zTS}f<>DAa#EJ%y~6Y)6Ws%zn4hb+JcFFuh#V!S9gces40XJ&G%4ar0lmDP=CpS2uq zGnb*VszF#UMg-hNrGXOSzoij`k77T{iDfTAi8I3Om!6wl%26;C2m^VCF-VU_qqzPv zAHq-Xy#uv1)tUW2y6+y`^wrN{C@=(<%U$&T;)ysG%v*$yU3o3O_N`ll6~4mj!wjkv z$Bwtq*6ehm$w3>vwm4m=w>#k_P;SfIXZD^^LX0>s8f+y_rsbTN?~&R}JJu(N%%nV; z0flI-p9$gUHjbh%*_Ah`xuohEPEx_F79XDF8dO1W21IB739>s9^jJy2Ow!e~ab9L^ zt5&xv^_7pQvfEHc0I5zr#-qCYTMFu?Q$=vd03ED2~(esp6dcx`jh zwmp@^VEasb^6KlbaOrG#{YoE*hGQ5S2*N=C&~CHi#}E7fpTG4w0nQIuz68H}@W1iC zvrnRal@MVQ6F<3^{lE!5#pov+gYRWUIpT16iVFPkL=x{lVhP-CrwI4>SAYMQ;?P~x z?_8?Id@l9LIKA#kr^Q&A&SkMij0weZx-+;oV-*)Fv9z2UYpy4Zle3^)jW*ZKx4K;F z>Mv7tes*=2a#eM@XD1uvDc7yx`t@Aak;}>1bL7XH%eevPhR5jhuIE4ZF%J+qZxTN6 z18a1Egq6zaB=!$&M=;hu3^*To%1suabbDB)=W=6xzLN=1bS*I#=+oFwE&4alQ}Wmd$O&xF(M6>glV zR6-EKDRGxs@R{pAY~Xn*mvV0u^F3DHE%m-=|{i8Z0Y}<{Xcn()p3| zIRo^$kIs9r#Y*?CkV;90tu8?-@-XBaMS`Td@mn(4BMf?hp|L67A>O8X8l)0w0k|xA z4I;}@rWa`Mc_SD?Am1*S@Vn!2NQNSL_L_YB#&inLrPBD)r60iwCm)N78dv6+zV0Dm zVTvbWxZ}URir@X=*JA%UXPqo8=XJGJ2;{_^7a3m#UMO;zCY!MW;OSSKPH$0Gbxw)b zF{2R&FP($uUs{K!`ucEYLxTwWD0O`h;U3g?*@_;FM$y6wBDx-v#m#p(08C#u_g1P$ zliiMe>YB7Sv;lJ~4~NI*S3QvQU{i5H7cT4cYm01E!$V}<+^f2`3ojQXPF*pkOG0Uu zNX22dIo0_|$~f9&E$O+g>ACUf(7Bl#xwRLIH_wLd6uPMA?<>KQUha5wqrIg&l1ubUGCa z#|Z6Io^P=Iop}+yaNU>DJJ64R4i2E3l`2q3lQip+;!q%~mS-hJSd#kd zP$G#C3I0));Bd6L!MU(?npxfTDcZF69MjI%VbZL$3edC1NMI-aA^LuXRRQPeycSc~ z&$GG0HDy5NUxt%S63PZ)B`09)r&l+9wn>sy@SSRq|^|wDOiN!f$o2?&WagLg$Sf?RNT;2 zYk4+hS~|nzuJqP)CJ(xtms4C$XH%o4b;__*Iw?SU##LR)SJKJ_uld>2^%nJ9)_5b8 zn>=zB^fAdBBjragqI{Nz`C1;u_?0GNh$?f@K%^Tx`!^s$AYCE#lg2gd({d7#WJr7< za6ZHUU96R%kl4&(789VGuRspZz4@y};mHz30PM zEW}0cTZKrZxNAG73F8=Z&D?6SScOGB*Wy;1o4O>G0kq4byQZOFQW~K_Az&ZlgOuda z=VlLuBB-yc!TmqJ6W4v}s?7eL-X7fWrBCBqcYj@^Uo&=jmkFGOaO_dX;qKe-LEDL^ z<6(~vPZKB*7IHN&w*cv~VzJRuh4Egt>ap88$A*WK$x&BbvsfF+aoqLTb-aP|I;)m? ztLEaazH)4QI|=MgRsuQ#FfgVc zv-^6z!y$mZzRMUXBJ3ncD*4>i`;+sZwWKOQv^G{16siKl0-ch9&cSw27k%DK+y4s% zvCi(m%{P1%H{bjPRMvY7+WBA4K8KH9djaIp%ys&5ncI`y2@4+}`ucUC( zfSk#z&AXT^F0F-S$+~mO`RFwtq-Q6xqM%zg0_DX4vuyaafvdYbd|w_Br01`H(lDS~ zl1I;CI9>okK%6bz`vlfB$}Tc6N%*EM_qQ zx>^3?OIl}9)?D1DyThX)a94p&Y6@7;d0=yTEw;wR)VOmW35wT!;(fxhlQy_V2IqFC z2el0|b5n!m2rWjdvjGZ_CK$AjHlMjXj%$qHC13=#Ms_c!Y2xygFMpbV`nS;B+>q&S zKY#FkeDZT2#>UO-;r03q-D`sc@;cgQ;g-+bitqgB0aRRaF&-cx_t`*@1eTNl>X~?G zS#P0M+_u@Os{wVRc5!Mah87sso%cP+8k>c|98Qm)O@0rbImH@c%c1VB?P z=c+AT^YW0>87q3m!Y-@t^=4o>tpm(ig*wMJGhv+GJ0>5b%LX7lHy&O0M$S_k6o7O& z7kC%R!9FZV*MBJ)FJ>b~mB=G3iE^H1c@oC9P_SC82*ro6vu^_i1R0#QXvoND3tQm# zg|{F~=eJvJiF7LEPm(N@RAnKvn8gI>W-$wchCqO6!jlfXdgnLq#03{# zfPujQTz%EW_{}fx#*#&I5eSBc^^`TrW1mhDIN!e&p+KKd#BnwTi`AN|RWR(v!;m75 zRx$Pt0Pfs9I1asdHV23-496a|RD9k_V{aGD$D?s`=QF#wf78Zev6lNg=R~Km8Aox0 zXendoz^gbQ^1JI}f_Dbq60XTP5LM2)k>|XJ-lHv@PyW|k9pGYKYNiKVV2JFLjyZt0nA~%Z((9L2NwG0IU5fTgq zDvXKT%m*L_eUi5H6i`4g2-rj0>pF10{Gd6w=zYf`T7(lihe)XKPcXwaO|=8&4Ul(wx8XPu6G@Ud!tc28VX^MS)v)_ z<^yK63Y^!QK{{L0Q##;17PZX)0pNXf-Tp)(!__cWV6IsDCBc-=mUHU}qMY`-CIa2; zW}n{^I4+(E6jM;F+j`5q(Y5p2NrF_U=#a8k=D$wyTWU|b=jZ74=fMCr`26_j$3BN2 z-}O_Rdh%(Qv7iY~Pp;$gz`y{mxZ+BD;fr5DO?4H1c+c1H?Qh&b&)kJbBsxk!DGBRh zZ`Te1&V{#trxL!3+Kel3>BB}Ua^NV?*_1=vqX(GGhnS;ztai}nUK*4A`DBIToE0Y<$n$usXRA z*+^jk9Y@{p?5px{oisnTTqpz@M=O;|5+$<(QH;Y*m!7ygES_N7RlaMl1VzehhzDqEeIe_&O z_rUqi+4`yGnRPlH_|(VFg~#nQ%!|y{a*wwP)oQ-;!UHB!Y#W7@9TP-CCy(N1aw&p+ z_69j8c_cD~-P>1V_s%sK=-Vq!A{nvD8=N*8jfvOKU;h#O_W!<*C5z{0zW>d`58^|g zybMo1^O(qoZMSEw>72(qI20CXxfCHt!UgA?gGc`OM||_X`w=?o-MBXv!>@;iu$}se zmfp*1@HC>THJvwBu*oAlH6u`)5JYqd@hYhT)M!9C19DE!#(=!irldjB(w?CNfWa~8 zE;^oLUO84>E^?n-*FBL4_R?lFPwC^+4S~C)cfE%QDPRlXR;uvtsl9(52;eQd3+J5w zLHy!>ensQ*Gnl=g9UTiB;jPH!7I@?JH*n&KC*pwz{uf8CJOqFI-4AiuC1+B9iXo9m zjc)9y?)$x6yAT-aR*94BsIF~Qa=^PD!kLO=3i_(1jeFEtRo07R%rg|~cteIsp0D6=r#Q?o+3^5rM6f3Vh z6=bwBmrS1b1LWe)?fM#njCj^ke#!aA1ueDp)tps~IQ;Ye8gjzL`azCN_iY0jLB zgcQ90q6=}}IcMW(F|2@K$Hw;M~GPE@M*l|*jBpoBKHb(LF59A+=NiUse|?mn4n4r)l@DS=#v?7}!Tt<(1LXkLkiY^3$!!a`DuT z8c?^X*I^6i+jO0mLqTkb#ZleRgp1F<7#GsBI{4t_@Yj0b^*dp+7cRrU`qi)SiBEhI zLqmi3^fg!F`cGdetgyK$)JhvWnlh-bdlv==_N)C4sHtm(%TtjZ^YSQ1pft<_D@fy3 z^vkiz;G!N(I%u_7g_YToA^DRt3LvN?gj`3?P0nM6QyZ3J#o>Oy;N0$TiScbT=Zj-( z799KTrFiPuH?ScT5+M~#Oqd+SWW@lT>np6ztWcr%yQxmg_4%9+PRArR{qWN?}#-T40HVd^uMdyzBiXD}GFQn{Pj?nP?DBWYi^DVdwa z1n6e@k1sSKGBO$+*$?&gq&4?xIKPUR5oC!f4{hy zfxbP0O_=k{TP-$SyARKz%PjBJ)qZ^E&YN)hsqewpzxjQ<{K}gmB;lcl{|_&|`aC}K z@f&c$s*{CK5|d--+}(%D8bAEixs2dW0^;YKb*9*!f8j;^^4AaIFMs(9{=R(&782lD z;q_pq)dsgJ=BCtF%+Kl}TP2 zh3-f@KBbD0Qr@`J!2b}vY@_G#W+Z~Q2$)9*WXzef0H1yDSvdRjb8yhI#i*$9!0t2_ zQv3S)aLX;X;QQbIK4#5o$4`FnHJtk1V}vI~c$6;f%8e^ep|@u@^}BtF>o5V-3V)r5 zJVEIVi}&4=wm(Gd)&+`a)ny;f8G_pwI{w}sY%r7DG|5Rm8kRMGu(kUX$K1?YqE zF7!qBqR}%`0O_=pb@faOw|+*#X^pB;1?KcQO`uS?vZ%mZ1;QFEhMHZ0=iYcS4!7N{ z>!-4kJpy{PE$bE)IY(WW1>U+(nR65a=`hTno&!HK%79_?UpXLsBp9p9Z(g7{&O5JU zgwOL19_GfhbZOka!Po!+^KJy=gJONN3G}dVkP!FXJ3fwMj#@$jX{>MogoSDt?!p5PD;vOBQEwj# zTD1xtv)f^J4{)W@r-*cXaD^gUU_vb_U_q( zWIT*IzZG>=E_5_ipt05iug3w0O=<5~Jb^tuQM|ft5VcLMIQhND;rw$?7NI}m1?ddX z1A{&2+P_8RmoRz^66|&>K6}%T>AqLv{VgrHoVKvei({mI8;r&9;?A8Se2T+0{y}~1 zE!uaf&xblyfmYTsiE<&Yo11C-b2yy2ZijCfme-y{^-3z95Ow@~O8B}*0%YGjSt zXC=bOl1a>H(T-ESDFjuS#Ri|VLWzIYOvh4|GeXNSp^YKEd0EoG>WCyYz7{D@{ij_s z_eedtXkL2CoNE=6WTZTOj5LDmBaN){9**yHSl$$+eVJz^80!~|?2&j-fcsKXrsb@C zQYrG>$TK&`pKls?8UNn>urmH^wn52ai4#D7iR92T(i)ksS(8bb?Xe}$L;Y+ZDkNKgMek0|vvTMqOk?X{5>vVfjQ{REEeVfH+zK6g-mpHt> zi9ou|UW7ScGK@uJYr4Z}#|_tg81Fsl7<}W-AK=fAJTB_-@SlEz=bnEWS6%*b>I3J& zBHOTW^$yG@0=44t%R8ra}t;U=3Hx3dE?G~vdy$)O7m=I2X z{ZdHp1Sy?5cL~BFdcT{;8_i=IV^M65L=dK%@>bX4uy-GcQ%^btCmeqQ7B5){Po;Cj z`UQhQeDj;%#O=3#1FbC$xbH`I;M}uM65ufy43ABbr7A@joDa~Z5%V!9|Nrd02Y_7F zdG`O@>1}tm_tmO5R6rDqE}Fp@;t%YA0mq54gNcc8kCV@FjFZ?H`*Sxgv2nq{1snqg zY*UQr2q6$ipf0VXU2UDR)BD{2dCx6#@64UqncbC;@}C1&yF2C9bMHC7w>)oK*L+y4 z4%Xjt24_K>v6Za4J5ZSBgMxaG+U*YRF(01@;E_k4!-EfR#Fj0uv(6R4(*6cqbaF4& zUw1l|478%F%?-EH%3)q{c;?tONu}}#2Gi_k4)^_OFJ9Ug6g0ygu07*ur4W)CTP6wDC4Cr zHdK|4GomQekVz-%@4e~jqgQlRi|Raq06d*bF({uzDDLNV?70C%Q0iDz+9QLAu?pKY zh&QOXZeL zO_+|=*s=L#WnB}Ff>)ywz_8`zOh$#gzTOV}{olO<*-XxG_@c>6OZz-HoYR$56UvO= zVtH7YRT8Us6tCDEhsKL#R-|JbQJtid$2^^mb8n{P0TB@iP4M^IyB07=w^dQzuCTKt z_!nUSw_@2M{Ng8H!yg!+f9K9$;MJ{fV0>~MU;cl$;jzCwf}1~hD^5RUJ%;yBV9}~R z4hxl<*=oWSS6{-Ha4?ED-`s(X&pv~V&peGscf5i43T~B0(Td`VM)F`{OWK zMVzv-9k0I`#K@5ZtgKI4+4X8|Ze(zu#^X;s$DWT@bD%Heq}N~o(R3LSinCbk{N65? zA53}>qyu7iIdFgh`V{L+q>E4$SQFq=o;Le@Je}tKvV-#N*|v_bdt$9dEb*8drmG>u zX^xSO$H_i3pB=MgVPNhltFOI|=U;pguWj3gr}ypQz;25~(9RCBiPa5+Mk8&{(4O_FBnbi zMW1`Qf_nVe^BfM9a%-l-@d|pMx1eTH2%0C4Nj4Tp>!6ZrIks513cmuvh5YqmfYuAX zK`;MS>`5;cg;OC{sDRPMkS^z=3qYl;^n%{pbe?4`^;cnP)26Sh1~fCf$Fc~-#^8^S zb47f*Z_AY$EP-^fkQ+X|m7p3(FI@-iV>msAsgzGLj%BkDQmK>Ker~FJ&+DxY==D}_ zMJ<&|9adDU1IIZ0d$z5b$qXG^iYEAM>B{Gi*#wBD5{V*VxGOGOkGEg24)KIBoZB28 z?n$G(^8yUcc8`S;ahjTdz3eUs(_fWYg=5qZ8n6FHog7u&k0`o=K`SZd=W=O8BYr-y z;gBAlRZTPP3Q&L-pJ6;uKt1zA+iWPqjB0*6w1iOyVxLYxK3lb>bVr*Qie zK{#7mT+AWPpf1Y(4&>NmlL1NQxqb}dd? zwG#6e48Y;C&FK6QfdA@Ozrw%%>%U=a>LX8%-_Uvp0(BqC@5;0!CSj(_zDd4?T&G+E)MBziam#{deoE4uJQSbO!^AElTknrNW)z-%^Ekz=ki zVC2j6Frj?s6Q<*L{a@tWAC2x~<6cIco3Z_W2ZQq;)@S1NRtNNYtG8m1G?{!PT1K!y zUMX(LJQg1GW9ZGM+|(EWFikLy(RS$u-paNakiF;g=XK+jzrT`;36-8+kxwRD+UK*$ zqN_+CX|6rjLYe8iSpBTATEbUnWpg#76iPzWYw2DUqxYzGvBidt?xpN=yAg{9WJm`C zb{~iI4hHFVhr8hE6sv;=nlQ!LI>=i$uwVs#_q%&>=bhih?O*ve#>Rb^^iAT4Eg7lmc?@j+O2zR+W@HBhT*4&DfT|MaS?!}7bE3k0k0xVjz z2)+G1Xzyr663EGBY@B4&2U-Gc421dAFmFBH7nD!4-r)0K4I4Ful} z;kt4td<951yk!e-NWyw1Br;J|YaA4&LGEhaDhKI#)>noj zyZG-mn@w~$9JjN1=jQq>yx!`7UT^hQ0uJ1QIhd!|DAwmF|BkCTi(>7Ad#&JmjKb(8 zA*(zuvt|*5W3pYErbOAYO|E&)1|!`14_BeHqsdShj=Zei=591Lb?^y{Zr~TInVN}J zfuiBb5zAwH* z@b2^b;1BpP>7U>~Q|4X$J9`YzBD-+eBK_cSTvSO@6lU$ON-Vs)cPO z553I}r^A6}22O4#sd{_hZDb(c(u(%B4m3A6p{=zIef|9m2;0%p+KeXln!CY{X|#=M zZku1)jQ{-7m+;U-e_-&x2*17OySQk>dbZCdM5D2p!?7lBo0@O@5JCj!CfReI&%x<# z;^q7VRm5!idvrz*zuBlr%HBnS=>EQLSnYN^{mKxodHWJB@74q%>Vm9!l-)I2YlD74WgN>vEWFd%9wMTjVf zya_TaQu#JA3{oz--RdgB&BF6V=ku1gDa!fp()Nt;x)i?)gKe?En;x*sgt{xQ3dUY^ ztr4MWIW?ik$gQ1UuxADtF#NGm1Y_g8j=7N$s=Rl<{1`7D1xTlDSWPyJ#`YtS7**y( zFUMlB&*gGC)LXsP0lnVp&7h^z=}9)&k(;QILflF4$!#*#J|(Jl5^{|5z-en~u3XLF zOFVWr?=H5@u#&tb&bu{W8jvj)-m zu`zfh14B+WPBob&Sn{1?HDze>#LJ5u{StCCl_1~Sc6lPRcws;O?uJWvc(Yh0m%F*Gk3ovt zSR_h7WtE|0DC#zAFT2rhl+Bx+xq@?f3&-^5LMjE7ht1|dXYVqMkL*Q^=cJoBz~tDZ zkxH^<(n&P6_Lh{wt9$|^mHuoxhLHaN_oSQI1a$pb8*ndMo_pqT{P0IVVxayA;_)Q* z?Ae1aeBlcW-oJs%FTWh`fB*Y&(M1<==$*?O#No8@1#QOg!gDo6sFOy5cQFsyTMo63 zvErdre{vBp0fGsD@YX)-VzC(RzyAUJ;0Hg%wr#Ir{TXZUi@Uyx4d<4Rk1ntd7IUQH4E(6btr)Twaxrk3GxZV>2r+?l=u3A2!$i?c$_kzS9fn2y=0Q} z(BtvYv^1RqLnUkjrYGArC)>8o$>wBDb+Vgm+nVe;*|u%l-gdut|HOkE*WD-MX2DwB zwxd`wqaCP}nG}`M5Iby|ZQD;vL>nArad7>F)>_AU(Vo@2&hDpRbosfD%(rMBvNqcy z?nfWoCW>gAqO6f9Tk)H3GQ2o2_Zuv!G>nxpdK1UY1QR+@1ZF=Hh*)`_dHAQpKo#(TqEt)FKj$jZ^aHntQmx?oxzOZTV!@9V<7E$)6+fo zYXtLL%DJ;R-{~2$exWri^%DkwWKLnOMlIT&|4!jMadmm18`ysasXAs5E)4^NJ3ud) zgK2PuXG(RG9!&cEBo3kpH(LfBc>e)ETejGy_IZ|h$FMVIUETS&-RG6{{qqUQ*wh6y zPYJr~^P&31Y4vx>&g)tAP}29%tFPHy{72=$dwdR!17K89K&Hh;p{sl2jGt*05wZNfoB-G?sw>iCrM~p zaQw^eN_$upbl!(y(dr_-=VR=VGYz_4Kwx-bG6~t-=bs2k#DZzvEz>oW2n;?Ks)W5H z7_TpURXxBRpF>7uuvBpH$9iO$1Fj5*@(sQ0_UhI_&#@SOm|AjZV+r=Mg;V@v*pQJV zO?G!&91Q&UnFK{bo6+5RcD*F23E6xM&Estf!-s|uwS+lRmMJ+zN**kyW zRHB6f;hhvIv3M{Qp>tGEF1b}M_$<3LsPSfMRSalh0tyMGdFxZ=tQ^%w%!FrW>exa2 z1CDz~R_TPAAjE@f10IO61n7wJ!HY}++D{ibty^`5-CF(q*j^bpclY+;K70A0?c$=c zPY#?(jc-0?1ZQS|7>gO#PHjyX6ii!fUr_ru*Jql6|Pab=E#w+b&O>wWrY*dsfa z37)YsawnU-fQ_{0%coB`#;$kL&X0-e?fE~}^G{7SE4_Dfiu@01y50{9&lC1OU^!D7 zzNx>piIKa%4P#kdubZEm&6jHH-cO1S8|*1NE0n$wSKfCV|I8c|V0X}qnAUCuR(&Q# zmCE4PmwkdFcGfS&EUr+Ov+ShZW8`(wYLU+b+W~^3adoxC^R7fGZ$k0}DA1u4IE9i$ z9wT*!prK%`Ie`(aVaHd$_Y9VunV{hUok3m7Mzj3Po56S=A)-2haFy(DmYJ*T<9sbh zv5x`*!B4eTR2BRbXTbX;2VDRggHs5#z0RV_qgXiTT!5-CmsA^O*|obH^iZ0fB=`+< zobK$M(N*fsB7geCF~R~^6tk-NbwNOk{+`t(xv3RHkSdfa*aGo z4{08%GMz;>t)8`3gi72@)+N1om#BZ~ zVvH{)QRfSp`(avC%hTrD_4kgWv5O7rjsy17mam`zCWG#<=oY8Vvfuw5b%evD3mP!~ z{934|Lk-&w#xm&d=<2{i;=3l!pFw8mytY~YNZ@rid{v#^w-uw&o77>Le5DrmCP|TY z=86#q4bF5{pEHEPpM+#M7P}Jf6S!=gG@o7PJ+?hD{us~q#T-BWELA`fUbAeU1Efkr z*R;1oP}C!MB0?n{>vY<|T3p%P8Gh|BVKz6TL$v?p(YL&7o1QtAPz?kVMN__SQg%_+ zrVgAC9mwKfMTAGZ+rqH?^*saWP~4q6No?(~O#W_Js|h&vDe6<>JC4J3HsN+3Hh}|} z&^yt)tYRm@+epU6w^L18WqQ#9Z}`Tu=s(o#;xDz$Nje0|zXaX_x_h$HsddqjBbORz?&D z+MF1D+;V-IJ$-qBw)>b*{S>DQc`379U^aJ>LP7eqIjC!@GRIu!a6;9UY_Jl*`-*wB zul1o&2ON)c*Cu0q*uc3hvsRAcP7xr^U$=SsKhbh7;FS>8jdCX12sHrokj>tX;w(+J zbZRWtr$G{e2BT3m8>s7WNzL{2@B0%m2YJMc)ZW+EQP+kK+(k14-?sfeZ8Z7&8w>Vy%_2Ezh?83~>sSSzXpD&Ea!80j~LlYZ&Zc!0Rs6^knyK|jPdt&J3 z%zpp1Dfo$;zJ;~g=;%z>KD`0=bil7>ypJq|<$6ZYlnrfn++pPh{bn#IBm!Y7`~#7o zdkMO1Au9CXh0)v%jpmye&ciOuY>qnZM|$5haFOn>}lp=|BS& zDotT>rE-ZF)otz^CN4D%P1a$4#ZQ?_^`E2>sq*&xG$sUVB_OVo26JknX>tT2U2o(o zTqNa#rl+_R2kBNHqgI8j@iA52w?`{y6ngqx`?VRs5zN^)WLRQ->``>%#foBDi2zU~ zxb)Sne1T9swa2Yo^K`^*S&|N~2^SNoCER%T<*sv#m=ZGhaY|%qNOw)H4vR&Y?vtll z@LA<$#XX>liHR_Ktlj$6=whJBo1KvcYlH^HXOKHh@0AwE(7W%AyO*c;px*zCp9)OF zyBE$C@<68m{C#1{TCUN&v5sJxh6OvV(p_);Ht|VOtms_?-pM9mNJP||*Y>B5tfMR3 ze0*^pjPFGNqRS9W>Ty*alcs;l;@c!wX)f@>TLO^#QQs$C zZBEh8#qaZOTa?o~k^bxNMtjp*mc{M_tE( zB+UkQl(u#rquQL7>_4LeTbt^sapgF)HrS|29vCZaM^ISjjeCAadPjTL#L3qr)GdBsx9Hs9SE z{KYZCmMRHCZxU#c1+xzGd&Bv#DU3-7+XS_P%3r)1){Ic6Ky=drIB)*S)N4uPC^Ppo zb~AqcW`d4NyYFB%&M|63$t<@R8oUbH_xc~q^9pL%&zt=*7IPbU=L>76&sO4|78Tq|q4{_Xy$QLLDN&w`kcs%6 z^7rY0hEw_!;1kbO)9J`kpJ^FUTjtcdl;tFLSCnk^$y*BHIK(AJiS|`o5RvMQbpI>~ zyT%qcnhabe7BNBk$3j%Lu@OAuge+szyGDSE)Dl?fNJiCqHD*sZ=ey#LlqI9@#)*ra z0y(PNyv5po0{Q9>?{(waNYnb2U?a#QHM`2VA0Ob$Znfc0cPxcO@_}FoC7x0@skSB` z)MGVHzXbz>B73}OkV;B|1GBaBt+mmYB1RMC_D87%;UHN#99I*lu!Y`S(0U6rTsw}@0 zWxCuJuVLr5%$W%ad#E1Cj4^wn7Or2gjiJW|N&af}+3+IY<3o zdOGa&Qwkknw>;6iweIWVU9Ibb6B{S{Ep#sVn?5;eMY(U1>l#g-9&>rk83C+(x1dj~ zEpKI@GgRR1WOh-_N>;hHcDGv)TrV|u)4rblm2PRW4w_8yeWL(O@aiRkR#J{gw_din z9Us+DFki}=)gbUwA(8;TZ^Ur%cQdKUDC@BT339Z_I96}Qn*`HtgdrWWC{?yF`NVcQ zNXp2m-^N^jws+L|=ZRnAM)+a~7vy4Qc#<9GT4zQUD;6~$8AgoBTQZj8>r0BmRK_pG zpp+Z3EB9ozBecKbWZ2wZ&`_=y-HU>PF~^Ap-h_<$EJP(aO_(Lwb-0xDXA*&9{X#vH z!530q3KqylT{OQ*T5-g59EGr8^Oo$m!%1Bl>=R9X+-he!*Izu;wD#EHOslqXiKM}} zq+``S)t4h@?9)%(y}Nv-&@B(B2sk zXQx5sKe_vQsQu!q%t#7_?Vi^N>Wpi-NV|yPrwMja9{1~UoA&3->rSU@40aoL*d8>bjC8HFSN(g;;!4< z2d}ym4kcm=#ox}>M06bO=(99xqLU&oFzVdJN~5c40j`NgZ!+gJYEt(Vl0F^G*^fkfi&@K8{Dx$t^3mWU=MOE z{jacrSQ>EWlji!#6Qxj9`p&Qh0*|$dMy96NjJB&mT}-7Lx3^=5RhX@B}=V5Eh>rUQgSQ=;MoXr`+>zZxv2 zXmER|akkteIdu(1Q%KQSbf+5jrp>##&yuo)l|&@$_TS*G*=y9O$q|0z@A?GOAq?8E z8VolB)ASvb=JNcI)~qXqLTt|xEa3hJ1{7dzBtBE*R{nPqX2zc8LRv`p6DrH!X445@ z?#LYFSM^7+G@|oXB_Qf{nwKB~mY7B)iYESJmFn381F1FWG61%}&O%QWjBm<^-MZ=z zMTST+|CiK)UWrUqcOLKqv`}{E+)4llo4)#;k{DJy=VwI7s761nVkf;*NpzZzB=#ID z!`CB6=~pw3Pmvp|bL=IDW5vu^ZXg8E|2^wCDY^6?^0?UtZ-h^LLW<#rdEstmfGAz~v(13{2HNW64@@8EK zQCaxKqKuLg6K3rSRRv9#XR}p-UI{s`@v*W05n;-Zy^CCUND)j6e~JZf8?LxC%(ZLu zY;o&M2gAqZ8Si;YqStBpX5CcjVdD}?kjAm`88Wti@$&FYFKvY$9-2cAd8Z2c3IOHx zv#-t^J+ZqzXNHM4`*I`hY0=qTSkIgj$E@S{!xKgE;UQ6=!Eyd7Iy&-#-gtXH8JW7E zf6qc4WZ%ja=PrD2Vbpl7kY+YGQ7>lI!Iu2f3k!x@;lAg%USXoHQT3^9keB}~D~+HhwspiqHF3(_N(sz;K&$L2x%S zTwrZo9NUKgplByZBE3k!Qh1l7~Rf%rsrYHa;=|_YY$Z0u=}f z@G;dS8ZoQKpHyeW540%Hv2kl#=GjPXHib~o_hkTkGN&$Cx7u0D^D&QaBtE7LuAfsp z#jBOVMk|nXaJaHN_xe!p#9!?~D)z#yP}KH=n=%M>p45&4cwgX860JSM3VgH@?En`! zygUr`7utTJSK-T0+?-A$hsyOj($qfQS)vozj039YsNs?)MiQ>*ZQ1gbCc->-9ShBv zJ0x^yHy0o6Es6Y>a z{fl{y9q-?FHeH>#-Me-eesYTe2?hncY`;k}E1V2OyM{YjyS z&vwah1@l;)%mMb5AO5Y|ig*cg=?yWaEH1W~oaMD^ElhDEY~$gH+BUdoV8s3k?>I%t zcP>eL$M(c1K}#piNo8=;GtUbp`L@8B`8wIFHRRv06_3975CGxjJjCezpsB#Qc~}HU zx}Ht3d`^pUkHET(Eu8HiLP{)2bJ1DrE!AH&VfXor-PY01OShZMs;iwI>2Qj3a|j zrbIR}tasbe?;M9Vo-hYEjpoprQR>o9MCs1k9^A6lnBIUsIx{CTGf~GSk7s!XnkPJsyz>Yt+HKU;Rpk1maXJ-P1# z6ZXbycyB1t#nUsKNEJ(2p%r!>c!9Tnj?Yi_h%50WqbGV`!b?DXA`u7%ueSx@iIyW~ z@&whk?LTtU3}3d_TNcJ+4_wm6#-UmEFe!t6N|uZl?wo2+G}l5`_zGGISw91t`;+aW9=FNGs5h;yhNY(Haf2p& zWX*Y9h=;Uyz<(0HGizLT>v0sQ8jqN{b|H`|MQ&FGG5PIv{V#X0s&9gp1MiutJ%p2+ zprqTULx;|(asAKqPf>Jl?Q~n8%{;#GQ6!KDZ&Gh8m(HSl5x_7wKfN4XZsmXzXBP&W zsgINTc`uJ|?C0a>d1j(4s1tB}t~W?gXE&k)RU1CC#rATZL=o30wi-TYW@$x_rVgRM z5W<`Uj|6Ez20~x{duy{X)?b3`sj3(iWu>01tU*!~4Syauv7y_M!{w9UcNI}Dg? zh1bc+p$EBat*tN` zBM7F_74roTS%Mrf@QfNW6f0K@t52;}oAF6jlka65Gc+-l(b(LaSJ{EFDZ!|%ojx=6 z1K81+wgCq}jmrmLdM@@5D=OI1jh&@hw4?>03ep#>QW5^hewk*Rg9P!&N_>Zv6`1xw z2HI=G(dXPCYLn+F8|=Jda%g*Uxa-Gf6?`E>huZ&bwLsp&$ZIwY6SojeoWGvQ&`k`Y zS}6hYLh?h(Z+Z^u?o0r7bNcHa6`?f;3mfn6PxQJ0aMd0}3W7&oe(-}8 zUCbRrp<9)!l`wC6yFTPVr>|$KDJ05iI~zN3YYWcT6}Jw0TL(^eoLJAo=|A;a9fD#% ztAC-xDUo1yRBhS=I!)((FMgq&dIs3wlOplrxIr(EAa@J-Z=?_+UfyBS_XL>H-b6p? zhN3{e>12DuPQAaN0Ke%5%+<~6+A+HAz+`3#5SM`pxyG3jb`}>^t0ZsClqdH9_iWhi zWDwWr&{>svxSrp{-r(|!RlSXK$DPtgY5~8g>2$am%D^*9!vd7MQ$xG&EUMmd)Z_HT zXc7`-t6+E_+>~#Mt$SAn;v-%7;jR5QTi&%#Ea^ty#J!cMA0(#0SkKtiFzFNH#kO{T zOV7u4k)^U@Y&3+Q1`y8X*=XbSR>v966(XsDoveBqaM8pvg!L+KzT{owSxK|Ie$D9K z7Rynvs^n<@XY!iQIJK_pbJT85`RFOYR+_+bWhfx$wfwfH;O3(%n|R3<6(TY|ldm;f z2!Hv8)~qo-WkOmhit=KG#0zPqntP}Z_`t5}Dx-l41l)aiA#2>O8lw;mM(@vTG^27r z+RZkN8M!yUk^br^F)pgcqgeT6RGJ!C_FF5G8cKG~eHBCMnyu-s&QkT0Ojk%@R31ys zo+r3hHS0Y25ukgL1(Y1jwR2hL5$7g^rIBBCf(IwFfw`MPu2JOzCh6HnB=xi{^cW6L z8nC8~!u7^+)^%hhBYuato-13m~o{smXb~3hJsP)$yFz72U+?N_T4Ii|y3|G<&o(ZoXm)MA$n$F_&US8K3vpr_}UOmeym-T z?TyabUjGLmoV(&EcT>!JD^GbmZZNrsDzVmnuQE zF-N#ahNM0?Sdz0cI51lSr*`Ha%PvdPh2*H0=h#QjRfjtXpb*qctQPJOMfw)7JJm8k zn*t6!NB!fN14;z0-<__Vj6tgxzO~RxNva)5nw0G`_OThh5U&bl9jJy7@KVU2-SX2@ zTl%XCC5*y|pXRPcRm6He654VcRfk`<$9?Ou(&{!g9BW5?JJ)*;X@C9~n6YgNv=hiN zMN7l_&V#SCQzrGwl+?@EU)`)(UQr`$^hT2jXJg&1)BH*R+4DPR=YES!a^N`!ay0sU zCR+q12ZlDv&?t)pkGNbMWo$Fz-u7@h3Q=kn0kLA9nVH*=_&+EyL~JWUeie9^>o@9^ zUgvAlH=G?p?y?!})N{pXgZUdW0sif7lY?;cJ{5c7>ToX)6o72}kscJq#@ig(v=`Np z6x6+xFs%c8ZUmGlm3mZzbcis6cygc}MS!yHYZYhyK?D0!4nr^8E+66w>Jf38CD>_i znNDuO{f-)W#3H@Fyw5e}TkLM?uV$dDM2mm?9nK)LeQwf!NJh5$U@7t0+%@Qt-H4F>T|8YCCX9zjm`w z{RJJve}jL>s2jw%^@*YDdBLvPVhDoxY~sFm&84WC3%uE=?h3HYFzC+nZhr=x9iQ}d z*Co_k0wZ>AI2=iu@p+-F#Atafq7V=)ugq&UkCR6AW?57D89zFu@z=Xjz66#eRD}}~ z{;{Fv$^Jxze)fLnQ3;YPSc)i4{>8@5xtAHic#t2hW8kG7JgMDGEe8XZH^AvaQ{w{uU9XVB-6j(Y$D@w+GN^qXO#;^QNmqz;bYQ}Cl$ z#(@J++KQ$3D>!9gt0?KOE>!PngB1}R4~BOuCQ+ythIZrWDO0RCZCQzax4B0#4WaY( z>plg8zofB!UJDXR<#EQMP8GLA9(HGh*pZ9>#i+9k)l32-Y7DJLhK*fJ*%f!mM#`-W}4d<*-17%tw-y~P< z-SqFe14A$v`og?=;>@<#_zz->kKBz}kMXgcFddQ=s2ubC??b+D-dCGJI=oMKU zC=MkFFp%4xFZ-HIY4Cz*Fi~Xl)1xH9`w8DGrvD6?8d)cmsypV>m5d&#FsBIF2xIDG z*2MMuM&BrZF{{#}t|?Op8Xp9z5U*W26f}DK^$3ww$1yCVVVaUj6Ly9fy?^#}8SeB# zv~0h#0vJ3Q>=%QclF=5?%E4SgXuwgGQ2R*}gtQm9lW)sMDj1LpGyd^CX)tO1v^?6j zJIFTr#NqY=5|0-C6HPqHgU&dfrXO$D7Z~uVV<|tl zrySI1XBxf9ekEur+c!M4CV|uITSLk0^alZ$u*Snkhw<}Z2rUcxL)x?I04>joQ3DBd z8?z=Ui^Raed>}`DGvE#(C=a=-?RAkogqw0h|Bfu zRLnR>ASUmeCR?TNo_`tdVjQ@|iMC0HxKPjQ)#l#ly4)_tW9d!*Vr3*`YB=DAK=?aa zw3K^Z&?%N4umJp*qe~<2e`O;OrQ{TzA|+dBQqDX{S8`&Bu^VAsRdC!Pq5uRbqz!*m z7jE0Ut(>uA1QbH^Jhg~T9qX8k%-rd4#6i$nyMu?g5GWn|63#)WwtZ$)b0Tai2>9K-FBt11)5yipP{ueR&F?P@6rz)qv&=DoX2<$sN68cD z8p@#$(41y`PYKfIBwiOQeoRjqFZH#hnpdZB3DdZXW`?CvGI)* zP`YdJ(=;SZlk|kHG~tumTw4!Ljs}=r{qBRKp8OP+B6Q}N{BGhXJ}<3xMqBbl zF?zqau6x~u&a9K;;MScx^CH3LU*BcYDgw!qA$z?6xwR2|UB0=T2V%;^-f^LSZRn)N;T?xPMPI9<`A)h@v`>q7?4X zZ6_H?FItjtBf$4-lyQ3L4*5Iq*t{31s&P{a7f~7aM5LdrNZPeZabiaHGyHC)q!n_1 z2GjYcw~3vDFiH}tOTq}w!A0`LkOyPCG{czq>9&gk%&;haZi#zPSf5=2<*Abg|*1zO1(|<=OR(z)+MGoYH&8kYpcRi3V%5+0*F}i_$pP4C< zQ1aLK@DDn{;5$&HKN{uvN8%&a48wV+Dt6rSPY_zj(NB)b0WOdGJD@hf_|7N##cjvj z)**rU#txVVSLnd0;A>Y1)1OA1!jL|~?AS^eplws)THSHL1DC7NWmb~Rd$R0s2m7|% zpjz6e{9Gs}TjNybLM*Gsv%6VZp|-ZN?{MNcbEN1JZQ4)RV)Gs;9L1;iM6n%6(dxa2 z5y}O7Ui@gVbAc~gZ;JoS?Tj;F&YY<_$!q8HCDoIwjS=!mmv+VHz5G~l%0jPhascR2 z?mRAnI(5?~3ip@S!7T{K2y4=K)`>l5Sf3UFq!PTS#YMyPBxRC02MHn>6F_OS5v_QM z0CS<{gr+1yf^cb-3wJKh_T-AxyqzQuG&UU4uv908X@en=+bw8x9VM_44F>=O3*&j8_dYT@yd{rR~hvX*6jCfK;Yw(lQY9HN~1j|h)TKYqo zy{n!_jQ!jx`aQW`egrza8nToo=tZ#PyN>5u9SK=FTQ`-C-IE5UG{hi0)jI-#(ixD` z5TDKW_`}mt_ACT*ePxjQ7GO7Q0UXLBLatR5`!|U)l|S!LTIBQ*Tk~@fP8i(XxGitp z-IOP0z zy(8&{0?W`z&nXWw4iu;NP!2N6;^fD}VoBjkk3^JHiqjKpl;B6X-DRUh{s_YN@$QOv%DH)qkm>el1$^4TtFfCP`NQdjQre=cK)zCcJ}^hKb6$TW+Uj3h%n8o1&}{MgsbS6O7&nSs zj9r67usjsKFwpmn2&9T10oPEkKE!!Qjz)7qk|=n0dx8%ZtNgi@z#yZ5?#MTYI6jCs zHK4IF+c(%87Kv^m3D}v5B(jsN-~auqZe#&>GavQ|yi%r>nVY^NR+8aJ@6O&CiEm!l zRT$wZc`<9U*w7-@GWjkq;z>n~f4|N!^Sm}C-^7$2jvGANkTorPH^4qjPHnR2JKvb1 zhP`x9enz5q`;H~bbDxugIUDh#9eS4JcuQF&6g*G212RiIPeuwV9AmSR0?#;&+6K3S zD9lCe1Gr)5%Ni&3-XIY8-zSKGUTEsbz!a_O$J+|3A=nkPPV&lyR8BYGn60T{Wslfnaou*DbH6+pP-lNbhKOd@iM+ zj2Y3uG;>_g#(3X9!Jnju1jm5tK0P!w{Dm~IkM7E#mV;GRdI>p5`-1y`F;{6LoXRT; zco_5ko2+wy_|Ked_4N|gq}$$X#Ot@yY=(Vo?N{@~H0v2^w9!q<-#xV;DS5f?E#K-xm3U>1v?t?HO7C5_e6$M6i9jzb<4U zDymBP9b13?7@7l@xvbV^5c#9Xn6VM!&KEZ2dz10}veDHCW%o|p`IcpWm%c4?7rN*E zF^!#JX<>*$e#5ITnMuF@g7{3a^CVwm5-+nDxBJrTJb9$=1p2(w^Wpx`TEfK5)0-_W zyo{a7+34mN$0gi(C=q@-L{>WcAVY5aegzp}CgB#L{>xEg9$PM*Dq-&pejI-PM154$ zSN=|$i9bYP$QXToBAmZRrJ&}I>}G$*F}}?LpVI}a03%pa9U)8|oM(b$bcf`oT}p@W zmH5(v)Y7u*iZio32JyZOm>LRcn)LPcgBVYMoIVT3bYlYWKm=yLT(k0KIK{n7mUzS6 zw^+lSvC!tEu6yCyy8}f0yH)DqP5s~$i>P9fycqe%_DG2tlKd^eu`L0^s zyu!ErPsDdk)aJ+_s9&+cTdBS(mb|MH1Es}}Mr&Kgy#T-grdLY$P0(svsTw6zgPFO3 z9Tf#Q6B7u02955Zdv=z=X$XeKVQw8v=;?AI!qESuR)NbT<%!O>iimYjb?Tu}v&a_? z9)Q$Jwi%Ri@YVcu%K#>RYz^0Ccy%w&~blIQMqel+pXyxji&M8U z{99rvv9Yg*-KAhB(i7H)5j+6i1Mz>7T6P@IQqHBJpZ}s9xB4a&hk%sP;Z_?9o8jDP zF2kH5TvZyd6kOYgoYPD)3HGE+X2hwT*rQd0m~P zwhG$%fzPp}F$D}b7AtUh+f?yPvM5h-ilxYX!ulMTPR?&4_^n z2OgW2X#ZEn^zQ2|M*FCI*~qq`PvFYxSuD*^Z{G;E+>)TYCNR8=zb=Jswr12~FBi#d#kh z*gA6XxlpIQd6}vll0M^s!;?MO=0)v^tHqY^l9r2HX0GFhh@lSMG^h3Gz-(xdw=t$M z{2hw%1u&!i^vHtR@^FHkI+xux=)6YrI%(3m$$kPRgtpU`U)^`DSnUx$P&CDsYHteN z<^R(XrLzF9xGY4@RFoILj??M#lO*zm{O&bk*#U1P{vZ_iLqA5oG6`TL&Fa&|gHVol zd)b&mgXAEcxP;5MT^wH!2}xRDLD@^6d^clNh5PfBA$PP~CUky8sH4V`DIqCDJByl{ z$gVkFu`@#4lk-+VcQH)7Yv~qD{LPY$P=V582GR&x%Y`uYv55KWj*96YvHpe zBap_y_1XSr*moSUx-5D*Cdai%maWDhO@byFOn8bwKJK=h2Ld&!$(=9M%i6tWd57gcs*x8>GZ3{V%*jy5-fqai5 zA+YLrbc(IQ$fQp+noDgFSGK^Py|Awh_ZFAJ0=&qh2CuO{fV#eLp1k^fYw)!e7Z$fK zXzVcmWzAhd8+93;usBvyrH<|h_H6P!iIaMz5r<i$XtkigWwRg$DJl1U2mY%Mt_ z%U$u6A|rs(>4lw10xMd^@~P;Aly}CGK()grpBk>HZ;#tW$H=^PHD zz542%n<$;>)!hMrMRiZBMP+aK0oeJK1Y*UCE_|&6b{uu9LiGxTXnTU^^2?PC$=^i2 z3qS2*$!y&SR+2-NU9mEA2Qxzr*~Sr)S&9T=qQFcvnl44OK9_V5QcsDOcU4PE2P5O@ zm>Azz!CKEJ{r9JsszHP+13C5@E@k}9v!OtwtG;55p;&3Nor&V@(Gn8#`fDgu?2J)k z@=TK>g?^z53@kdw-GCwm7gj@qHH)FFrKY_MyproVtlsCNDPK4aS;&&CHgK7BD(b7| zhKHL5u*;otqg^Xak{U=++=n=61LS6(-3VRu?-t`5;krZL!+S?xCo-bEoDnJhK@sr@ zAL@I*33DVoQHZ@UJ`SW-VVZF3vED`pekaT@5)ohb4tt+-l=up^u?P)epMOtBs-aYWuqEkp=_mc1T4#k1n= zLxp-AnQm5pd$zOCq1kYt&EYmI$38@8=Xm;kH29W`t=%_w%^AKl;a^Vij;njo9o5lI zgh-x3o6DGVI-#1=gpsqfkfPD~d1rJ9+27(`{OJ+dN$YCbDfCn|ovh;Lw8@CddP)tL zlX5}NU$Ir%kZgm{KQV|6f_8(oPndeoNbTD?@pVuNt>G8KF9pI5S0)hg!-4)9Lxc-B zPb14?*+R{YqcOQISa-wtZxq=_bop3ghMo;dqMn!*_4wM`tmkH zI3@|>RCqPG>I-veAUuGn`u!w}?yZ?i`Wx&Sj^A~5MXyW7)Z4Q|dJI^B)m(($USv(S zTVZFLo*0Gvp99PonvX4gBb_kJA!7eGdHuPQPJ()1@ zMcLST_)phat6`eSrwgXtPAw91daPRQd;zcOe7DCG>tECLmNwUh6Xn5N z7l}n&zXyJJv}sT8f7_8HTj+Txk~}Ele0-B6iHWV$&9T5U#Lx)O)e#esKWig!Q)7K6 zDkA+N-g0z8bo@rK9s|%J35#=s>KbaslzOm3PmhZUx9$(yn(zkiw|DNxF>ke> zwjC|zqF6j+0%9@!DA8e3N7zCx?K?HF4r}1gCfqgxiM`%B1uYRh&+3%zH_c~wFP=Fa zg*b>2epiBMy;npYkY`hxA;5*O;zj+cS%sZlnpEoxRMy;|dB?3r@aLpCbaNkHWm7(B zo|C@c=)K)l>uRGVt{4p{Ne4qY*sWq`dF}#$t6dB}cTij&iEA_(u$rCCV`g(% z>8Z@nPqe}qpKh_8c-xWPz1CeFZ#_!QsC(p1Mj(YZZxHHquTV z_Ms~sol1dRHv`<5*n4q}A}bQh94s~fj`Qxx+wf)ooc$us+G~MyE%G4;;rxOJ6G6>D z1NZ>4k3!lnqWIwTm5od6k059|%zx$3nqvPYFMgiF4s?Pwpfqzm0GPxV*tk55$_A|+ zLe3)eZO9Vq8K6!oaVcy{4mk7#;?&PN2UyYbt6z{ zTln|wv@jCJd;tYa{{P>uZxC`~s}^SE?RS1FS(;d^d>ihvP$n-(OzWFb3)y(wbs~8ll^@pOm+*CVjxI0bOY(NcAsKEHm5V6yWs|eYO2y z%Uk2V3+!)tg=eL!FN3z@w{h};V_|o^qs1GkxBybT;&W9q5)CY zjp%Uap;Sxl4RZ!%w@lYim1V2lFgzh^}?aV@uA+2%|Dc(<71*mSPz$ zxYb30JUvlsaL@}9IW}gYmQP&O!Mn+J%ZmECn`C9?!R$U;L)tFVa5Xw>>TtgtuzhDm zzg^#02zhLhaB*$OZLf!*mnZzEDd1-o;Tbzo=)UPfgEHv?>z3{$YlT9xQWW=S4P1~LF2C;}U$U{PA^3i~~L#SFQL0=cZJ zY82Fq@;P^e!~%`PLX6Z$1nt=P$Ab}9Ug` z^ASKq*!EQIcqpF5=Vd-tjI#b76O&&t7U+2ez#6y7=z80^TYe28N~E_osgch+cL7h! zbosz+(y6W5ipHC=>Ytop^SRfBp4wvd=dH35^-aLZX{mt;b3t?y>;i)dE#P{~yjxzP zyJbFlSOWGxlP^ME92BCN9v19T2z{{y-h~pqz9_k zoISp_^(!smo|S|y%8-scQ>`|?Fd_mW=PSx9eKJM7T1!avZXWYJjtln{cCACKiM^pt zovnT=DObkW9a^UC`Bg=V@4ryoaHMo7s~B=(@c2l`-8swWXxxselW?o=%fAA9M}MX* zTSYbR!X6|M>k%BtTK}bmd6Ll%%-?1_KFi07%#z6lDxn(`_PA6+>nc+>uM%&lL1%>4 z8WPM8gTqV~oc!R3`XH<=?DW75y!$wDc`bODe*EvUV76=3y`<(i;TUZ3c8 z?HC)79nAder@*P!ybw-sZeiGT6p|H)tiv<+8(E}PPr+N0hS71~6m5AhKHl7}84d*U z!EOCf-Rmn<&|;dtXHlAxUewc*clV~nhm>-PZnz@pZ*;x1B<_d};o25{zX@LRaDp>y zKWt;ci0Hlxr|f1{zFMnxv4co(SvnQAuq%RhQ900cX8W5Nx?_keqPtke4!0*7R-%{s zd1h>cD)F+bpdViWHRJGOXBs>H2D+VS&Z??$whrFoci!df!c5TT*km{FiU={U07`#e z9t=E!qG2zV2wnCrGFB7?v%6(v;N$Jj4wmQo&wDfQzNNNqIOD`HA+12$`@Ri;Kr9RA?GQ9$7ko# z(7ZjLkYY5`D?n$!;};C~I=wUp8MB7?4LzWSyyNtJU&AIK7>enzar*7sn+kypJE0NI{st*}HgW*2+ofLIM*blo@< zcx+$0Em&pwe`q=f_RNB{S;w}miEZ1~#1q@LZOz2CZQFcf+qU^-pR@O0SXZy^>aKe3 z8e;fvhIQj-35nb0h`83CpLSXha1~-9@N$CMejgiXJ^ANmui)qMoCw^ATjZ{Ct6$)? zc4)t|ZTC%o_4eBJGN$A9pYeVP=ByzZuP`Q@=u&%mA8SWvIFT?25BWAtRP4V}C5-&s z{WTe2my1cZlMPn9;%%n^QV;YRfuTnjphA=TTR8B9Jg$~>*3m>=Nyb(Cctv=BSF)u7 ziK?1QGz%{HFMpS74ct0_+%;nAO2g`Zip?5F90p1r@71R1Ai02dz!(s5;TOs<-1S?x zMO%v|BPYPkYew#c*P12blXz|Y1>w;ftfXJo@}y3iz>%8}_C$`3;+AA+C(q|U?$F4$ zF*R8Mn|h}V@J)>F&KFv3wj|=y^LL)w$VZziBMAW2WC}{5AP8jOF7G&U?Z_fnVJ!0XJtv!0$?+&gI;7(^I`#d-z_sDTaLP0Jvyu zBu^v^+nP7LBzrTu>sT(M}xqeRXupt>fY!Q{+=luK?<>3K3w*Xe7?}O`@~j1(N@x&!zQrz-lxyl!B0O zP~mzjl+gE^8RFH|dq)JZz|9h`rKW#2)BUFEeKU;v*AUPm=M~0?5$$LL_v$e%wj~}G#u3B&l$LW{leb;digEPoTdVW$9_dTx|f)seqZ;G_fTame0Wlj=w~VW0zV79Q1E^Y z{^oQvj`o{cKT)Mvz_imCA=(yeT@Rl)`Gb-eYWB-x^q_oA)Ns9% zF|6@TBzo_5J$f8kW>_3y~HnhKM zYrb1FPdOCeSn(4>Mu}i_>?~A2jT~i>8-{Jz95m3rGd?asr!C-@$h+Cpnc{r6neZ4F z<@~op;&Ko`QJ_fjcQ5-!g*!@{y{1}kVIk`0Xgys^bAJd+dsZr!y0Tx{G0c@adjLCi z#T9DL>ayFtkrSs*DARXW1W&27FIe6m;kfR^#l^~1S69um+@p~`U&d{L`T-2yd3ay^{*H~? zdSm*SH{%b2<56e0=Ih_xpv{qpRO9s4C-hE04Q)GU2>25TG+yt}cX-=r;<41g4dF^p zdEiIQIQD(jyl&?FiDp+L=48uq_h~v0l{@7wV6_sLPUMRqnB6=#l?~uwJC8C3HE()4 z*Vnv0O)A`K%y;l$8o{KKv}{q{!(vb-!aQusC=Y#5ZWLE~aVL)NqCC)Xss17FTIjZa zVAB=STu&IO?Oq!)$>o(EWcYexMgnydYG=roHsBRb>=-oH@mmk!ewEbn)M9Jp5pZ39 zTxsxrHN9Q5{{NTmCk%E7VFrz=CAy2_Q_g#%%e^f?uX-<8;57)ryAnq;L zM%5JO`Q$ujaCCI^UFL&XwhuCHjwi6))k@L2Z^}SGlQl(l^vKQ=XPZW9cV~t#h)7U* zNnO@)&hb5$O89xUk$KJZer1Rof1gRbxV@CYD;f@dgeVi!>B!6tGTw?GR1hQt6E|<5 zBxf{->qXxOnas`m_U6!ev=dNPwRp4Qd-r(|&=5}jmKB&=UMfJg9rMx^vj%R*=G1hV zHzd~%Dqu{ce2%N-wYK~DyUvZk-$r%$`x z7tOpT{Kwov6MUSS#iR!5pCC#-YW+UvfEU9hUDtQpvsAOOO!Eb2g`bY1@x^ z_Unez^z%YfqtRwDb#Nfbo#VWsa%R+rHj6r^8PKHkUk7u3X~H#OD0* zzeR1ZpMobeD%bC8a+-8q;*68g&dfLexW|e5c%>1TX zjAdPrcALaBzss4j1vwuJ=TfRU*4;L;i8SRP!N*2!g8^Uj;cuM1jm9rl587Pl zNQGNXzufS`y*x1F;C3=)@A>??t?Sv3i{l?lD*ikjLR%%si~~c zz+B4h(>mc!C~kH98z(j}H*udltkgvZC0y+TqchvH=*$>UW|H2%bUUq%aMj@!d|6{Q zo>mO9uo^P2EiR_JkrKFY>%rDZK3*!+aN78H>}Hcjy*F%_c!E^eUO#O#)z~rd4VUIA zBTl2XJ)>5zJc?^npt;f=wM2?;6vX?l#TDV{fOHI6&1UHR5tIG#356Y1^kzG&{w<%) zmmz$oo4Aq|LEagE!py8#AUUm=WFUgK$|%q`)e&r_3XLi0d?zulB5gr7;Exoq4azB% z{ymsmB=@6Pzn6Ttjk_H7&bp~6J>L>2%xTE4j-kMiL#<5iEq{vS^_%OI?Y;<#X|7VI zoJrZ?YD~5Bk9J(YP$r|1{Y7=X-6*aMMAm}l&3?Y)i$B)Mwt@H5y3#gwe>b!PVL^mzT=`Hxjq~korY)_l-xICVR}{&z)c%Os`-W^^yA{&z ztH=O*mKUul&42{-u1go)x$)=J)F$=1a`f#wXwh|!q_&Wfpm9i74I`w$(ix9JjuGL8 z(xYlHHpNEINgd|^4OCllW?fPCLic6<4M}gu_&91o+`k{{D$|;j%$ASm%gBCQ@WX(> zHttnby&UoB@uSUtg!*-9M8!8e4|p|@T*Fk8$!4+QMMRZ9aXDyOiO~+=Da&{K9QD#S zDtk5>^IRn((}Yl?K7)ivs;atNscS%~ShntcYr?HFdY5l>l|VCM6YRsHEYSgyTXi0l zn7uv1*gv@Qu55rhc>>EduNfgEd}ER4G@u`jrrIOEma1eLUXJdHVY zu!UH76x&Vw_^+0brHEE1=Eg&(6AgzZVtAUO!eH8Rt%8;NATAxM2LM`90P89P8v{P( zm0`hdxEqn+aQ8uF&&kJ|;tkjmzgYV{vG|?F?HLbemi#<**QL3|q3#Y~?9Vja*{NPE zcbB54N5d?;#Y5p*sP(qTXy;enof`mg4#BHfx(ePDs`cEAk(_v^-|@n|_E8C;N~kw* zd%e9~|KqUC%O@js3}Qcm9IwEjY^0Ko2k`w#aIDm%TM1hSm*Rv3}tz#7L&emMKoPMIW=Cz`wY}JFQ(&PVmIQzQ{(c~#!WL}QlSQ&TwRD>2KexHek%6AehXV! z#E)}gDhm|Xp*TZ2*zF5P{teMi)+M!Ht?vVVp|l?J-1i{h#y2C!_X^(P1?K4#f_#XC zgC=<2;5Hmw=#OUz9R$L0wS_tNE8`0B6iXbtIh$t_iHHwb1rd1;m8x^( zG)1?@CmcY9Q-t8EN5S6c16MMF0ej4?gPS!V13i7N+#pt7^q&p)lF|Z9Y16o{M_%CT z-)HyIZm%=QgF*5mUw#ZWu$Vz!D?*?MML>;h_y{tboy7F`^l6iJZ)Aiyai&|vYc5)8CCIh3lFSH?I^{p_PmB6Pk#@D- zr!dwlwb<}B$}y(qEO}TwutR23qOXnnj2?5MiI|wg3@q^Efqj5-I(M%e_?82nysC?HAMq-Ul7thaIDr<$Hzr09r!QWvyt2k7>FoQq_~81KL&dI4CcSzZ-#&>c`1c z@o9fR61d`0w4F58+gdg*>qGCu(G@8d@ix-JvXaD%0LX&JZM(WTb5W$j*I>emRXsQWZ*yPZ(C4M;vJfTjN+_S;-C=sSCya(~$Zf4P{zNu=4N9G486 zr+DmEBg>tn4PzhhcO&2guc5Ua>|t-#m+nG+qz9 z@9gNr=J-5tKS;41E?$$DrJUIbJQc5euSFGjT?KW&T%`D$WD&b4Ciy0e`vPL*i4pht z$mM-AoATm0Bppq_hx3T9c2SxDmIUfc*v@_8y@Yo{mE>C4yrmLpKk8T*2}DA@ax0wT zr4Hr68jiIj5e~YE9MC$AA=TFv4wN<3a}`91iHV$Qv@>+%#-2jcAJskpzGDQux5{KX zho^_zrZD$8jC>I)^p}bbKFUA?%@AbRD|t~VOK`VKps+v>yE&*L ziGXS#RJX==EfsGP*82njbiXJe?l3aEpuJ^#7}R(SDjMmc9|`4% z`Qgej9-8d_eVFVgW_xI7-e`e4@>=jewS$)>iqWN+1{}2wMF3|V_D|$3rH8@+iv&H1 z>aV}!1a(}+BG8f$`8~!wL*+L2{=mh@X#?B6iK)AJFcXU9N1~8dRq4dl8)EMWUA8-$y@z$1_3g&s?x8Fd^XF}hx%e zhYUP<3e;=z$1R{8-stj`@j6x+t%Eh%_~DrwWa6`xB>k`a2euGWx?pwVg1nY|bSXCE zqrjMy#;<%ZEmOz+L{D?ND5eG-C*V`r+f>H!O<=|Ykc3QtY!PV!j`pw3asf^;=*nUN z;kCG+2Z|@7I^Wi_dF{pM9nTAUt^1}%AA?f*MXA)!uO8*1Qc~R6e!eX7*j2#-XCP)e zjCRow3`=voj81sI%zh-kGlzY1=#MYvvk2O(12AMR2I=y#^k$61^6Il&>4WnkdGkd~ITOtCyy-!NE6gcps$mq4*PztJX2 zbj|aMFn4nze9*{|p^yj8URnf=P&(v72?>OUum^sqt%l1l2|OCtFn6KH+s=Ii6&MP@Di=^A|SrS*naWhS%UOR0g97OQnYC?2KBPo zwtfBg>9Zyb>ZDQHlX$;#2kU^jZR7j({x4-5Kh%YwN7=2k8_=fb2i9|GtmdMP` z$o_oMV$(3gSZj7)3{R~)Ea!Z~N6m*t-j3`at8WJUgZ{0ks1bY-%^J-P?BTE{__+W$ z*V=HmiG#nsY{{F)6%{K+D5z)IIWreeo{akBXKqyJ#u%rYxPd}+$%(12N3rdt2tG2t z)j2_ImkOao%rkCBI_?-Ol>{Gq#XN|j;}+re18evMGjb(Zy2=j&91An}o|i1&oW%1dg%~={#gS&-~yBU`Z zVAoekhf{Nlj~Zs`HTyg)kg?kZ1J(5?z;E*6X7qH%p%#F>y&h+o?fh5Wo2^EO!SISh z=-Y{w;&Y9+ayiZU8ArU#Yeq#pMR)nKTh-H-q^=Y5-SLQ_i*vmWDtA*mgc%2ELpNn^ zYYDZ!)vv^KEImu$h%gfV!Pe<1a3>xva?O75FmT^~^E6|9<`2?4<#*SCRtpIikb-02{tS>cn@}MWcRkCZ}v9FLgduJeM0C zmkwK{JdUDJ%fVYrlJgeOutT?E9herl#!jj96ms`9v(Wbx;-s}alUTzATvcITtY{tx zzHn*-%P3f?4mQxh+}`(#@V#O5GeMk&Q>iA?7XA|7?P{_0qzx?CKEEZ>X`kLZID6i# zxnT<5m7k#@U)&~J0>io-BFQgLdz{#Q(7Yp;(uY4TS;LAOtQD& zmSl{s5Eq8XKolR}Z_aJijWVr%>N?m4jd@;`myWtQ8J~*@ez8tz5(p zG&QzjK&3F8tEwX6#tGe~rY4j>aopsL#1RtuE=G2}<0vt6$KZ4;Ubp?T zKpV~CAi#{m*Z5MUljo}vy(@43=(L+`pg}S}4X*Z}Xl8r68RzCP#jIfB7J)9pqa0Jo zUx4y%YKJ~FG3`7oayZA#BO3+$x>=tm-;Yv8j(an>~BMg-P8Z1ynzAxDG-CLD8kjTp)Y}!U*>VSxP#|R}GS8 ziVAbb;@%z-`N^j}USoG=&xmxOBx?;UL5+H{Pu7_T11r?+@0@@jlmxTwO&`sJEbUjs0Z+k0 z^CH_fynQ_JcODcvHMgtP_~niSq;khUG*de-P&Q9`&K&g(xr4J*lcSbuL^yxBYCG6%%a@Q)*TV-c zvq52L#+7; zfGr4=;?Nv6qmDc7*ZY;8!xLA@{uxbA0?~rbU^omVl*7U99{0i!aLi43qw^T?YT52dAmPoNfd|BT5puWZV%ouN!Jg#q8Ku#>O~!^MW+s!q4*-P57> zt{;eSu7aaTws7b};~PGttaWmOB#&l6jh?xI4L81l`5D*Oaod-cFp@AqC-@o=xLHU* zbdW?F8eEPdB5kej|Hgvz?0kCja{n$Mdoi8D!LrygvAl#_qlJ3mUHQ|N;FbHH{D*si zaqAxMi%asJN~Xi!*)6ZD2%7GZ&AhaVn8p@klNCZWaQG^Xcbev|(*`&psKQWIZthAn4iIR}P+xLHd-a3` z-U}Q@B*uws5kR?qZxX1c^3@9B1$m|gdTl|_z-N!jp6hLhU)}JuC);cOqCKM@F zoSMNRE-s!H)_R2r1jpDYLwQw+X^kU|`m5h4T8-t}LwepOhfuQ&4CboYzqoPZ$1|Oo zZ6e(WyS~ZA+kBz;c^)uuTJ-TA92oa)E0oG`zCZ<#=5;O8iUfMQ0tXG-lHPobWM&Xt zbDRrsB|6e2;^^3|5@yfi?iH4Eq~w)}^m1%l55DKv22LE3mLlcNQW}uhGh?~TAT!oE z6sXNxiSs>cO=s!!iEJkXJ>&@+)|{mD^2OH^*j4tPt)nW|Q3jk`nY7()Vo0%Q70f89=ktpGT0BWCB&zc9Gi{4UFx#h^7>0` zm-nqvL&C7Aj&e}hfAapi;uH&TStPiydM+445p355?ihd!5gzX2M|1KBXB_)XRn-kv z-*zWF&hf(eIp!O043+LM4UByPbr>EWr(O)z5P8nlUtCnXT42~K zlJu;?P^VYhpdmhPS~qK5+;XexfNkKL%xx>fnkrBUaMY>K2ovPxK1+pWSF}?tys?|8 z%~fD@OLWASJ)KIj7%a6P>fG5Tyrh`e)&~p9+9Fy=A9FP?YRewuLNBgF5`YygNhfDp2l}=OZ4Ibk^@;z zyVrJ7jy42G0YWoG9H6sg3;l_^!vjBMmNBuS(|S&uZ)!8}&pS6VP$6z__?787S{P~^RB9B(#$ zW1pRog05Ik?^v$CKV9w%s;a4lQl(jX9_*OSv)sBAz|y2^o4bI!uZa#qnB`7)+TwVw z_z3s+&Xwv?5U%cP;*7_{qW=1TO!nny0XPxV5`5m3PQRJVY zOR?jEl>6fl!audV+}@C_{+KKm=6AbWaUJ&OQWl(6`3Mw{rI4qY-X4NeZi~A&&$Q%q zyv`L8XAYQ`0Efen71jCRZN3}zALRl{p1>4a?$xP?z;u*YM~(RW`Nc5GK-&lUygl*V zUQi7$A4e$X!uIp7w-ZGbR$q77AQ_`i3DvV4G~KM$$i7hE`mM{lyxecna`!biE*5A{ zH>Hp^%8HJfX~h}c^538e99ECe7WhC+XD67C2GTL%muJrNI-?v`QFs`JX# z^sj9;y;zTtf7}c=Kx(JTuJz_$mlye3TeaM5kDNY2;uE7_A6xs@&#V~dXLAd2R)W|{ z%;5r>lh-BYLk>Ab$Oik(w{r$$X~-$hsSuFoep0`uB4H1GmPHb;M+J%7Mm@f*O><$8 zr?WeN>;)Kn?|j(pg>Ouo*mPfed8es3sA)aPK9Bzj6D%uZBuH}k+&1X$) z?`~98QBiU167q`JHr9Sb@^+}e>_>>*g7 zO7xwNs`%`IDPLpnaDBBT&fo~=_;CiuLZG)4!;}W|)uB}qELS8Vl#FnhMW4zBg88qZ zU5s_Lu-ia-t8&;I=h1F)3)KBU;d{`?uM?NqBVGa&&U^O}XPr9>LnftanCF^qcBgcHV){#lGNHU~#&o%5{~f&m%A=ttjae&mb06%LGK4ZWzL8#P$+lIriYV zXSaYu)x%)?mX|=ppeMAF$CF5qvuKhe52s|Duil?3=1Z{ya{DHo&+di{`zGSg z3YODsD@(Sd5>#k1YJBzXj#HIBlxBXw)BpjlBp&5kHs&twJefqol^L#9%JYvYYn#75 z#PX%gXYAj-xCPpjMl@S7($G~)O`IJW983*Y7BKTrE|HeBh9XnRyP7gG+xZWU)9sr7 z1dcp}QOw(-Y6^P4N%{e$Y`ef#@B+)05x7t6}$NdSzv?v^8S#+^7V1b&bW?)}Q@q688H zO12Sk)*}lJL$lSsUo!dzNnZ&oFuEGu>X)}I&w;dRt94T503N7QF*U$(D@aK1yF<|zo&PRT%S{&Kj_JleB|^cSJ{ z;3)RIa`v=;_KDkF!?hhAgOv}SI3Kwhmgl@+U-+4~efKDoF1sxSE&3-R$a$&OxS(#h zU5&q@*9M#XWEyCwZ*2ig&uhbMI)ycY3GGxrmzQs3VrZl1+lAh7#uJ}YU9hiyhv(Ss z*T@$lELf}=1jqL&S3uONetY9a4zXq3aJyKL5yd8`yEymS?5aD-c2r+0iH~PE1hs=lQ1Xa|hKq`=T-(_(_>797l4L zy!bqyW1BaZP`focc4ot)XKEa=n42m0PeqQBQ0S_780b6H+z553-x&T`fhoDWSs?)% z_5kgmk6-}jQA#|Gd$?C8*h4p$-(Ea|aCq4zeoA(0-cLF6pI?@imP(4Ok%B|P(t%{4 z*yjas5I_Aho9>rQ%k}`i=bd3(yTQ|v9R9-lma1axzCErP;|hH|qhO;R)M`%-Yz}^+ z60qTWzu>s7FHp5gt*GA$*@!65Et740#t*WVeW=5pu;et zHOS$_D;*iTkKFw*n|0*&g_RjZP$Ges20C`T?H5JP_?21>_&;p_v$A&`rR*R8zim*w zZEqmBm`2?bkgaZN1S{PHyjs}#61YY6_)*dP8F#1q%_}^o>S6@5IuC!<m58vaWMDIwF^S4$!Tw?_sIjnWNLbly54GJBp%r_P)!lw6=V)2N4KCqI}{;$ zT54n^PB#L4*D{rK9mN6ZFx6lsa;yJ zH8K%PhQ3B1&vwcaT6pI(m!G6ubwoC0S?*fkI6U>B|85>#0GhMBM5RN4i$W-vpyQVY>mF%5Cm; z>(a`93l$VI-h~Cr8+}1>piw~WQL%Pt6;u4F-D5;B*AhIV&oMcMN}v`>{#OXIZSWqs z$)`qY67PpPh~*pD=Q#uxl5taR0`8Iu)o_0dCC%3V1$IFMIzLbiEIsRCt2naZY$mPD zd@$)4)fGuJY1wd0EvwIUIXH~h%QgK!-~1DiwP(9WxL~&P)U~6=5oyEMqGdm_vC*jf z00%UJ>PIRR7}cWYvY?VUCtlfkwc0t=Pid3d+UJo1JEk#v<6@%VF!GTHG8!YuLV;D< zi4Y6moIT|?72$_86x-j{o3*&<8&%-uXluYFNDqr_Xhu|)WP8FumRH<FDT6tE)uJD1fE^z_P0l^xnDYhCE47%=pTO&QVIdsh}P-%JBrW@7xPJ%%R&?xm8xQOm z*hE#s*BPekR`NQ*dA~~gJ#lk}+xv9Mqo}GnG%|O4FKusEf}63#y1SQgyc?#cQc%7c z^v{}&7nsR%43<~4yHgN0L4U+-;_N0%lia&*J_6vzbvqKpGJEAVkewDY8<^lfhj8BN zu%dg}hrW#+w)Tmy(NYev-PH>h#S>iQMT*P=+Q$_nkuebzDEkZGk}c2%Mp#uf$l&|Q zm@Ml9e|pr&xfi0u;RmAYy7}=KaeO9U-k*g%2>+x{pQb}W;C+on&!Rqp3LCOPGL3LvVu5}<;wAR ze5XsDZFYj5aXR@CpIM&TOait?;AZ7VRqSU1?4gOwAaDAjmi|HEx>Y+lZeF0;g0Xa+ zwGD&4UF)ZZvr^LFLOHrYR~WE3IP0gKDG%Zn;ew80%wCw(i3>gN2&{Px6XSk4qW-bS zt!`rd&*%@SHOfMCq{xv1!MryG_y?=c%z3TOI1F^id9AsK*}3>QZA`@|1A>ZtD=mY9 zo*U3KPl&(ZPrJ@bAfZpO%KN>T>d|t1->6)#*M{Kn z$u3=$9GEQ8S63?OL+U>`p{%w7?am@@*3lJD4jI+3knF*C$%%r9L5E@eqKg3EXf*28 zeHJBjiJd1*kcp+$Tzg?5h~O*lI6p?%fS0I$mx83Ru=(}9XJ%3Qi@o46>n|%-xM5lX zd}Ns8toKg>5L$swTii|p3Pd-vP1BX#*~V$4nuL>y}`2B#po4v?kTuD zIAnqV0ApU>K%{I!HqmeRxMhGI4cW}5TP{YA--+FeS?hz=hLgg3fs)nD2P{CST5iOq zWvgE%=F;{;u%!rB?(tD7q^aTg<&)q0arS+s!G&dkx{Tc;JgOdg#{6-V4lks7+Ll%A zy5B~i6-qN@QcNg2?X4;CNob6Xer13Lp|Y}%_e?wp0o@3;&TO6F1gaV|0LicRE#BJ3 zKcHNTE@iN@0E97-cR{DmAd{-w3TlsUfkQm2+>DonffY5ULI|_m>d!04U*Wt$Bb6I% z4{U%}^1`>~K|HC-C<3eKHtwE%KL$Z3frLWgP|Nz${X5ouX58Yb`(n&rbL;iW&NU6! z*b|RI<($ymasEtZi=P-+*;KJnO?1Dk+YGQ1FL1MOzxfygI9@ihwPB5^R8BT(LH|t1 zt}r)}DvlB!Na6F95nQ22IUNHk+QwpSmlyVvtIdVm0(X|J86#Hb#{TVvtY*W1)%ABB z1{BznRnuC}%suF&(^uPOETO3>!Cc0-BztI!?1pWic+eu)$$M%#Pak)zun-~QW^dK* z_JlNSo+348E?lF3zKUhrGAdSEy+$AsV&$7%WM9U>QsmMSefJKN)113T>A4v}v+a2#M%__*5h1qx!oK1J}2Bv zU2EWV2ZUKx>!RFhK|jj69}FyLvi9kUUd^L!}oE|Pszq_`z?=>0Ry+EbBm)* zTXXZ_s2bXS9Yp?6=K=y%xh(V3=7O^3P}oQKBR(^q(X9rn3D;3=Huuw<`yXQ|=Gex| zhq#p&xOLMv&tu7yHBH1Q*Xg5Tu;9`@o z{fc+N&w^X?yXn^(anw)tkpFik-5sEANCKaark`!l!?rqA$78GNPxowfn>4@LOZrV`*Op+ z0@rIlhInc{<}oJISfY9dQJtcNdql2&pXw(|e_!M6GJ>8k> zh;ZU~1#e?f8eG(%8(0H;OejF#wgcArJ;qU5UER0+^#n%Xz5`rn0vO5pu0`PZGRH1f zm>BZu$%tFOdI9l!XAjrY?Lz7Ug|BtvCYmqLV>bV5wV?0)jyrRll4525r2;zF==k9f5ku46FdU3@NzVWfVwhx|9T)|l zrj2m$p*muwN*#2jr6@y{d`O42Mk+ge8!*I+7ct%-aS$w*x?vp8J z%HvSW@IE|_%DY$HD>75)Ki~>k(CjNsz)lCRrG77D#|>}e$N|=f9_QB|g8~9Di;UldN|>48ifDtoi>vXyo}^xnX*+d9e9mwJ zKAeKP@*?sDVhhc@Mu`Mu?Rd|J;4qF5A4CybLD>gu{-PjCet!o)Y~4KWinI$W_MO@F zwczXZ?pa(mm{SDx>A(Dx3~MXc+e&HH{A}t2cJ(Tlg=@20qm)i_F}r3kA%WWk0xhdE zQlZmz_3eYv5hToDQDdbh#MfTt+lLanqWTfx)U)v3&JI^ZKOqSRbzo*8exxr4T;eSw ze}xB+hi{%B`ji4x;2vC?%YWN?DSxAC&hWzv{b@`L>D|6W`H+p)eih46;oUN6hMj3!=g;e$WPa_AWF->lXzKH(Go0p?VrY1at-TDvRX& z?N3PH1A%CveSSSUpWf{e5c2Of8liu);4Yp@i|+8{!gc%Dli|G3{kXR?%k7vCx!!C8 z*)DffbiAaZ?A{|i$YMj)yr`ARfBR{&uq=J+@@>*gbK_qPT3@7o2Zh3I&$r*!ELxS+i?!#WIX> z!+15$_kR1}RMW4&F!I0=W{4j^lhEBAItqf|a_;g$JHZK^h7pSH?k{OVHd!g7k>OYDqMaB~smRAQ1~$Nr7*;cgeMhFYcBIFuCKnqYU!(B?OK!^Jr)>{rsw+frrXiSs7jm|%0A{J7 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 CyocBOduD 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 z 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 BFNFXA literal 0 HcmV?d00001 diff --git a/Art/ClansBanner.png b/Art/ClansBanner.png new file mode 100644 index 0000000000000000000000000000000000000000..2de832c70ddeec3d5826c5890e918aeb50607aa4 GIT binary patch literal 1041082 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�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