From 989c324a370833a325b20f2813b8c649c01f80d2 Mon Sep 17 00:00:00 2001 From: Virizion <9b717b9d4e5f09e89fa3@gmail.com> Date: Mon, 1 Feb 2016 16:18:40 -0500 Subject: [PATCH 01/37] Hopper item pickup fix. --- .../arcade/game/games/speedbuilders/SpeedBuilders.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java index aa7606f8a..a10634fa2 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java @@ -75,6 +75,7 @@ import org.bukkit.event.entity.EntityChangeBlockEvent; import org.bukkit.event.entity.EntityCombustEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.ItemMergeEvent; +import org.bukkit.event.inventory.InventoryPickupItemEvent; import org.bukkit.event.player.PlayerBucketEmptyEvent; import org.bukkit.event.player.PlayerBucketFillEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent; @@ -1451,6 +1452,15 @@ public class SpeedBuilders extends SoloGame event.setCancelled(true); } + @EventHandler + public void stopInventoryPickup(InventoryPickupItemEvent event) + { + if (!IsLive()) + return; + + event.setCancelled(true); + } + @EventHandler public void onPlayerBucketEmpty(PlayerBucketEmptyEvent event) { From af5cf309cacab904ddb0c9a0c8b5f422df4e45c6 Mon Sep 17 00:00:00 2001 From: Mysticate Date: Wed, 3 Feb 2016 14:43:14 -0500 Subject: [PATCH 02/37] Made sure that a valid tool is used before dropping any items. --- .../game/arcade/game/games/bridge/Bridge.java | 82 +++++++++++-------- 1 file changed, 47 insertions(+), 35 deletions(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java index fa198fe45..0faa77cc3 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java @@ -6,6 +6,46 @@ import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.UUID; + +import org.bukkit.ChatColor; +import org.bukkit.Effect; +import org.bukkit.GameMode; +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.block.Chest; +import org.bukkit.craftbukkit.v1_8_R3.block.CraftBlock; +import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftItemStack; +import org.bukkit.craftbukkit.v1_8_R3.util.CraftMagicNumbers; +import org.bukkit.entity.Chicken; +import org.bukkit.entity.Cow; +import org.bukkit.entity.Entity; +import org.bukkit.entity.FallingBlock; +import org.bukkit.entity.Item; +import org.bukkit.entity.Pig; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.event.block.BlockFormEvent; +import org.bukkit.event.block.BlockFromToEvent; +import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.event.entity.EntityChangeBlockEvent; +import org.bukkit.event.entity.EntityExplodeEvent; +import org.bukkit.event.entity.EntitySpawnEvent; +import org.bukkit.event.entity.ItemSpawnEvent; +import org.bukkit.event.inventory.PrepareItemCraftEvent; +import org.bukkit.event.player.PlayerBucketEmptyEvent; +import org.bukkit.event.player.PlayerCommandPreprocessEvent; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.event.player.PlayerPickupItemEvent; +import org.bukkit.inventory.CraftingInventory; +import org.bukkit.inventory.ItemStack; +import org.bukkit.metadata.FixedMetadataValue; +import org.bukkit.util.Vector; + import mineplex.core.common.Rank; import mineplex.core.common.util.C; import mineplex.core.common.util.F; @@ -18,6 +58,7 @@ import mineplex.core.common.util.UtilEvent; import mineplex.core.common.util.UtilEvent.ActionType; import mineplex.core.common.util.UtilGear; import mineplex.core.common.util.UtilInv; +import mineplex.core.common.util.UtilItem; import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilTextMiddle; @@ -51,41 +92,6 @@ import nautilus.game.arcade.stats.DeathBomberStatTracker; import nautilus.game.arcade.stats.FoodForTheMassesStatTracker; import nautilus.game.arcade.stats.KillFastStatTracker; import nautilus.game.arcade.stats.TntMinerStatTracker; -import org.bukkit.ChatColor; -import org.bukkit.Effect; -import org.bukkit.GameMode; -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.block.Chest; -import org.bukkit.entity.Chicken; -import org.bukkit.entity.Cow; -import org.bukkit.entity.Entity; -import org.bukkit.entity.FallingBlock; -import org.bukkit.entity.Item; -import org.bukkit.entity.Pig; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.block.BlockBreakEvent; -import org.bukkit.event.block.BlockFormEvent; -import org.bukkit.event.block.BlockFromToEvent; -import org.bukkit.event.block.BlockPlaceEvent; -import org.bukkit.event.entity.EntityChangeBlockEvent; -import org.bukkit.event.entity.EntityExplodeEvent; -import org.bukkit.event.entity.EntitySpawnEvent; -import org.bukkit.event.entity.ItemSpawnEvent; -import org.bukkit.event.inventory.PrepareItemCraftEvent; -import org.bukkit.event.player.PlayerBucketEmptyEvent; -import org.bukkit.event.player.PlayerCommandPreprocessEvent; -import org.bukkit.event.player.PlayerInteractEvent; -import org.bukkit.event.player.PlayerPickupItemEvent; -import org.bukkit.inventory.CraftingInventory; -import org.bukkit.inventory.ItemStack; -import org.bukkit.metadata.FixedMetadataValue; -import org.bukkit.util.Vector; public class Bridge extends TeamGame implements OreObsfucation { @@ -1332,6 +1338,12 @@ public class Bridge extends TeamGame implements OreObsfucation event.setCancelled(true); event.getBlock().setType(Material.AIR); + if (event.getBlock().getType() == Material.FURNACE || UtilItem.isOre(event.getBlock().getType())) // Can't be broken by fist + { + if (!CraftItemStack.asNMSCopy(event.getPlayer().getItemInHand()).b(CraftMagicNumbers.getBlock((CraftBlock) event.getBlock()))) + return; + } + Location loc = event.getBlock().getLocation().clone().add(.5, .5, .5); for (ItemStack item : drops) From 5c22c841feeae9fcc368619515f304fcb5904f93 Mon Sep 17 00:00:00 2001 From: Cheese Date: Thu, 4 Feb 2016 10:55:29 +1100 Subject: [PATCH 03/37] val1 --- .../mineplex/core/common/util/UtilAlg.java | 19 ++ .../src/mineplex/core/game/GameDisplay.java | 6 +- .../src/nautilus/game/arcade/GameType.java | 2 + .../arcade/game/games/valentines/ValItem.java | 35 ++ .../game/games/valentines/Valentines.java | 321 ++++++++++++++++++ .../games/valentines/kit/KitMasterOfLove.java | 37 ++ 6 files changed, 418 insertions(+), 2 deletions(-) create mode 100644 Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/ValItem.java create mode 100644 Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/Valentines.java create mode 100644 Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/kit/KitMasterOfLove.java diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilAlg.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilAlg.java index d01556e40..744cc2462 100644 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilAlg.java +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilAlg.java @@ -255,6 +255,25 @@ public class UtilAlg return vec; } + + public static Entity findClosest(Entity mid, ArrayList locs) + { + Entity bestLoc = null; + double bestDist = 0; + + for (Entity loc : locs) + { + double dist = UtilMath.offset(mid, loc); + + if (bestLoc == null || dist < bestDist) + { + bestLoc = loc; + bestDist = dist; + } + } + + return bestLoc; + } public static Location findClosest(Location mid, ArrayList locs) { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/game/GameDisplay.java b/Plugins/Mineplex.Core/src/mineplex/core/game/GameDisplay.java index 5d90a1b98..ac497cd48 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/game/GameDisplay.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/game/GameDisplay.java @@ -68,12 +68,14 @@ public enum GameDisplay Lobbers("Bomb Lobbers", Material.FIREBALL, (byte) 0, GameCategory.ARCADE, 54), - SpeedBuilders("Speed Builders", Material.QUARTZ_BLOCK, (byte) 0, GameCategory.CLASSICS, 60), - ChampionsCTF("Champions CTF", "Champions", Material.BANNER, DyeColor.RED.getDyeData(), GameCategory.CHAMPIONS, 56), BouncyBalls("Bouncy Balls", Material.SLIME_BALL, (byte)0, GameCategory.ARCADE, 57), Gladiators("Gladiators", Material.IRON_SWORD, (byte)0, GameCategory.ARCADE, 58), TypeWars("Type Wars", Material.NAME_TAG, (byte) 0, GameCategory.CLASSICS, 59), + + SpeedBuilders("Speed Builders", Material.QUARTZ_BLOCK, (byte) 0, GameCategory.CLASSICS, 60), + + Valentines("Valentines Vendetta", Material.LEATHER, (byte)0, GameCategory.EXTRA, 60), Event("Mineplex Event", Material.CAKE, (byte)0, GameCategory.EVENT, 999); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/GameType.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/GameType.java index 58fe9a3a5..a1a14c883 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/GameType.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/GameType.java @@ -137,6 +137,8 @@ public enum GameType BouncyBalls(BouncyBalls.class, GameDisplay.BouncyBalls), + Valentines(Valentines.class, GameDisplay.Valentines), + Event(EventGame.class, GameDisplay.Event, new GameType[]{ GameType.BaconBrawl, GameType.Barbarians, GameType.Bridge, GameType.Build, GameType.Build, GameType.Cards, GameType.CastleSiege, GameType.ChampionsDominate, GameType.ChampionsTDM, GameType.Christmas, diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/ValItem.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/ValItem.java new file mode 100644 index 000000000..690bc11ff --- /dev/null +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/ValItem.java @@ -0,0 +1,35 @@ +package nautilus.game.arcade.game.games.valentines; + +import org.bukkit.Material; + +public enum ValItem +{ + FLOWER1("Red Rose", Material.RED_ROSE), + FLOWER2("Dandelion", Material.YELLOW_FLOWER), + FLOWER3("Other Flower", Material.FLOWER_POT), + WINE("Red Wine", Material.POTION), + GRASS("Organic Grass", Material.LONG_GRASS), + DIAMONDS("Diamond Earings", Material.DIAMOND), + EMERALDS("Emerald Necklace", Material.EMERALD), + BOOK("Book of Poetry", Material.BOOK), + WATCH("Fancy Pocket Watch", Material.WATCH); + + private String _title; + private Material _item; + + ValItem(String title, Material item) + { + _title = title; + _item = item; + } + + public String getTitle() + { + return _title; + } + + public Material getMaterial() + { + return _item; + } +} diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/Valentines.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/Valentines.java new file mode 100644 index 000000000..7adebd020 --- /dev/null +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/Valentines.java @@ -0,0 +1,321 @@ +package nautilus.game.arcade.game.games.valentines; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Iterator; + +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; +import org.bukkit.entity.ArmorStand; +import org.bukkit.entity.Pig; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.player.PlayerInteractEntityEvent; +import org.bukkit.inventory.ItemStack; + +import mineplex.core.common.util.C; +import mineplex.core.common.util.MapUtil; +import mineplex.core.common.util.UtilAlg; +import mineplex.core.common.util.UtilBlock; +import mineplex.core.common.util.UtilEnt; +import mineplex.core.common.util.UtilMath; +import mineplex.core.common.util.UtilTextMiddle; +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.ArcadeManager; +import nautilus.game.arcade.GameType; +import nautilus.game.arcade.events.GameStateChangeEvent; +import nautilus.game.arcade.game.SoloGame; +import nautilus.game.arcade.game.games.valentines.kit.KitMasterOfLove; +import nautilus.game.arcade.kit.Kit; + +public class Valentines extends SoloGame +{ + private int _playersOutPerRound = 1; + + private ArrayList _pigSpawns = null; + + private HashSet _blocks = null; + + private int _round = 0; + private long _roundTime = 0; + private long _roundTimeLimit = 30000; + + private ValItem _item = null; + + private ArrayList _pigs = new ArrayList(); + private ArrayList _pigsStocked = new ArrayList(); + + private ArrayList _completedRound = new ArrayList(); + + private HashSet _unusedGifts = new HashSet(); + + public Valentines(ArcadeManager manager) + { + super(manager, GameType.Valentines, + + new Kit[] + { + new KitMasterOfLove(manager), + }, + + new String[] + { + "Chris the Cow has a Valentines Date,", + "but he was robbed by the nasty pigs!", + "Recover his items, and save the day!", + "", + "Slowest players are eliminated!" + }); + + this.DamageTeamSelf = false; + } + + @Override + public void ParseData() + { + _pigSpawns = WorldData.GetDataLocs("YELLOW"); + + //Scan Map + Block source = _pigSpawns.get(0).getBlock(); + _blocks = UtilBlock.findConnectedBlocks(source, source, new HashSet(), 50000, 50); + } + + @EventHandler + public void grabDamage(CustomDamageEvent event) + { + if (event.GetDamagerPlayer(false) == null || !IsAlive(event.GetDamagerPlayer(false))) + return; + + Iterator pigIter = _pigsStocked.iterator(); + + while (pigIter.hasNext()) + { + Pig pig = pigIter.next(); + + if (event.GetDamageeEntity().equals(pig) || + (pig.getPassenger() != null && event.GetDamageeEntity().equals(pig.getPassenger()))) + { + grabItem(event.GetDamagerPlayer(false), pig); + pigIter.remove(); + } + } + } + + @EventHandler + public void grabDamage(PlayerInteractEntityEvent event) + { + Iterator pigIter = _pigsStocked.iterator(); + + while (pigIter.hasNext()) + { + Pig pig = pigIter.next(); + + if (event.getRightClicked().equals(pig) || + (pig.getPassenger() != null && event.getRightClicked().equals(pig.getPassenger()))) + { + grabItem(event.getPlayer(), pig); + pigIter.remove(); + } + } + } + + private void grabItem(Player player, Pig pig) + { + player.getInventory().addItem(new ItemStack(_item.getMaterial())); + + if (pig.getPassenger() != null) + pig.getPassenger().remove(); + } + + @EventHandler + public void arenaShrinkUpdate(UpdateEvent event) + { + if (!IsLive()) + return; + + if (event.getType() != UpdateType.TICK) + return; + + double radius = 12 + (GetPlayers(true).size() * 0.75d); + + + Block bestBlock = null; + double bestDist = 0; + + for (Block block : _blocks) + { + double dist = UtilMath.offset2d(GetSpectatorLocation(), block.getLocation().add(0.5, 0.5, 0.5)); + + if (dist > radius) + continue; + + if (bestBlock == null || dist > bestDist) + { + bestBlock = block; + bestDist = dist; + } + } + + //Shuffle Down + while (bestBlock.getRelative(BlockFace.DOWN).getType() != Material.AIR) + bestBlock = bestBlock.getRelative(BlockFace.DOWN); + + _blocks.remove(bestBlock); + + if (bestBlock.getType() != Material.AIR) + { + if (Math.random() > 0.75) + bestBlock.getWorld().spawnFallingBlock(bestBlock.getLocation().add(0.5, 0.5, 0.5), bestBlock.getType(), bestBlock.getData()); + + MapUtil.QuickChangeBlockAt(bestBlock.getLocation(), Material.AIR); + } + } + + @EventHandler + public void pigSpawn(GameStateChangeEvent event) + { + if (event.GetState() == GameState.Live) + { + CreatureAllowOverride = true; + + for (int i=0 ; i <= GetPlayers(true).size()-_playersOutPerRound ; i++) + { + Location loc = UtilAlg.Random(_pigSpawns); + + Pig pig = loc.getWorld().spawn(loc, Pig.class); + _pigs.add(pig); + + UtilEnt.Vegetate(pig); + } + + CreatureAllowOverride = false; + } + } + + @EventHandler + public void pigUpdate(UpdateEvent event) + { + for (Pig pig : _pigs) + { + Player bestPlayer = null; + double bestDist = 0; + + for (Player player : GetPlayers(true)) + { + double dist = UtilMath.offset(pig, player); + + if (bestPlayer == null || dist < bestDist) + { + bestPlayer = player; + bestDist = dist; + } + } + + if (bestPlayer == null) + return; + + //RUN! JUMP! MEOW! + } + } + + @EventHandler + public void roundUpdate(UpdateEvent event) + { + if (!IsLive()) + return; + + if (event.getType() != UpdateType.TICK) + return; + + if (UtilTime.elapsed(_roundTime, _roundTimeLimit) || _pigsStocked.isEmpty()) + { + //Kill Failed Players + for (Player player : GetPlayers(true)) + { + if (!_completedRound.contains(player)) + { + player.damage(9999); + } + } + + //Prepare Next Round + nextRound(); + } + } + + private void nextRound() + { + _round++; + + //Restock Items (only repeat items if required) + if (_unusedGifts.isEmpty()) + for (ValItem gift : ValItem.values()) + _unusedGifts.add(gift); + + //Set Item + _item = UtilAlg.Random(_unusedGifts); + _unusedGifts.remove(_item); + + //Cull Excess Pigs + while (_pigs.size() > GetPlayers(true).size() - _playersOutPerRound) + { + Pig pig = _pigs.remove(0); + + if (pig.getPassenger() != null) + pig.getPassenger().remove(); + + pig.remove(); + } + + //Restock Pigs + for (Pig pig : _pigs) + { + //Remove Old Armor Stand + if (pig.getPassenger() != null) + pig.getPassenger().remove(); + + //Set Item + ArmorStand stand = pig.getWorld().spawn(pig.getLocation(), ArmorStand.class); + stand.setHelmet(new ItemStack(_item.getMaterial())); + pig.setPassenger(stand); + + //Set Live + _pigsStocked.add(pig); + } + + //Announce + UtilTextMiddle.display("Round " + _round, _item.getTitle(), 0, 80, 20); + } + + @Override + @EventHandler + public void ScoreboardUpdate(UpdateEvent event) + { + if (event.getType() != UpdateType.FAST) + return; + + if (GetTeamList().isEmpty()) + return; + + Scoreboard.Reset(); + + Scoreboard.WriteBlank(); + Scoreboard.Write(C.cGreen + "Players Alive"); + Scoreboard.Write("" + GetPlayers(true).size()); + + Scoreboard.WriteBlank(); + Scoreboard.Write(C.cGreen + "Items Left"); + Scoreboard.Write("" + _pigsStocked.size()); + + Scoreboard.WriteBlank(); + Scoreboard.Write(C.cGreen + "Time Left"); + Scoreboard.Write("" + UtilTime.MakeStr(_roundTimeLimit - (System.currentTimeMillis() - _roundTime), 0)); + + Scoreboard.Draw(); + } +} diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/kit/KitMasterOfLove.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/kit/KitMasterOfLove.java new file mode 100644 index 000000000..f84af3d89 --- /dev/null +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/kit/KitMasterOfLove.java @@ -0,0 +1,37 @@ +package nautilus.game.arcade.game.games.valentines.kit; + +import org.bukkit.Material; +import org.bukkit.entity.EntityType; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import nautilus.game.arcade.ArcadeManager; +import nautilus.game.arcade.kit.Kit; +import nautilus.game.arcade.kit.KitAvailability; +import nautilus.game.arcade.kit.Perk; + +public class KitMasterOfLove extends Kit +{ + public KitMasterOfLove(ArcadeManager manager) + { + super(manager, "Master of Love", KitAvailability.Free, + + new String[] + { + "Ain't no mountain high enough!" + }, + + new Perk[] + { + }, + EntityType.SKELETON, + new ItemStack(Material.BOW)); + + } + + @Override + public void GiveItems(Player player) + { + + } +} From c0d6cbbb851a1579e15b7abbfa384178c29841af Mon Sep 17 00:00:00 2001 From: Mysticate Date: Thu, 4 Feb 2016 13:12:53 -0500 Subject: [PATCH 04/37] Added various cosmetic items for Valentines day. - Heart arrow trail - Heart death animation - Heart double jump animation - Heart set - Cupid's bow gadget - Pink Sheep mount --- .../core/cosmetic/ui/page/GadgetPage.java | 11 +- .../core/cosmetic/ui/page/MountPage.java | 5 + .../mineplex/core/gadget/GadgetManager.java | 93 ++++++++- .../gadgets/arrowtrail/ArrowTrailHearts.java | 55 +++++ .../gadget/gadgets/death/DeathHearts.java | 45 ++++ .../gadgets/doublejump/DoubleJumpHearts.java | 38 ++++ .../core/gadget/gadgets/item/ItemBow.java | 192 ++++++++++++++++++ .../core/gadget/gadgets/item/ItemCoal.java | 2 +- .../gadgets/particle/ParticleHeart.java | 6 +- .../src/mineplex/core/gadget/set/SetLove.java | 25 +++ .../src/mineplex/core/mount/MountManager.java | 2 + .../src/mineplex/hub/HubManager.java | 2 +- .../src/nautilus/game/arcade/Arcade.java | 2 +- 13 files changed, 460 insertions(+), 18 deletions(-) create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailHearts.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathHearts.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpHearts.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemBow.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetLove.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 264411b62..e525ae631 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,16 +86,16 @@ public class GadgetPage extends ShopPageBase if (gadget.getSet() != null) { itemLore.add(C.cBlack); - itemLore.add(C.cWhite + gadget.getSet().getName() + " Set;"); + itemLore.add(C.cWhite + 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(" "+ (cur.ownsGadget(getPlayer()) ? C.cDGreen : C.cDRed) + "▪ " + (cur.IsActive(getPlayer()) ? C.cGreen : C.cGray) + cur.GetName()); itemLore.add(C.cBlack); //Bonus - itemLore.add(C.cWhite + 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); } @@ -127,6 +127,11 @@ public class GadgetPage extends ShopPageBase itemLore.add(C.cBlack); itemLore.add(C.cBlue + "Found in Easter Holiday Treasure"); } + else if (gadget.GetCost(CurrencyType.Coins) == -6) + { + itemLore.add(C.cBlack); + itemLore.add(C.cBlue + "Found in Valentines Holiday Treasure"); + } //Rank Unlocks else if (gadget.GetCost(CurrencyType.Coins) == -10) { 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 356635962..47218f909 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 @@ -87,6 +87,11 @@ public class MountPage extends ShopPageBase itemLore.add(C.cBlack); itemLore.add(C.cBlue + "Found in Easter Holiday Treasure"); } + else if (mount.GetCost(CurrencyType.Coins) == -6) + { + itemLore.add(C.cBlack); + itemLore.add(C.cBlue + "Found in Valentines Holiday Treasure"); + } //Rank Unlocks else if (mount.GetCost(CurrencyType.Coins) == -10) { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java index 449a4e52f..422ee5253 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java @@ -32,16 +32,78 @@ 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.*; -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.gadgets.arrowtrail.ArrowTrailCandyCane; +import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailFrostLord; +import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailHearts; +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.DeathHearts; +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.DoubleJumpHearts; +import mineplex.core.gadget.gadgets.doublejump.DoubleJumpTitan; +import mineplex.core.gadget.gadgets.hat.HatCoal; +import mineplex.core.gadget.gadgets.hat.HatGrinch; +import mineplex.core.gadget.gadgets.hat.HatPresent; +import mineplex.core.gadget.gadgets.hat.HatRudolph; +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.OutfitRaveSuitBoots; +import mineplex.core.gadget.gadgets.outfit.OutfitRaveSuitChestplate; +import mineplex.core.gadget.gadgets.outfit.OutfitRaveSuitHelmet; +import mineplex.core.gadget.gadgets.outfit.OutfitRaveSuitLeggings; +import mineplex.core.gadget.gadgets.outfit.OutfitSpaceSuitBoots; +import mineplex.core.gadget.gadgets.outfit.OutfitSpaceSuitChestplate; +import mineplex.core.gadget.gadgets.outfit.OutfitSpaceSuitHelmet; +import mineplex.core.gadget.gadgets.outfit.OutfitSpaceSuitLeggings; +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.set.SetCandyCane; import mineplex.core.gadget.set.SetFrostLord; +import mineplex.core.gadget.set.SetLove; import mineplex.core.gadget.set.SetRaveSuit; import mineplex.core.gadget.set.SetSpaceSuit; import mineplex.core.gadget.set.SetTitan; @@ -59,6 +121,7 @@ import mineplex.core.gadget.types.ParticleGadget; import mineplex.core.inventory.InventoryManager; import mineplex.core.mount.MountManager; import mineplex.core.mount.event.MountActivateEvent; +import mineplex.core.packethandler.PacketHandler; import mineplex.core.pet.PetManager; import mineplex.core.preferences.PreferencesManager; import mineplex.core.projectile.ProjectileManager; @@ -75,6 +138,7 @@ public class GadgetManager extends MiniPlugin private ProjectileManager _projectileManager; private AchievementManager _achievementManager; private MountManager _mountManager; + private PacketHandler _packetManager; private NautHashMap> _gadgets; @@ -89,7 +153,8 @@ public class GadgetManager extends MiniPlugin public GadgetManager(JavaPlugin plugin, CoreClientManager clientManager, DonationManager donationManager, InventoryManager inventoryManager, MountManager mountManager, PetManager petManager, PreferencesManager preferencesManager, - DisguiseManager disguiseManager, BlockRestore blockRestore, ProjectileManager projectileManager, AchievementManager achievementManager) + DisguiseManager disguiseManager, BlockRestore blockRestore, ProjectileManager projectileManager, AchievementManager achievementManager, + PacketHandler packetHandler) { super("Gadget Manager", plugin); @@ -102,6 +167,7 @@ public class GadgetManager extends MiniPlugin _blockRestore = blockRestore; _projectileManager = projectileManager; _achievementManager = achievementManager; + _packetManager = packetHandler; _mountManager = mountManager; CreateGadgets(); @@ -114,6 +180,7 @@ public class GadgetManager extends MiniPlugin addSet(new SetFrostLord(this)); addSet(new SetCandyCane(this)); addSet(new SetTitan(this)); + addSet(new SetLove(this)); //Costumes addSet(new SetRaveSuit(this)); @@ -192,16 +259,19 @@ public class GadgetManager extends MiniPlugin addGadget(new ArrowTrailFrostLord(this)); addGadget(new ArrowTrailTitan(this)); addGadget(new ArrowTrailCandyCane(this)); + addGadget(new ArrowTrailHearts(this)); // Death Effect addGadget(new DeathFrostLord(this)); addGadget(new DeathTitan(this)); addGadget(new DeathCandyCane(this)); + addGadget(new DeathHearts(this)); // Double Jump addGadget(new DoubleJumpFrostLord(this)); addGadget(new DoubleJumpTitan(this)); addGadget(new DoubleJumpCandyCane(this)); + addGadget(new DoubleJumpHearts(this)); // Hat addGadget(new HatSanta(this)); @@ -420,6 +490,11 @@ public class GadgetManager extends MiniPlugin { return _blockRestore; } + + public PacketHandler getPacketManager() + { + return _packetManager; + } @EventHandler public void setMoving(PlayerMoveEvent event) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailHearts.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailHearts.java new file mode 100644 index 000000000..d738d9ffe --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailHearts.java @@ -0,0 +1,55 @@ +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.LineFormat; +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.UtilText; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.types.ArrowEffectGadget; + +public class ArrowTrailHearts extends ArrowEffectGadget +{ + /** + * Created by: Mysticate + * Timestamp: February 4, 2016 + */ + + public ArrowTrailHearts(GadgetManager manager) + { + super(manager, "Arrows of Cupid", + UtilText.splitLineToArray(C.cGray + "Tether your love to an arrow, then spear someone with it. Maybe they'll fall in love!", LineFormat.LORE), + -6, + Material.APPLE, (byte) 0); + } + + @Override + public void doTrail(Arrow arrow) + { + if (UtilMath.random.nextDouble() > .6) + { + UtilParticle.PlayParticleToAll(ParticleType.HEART, arrow.getLocation(), .1F, .1F, .1F, 0F, 1, ViewDist.LONGER); + return; + } + + byte data = 14; + if (UtilMath.random.nextDouble() > .5) + data = 6; + + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.WOOL, data), arrow.getLocation(), 0, 0, 0, 0.0f, 1, ViewDist.NORMAL); + } + + @Override + public void doHitEffect(Arrow arrow) + { + UtilParticle.PlayParticleToAll(ParticleType.HEART, arrow.getLocation(), .5F, .5F, .5F, 0F, 4, ViewDist.LONGER); + + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.WOOL, 14), arrow.getLocation(), .5F, .5F, .5F, 0.0f, 2, ViewDist.NORMAL); + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.WOOL, 6), arrow.getLocation(), .5F, .5F, .5F, 0.0f, 2, ViewDist.NORMAL); + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathHearts.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathHearts.java new file mode 100644 index 000000000..814567374 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathHearts.java @@ -0,0 +1,45 @@ +package mineplex.core.gadget.gadgets.death; + +import org.bukkit.Material; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; + +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.GadgetManager; +import mineplex.core.gadget.types.DeathEffectGadget; + +public class DeathHearts extends DeathEffectGadget +{ + /** + * Created by: Mysticate + * Timestamp: February 4, 2016 + */ + + public DeathHearts(GadgetManager manager) + { + super(manager, "Broken Hearted", + UtilText.splitLineToArray(C.cGray + "Nothing hurts more than having your heart broken. Apart from being killed, that is.", LineFormat.LORE), + -6, Material.DOUBLE_PLANT, (byte) 4); + } + + @EventHandler + public void onBlood(BloodEvent event) + { + event.setItem(Material.RED_ROSE, (byte) 0); + } + + @EventHandler(priority = EventPriority.MONITOR) + public void onParticles(BloodEvent event) + { + if (event.isCancelled()) + return; + + UtilParticle.PlayParticleToAll(ParticleType.ANGRY_VILLAGER, event.getLocation(), .5F, .5F, .5F, 0F, 5, ViewDist.NORMAL); + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpHearts.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpHearts.java new file mode 100644 index 000000000..4b1380e4d --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpHearts.java @@ -0,0 +1,38 @@ +package mineplex.core.gadget.gadgets.doublejump; + +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.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; +import mineplex.core.gadget.types.DoubleJumpEffectGadget; + +public class DoubleJumpHearts extends DoubleJumpEffectGadget +{ + /** + * Created by: Mysticate + * Timestamp: February 4, 2016 + */ + + public DoubleJumpHearts(GadgetManager manager) + { + super(manager, "Wings of Love", + UtilText.splitLineToArray(C.cGray + "Nothing hurts more than having your heart broken. Apart from being killed, that is.", LineFormat.LORE), + -6, Material.RED_MUSHROOM, (byte) 0); + } + + @Override + public void doEffect(Player player) + { + UtilParticle.PlayParticleToAll(ParticleType.HEART, player.getLocation(), .5F, .5F, .5F, 0F, 4, ViewDist.LONGER); + + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.WOOL, 14), player.getLocation(), .5F, .5F, .5F, 0.0f, 2, ViewDist.NORMAL); + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.WOOL, 6), player.getLocation(), .5F, .5F, .5F, 0.0f, 2, ViewDist.NORMAL); + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemBow.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemBow.java new file mode 100644 index 000000000..384fe716f --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemBow.java @@ -0,0 +1,192 @@ +package mineplex.core.gadget.gadgets.item; + +import java.util.HashSet; + +import org.bukkit.Bukkit; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.craftbukkit.v1_8_R3.entity.CraftEntity; +import org.bukkit.entity.Arrow; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.bukkit.event.entity.ProjectileHitEvent; +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.LineFormat; +import mineplex.core.common.util.UtilEnt; +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.UtilPlayer; +import mineplex.core.common.util.UtilText; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.gadgets.Ammo; +import mineplex.core.gadget.types.ItemGadget; +import mineplex.core.packethandler.IPacketHandler; +import mineplex.core.packethandler.PacketInfo; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; +import net.minecraft.server.v1_8_R3.AxisAlignedBB; +import net.minecraft.server.v1_8_R3.PacketPlayOutSpawnEntity; + +public class ItemBow extends ItemGadget +{ + /** + * Created by: Mysticate + * Timestamp: February 4, 2016 + */ + + private HashSet _arrows = new HashSet(); + private boolean _spawning = false; + + private String[] _responses = new String[] + { + "Do you feel the love?", + "Are you in love?", + "(I think they like you!)", + "Ahhh. Young love!", + "Maybe they'll bring you a rose!", + "You should go say Hi to them.", + "They look nice.", + "I love love!", + "Go get 'em, tiger!", + "Don't be TOO flirty, now.", + "That was one of my good arrows!", + "Do you believe in love at first sight?", + "Never gunna give you up, never gunna let you down.", + "I approve this message!", + }; + + private IPacketHandler _packetHandler = new IPacketHandler() + { + @Override + public void handle(PacketInfo packetInfo) + { + if (_spawning) + { + packetInfo.setCancelled(true); + return; + } + + PacketPlayOutSpawnEntity packet = (PacketPlayOutSpawnEntity) packetInfo.getPacket(); + + for (Arrow arrow : _arrows) + { + if (arrow.getEntityId() == packet.a) + { + packetInfo.setCancelled(true); + return; + } + } + } + }; + + @SuppressWarnings("unchecked") + public ItemBow(GadgetManager manager) + { + super(manager, "Cupid's Arrows", + UtilText.splitLineToArray(C.cGray + "This symbol of love will live on with you forever! Mainly because we couldn't attach the cupid wings to it. I guess duct tape can't fix everything!", LineFormat.LORE), + -6, Material.BOW, (byte) 0, 1000, new Ammo("Cupid Arrow", "Cupid's Arrows", Material.ARROW, (byte) 0, UtilText.splitLineToArray(C.cGray + "Use these arrows to shoot love into people's hearts!", LineFormat.LORE), -6, 15)); + + Manager.getPacketManager().addPacketHandler(_packetHandler, PacketPlayOutSpawnEntity.class); + } + + @SuppressWarnings("deprecation") + @Override + public void ActivateCustom(Player player) + { + _spawning = true; + Arrow arrow = player.shootArrow(); + _spawning = false; + + _arrows.add(arrow); + } + + @EventHandler + public void onUpdate(UpdateEvent event) + { + if (event.getType() == UpdateType.TICK) + { + for (Arrow arrow : new HashSet(_arrows)) + { + if (!arrow.isValid()) + { + _arrows.remove(arrow); + continue; + } + + UtilParticle.PlayParticleToAll(ParticleType.HEART, arrow.getLocation(), 0F, 0F, 0F, 0F, 1, ViewDist.LONGER); + } + } + } + + @EventHandler + public void onHit(ProjectileHitEvent event) + { + if (!(event.getEntity() instanceof Arrow)) + return; + + Arrow arrow = (Arrow) event.getEntity(); + + if (!_arrows.contains(arrow)) + return; + + _arrows.remove(arrow); + arrow.remove(); + + UtilPlayer.message((Player) arrow.getShooter(), F.main(C.cRed + "Cupid", "You missed the shot!")); + } + + @EventHandler + public void onDamage(EntityDamageByEntityEvent event) + { + if (!(event.getDamager() instanceof Arrow)) + return; + + Arrow arrow = (Arrow) event.getDamager(); + + if (!_arrows.contains(arrow)) + return; + + _arrows.remove(arrow); + arrow.remove(); + + Player shooter = (Player) arrow.getShooter(); + UtilPlayer.message(shooter, F.main(C.cRed + "Cupid", "You hit " + F.name(UtilEnt.getName(event.getEntity())) + " with an arrow! I wonder how they're feeling...")); + + // Effects + if (event.getEntity() instanceof Player) + { + ((Player) event.getEntity()).addPotionEffect(new PotionEffect(PotionEffectType.CONFUSION, 20, 1, true, false)); + UtilPlayer.message(event.getEntity(), F.main(C.cRed + "Cupid", F.name(UtilEnt.getName(shooter)) + " hit you with an arrow! " + UtilMath.randomElement(_responses))); + } + + Entity damaged = event.getEntity(); + AxisAlignedBB bb = ((CraftEntity) damaged).getHandle().getBoundingBox(); + + final Location loc = damaged.getLocation().clone(); + final AxisAlignedBB bounding = new AxisAlignedBB(bb.a, bb.b, bb.c, bb.d, bb.e, bb.f); // Clone it + + for (double rise = bounding.b ; rise < bounding.e ; rise += .2) + { + final float y = (float) (rise - bounding.b); + final float x = (float) Math.sin(y); + final float z = (float) Math.cos(y); + + Bukkit.getScheduler().runTaskLater(Manager.getPlugin(), new Runnable() + { + @Override + public void run() + { + UtilParticle.PlayParticleToAll(ParticleType.HEART, loc.clone().add(x, y, z), 0F, 0F, 0F, 0F, 1, ViewDist.LONGER); + } + }, (int) Math.floor(rise * 5)); + } + } +} 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 4ef0da13d..71544264e 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 @@ -69,7 +69,7 @@ public class ItemCoal extends ItemGadget , -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" + C.cDGray + "Earned by being naughty" } , -1, 1)); } 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 d07a2b01a..dacc9e9da 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 @@ -33,10 +33,10 @@ public class ParticleHeart extends ParticleGadget { public ParticleHeart(GadgetManager manager) { - super(manager, "I Heart You", - UtilText.splitLineToArray(C.cGray + "Show off how much you love Mineplex and everyone on it!", LineFormat.LORE), + super(manager, "Heartfelt Halo", + UtilText.splitLineToArray(C.cGray + "Share the love you feel in your heart with everybody near you!", LineFormat.LORE), -2, - Material.APPLE, (byte)0); + Material.APPLE, (byte)0, "I Heart You"); } @EventHandler diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetLove.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetLove.java new file mode 100644 index 000000000..60f474c73 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/set/SetLove.java @@ -0,0 +1,25 @@ +package mineplex.core.gadget.set; + +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailHearts; +import mineplex.core.gadget.gadgets.death.DeathHearts; +import mineplex.core.gadget.gadgets.doublejump.DoubleJumpHearts; +import mineplex.core.gadget.gadgets.particle.ParticleHeart; +import mineplex.core.gadget.types.GadgetSet; + +public class SetLove extends GadgetSet +{ + /** + * Created by: Mysticate + * Timestamp: February 4, 2016 + */ + + public SetLove(GadgetManager manager) + { + super(manager, "Lovely!", "Coming Soon", + manager.getGadget(ArrowTrailHearts.class), + manager.getGadget(DeathHearts.class), + manager.getGadget(DoubleJumpHearts.class), + manager.getGadget(ParticleHeart.class)); + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/MountManager.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/MountManager.java index 814280180..905a61ba4 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/MountManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/MountManager.java @@ -32,6 +32,7 @@ import mineplex.core.mount.types.MountSlime; import mineplex.core.mount.types.MountSpider; import mineplex.core.mount.types.MountTitan; import mineplex.core.mount.types.MountUndead; +import mineplex.core.mount.types.MountValentinesSheep; import mineplex.core.mount.types.MountZombie; public class MountManager extends MiniPlugin @@ -70,6 +71,7 @@ public class MountManager extends MiniPlugin _types.add(new MountZombie(this)); _types.add(new MountTitan(this)); _types.add(new MountBabyReindeer(this)); + _types.add(new MountValentinesSheep(this)); //_types.add(new MountSheep(this)); } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java index 3828bda01..25ae3c257 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java @@ -221,7 +221,7 @@ public class HubManager extends MiniClientPlugin _mountManager = new MountManager(_plugin, clientManager, donationManager, blockRestore, _disguiseManager); _inventoryManager = inventoryManager; new BenefitManager(plugin, clientManager, _inventoryManager); - _gadgetManager = new GadgetManager(_plugin, clientManager, donationManager, _inventoryManager, _mountManager, petManager, preferences, disguiseManager, blockRestore, new ProjectileManager(plugin), achievementManager); + _gadgetManager = new GadgetManager(_plugin, clientManager, donationManager, _inventoryManager, _mountManager, petManager, preferences, disguiseManager, blockRestore, new ProjectileManager(plugin), achievementManager, packetHandler); _treasureManager = new TreasureManager(_plugin, clientManager, serverStatusManager, donationManager, _inventoryManager, petManager, _blockRestore, hologramManager, statsManager, giveawayManager); new CosmeticManager(_plugin, clientManager, donationManager, _inventoryManager, _gadgetManager, _mountManager, petManager, _treasureManager); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java index cf2b849dc..357356433 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java @@ -144,7 +144,7 @@ public class Arcade extends JavaPlugin InventoryManager inventoryManager = new InventoryManager(this, _clientManager); PetManager petManager = new PetManager(this, _clientManager, _donationManager, inventoryManager, disguiseManager, creature, blockRestore, webServerAddress); MountManager mountManager = new MountManager(this, _clientManager, _donationManager, blockRestore, disguiseManager); - GadgetManager gadgetManager = new GadgetManager(this, _clientManager, _donationManager, inventoryManager, mountManager, petManager, preferenceManager, disguiseManager, blockRestore, projectileManager, achievementManager); + GadgetManager gadgetManager = new GadgetManager(this, _clientManager, _donationManager, inventoryManager, mountManager, petManager, preferenceManager, disguiseManager, blockRestore, projectileManager, achievementManager, packetHandler); CosmeticManager cosmeticManager = new CosmeticManager(this, _clientManager, _donationManager, inventoryManager, gadgetManager, mountManager, petManager, null); cosmeticManager.setInterfaceSlot(7); cosmeticManager.disableTeamArmor(); From e94222a68e43fa87ba22cd6db10836210eec0333 Mon Sep 17 00:00:00 2001 From: Mysticate Date: Thu, 4 Feb 2016 13:13:22 -0500 Subject: [PATCH 05/37] Added sheep mount to index. --- .../mount/types/MountValentinesSheep.java | 95 +++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountValentinesSheep.java diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountValentinesSheep.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountValentinesSheep.java new file mode 100644 index 000000000..c84df0e20 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountValentinesSheep.java @@ -0,0 +1,95 @@ +package mineplex.core.mount.types; + +import org.bukkit.DyeColor; +import org.bukkit.Material; +import org.bukkit.entity.Horse; +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.LineFormat; +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.UtilText; +import mineplex.core.disguise.disguises.DisguiseBase; +import mineplex.core.disguise.disguises.DisguiseSheep; +import mineplex.core.mount.HorseMount; +import mineplex.core.mount.MountManager; +import mineplex.core.mount.SingleEntityMountData; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; + +public class MountValentinesSheep extends HorseMount +{ + /** + * Created by: Mysticate + * Timestamp: February 4, 2016 + */ + + public MountValentinesSheep(MountManager manager) + { + super(manager, "Loving Sheeples", + UtilText.splitLineToArray(C.cGray + "This symbol of love will live on with you forever! Mainly because we couldn't attach the cupid wings to it. I guess duct tape can't fix everything!", LineFormat.LORE), + Material.WOOL, (byte) 6, -6, Horse.Color.BLACK, Horse.Style.NONE, Horse.Variant.HORSE, 1.0, null); + } + + @Override + public void EnableCustom(Player player) + { + super.EnableCustom(player); + + Horse horse = GetActive().get(player).getEntity(); + horse.setCustomName(C.cRed + player.getName() + "'s " + GetName()); + + UtilEnt.silence(horse, true); + + DisguiseSheep disguise = new DisguiseSheep(horse); + disguise.setColor(DyeColor.PINK); + disguise.setName(""); + + Manager.getDisguiseManager().disguise(disguise); + } + + @EventHandler + public void doAnimations(UpdateEvent event) + { + if (event.getType() != UpdateType.TICK) + return; + + for (SingleEntityMountData ent : GetActive().values()) + { + if (!ent.getEntity().isValid()) + continue; + + if (event.getType() == UpdateType.TICK) + { + UtilParticle.PlayParticleToAll(ParticleType.HEART, ent.getEntity().getLocation().clone().add(0, .5, 0), new Vector(), 0F, 1, ViewDist.NORMAL); + } + else if (event.getType() == UpdateType.FAST) + { + DisguiseBase disguise = Manager.getDisguiseManager().getDisguise(ent.getEntity()); + + if (disguise instanceof DisguiseSheep) + { + DisguiseSheep sheep = (DisguiseSheep) disguise; + + if (sheep.getColor() == 6) // Pink + { + sheep.setColor(DyeColor.RED); + } + else if (sheep.getColor() == 14) // Red + { + sheep.setColor(DyeColor.MAGENTA); + } + else if (sheep.getColor() == 2) // Magenta + { + sheep.setColor(DyeColor.PINK); + } + } + } + } + } +} From 690c2acce832cbbcf9ff53a5370ff79b3fac588b Mon Sep 17 00:00:00 2001 From: Cheese Date: Fri, 5 Feb 2016 13:25:57 +1100 Subject: [PATCH 06/37] many valentine, such wow --- .../game/core/damage/DamageManager.java | 13 +- .../src/nautilus/game/arcade/GameType.java | 1 + .../game/games/gladiators/Gladiators.java | 2 +- .../arcade/game/games/valentines/ValItem.java | 53 +- .../game/games/valentines/Valentines.java | 608 +++++++++++++++--- .../games/valentines/kit/KitMasterOfLove.java | 3 +- .../tutorial/TutorialPhaseValentines.java | 47 ++ .../tutorial/TutorialValentines.java | 34 + .../arcade/gametutorial/GameTutorial.java | 5 + .../arcade/gametutorial/TutorialText.java | 20 +- 10 files changed, 666 insertions(+), 120 deletions(-) create mode 100644 Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/tutorial/TutorialPhaseValentines.java create mode 100644 Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/tutorial/TutorialValentines.java diff --git a/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/damage/DamageManager.java b/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/damage/DamageManager.java index d5c6f0bf4..67b2ba1f3 100644 --- a/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/damage/DamageManager.java +++ b/Plugins/Mineplex.Minecraft.Game.Core/src/mineplex/minecraft/game/core/damage/DamageManager.java @@ -99,6 +99,10 @@ public class DamageManager extends MiniPlugin LivingEntity damager = UtilEvent.GetDamagerEntity(event, true); Projectile projectile = GetProjectile(event); + /* + * Fishing rods are disabled because of their custom properties + * we want them to behave like default MC. + */ if (projectile instanceof Fish) return; @@ -348,9 +352,8 @@ public class DamageManager extends MiniPlugin } } - // TODO: What is this required for? Players with books in regular games are spammed. Is it meant for debugging? - // TODO: Temporarily commenting out - //DisplayDamage(event); + //Debug + DisplayDamage(event); } private void Damage(CustomDamageEvent event) @@ -669,7 +672,7 @@ public class DamageManager extends MiniPlugin event.setDamage(damage); } - private LivingEntity GetDamageeEntity(EntityDamageEvent event) + public LivingEntity GetDamageeEntity(EntityDamageEvent event) { if (event.getEntity() instanceof LivingEntity) return (LivingEntity)event.getEntity(); @@ -677,7 +680,7 @@ public class DamageManager extends MiniPlugin return null; } - private Projectile GetProjectile(EntityDamageEvent event) + public Projectile GetProjectile(EntityDamageEvent event) { if (!(event instanceof EntityDamageByEntityEvent)) return null; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/GameType.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/GameType.java index a1a14c883..252d24a03 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/GameType.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/GameType.java @@ -63,6 +63,7 @@ import nautilus.game.arcade.game.games.tug.Tug; import nautilus.game.arcade.game.games.turfforts.TurfForts; import nautilus.game.arcade.game.games.typewars.TypeWars; import nautilus.game.arcade.game.games.uhc.UHC; +import nautilus.game.arcade.game.games.valentines.Valentines; import nautilus.game.arcade.game.games.wither.WitherGame; import nautilus.game.arcade.game.games.wizards.Wizards; import nautilus.game.arcade.game.games.zombiesurvival.ZombieSurvival; 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 fbf5edc54..365688c93 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 @@ -110,7 +110,7 @@ public class Gladiators extends SoloGame DamageTeamSelf = true; HungerSet = 20; DontAllowOverfill = true; - EnableTutorials = false; + EnableTutorials = true; BlockBreakAllow.add(Material.SUGAR_CANE_BLOCK.getId()); BlockBreakAllow.add(Material.DEAD_BUSH.getId()); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/ValItem.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/ValItem.java index 690bc11ff..e23726cba 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/ValItem.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/ValItem.java @@ -4,23 +4,51 @@ import org.bukkit.Material; public enum ValItem { - FLOWER1("Red Rose", Material.RED_ROSE), - FLOWER2("Dandelion", Material.YELLOW_FLOWER), - FLOWER3("Other Flower", Material.FLOWER_POT), - WINE("Red Wine", Material.POTION), - GRASS("Organic Grass", Material.LONG_GRASS), - DIAMONDS("Diamond Earings", Material.DIAMOND), - EMERALDS("Emerald Necklace", Material.EMERALD), - BOOK("Book of Poetry", Material.BOOK), - WATCH("Fancy Pocket Watch", Material.WATCH); + FLOWER1("Red Rose", + "She will love this bouquet of roses!", + Material.RED_ROSE), + + FLOWER2("Dandelion", + "Oh my, these flowers smell great!", + Material.YELLOW_FLOWER), + + FLOWER3("Other Flower", + "MOO", + Material.REDSTONE), + + WINE("Red Wine", + "This will go great with our dinner!", + Material.POTION), + + GRASS("Organic Grass", + "Only the best for my date!", + Material.LONG_GRASS), + + DIAMONDS("Diamond Earings", + "An expensive, but worthwhile gift!", + Material.DIAMOND), + + EMERALDS("Emerald Necklace", + "Such necklace, many wow!", + Material.EMERALD), + + BOOK("Book of Poetry", + "I will use impress her with poetry!", + Material.BOOK), + + WATCH("Fancy Pocket Watch", + "This sure looks good on me!", + Material.WATCH); private String _title; + private String _endText; private Material _item; - ValItem(String title, Material item) + ValItem(String title, String endText, Material item) { _title = title; _item = item; + _endText = endText; } public String getTitle() @@ -32,4 +60,9 @@ public enum ValItem { return _item; } + + public String getEndText() + { + return _endText; + } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/Valentines.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/Valentines.java index 7adebd020..1b1631744 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/Valentines.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/Valentines.java @@ -1,28 +1,52 @@ package nautilus.game.arcade.game.games.valentines; +import java.io.FileNotFoundException; import java.util.ArrayList; +import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; +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.ArmorStand; +import org.bukkit.entity.Cow; +import org.bukkit.entity.Fish; +import org.bukkit.entity.Item; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Pig; import org.bukkit.entity.Player; +import org.bukkit.entity.Projectile; 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.PlayerInteractEntityEvent; import org.bukkit.inventory.ItemStack; +import org.bukkit.util.Vector; 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.UtilBlock; import mineplex.core.common.util.UtilEnt; +import mineplex.core.common.util.UtilEvent; import mineplex.core.common.util.UtilMath; +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilTextBottom; import mineplex.core.common.util.UtilTextMiddle; import mineplex.core.common.util.UtilTime; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilParticle.ViewDist; +import mineplex.core.itemstack.ItemStackFactory; +import mineplex.core.noteblock.INoteVerifier; +import mineplex.core.noteblock.NBSReader; +import mineplex.core.noteblock.NotePlayer; +import mineplex.core.noteblock.NoteSong; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import mineplex.minecraft.game.core.damage.CustomDamageEvent; @@ -30,26 +54,45 @@ import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.GameType; import nautilus.game.arcade.events.GameStateChangeEvent; import nautilus.game.arcade.game.SoloGame; +import nautilus.game.arcade.game.Game.GameState; +import nautilus.game.arcade.game.games.gladiators.tutorial.TutorialGladiators; import nautilus.game.arcade.game.games.valentines.kit.KitMasterOfLove; +import nautilus.game.arcade.game.games.valentines.tutorial.TutorialValentines; import nautilus.game.arcade.kit.Kit; public class Valentines extends SoloGame { + private String _cowName = "Calvin the Cow"; + + private Cow _cow; + + private NotePlayer _music; + private NoteSong _song; + private int _playersOutPerRound = 1; - private ArrayList _pigSpawns = null; + - private HashSet _blocks = null; + private HashSet _blocks = new HashSet(); + private int _blockMapHeight = 0; private int _round = 0; private long _roundTime = 0; - private long _roundTimeLimit = 30000; + private long _roundTimeLimit = 60000; + + private int _roundState = 0; + //1 = Playing + //2 = Between Rounds + + private boolean _finalRound = false; private ValItem _item = null; - private ArrayList _pigs = new ArrayList(); - private ArrayList _pigsStocked = new ArrayList(); + private ArrayList _pigSpawns = null; + private HashMap _pigs = new HashMap(); + private HashSet _pigsDead = new HashSet(); + private ArrayList _hasItem = new ArrayList(); private ArrayList _completedRound = new ArrayList(); private HashSet _unusedGifts = new HashSet(); @@ -65,14 +108,28 @@ public class Valentines extends SoloGame new String[] { - "Chris the Cow has a Valentines Date,", + "Calvin the Cow has a Valentines Date,", "but he was robbed by the nasty pigs!", "Recover his items, and save the day!", "", "Slowest players are eliminated!" }); - this.DamageTeamSelf = false; + this.DamageTeamSelf = true; + this.HungerSet = 20; + this.HealthSet = 20; + + EnableTutorials = false; + + + try + { + _song = NBSReader.loadSong("../../update/songs/popcorn.nbs"); + } + catch (FileNotFoundException e) + { + e.printStackTrace(); + } } @Override @@ -81,58 +138,213 @@ public class Valentines extends SoloGame _pigSpawns = WorldData.GetDataLocs("YELLOW"); //Scan Map - Block source = _pigSpawns.get(0).getBlock(); - _blocks = UtilBlock.findConnectedBlocks(source, source, new HashSet(), 50000, 50); + for (Block block : UtilBlock.getInBoundingBox(WorldData.GetDataLocs("GRAY").get(0), WorldData.GetDataLocs("GRAY").get(1))) + { + if (block.getType() != Material.AIR) + _blocks.add(block); + + if (UtilBlock.solid(block)) + { + if (block.getY() > _blockMapHeight) + _blockMapHeight = block.getY(); + } + } + + System.out.println("Scanned " + _blocks.size() + " Arena Blocks"); + } + + @EventHandler + public void stateChanges(GameStateChangeEvent event) + { + if (event.GetState() == GameState.Prepare) + { + _playersOutPerRound = Math.max(1, (int)(GetPlayers(true).size()/8d)); + + CreatureAllowOverride = true; + _cow = GetSpectatorLocation().getWorld().spawn(GetSpectatorLocation(), Cow.class); + _cow.setCustomName(C.cGreen + C.Bold + _cowName); + _cow.setCustomNameVisible(true); + + UtilEnt.Vegetate(_cow); + UtilEnt.ghost(_cow, true, false); + CreatureAllowOverride = false; + } + if (event.GetState() == GameState.End || event.GetState() == GameState.Dead) + _music.cancel(); + } + + @Override + public void addTutorials() + { + GetTeamList().get(0).setTutorial(new TutorialValentines(this, Manager)); + } + + @EventHandler + public void tutorialUpdate(UpdateEvent event) + { + TutorialValentines tutorial = (TutorialValentines) GetTeamList().get(0).getTutorial(); + tutorial.update(event); + } + + @EventHandler + public void knockback(CustomDamageEvent event) + { + if (event.GetDamageePlayer() != null) + { + if (event.GetCause() == DamageCause.ENTITY_ATTACK) + event.AddKnockback("Hit Reversal", -1); + } + } + + @EventHandler + public void knockbackRod(EntityDamageEvent event) + { + if (!(event.getEntity() instanceof LivingEntity)) + return; + + Projectile projectile = Manager.GetDamage().GetProjectile(event); + + if (!(projectile instanceof Fish)) + return; + + LivingEntity damagee = Manager.GetDamage().GetDamageeEntity(event); + LivingEntity damager = UtilEvent.GetDamagerEntity(event, true); + + event.setCancelled(true); + + damagee.playEffect(EntityEffect.HURT); + + UtilAction.velocity(damagee, UtilAlg.getTrajectory(damagee, damager), 0.6, false, 0, 0.2, 1, true); } @EventHandler public void grabDamage(CustomDamageEvent event) { - if (event.GetDamagerPlayer(false) == null || !IsAlive(event.GetDamagerPlayer(false))) + if (_finalRound) return; - Iterator pigIter = _pigsStocked.iterator(); + if (event.GetDamagerPlayer(false) == null) + return; - while (pigIter.hasNext()) + if (_finalRound) { - Pig pig = pigIter.next(); - - if (event.GetDamageeEntity().equals(pig) || - (pig.getPassenger() != null && event.GetDamageeEntity().equals(pig.getPassenger()))) - { - grabItem(event.GetDamagerPlayer(false), pig); - pigIter.remove(); - } + event.GetDamageeEntity().eject(); + event.GetDamageeEntity().leaveVehicle(); } - } - - @EventHandler - public void grabDamage(PlayerInteractEntityEvent event) - { - Iterator pigIter = _pigsStocked.iterator(); - while (pigIter.hasNext()) + if (event.GetDamageeEntity() instanceof Pig) { - Pig pig = pigIter.next(); - - if (event.getRightClicked().equals(pig) || - (pig.getPassenger() != null && event.getRightClicked().equals(pig.getPassenger()))) - { - grabItem(event.getPlayer(), pig); - pigIter.remove(); - } + grabItem(event.GetDamagerPlayer(false), (Pig)event.GetDamageeEntity()); } + + if (!event.IsCancelled()) + { + event.SetCancelled("Pig Cancel"); + + event.GetDamageeEntity().playEffect(EntityEffect.HURT); + } } private void grabItem(Player player, Pig pig) { - player.getInventory().addItem(new ItemStack(_item.getMaterial())); + if (!IsAlive(player)) + return; + if (_hasItem.contains(player) || _completedRound.contains(player)) + return; + + if (!_pigs.containsKey(pig)) + return; + + _pigs.remove(pig); + + pig.playEffect(EntityEffect.DEATH); + _pigsDead.add(pig); + + //Remove Item from Pig if (pig.getPassenger() != null) pig.getPassenger().remove(); + + //Give Item to Player + player.getInventory().addItem(new ItemStack(_item.getMaterial())); + + _hasItem.add(player); + + //Effects + player.playSound(player.getLocation(), Sound.ORB_PICKUP, 1f, 1f); + player.getWorld().playSound(pig.getLocation(), Sound.PIG_DEATH, 1f, 1f); + + //Inform + UtilTextMiddle.display(C.cGreen + C.Bold + "Success", "Take " + _item.getTitle() + " back to Calvin!", 0, 80, 20, player); + + if (_pigs.size() > 0) + UtilTextBottom.display(C.Bold + _pigs.size() + " Items Left", UtilServer.getPlayers()); + } + + @EventHandler + public void returnDamage(CustomDamageEvent event) + { + if (event.GetDamagerPlayer(false) == null) + return; + + if (event.GetDamageeEntity() instanceof Cow) + { + returnItem(event.GetDamagerPlayer(false), (Cow)event.GetDamageeEntity()); + + event.SetCancelled("Cow Damage"); + } + } + + @EventHandler + public void returnInteract(PlayerInteractEntityEvent event) + { + if (event.getRightClicked() instanceof Cow) + { + returnItem(event.getPlayer(), (Cow)event.getRightClicked()); + } } - @EventHandler + private void returnItem(Player player, Cow cow) + { + if (!IsAlive(player)) + return; + + if (!_hasItem.remove(player) && player.getVehicle() == null) + return; + + + //Remove Item to Player + if (!_finalRound) + { + player.getInventory().remove(_item.getMaterial()); + } + else + { + _pigs.clear(); + } + + _completedRound.add(player); + + //Effects + player.playSound(player.getLocation(), Sound.LEVEL_UP, 1f, 1f); + player.getWorld().playSound(cow.getLocation(), Sound.COW_IDLE, 2f, 1f); + + UtilParticle.PlayParticle(ParticleType.HEART, _cow.getLocation().add(0, 0.5, 0), 1f, 1f, 1f, 0, 10, ViewDist.NORMAL, UtilServer.getPlayers()); + + //Inform + UtilTextMiddle.display(C.cGreen + C.Bold + _cowName, _item.getEndText(), 0, 80, 20, player); + + if (_pigs.size() > 0) + UtilTextBottom.display(C.Bold + _pigs.size() + " Items Left", UtilServer.getPlayers()); + + } + + public double getRadius() + { + return 24 + (GetPlayers(true).size() * 0.5d); + } + + //@EventHandler public void arenaShrinkUpdate(UpdateEvent event) { if (!IsLive()) @@ -141,8 +353,7 @@ public class Valentines extends SoloGame if (event.getType() != UpdateType.TICK) return; - double radius = 12 + (GetPlayers(true).size() * 0.75d); - + double radius = getRadius(); Block bestBlock = null; double bestDist = 0; @@ -151,7 +362,7 @@ public class Valentines extends SoloGame { double dist = UtilMath.offset2d(GetSpectatorLocation(), block.getLocation().add(0.5, 0.5, 0.5)); - if (dist > radius) + if (dist < radius) continue; if (bestBlock == null || dist > bestDist) @@ -168,61 +379,195 @@ public class Valentines extends SoloGame _blocks.remove(bestBlock); if (bestBlock.getType() != Material.AIR) - { - if (Math.random() > 0.75) - bestBlock.getWorld().spawnFallingBlock(bestBlock.getLocation().add(0.5, 0.5, 0.5), bestBlock.getType(), bestBlock.getData()); - MapUtil.QuickChangeBlockAt(bestBlock.getLocation(), Material.AIR); - } } @EventHandler - public void pigSpawn(GameStateChangeEvent event) + public void pigFall(EntityDamageEvent event) { - if (event.GetState() == GameState.Live) - { - CreatureAllowOverride = true; + if (event.getCause() == DamageCause.FALL) + event.setCancelled(true); + } + + public void pigSpawn() + { + CreatureAllowOverride = true; + + int toSpawn = GetPlayers(true).size()-_playersOutPerRound; + + if (toSpawn == 1) + _finalRound = true; + + for (int i=0 ; i < toSpawn ; i++) + { + Location loc = UtilAlg.Random(_pigSpawns); - for (int i=0 ; i <= GetPlayers(true).size()-_playersOutPerRound ; i++) - { - Location loc = UtilAlg.Random(_pigSpawns); + Pig pig = loc.getWorld().spawn(loc, Pig.class); + _pigs.put(pig, pig.getLocation()); + + UtilEnt.Vegetate(pig); + + //Give Item + if (toSpawn > 1) + { + Item item = pig.getWorld().dropItem(pig.getLocation(), new ItemStack(_item.getMaterial())); - Pig pig = loc.getWorld().spawn(loc, Pig.class); - _pigs.add(pig); + if (pig.getPassenger() != null) + pig.getPassenger().remove(); - UtilEnt.Vegetate(pig); + pig.setPassenger(item); } - - CreatureAllowOverride = false; } + + CreatureAllowOverride = false; } @EventHandler public void pigUpdate(UpdateEvent event) { - for (Pig pig : _pigs) - { - Player bestPlayer = null; - double bestDist = 0; - - for (Player player : GetPlayers(true)) + for (Pig pig : _pigs.keySet()) + { + //Fallen Off Island?! JUMP BACK! + Block block = pig.getLocation().getBlock(); + while (block.getType() == Material.AIR) { - double dist = UtilMath.offset(pig, player); + block = block.getRelative(BlockFace.DOWN); + } + if (block.isLiquid()) + { + UtilAction.velocity(pig, + UtilAlg.getTrajectory(pig.getLocation(), + GetSpectatorLocation().add(Math.random() * 30 - 15, 0, Math.random() * 30 - 15)), + 2 + Math.random(), false, 0, 0.4, 10, true); - if (bestPlayer == null || dist < bestDist) + pig.getWorld().playSound(pig.getLocation(), Sound.PIG_IDLE, 2f, 2f); + + continue; + } + + //Player Rider + if (_finalRound && pig.getPassenger() != null && pig.getPassenger() instanceof Player) + { + Location target = pig.getLocation(); + target.add(pig.getPassenger().getLocation().getDirection().multiply(5)); + + UtilEnt.CreatureMoveFast(pig, target, 2); + + continue; + } + + Vector threat = new Vector(0,0,0); + + //waypoint + Location loc = _pigs.get(pig); + + //find new waypoint + if (UtilMath.offset2d(pig.getLocation(), loc) < 5 || targetAtEdge(loc)) + { + Location newLoc = getNewWaypoint(pig); + + if (newLoc != null) { - bestPlayer = player; - bestDist = dist; + loc.setX(newLoc.getX()); + loc.setZ(newLoc.getZ()); } } - if (bestPlayer == null) - return; + threat.add(UtilAlg.getTrajectory2d(pig.getLocation(), loc).multiply(0.4)); - //RUN! JUMP! MEOW! + //run from players + double closestDist = 0; + HashMap ents = UtilEnt.getInRadius(pig.getLocation(), 12); + if (ents.size() > 0) + { + for (LivingEntity ent : ents.keySet()) + { + if (ent instanceof Player) + { + if (ent.equals(pig)) + continue; + + if (!IsAlive((Player)ent)) + continue; + + double score = ents.get(ent); + + //Add scaled threat! + threat.add(UtilAlg.getTrajectory2d(ent, pig).multiply(score)); + + if (score > closestDist) + closestDist = score; + } + if (ent instanceof Pig) + { + if (ents.get(ent) < 0.3) + { + threat.add(UtilAlg.getTrajectory2d(ent, pig).multiply(ents.get(ent) * 0.3)); + } + } + } + } + + threat.normalize(); + + //MOVE + Location target = pig.getLocation().add(threat.multiply(4)); + + //try to skate around edge + int attempts = 0; + while (targetAtEdge(target) && attempts < 10) + { + attempts++; + + target.add(UtilAlg.getTrajectory(target, GetSpectatorLocation())); + + //too cornered! jump back in + if (UtilMath.offset(pig.getLocation(), target) < 2) + { + UtilEnt.CreatureMoveFast(pig, pig.getLocation().add(UtilAlg.getTrajectory(pig.getLocation(), GetSpectatorLocation())), 2f); + + UtilAction.velocity(pig, + UtilAlg.getTrajectory(pig.getLocation(), + GetSpectatorLocation().add(Math.random() * 30 - 15, 0, Math.random() * 30 - 15)), + 2 + Math.random(), false, 0, 0.4, 10, true); + + pig.getWorld().playSound(pig.getLocation(), Sound.PIG_IDLE, 2f, 2f); + } + } + + UtilEnt.CreatureMoveFast(pig, target, 1.5f + (float)(1f * closestDist)); } } + private Location getNewWaypoint(Pig pig) + { + for (int i=0 ; i<50 ; i++) + { + Location loc = pig.getLocation(); + + loc.add(Math.random() * 50 - 25, 0, Math.random() * 50 - 25); + + if (!targetAtEdge(loc)) + return loc; + } + + return null; + } + + private boolean targetAtEdge(Location target) + { + Block block = target.getWorld().getBlockAt(target.getBlockX(), _blockMapHeight, target.getBlockZ()); + + for (int x=-1 ; x <= 1 ; x++) + for (int z=-1 ; z <= 1 ; z++) + { + if (block.getRelative(x, -1, z).getType() == Material.AIR) + return true; + } + + return false; + } + @EventHandler public void roundUpdate(UpdateEvent event) { @@ -232,18 +577,61 @@ public class Valentines extends SoloGame if (event.getType() != UpdateType.TICK) return; - if (UtilTime.elapsed(_roundTime, _roundTimeLimit) || _pigsStocked.isEmpty()) + if (_roundState == 0) { - //Kill Failed Players - for (Player player : GetPlayers(true)) + nextRound(); + } + + else if (_roundState == 1) + { + if (UtilTime.elapsed(_roundTime, _roundTimeLimit) || (_pigs.isEmpty() && _hasItem.isEmpty())) { - if (!_completedRound.contains(player)) + if (_completedRound.isEmpty()) { - player.damage(9999); + //Announce + AnnounceEnd(new ArrayList()); + + //End + SetState(GameState.End); + + return; } + + //Kill Failed Players + for (Player player : GetPlayers(true)) + { + if (!_completedRound.contains(player)) + { + UtilTextMiddle.display(C.cRed + C.Bold + "Game Over", "You failed to help Calvin", 0, 80, 20, player); + player.damage(9999); + } + } + + _roundState = 2; + _roundTime = System.currentTimeMillis(); + + + //Cull Excess Pigs + Iterator pigIter = _pigs.keySet().iterator(); + while (pigIter.hasNext()) + { + Pig pig = pigIter.next(); + + if (pig.getPassenger() != null) + pig.getPassenger().remove(); + + pig.playEffect(EntityEffect.DEATH); + _pigsDead.add(pig); + pigIter.remove(); + } + + //Stop Music + _music.cancel(); } - - //Prepare Next Round + } + + else if (_roundState == 2 && UtilTime.elapsed(_roundTime, 5000)) + { nextRound(); } } @@ -252,6 +640,12 @@ public class Valentines extends SoloGame { _round++; + _roundState = 1; + _roundTime = System.currentTimeMillis(); + + _completedRound.clear(); + _hasItem.clear(); + //Restock Items (only repeat items if required) if (_unusedGifts.isEmpty()) for (ValItem gift : ValItem.values()) @@ -261,35 +655,44 @@ public class Valentines extends SoloGame _item = UtilAlg.Random(_unusedGifts); _unusedGifts.remove(_item); - //Cull Excess Pigs - while (_pigs.size() > GetPlayers(true).size() - _playersOutPerRound) + //Delete Dead Pigs + for (Pig pig : _pigsDead) + pig.remove(); + _pigsDead.clear(); + + //Clean + for (Pig pig : _pigs.keySet()) { - Pig pig = _pigs.remove(0); - if (pig.getPassenger() != null) pig.getPassenger().remove(); pig.remove(); } + _pigs.clear(); //Restock Pigs - for (Pig pig : _pigs) - { - //Remove Old Armor Stand - if (pig.getPassenger() != null) - pig.getPassenger().remove(); - - //Set Item - ArmorStand stand = pig.getWorld().spawn(pig.getLocation(), ArmorStand.class); - stand.setHelmet(new ItemStack(_item.getMaterial())); - pig.setPassenger(stand); - - //Set Live - _pigsStocked.add(pig); - } + pigSpawn(); //Announce - UtilTextMiddle.display("Round " + _round, _item.getTitle(), 0, 80, 20); + if (_pigs.size() > 1) + UtilTextMiddle.display("Round " + _round, _item.getTitle(), 0, 80, 20); + else + { + UtilTextMiddle.display("Final Round", "Capture the Pig!", 0, 80, 20); + + for (Player player : GetPlayers(true)) + player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.SADDLE, (byte)0, 1, "Pig Saddle")); + } + + //Music! + _music = new NotePlayer(Manager.getPlugin(), _song, new INoteVerifier() + { + @Override + public boolean shouldPlay(Player player) + { + return Manager.getPreferences().Get(player).HubMusic; + } + }, 0.7F, true); } @Override @@ -310,11 +713,18 @@ public class Valentines extends SoloGame Scoreboard.WriteBlank(); Scoreboard.Write(C.cGreen + "Items Left"); - Scoreboard.Write("" + _pigsStocked.size()); + + if (_roundState == 1) + Scoreboard.Write("" + _pigs.size()); + else + Scoreboard.Write("-"); Scoreboard.WriteBlank(); Scoreboard.Write(C.cGreen + "Time Left"); - Scoreboard.Write("" + UtilTime.MakeStr(_roundTimeLimit - (System.currentTimeMillis() - _roundTime), 0)); + if (_roundState == 1) + Scoreboard.Write("" + UtilTime.MakeStr(_roundTimeLimit - (System.currentTimeMillis() - _roundTime), 0)); + else + Scoreboard.Write("-"); Scoreboard.Draw(); } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/kit/KitMasterOfLove.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/kit/KitMasterOfLove.java index f84af3d89..cc9d89158 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/kit/KitMasterOfLove.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/kit/KitMasterOfLove.java @@ -5,6 +5,7 @@ import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; +import mineplex.core.itemstack.ItemStackFactory; import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.kit.Kit; import nautilus.game.arcade.kit.KitAvailability; @@ -32,6 +33,6 @@ public class KitMasterOfLove extends Kit @Override public void GiveItems(Player player) { - + player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.FISHING_ROD, (byte)0, 1, "Cupids Pig Catcher")); } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/tutorial/TutorialPhaseValentines.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/tutorial/TutorialPhaseValentines.java new file mode 100644 index 000000000..e273444d2 --- /dev/null +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/tutorial/TutorialPhaseValentines.java @@ -0,0 +1,47 @@ +package nautilus.game.arcade.game.games.valentines.tutorial; + +import org.bukkit.Sound; + +import mineplex.core.common.util.C; +import nautilus.game.arcade.gametutorial.TutorialPhase; +import nautilus.game.arcade.gametutorial.TutorialText; + +public class TutorialPhaseValentines extends TutorialPhase +{ + + public TutorialPhaseValentines() + { + super(new TutorialText[] + { + new TutorialText(C.cRed + "Moolanie", "Calvin! Did you forget Valentines Day again?!", 1, Sound.COW_IDLE), + new TutorialText(C.cGreen + "Calvin", "...of course not!", 2, Sound.COW_IDLE), + new TutorialText(C.cGreen + "Calvin", "I promise this year will be amazing!", 3, Sound.COW_IDLE), + new TutorialText(C.cRed + "Moolanie", "It better be, or we're finished...", 4, Sound.COW_IDLE), + new TutorialText(C.cGreen + "Calvin", "Good thing I prepared for this!", 5, Sound.COW_IDLE), + }); + } + + @Override + public int ID() + { + return 1; + } + + @Override + public void onStart() + { + + } + + @Override + public void onEnd() + { + + } + + @Override + public void onMessageDisplay(TutorialText text) + { + + } +} diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/tutorial/TutorialValentines.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/tutorial/TutorialValentines.java new file mode 100644 index 000000000..1f2c66df6 --- /dev/null +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/tutorial/TutorialValentines.java @@ -0,0 +1,34 @@ +package nautilus.game.arcade.game.games.valentines.tutorial; + +import java.util.ArrayList; + +import org.bukkit.entity.Cow; +import org.bukkit.entity.Pig; + +import mineplex.core.updater.event.UpdateEvent; +import nautilus.game.arcade.ArcadeManager; +import nautilus.game.arcade.game.games.typewars.tutorial.TutorialPhaseTypeWars; +import nautilus.game.arcade.game.games.valentines.Valentines; +import nautilus.game.arcade.gametutorial.GameTutorial; +import nautilus.game.arcade.gametutorial.TutorialPhase; + +public class TutorialValentines extends GameTutorial +{ + private Valentines Host; + + private Cow _cowBoy; + private Cow _cowGirl; + private ArrayList _pigs = new ArrayList(); + + public TutorialValentines(Valentines valentines, ArcadeManager manager) + { + super(manager, new TutorialPhase[]{new TutorialPhaseValentines()}); + + Host = valentines; + } + + public void update(UpdateEvent event) + { + + } +} diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/gametutorial/GameTutorial.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/gametutorial/GameTutorial.java index 96ac7ad5a..3204c2dbb 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/gametutorial/GameTutorial.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/gametutorial/GameTutorial.java @@ -303,6 +303,11 @@ public abstract class GameTutorial return _phases; } + public TutorialPhase getCurrentPhase() + { + return _currentPhase; + } + public long getTutorialStart() { return _started; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/gametutorial/TutorialText.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/gametutorial/TutorialText.java index 2711b10fa..98acc729f 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/gametutorial/TutorialText.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/gametutorial/TutorialText.java @@ -7,31 +7,43 @@ public class TutorialText { private String _text; + private String _title; private int _stayTime; private int _id; private Sound _sound; - public TutorialText(String text, int stayTime, int id, Sound sound) + public TutorialText(String title, String text, int stayTime, int id, Sound sound) { _text = text; + _title = title; _id = id; _stayTime = stayTime; _sound = sound; } + public TutorialText(String title, String text, int id, Sound sound) + { + this(title, text, (int) (Math.round(1.5 * text.length()) + 25), id, sound); + } + public TutorialText(String text, int id) { - this(text, (int) (Math.round(1.5 * text.length()) + 25), id, Sound.NOTE_PLING); + this(null, text, (int) (Math.round(1.5 * text.length()) + 25), id, Sound.NOTE_PLING); } public TutorialText(String text, int id, Sound sound) { - this(text, (int) (Math.round(1.5 * text.length()) + 25), id, sound); + this(null, text, (int) (Math.round(1.5 * text.length()) + 25), id, sound); } public TutorialText(String text, int stayTime, int id) { - this(text, stayTime, id, Sound.NOTE_PLING); + this(null, text, stayTime, id, Sound.NOTE_PLING); + } + + public String getTitle() + { + return _title; } public String getText() From a76e570b8a8134eaee4b5441b22fa5f77bef9812 Mon Sep 17 00:00:00 2001 From: Virizion <9b717b9d4e5f09e89fa3@gmail.com> Date: Thu, 4 Feb 2016 21:43:17 -0500 Subject: [PATCH 07/37] Moar fixes --- .../mineplex/core/common/util/UtilBlock.java | 5 + .../mineplex/core/explosion/Explosion.java | 2 +- .../games/speedbuilders/SpeedBuilders.java | 93 ++++++++++--------- .../speedbuilders/data/RecreationData.java | 13 ++- 4 files changed, 65 insertions(+), 48 deletions(-) diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilBlock.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilBlock.java index 3acb09f70..871a1c9b7 100644 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilBlock.java +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/util/UtilBlock.java @@ -1408,6 +1408,11 @@ public class UtilBlock case ANVIL: itemStack.setDurability((short) (itemStack.getDurability() / 4)); break; + case QUARTZ_BLOCK: + if (itemStack.getDurability() == 4 || itemStack.getDurability() == 3) + itemStack.setDurability((short) 2); + + break; } return itemStacks; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/explosion/Explosion.java b/Plugins/Mineplex.Core/src/mineplex/core/explosion/Explosion.java index ab9c70d52..31c8f24d7 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/explosion/Explosion.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/explosion/Explosion.java @@ -241,7 +241,7 @@ public class Explosion extends MiniPlugin } Block block = cur.getLocation().getBlock(); - block.setTypeIdAndData(0, (byte)0, true); + //block.setTypeIdAndData(0, (byte)0, true); //Block Replace if (_enableDebris) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java index 50d2364a2..c7af09704 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java @@ -5,49 +5,6 @@ import java.util.HashSet; import java.util.List; import java.util.Map.Entry; -import mineplex.core.common.Rank; -import mineplex.core.common.util.C; -import mineplex.core.common.util.F; -import mineplex.core.common.util.MapUtil; -import mineplex.core.common.util.NautHashMap; -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.UtilEvent.ActionType; -import mineplex.core.common.util.UtilInv; -import mineplex.core.common.util.UtilMath; -import mineplex.core.common.util.UtilPlayer; -import mineplex.core.common.util.UtilServer; -import mineplex.core.common.util.UtilTextBottom; -import mineplex.core.common.util.UtilTextMiddle; -import mineplex.core.common.util.UtilTime; -import mineplex.core.disguise.disguises.DisguiseGuardian; -import mineplex.core.updater.UpdateType; -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.game.GameTeam; -import nautilus.game.arcade.game.GameTeam.PlayerState; -import nautilus.game.arcade.game.SoloGame; -import nautilus.game.arcade.game.games.speedbuilders.data.BuildData; -import nautilus.game.arcade.game.games.speedbuilders.data.DemolitionData; -import nautilus.game.arcade.game.games.speedbuilders.data.MobData; -import nautilus.game.arcade.game.games.speedbuilders.data.RecreationData; -import nautilus.game.arcade.game.games.speedbuilders.events.PerfectBuildEvent; -import nautilus.game.arcade.game.games.speedbuilders.kits.DefaultKit; -import nautilus.game.arcade.game.games.speedbuilders.stattrackers.DependableTracker; -import nautilus.game.arcade.game.games.speedbuilders.stattrackers.FirstBuildTracker; -import nautilus.game.arcade.game.games.speedbuilders.stattrackers.PerfectionistTracker; -import nautilus.game.arcade.game.games.speedbuilders.stattrackers.SpeediestBuilderizerTracker; -import nautilus.game.arcade.kit.Kit; -import nautilus.game.arcade.managers.chat.ChatStatData; -import nautilus.game.arcade.stats.BlockPlaceStatTracker; - -import net.minecraft.server.v1_8_R3.PacketPlayOutGameStateChange; - import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Effect; @@ -92,6 +49,48 @@ import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; import org.bukkit.util.Vector; +import mineplex.core.common.Rank; +import mineplex.core.common.util.C; +import mineplex.core.common.util.F; +import mineplex.core.common.util.MapUtil; +import mineplex.core.common.util.NautHashMap; +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.UtilEvent.ActionType; +import mineplex.core.common.util.UtilInv; +import mineplex.core.common.util.UtilMath; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilTextBottom; +import mineplex.core.common.util.UtilTextMiddle; +import mineplex.core.common.util.UtilTime; +import mineplex.core.disguise.disguises.DisguiseGuardian; +import mineplex.core.updater.UpdateType; +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.game.GameTeam; +import nautilus.game.arcade.game.GameTeam.PlayerState; +import nautilus.game.arcade.game.SoloGame; +import nautilus.game.arcade.game.games.speedbuilders.data.BuildData; +import nautilus.game.arcade.game.games.speedbuilders.data.DemolitionData; +import nautilus.game.arcade.game.games.speedbuilders.data.MobData; +import nautilus.game.arcade.game.games.speedbuilders.data.RecreationData; +import nautilus.game.arcade.game.games.speedbuilders.events.PerfectBuildEvent; +import nautilus.game.arcade.game.games.speedbuilders.kits.DefaultKit; +import nautilus.game.arcade.game.games.speedbuilders.stattrackers.DependableTracker; +import nautilus.game.arcade.game.games.speedbuilders.stattrackers.FirstBuildTracker; +import nautilus.game.arcade.game.games.speedbuilders.stattrackers.PerfectionistTracker; +import nautilus.game.arcade.game.games.speedbuilders.stattrackers.SpeediestBuilderizerTracker; +import nautilus.game.arcade.kit.Kit; +import nautilus.game.arcade.managers.chat.ChatStatData; +import nautilus.game.arcade.stats.BlockPlaceStatTracker; +import net.minecraft.server.v1_8_R3.PacketPlayOutGameStateChange; + public class SpeedBuilders extends SoloGame { private static final String GUARDIAN_NAME = "Gwen the Guardian"; @@ -435,7 +434,7 @@ public class SpeedBuilders extends SoloGame @EventHandler(priority = EventPriority.MONITOR) public void teamGen(GameStateChangeEvent event) { - if (event.GetState() != GameState.Live) + if (event.GetState() != GameState.Prepare) return; //Add 1 spawn so it doesn't freak out @@ -1394,6 +1393,9 @@ public class SpeedBuilders extends SoloGame if (!IsLive()) return; + // Falling blocks disappear for some reason so we update to make it reappear + event.getBlock().getState().update(true, false); + event.setCancelled(true); } @@ -1458,6 +1460,9 @@ public class SpeedBuilders extends SoloGame if (!IsLive()) return; + if (event.getBlock().isLiquid()) + return; + event.setCancelled(true); } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/data/RecreationData.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/data/RecreationData.java index 11aaac85a..268434338 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/data/RecreationData.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/data/RecreationData.java @@ -297,10 +297,10 @@ public class RecreationData } //Ender portal direction fix & 0x4 is a check to see if the frame has an ender eye in it - if (currentBlock.getType() == Material.ENDER_PORTAL_FRAME && expectedState.getType() == Material.ENDER_PORTAL_FRAME && (currentBlock.getData() & 0x4) == (expectedState.getRawData() & 0x4)) + if (currentBlock.getType() == Material.ENDER_PORTAL_FRAME && expectedState.getType() == Material.ENDER_PORTAL_FRAME) { - score++; - continue; + if ((currentBlock.getData() & 0x4) == (expectedState.getRawData() & 0x4)) + score++; } //Sapling growth fix @@ -317,6 +317,13 @@ public class RecreationData score++; } + //Fix for anvil facing direction + if (expectedState.getType() == Material.ANVIL && currentBlock.getType() == Material.ANVIL) + { + if (currentBlock.getData() / 4 == expectedState.getRawData() / 4 && currentBlock.getData() % 2 == expectedState.getRawData() % 2) + score++; + } + //Fix for corner stair shape if (currentBlock.getState().getData() instanceof Stairs && expectedState.getData() instanceof Stairs) { From b414642990e4f2dfafd0ddbe9d97b7bd6b825d4d Mon Sep 17 00:00:00 2001 From: Mysticate Date: Thu, 4 Feb 2016 21:58:55 -0500 Subject: [PATCH 08/37] Varius tweaks and changes. --- .../core/cosmetic/ui/page/MountPage.java | 7 +- .../mineplex/core/gadget/GadgetManager.java | 2 + .../gadgets/arrowtrail/ArrowTrailHearts.java | 14 +-- .../gadget/gadgets/death/DeathHearts.java | 30 ++++- .../gadgets/doublejump/DoubleJumpHearts.java | 2 +- .../core/gadget/gadgets/item/ItemBow.java | 107 ++++++++++++------ .../mount/types/MountValentinesSheep.java | 26 +++-- 7 files changed, 120 insertions(+), 68 deletions(-) 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 47218f909..12475e8d9 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 @@ -115,7 +115,6 @@ public class MountPage extends ShopPageBase } } - if (getDonationManager().Get(getPlayer().getName()).OwnsUnknownPackage(mount.GetName())) { if (mount.GetActive().containsKey(getPlayer())) @@ -146,18 +145,18 @@ public class MountPage extends ShopPageBase 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)); + addButton(slot, new ShopItem(Material.INK_SACK, (byte) 7, 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)); + setItem(slot, new ShopItem(Material.INK_SACK, (byte) 7, 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)); + setItem(slot, new ShopItem(Material.INK_SACK, (byte) 7, mount.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false)); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java index 422ee5253..011f06cea 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java @@ -51,6 +51,7 @@ import mineplex.core.gadget.gadgets.hat.HatRudolph; 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.ItemBow; import mineplex.core.gadget.gadgets.item.ItemCoal; import mineplex.core.gadget.gadgets.item.ItemCoinBomb; import mineplex.core.gadget.gadgets.item.ItemDuelingSword; @@ -206,6 +207,7 @@ public class GadgetManager extends MiniPlugin addGadget(new ItemCoal(this)); addGadget(new ItemFreezeCannon(this)); addGadget(new ItemSnowball(this)); + addGadget(new ItemBow(this)); // Costume addGadget(new OutfitRaveSuitHelmet(this)); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailHearts.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailHearts.java index d738d9ffe..fa8c5a962 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailHearts.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailHearts.java @@ -24,24 +24,20 @@ public class ArrowTrailHearts extends ArrowEffectGadget { super(manager, "Arrows of Cupid", UtilText.splitLineToArray(C.cGray + "Tether your love to an arrow, then spear someone with it. Maybe they'll fall in love!", LineFormat.LORE), - -6, + 1, Material.APPLE, (byte) 0); } @Override public void doTrail(Arrow arrow) { - if (UtilMath.random.nextDouble() > .6) - { - UtilParticle.PlayParticleToAll(ParticleType.HEART, arrow.getLocation(), .1F, .1F, .1F, 0F, 1, ViewDist.LONGER); - return; - } + UtilParticle.PlayParticleToAll(ParticleType.HEART, arrow.getLocation(), .1F, .1F, .1F, 0F, 1, ViewDist.LONGER); byte data = 14; if (UtilMath.random.nextDouble() > .5) data = 6; - UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.WOOL, data), arrow.getLocation(), 0, 0, 0, 0.0f, 1, ViewDist.NORMAL); + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.WOOL, data), arrow.getLocation(), 0, 0, 0, 0.0f, 5, ViewDist.NORMAL); } @Override @@ -49,7 +45,7 @@ public class ArrowTrailHearts extends ArrowEffectGadget { UtilParticle.PlayParticleToAll(ParticleType.HEART, arrow.getLocation(), .5F, .5F, .5F, 0F, 4, ViewDist.LONGER); - UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.WOOL, 14), arrow.getLocation(), .5F, .5F, .5F, 0.0f, 2, ViewDist.NORMAL); - UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.WOOL, 6), arrow.getLocation(), .5F, .5F, .5F, 0.0f, 2, ViewDist.NORMAL); + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.WOOL, 14), arrow.getLocation(), .5F, .5F, .5F, 0.0f, 5, ViewDist.NORMAL); + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.WOOL, 6), arrow.getLocation(), .5F, .5F, .5F, 0.0f, 5, ViewDist.NORMAL); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathHearts.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathHearts.java index 814567374..dbc6eb03b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathHearts.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathHearts.java @@ -1,5 +1,7 @@ package mineplex.core.gadget.gadgets.death; +import org.bukkit.Bukkit; +import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; @@ -8,9 +10,9 @@ 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.common.util.UtilText; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.types.DeathEffectGadget; @@ -25,13 +27,14 @@ public class DeathHearts extends DeathEffectGadget { super(manager, "Broken Hearted", UtilText.splitLineToArray(C.cGray + "Nothing hurts more than having your heart broken. Apart from being killed, that is.", LineFormat.LORE), - -6, Material.DOUBLE_PLANT, (byte) 4); + 1, Material.DOUBLE_PLANT, (byte) 4); } @EventHandler public void onBlood(BloodEvent event) { - event.setItem(Material.RED_ROSE, (byte) 0); + if (IsActive(event.getPlayer())) + event.setItem(Material.AIR, (byte) 0); } @EventHandler(priority = EventPriority.MONITOR) @@ -39,7 +42,24 @@ public class DeathHearts extends DeathEffectGadget { if (event.isCancelled()) return; - - UtilParticle.PlayParticleToAll(ParticleType.ANGRY_VILLAGER, event.getLocation(), .5F, .5F, .5F, 0F, 5, ViewDist.NORMAL); + + if (IsActive(event.getPlayer())) + { + Location loc = event.getLocation().clone().add(0, .5, 0); + + UtilParticle.PlayParticleToAll(ParticleType.HEART, loc, 0F, 0F, 0F, 0F, 1, ViewDist.NORMAL); + + Bukkit.getScheduler().runTaskLater(Manager.getPlugin(), new Runnable() + { + @Override + public void run() + { + loc.add(0, .2, 0); + + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.WOOL, 14), loc, .1F, .1F, .1F, 0.0f, 5, ViewDist.NORMAL); + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.WOOL, 6), loc, .1F, .1F, .1F, 0.0f, 5, ViewDist.NORMAL); + } + }, 10); + } } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpHearts.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpHearts.java index 4b1380e4d..12312cde7 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpHearts.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpHearts.java @@ -24,7 +24,7 @@ public class DoubleJumpHearts extends DoubleJumpEffectGadget { super(manager, "Wings of Love", UtilText.splitLineToArray(C.cGray + "Nothing hurts more than having your heart broken. Apart from being killed, that is.", LineFormat.LORE), - -6, Material.RED_MUSHROOM, (byte) 0); + 1, Material.RED_MUSHROOM, (byte) 0); } @Override diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemBow.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemBow.java index 384fe716f..b72dd8069 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemBow.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemBow.java @@ -5,10 +5,12 @@ import java.util.HashSet; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; +import org.bukkit.Sound; import org.bukkit.craftbukkit.v1_8_R3.entity.CraftEntity; -import org.bukkit.entity.Arrow; +import org.bukkit.entity.Creeper; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; +import org.bukkit.entity.Snowball; import org.bukkit.event.EventHandler; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.ProjectileHitEvent; @@ -42,7 +44,7 @@ public class ItemBow extends ItemGadget * Timestamp: February 4, 2016 */ - private HashSet _arrows = new HashSet(); + private HashSet _arrows = new HashSet(); private boolean _spawning = false; private String[] _responses = new String[] @@ -76,7 +78,7 @@ public class ItemBow extends ItemGadget PacketPlayOutSpawnEntity packet = (PacketPlayOutSpawnEntity) packetInfo.getPacket(); - for (Arrow arrow : _arrows) + for (Snowball arrow : _arrows) { if (arrow.getEntityId() == packet.a) { @@ -92,17 +94,16 @@ public class ItemBow extends ItemGadget { super(manager, "Cupid's Arrows", UtilText.splitLineToArray(C.cGray + "This symbol of love will live on with you forever! Mainly because we couldn't attach the cupid wings to it. I guess duct tape can't fix everything!", LineFormat.LORE), - -6, Material.BOW, (byte) 0, 1000, new Ammo("Cupid Arrow", "Cupid's Arrows", Material.ARROW, (byte) 0, UtilText.splitLineToArray(C.cGray + "Use these arrows to shoot love into people's hearts!", LineFormat.LORE), -6, 15)); + -6, Material.BOW, (byte) 0, 1000, new Ammo("Cupid Arrow", "Cupid's Arrows", Material.ARROW, (byte) 0, UtilText.splitLineToArray(C.cGray + "Use these arrows to shoot love into people's hearts!", LineFormat.LORE), 1, 15)); Manager.getPacketManager().addPacketHandler(_packetHandler, PacketPlayOutSpawnEntity.class); } - @SuppressWarnings("deprecation") @Override public void ActivateCustom(Player player) { _spawning = true; - Arrow arrow = player.shootArrow(); + Snowball arrow = player.launchProjectile(Snowball.class); _spawning = false; _arrows.add(arrow); @@ -113,7 +114,7 @@ public class ItemBow extends ItemGadget { if (event.getType() == UpdateType.TICK) { - for (Arrow arrow : new HashSet(_arrows)) + for (Snowball arrow : new HashSet(_arrows)) { if (!arrow.isValid()) { @@ -129,27 +130,35 @@ public class ItemBow extends ItemGadget @EventHandler public void onHit(ProjectileHitEvent event) { - if (!(event.getEntity() instanceof Arrow)) + if (!(event.getEntity() instanceof Snowball)) return; - Arrow arrow = (Arrow) event.getEntity(); + Snowball arrow = (Snowball) event.getEntity(); if (!_arrows.contains(arrow)) return; - _arrows.remove(arrow); - arrow.remove(); - - UtilPlayer.message((Player) arrow.getShooter(), F.main(C.cRed + "Cupid", "You missed the shot!")); + Bukkit.getScheduler().runTaskLater(Manager.getPlugin(), new Runnable() + { + @Override + public void run() + { + if (_arrows.remove(arrow)) + { + arrow.remove(); + UtilPlayer.message((Player) arrow.getShooter(), F.main(C.cRed + "Cupid", "You missed the shot!")); + } + } + }, 1); } @EventHandler public void onDamage(EntityDamageByEntityEvent event) { - if (!(event.getDamager() instanceof Arrow)) + if (!(event.getDamager() instanceof Snowball)) return; - Arrow arrow = (Arrow) event.getDamager(); + Snowball arrow = (Snowball) event.getDamager(); if (!_arrows.contains(arrow)) return; @@ -158,35 +167,59 @@ public class ItemBow extends ItemGadget arrow.remove(); Player shooter = (Player) arrow.getShooter(); - UtilPlayer.message(shooter, F.main(C.cRed + "Cupid", "You hit " + F.name(UtilEnt.getName(event.getEntity())) + " with an arrow! I wonder how they're feeling...")); + if (event.getEntity() instanceof Creeper && event.getEntity().getCustomName().equalsIgnoreCase(C.cGreenB + "Carl the Creeper")) + { + UtilPlayer.message(shooter, F.main(C.cRed + "Cupid", "Nobody will ever replace Carla.")); + return; + } + // Effects if (event.getEntity() instanceof Player) { - ((Player) event.getEntity()).addPotionEffect(new PotionEffect(PotionEffectType.CONFUSION, 20, 1, true, false)); + if (event.getEntity() == shooter) + { + UtilPlayer.message(shooter, F.main(C.cRed + "Cupid", "We've all been there.")); + return; + } + + UtilPlayer.message(shooter, F.main(C.cRed + "Cupid", "You hit " + F.name(UtilEnt.getName(event.getEntity())) + " with an arrow! I wonder how they're feeling...")); + + ((Player) event.getEntity()).addPotionEffect(new PotionEffect(PotionEffectType.CONFUSION, 40, 1, true, false)); UtilPlayer.message(event.getEntity(), F.main(C.cRed + "Cupid", F.name(UtilEnt.getName(shooter)) + " hit you with an arrow! " + UtilMath.randomElement(_responses))); } - Entity damaged = event.getEntity(); - AxisAlignedBB bb = ((CraftEntity) damaged).getHandle().getBoundingBox(); - - final Location loc = damaged.getLocation().clone(); - final AxisAlignedBB bounding = new AxisAlignedBB(bb.a, bb.b, bb.c, bb.d, bb.e, bb.f); // Clone it - for (double rise = bounding.b ; rise < bounding.e ; rise += .2) - { - final float y = (float) (rise - bounding.b); - final float x = (float) Math.sin(y); - final float z = (float) Math.cos(y); - - Bukkit.getScheduler().runTaskLater(Manager.getPlugin(), new Runnable() - { - @Override - public void run() - { - UtilParticle.PlayParticleToAll(ParticleType.HEART, loc.clone().add(x, y, z), 0F, 0F, 0F, 0F, 1, ViewDist.LONGER); - } - }, (int) Math.floor(rise * 5)); - } + UtilParticle.PlayParticleToAll(ParticleType.HEART, arrow.getLocation(), .5F, .5F, .5F, 0F, 4, ViewDist.LONGER); + + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.WOOL, 14), arrow.getLocation(), .5F, .5F, .5F, 0.0f, 5, ViewDist.NORMAL); + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.WOOL, 6), arrow.getLocation(), .5F, .5F, .5F, 0.0f, 5, ViewDist.NORMAL); + + shooter.playSound(shooter.getLocation(), Sound.ORB_PICKUP, 0.5f, 0.5f); + +// Entity damaged = event.getEntity(); +// AxisAlignedBB bb = ((CraftEntity) damaged).getHandle().getBoundingBox(); +// +// final Location loc = damaged.getLocation().clone(); +// final AxisAlignedBB bounding = new AxisAlignedBB(bb.a, bb.b, bb.c, bb.d, bb.e, bb.f); // Clone it +// +// int i = 0; +// for (double rise = bounding.b ; rise < bounding.e ; rise += .2) +// { +// i++; +// +// final float y = (float) (rise - bounding.b); +// final float x = (float) (Math.sin(y) * 2); +// final float z = (float) (Math.cos(y) * 2); +// +// Bukkit.getScheduler().runTaskLater(Manager.getPlugin(), new Runnable() +// { +// @Override +// public void run() +// { +// UtilParticle.PlayParticleToAll(ParticleType.HEART, loc.clone().add(x, y, z), 0F, 0F, 0F, 0F, 1, ViewDist.LONGER); +// } +// }, i); +// } } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountValentinesSheep.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountValentinesSheep.java index c84df0e20..9f0801c58 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountValentinesSheep.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountValentinesSheep.java @@ -1,11 +1,11 @@ package mineplex.core.mount.types; import org.bukkit.DyeColor; +import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.entity.Horse; 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.LineFormat; @@ -33,7 +33,7 @@ public class MountValentinesSheep extends HorseMount { super(manager, "Loving Sheeples", UtilText.splitLineToArray(C.cGray + "This symbol of love will live on with you forever! Mainly because we couldn't attach the cupid wings to it. I guess duct tape can't fix everything!", LineFormat.LORE), - Material.WOOL, (byte) 6, -6, Horse.Color.BLACK, Horse.Style.NONE, Horse.Variant.HORSE, 1.0, null); + Material.WOOL, (byte) 6, 1, Horse.Color.BLACK, Horse.Style.NONE, Horse.Variant.HORSE, 1.0, null); } @Override @@ -42,31 +42,31 @@ public class MountValentinesSheep extends HorseMount super.EnableCustom(player); Horse horse = GetActive().get(player).getEntity(); - horse.setCustomName(C.cRed + player.getName() + "'s " + GetName()); UtilEnt.silence(horse, true); DisguiseSheep disguise = new DisguiseSheep(horse); - disguise.setColor(DyeColor.PINK); - disguise.setName(""); - + disguise.setColor(DyeColor.PINK); + Manager.getDisguiseManager().disguise(disguise); } @EventHandler public void doAnimations(UpdateEvent event) { - if (event.getType() != UpdateType.TICK) - return; - for (SingleEntityMountData ent : GetActive().values()) { if (!ent.getEntity().isValid()) continue; - if (event.getType() == UpdateType.TICK) + if (event.getType() == UpdateType.FASTEST) { - UtilParticle.PlayParticleToAll(ParticleType.HEART, ent.getEntity().getLocation().clone().add(0, .5, 0), new Vector(), 0F, 1, ViewDist.NORMAL); + Location loc = ent.getEntity().getLocation().clone().add(0, .5, 0); + + UtilParticle.PlayParticleToAll(ParticleType.HEART, loc, .5F, .4F, .5F, 0F, 1, ViewDist.NORMAL); + + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.WOOL, 14), loc, .5F, .4F, .5F, 0.0f, 1, ViewDist.NORMAL); + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.WOOL, 6), loc, .5F, .4F, .5F, 0.0f, 1, ViewDist.NORMAL); } else if (event.getType() == UpdateType.FAST) { @@ -75,7 +75,7 @@ public class MountValentinesSheep extends HorseMount if (disguise instanceof DisguiseSheep) { DisguiseSheep sheep = (DisguiseSheep) disguise; - + if (sheep.getColor() == 6) // Pink { sheep.setColor(DyeColor.RED); @@ -88,6 +88,8 @@ public class MountValentinesSheep extends HorseMount { sheep.setColor(DyeColor.PINK); } + + Manager.getDisguiseManager().updateDisguise(sheep); } } } From b0b43524da0f207eac1564ab3e060b81bd6b430e Mon Sep 17 00:00:00 2001 From: Virizion <9b717b9d4e5f09e89fa3@gmail.com> Date: Thu, 4 Feb 2016 22:05:46 -0500 Subject: [PATCH 09/37] Chiss' double jump mechanic --- .../games/speedbuilders/SpeedBuilders.java | 35 ++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java index c7af09704..9a1480b8a 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java @@ -41,8 +41,10 @@ import org.bukkit.event.player.PlayerBucketFillEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerPickupItemEvent; import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.event.player.PlayerToggleFlightEvent; import org.bukkit.event.world.StructureGrowEvent; import org.bukkit.material.Bed; import org.bukkit.potion.PotionEffect; @@ -147,7 +149,7 @@ public class SpeedBuilders extends SoloGame private RecreationData _lastRecreationTarget; private double _standMoveProgress; private Location _standStart; - + private BuildData _nextBuild; public SpeedBuilders(ArcadeManager manager) @@ -1652,6 +1654,37 @@ public class SpeedBuilders extends SoloGame } } + @EventHandler + public void moveSetFlight(PlayerMoveEvent event) + { + if (!IsLive()) + return; + + if (_state != SpeedBuildersState.BUILDING) + return; + + if (!GetTeamList().get(0).HasPlayer(event.getPlayer())) + return; + + if (UtilEnt.isGrounded(event.getPlayer()) && !event.getPlayer().isFlying()) + event.getPlayer().setAllowFlight(true); + } + + @EventHandler + public void flightToggleJump(PlayerToggleFlightEvent event) + { + if (!GetTeamList().get(0).HasPlayer(event.getPlayer())) + return; + + event.setCancelled(true); + + event.getPlayer().setAllowFlight(false); + + event.getPlayer().playSound(event.getPlayer().getEyeLocation(), Sound.GHAST_FIREBALL, 1f, 1f); + + UtilAction.velocity(event.getPlayer(), new Vector(0, 1, 0)); + } + @Override public void EndCheck() { From 2ac7840d71e1e02b8c15abebb492a814b5dfbdd6 Mon Sep 17 00:00:00 2001 From: Virizion <9b717b9d4e5f09e89fa3@gmail.com> Date: Thu, 4 Feb 2016 23:54:54 -0500 Subject: [PATCH 10/37] The infamous look direction bounce bug --- .../game/games/speedbuilders/SpeedBuilders.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java index 9a1480b8a..f752bf844 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java @@ -736,12 +736,20 @@ public class SpeedBuilders extends SoloGame { for (RecreationData recreation : _buildRecreations.values()) { - Vector vec = player.getLocation().getDirection().multiply(-1); + Vector vec = UtilAlg.getTrajectory(recreation.getMidpoint(), player.getLocation()); if (UtilMath.offsetSquared(player.getLocation(), recreation.getMidpoint()) < 64) { + Location tpLoc = recreation.getMidpoint().add(vec.clone().multiply(8)); + tpLoc.setDirection(player.getLocation().getDirection()); + + //First tp out this combats hacked clients with anti-KB + player.teleport(tpLoc); + + //Then apply velocity as normal + UtilAction.velocity(player, vec, 1.8, false, 0, 0.4, vec.length(), false); + player.playSound(player.getEyeLocation(), Sound.NOTE_PLING, 10F, 0.5F); - UtilAction.velocity(player, vec, 1.6, false, 0, 0.4, vec.length(), false); } } } From c1393697f8b02228f4fea8a5a2241ad7c8a96aef Mon Sep 17 00:00:00 2001 From: Mysticate Date: Sat, 6 Feb 2016 14:08:17 -0500 Subject: [PATCH 11/37] Started on Love Potion system. Switching branches. --- .../mineplex/core/gadget/GadgetManager.java | 4 +- .../event/GadgetCollideEntityEvent.java | 14 +- .../core/gadget/gadgets/item/ItemBatGun.java | 2 +- .../gadget/gadgets/item/ItemFleshHook.java | 2 +- .../gadget/gadgets/item/ItemLovePotion.java | 158 ++++++++++++++++++ .../gadget/gadgets/item/ItemSnowball.java | 16 +- .../core/gadget/gadgets/item/ItemTNT.java | 22 ++- .../gadget/gadgets/morph/MorphCreeper.java | 2 +- .../core/gadget/gadgets/morph/MorphPig.java | 2 +- .../gadget/gadgets/morph/MorphSnowman.java | 2 +- .../core/gadget/gadgets/morph/MorphTitan.java | 2 +- .../gadget/gadgets/morph/MorphVillager.java | 2 +- .../gadget/gadgets/morph/MorphWither.java | 2 +- .../hub/modules/ValentinesManager.java | 103 ++++++++++++ 14 files changed, 302 insertions(+), 31 deletions(-) create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemLovePotion.java create mode 100644 Plugins/Mineplex.Hub/src/mineplex/hub/modules/ValentinesManager.java diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java index 011f06cea..b466e0bf3 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java @@ -479,9 +479,9 @@ public class GadgetManager extends MiniPlugin return _inventoryManager; } - public boolean collideEvent(Gadget gadget, Player other) + public boolean collideEvent(Player shooter, Gadget gadget, Player other) { - GadgetCollideEntityEvent collideEvent = new GadgetCollideEntityEvent(gadget, other); + GadgetCollideEntityEvent collideEvent = new GadgetCollideEntityEvent(shooter, gadget, other); Bukkit.getServer().getPluginManager().callEvent(collideEvent); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/event/GadgetCollideEntityEvent.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/event/GadgetCollideEntityEvent.java index a30648983..0fab27166 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/event/GadgetCollideEntityEvent.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/event/GadgetCollideEntityEvent.java @@ -1,22 +1,25 @@ package mineplex.core.gadget.event; -import mineplex.core.gadget.types.Gadget; - import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; import org.bukkit.event.Event; import org.bukkit.event.HandlerList; +import mineplex.core.gadget.types.Gadget; + public class GadgetCollideEntityEvent extends Event { private static final HandlerList handlers = new HandlerList(); + private Player _gadgetHolder; private Gadget _gadget; private Entity _other; private boolean _cancelled = false; - public GadgetCollideEntityEvent(Gadget gadget, Entity other) + public GadgetCollideEntityEvent(Player player, Gadget gadget, Entity other) { + _gadgetHolder = player; _gadget = gadget; _other = other; } @@ -30,6 +33,11 @@ public class GadgetCollideEntityEvent extends Event { return handlers; } + + public Player getPlayer() + { + return _gadgetHolder; + } public Gadget getGadget() { 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 9a8096e9b..ba436a8b2 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 @@ -110,7 +110,7 @@ public class ItemBatGun extends ItemGadget if (UtilEnt.hitBox(bat.getLocation(), other, 2, null)) { - if (Manager.collideEvent(this, other)) + if (Manager.collideEvent(cur, this, other)) continue; //Damage Event 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 a35ab819d..dfb2526eb 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 @@ -68,7 +68,7 @@ public class ItemFleshHook extends ItemGadget implements IThrown return; if (target instanceof Player) - if (Manager.collideEvent(this, (Player) target)) + if (Manager.collideEvent(player, this, (Player) target)) return; //Pull diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemLovePotion.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemLovePotion.java new file mode 100644 index 000000000..bc8d0f596 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemLovePotion.java @@ -0,0 +1,158 @@ +package mineplex.core.gadget.gadgets.item; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.block.Action; +import org.bukkit.event.player.PlayerInteractEntityEvent; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.event.player.PlayerItemConsumeEvent; + +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; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilText; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.event.GadgetCollideEntityEvent; +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 ItemLovePotion extends ItemGadget +{ + /** + * Created by: Mysticate + * Timestamp: February 6, 2016 + */ + + public ItemLovePotion(GadgetManager manager) + { + super( + manager, + "Love Potion", + UtilText.splitLineToArray("It doesn't seem to affect humans..? What kind of love potion is this!?", LineFormat.LORE), + 1, + Material.POTION, + (byte) 8233, + 20000, + + new Ammo( + "Love Potion", + "Love Potion", + Material.POTION, + (byte) 8233, + UtilText.splitLineToArray("It doesn't seem to affect humans..? What kind of love potion is this!?", LineFormat.LORE), + 1, + 1) + ); + } + + @EventHandler + public void onInteract(PlayerInteractEntityEvent event) + { + Player player = event.getPlayer(); + + if (!UtilGear.isMat(event.getPlayer().getItemInHand(), this.GetDisplayMaterial())) + return; + + if (!IsActive(player)) + return; + + event.setCancelled(true); + + //Stock + if (!hasAmmo(player)) + { + 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; + } + + if (!Recharge.Instance.usable(player, GetName())) + { + UtilInv.Update(player); + return; + } + + GadgetCollideEntityEvent gadgetEvent = new GadgetCollideEntityEvent(player, this, event.getRightClicked()); + gadgetEvent.setCancelled(true); // Pre cancel + + Bukkit.getPluginManager().callEvent(gadgetEvent); + + if (event.isCancelled()) + return; + + Recharge.Instance.use(player, GetName(), GetName(), _recharge, _recharge > 1000, true, false, true, "Cosmetics"); // Cooldown + + Manager.getInventoryManager().addItemToInventory(player, GetName(), -1); + + player.getInventory().setItem(Manager.getActiveItemSlot(), ItemStackFactory.Instance.CreateStack(GetDisplayMaterial(), GetDisplayData(), 1, F.item(Manager.getInventoryManager().Get(player).getItemCount(GetName()) + " " + GetName()))); + + ActivateCustom(event.getPlayer()); + } + + @EventHandler + public void onConsume(PlayerItemConsumeEvent event) + { + if (!UtilGear.isMat(event.getPlayer().getItemInHand(), this.GetDisplayMaterial())) + return; + + Player player = event.getPlayer(); + + if (!IsActive(player)) + return; + + event.setCancelled(true); + + Bukkit.getScheduler().runTaskLater(Manager.getPlugin(), new Runnable() + { + @Override + public void run() + { + UtilInv.Update(player); + } + }, 1); + + //Stock + if (!hasAmmo(player)) + { + 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")) + return; + + Manager.getInventoryManager().addItemToInventory(player, GetName(), -1); + + player.getInventory().setItem(Manager.getActiveItemSlot(), ItemStackFactory.Instance.CreateStack(GetDisplayMaterial(), GetDisplayData(), 1, F.item(Manager.getInventoryManager().Get(player).getItemCount(GetName()) + " " + GetName()))); + + ActivateCustom(event.getPlayer()); + } + + @EventHandler + public void Activate(PlayerInteractEvent event) + { + + } + + @Override + public void ActivateCustom(Player player) + { + + } +} 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 5e8a9734a..9e27220e4 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 @@ -1,7 +1,5 @@ package mineplex.core.gadget.gadgets.item; -import java.util.HashSet; - import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.entity.Player; @@ -12,6 +10,7 @@ import org.bukkit.util.Vector; import mineplex.core.common.util.C; import mineplex.core.common.util.LineFormat; +import mineplex.core.common.util.NautHashMap; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilText; import mineplex.core.gadget.GadgetManager; @@ -22,7 +21,7 @@ import mineplex.core.gadget.types.ItemGadget; public class ItemSnowball extends ItemGadget { - private HashSet _snowballs = new HashSet<>(); + private NautHashMap _snowballs = new NautHashMap(); public ItemSnowball(GadgetManager manager) { @@ -40,16 +39,21 @@ public class ItemSnowball extends ItemGadget public void ActivateCustom(Player player) { Snowball ball = player.launchProjectile(Snowball.class); - _snowballs.add(ball); + _snowballs.put(ball, player); ball.getWorld().playSound(ball.getLocation(), Sound.CHICKEN_EGG_POP, 1f, 0.3f); } @EventHandler public void onHit(EntityDamageByEntityEvent event) { - if(!_snowballs.contains(event.getDamager())) return; + if (!(event.getDamager() instanceof Snowball)) + return; - GadgetCollideEntityEvent gevent = new GadgetCollideEntityEvent(this, event.getEntity()); + Snowball ball = (Snowball) event.getDamager(); + + if(!_snowballs.containsKey(ball)) return; + + GadgetCollideEntityEvent gevent = new GadgetCollideEntityEvent(_snowballs.remove(ball), this, event.getEntity()); if(gevent.isCancelled()) return; 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 e3b5f01f9..6584046e5 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 @@ -16,11 +16,11 @@ 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.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilParticle.ViewDist; 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; import mineplex.core.gadget.gadgets.Ammo; import mineplex.core.gadget.types.ItemGadget; @@ -29,7 +29,7 @@ import mineplex.core.updater.event.UpdateEvent; public class ItemTNT extends ItemGadget { - private HashSet _tnt = new HashSet(); + private HashMap _tnt = new HashMap(); public ItemTNT(GadgetManager manager) { @@ -46,7 +46,7 @@ public class ItemTNT extends ItemGadget TNTPrimed tnt = player.getWorld().spawn(player.getEyeLocation().add(player.getLocation().getDirection()), TNTPrimed.class); tnt.setYield(0.0F); // Added in order to prevent water from being evaporated. UtilAction.velocity(tnt, player.getLocation().getDirection(), 0.6, false, 0, 0.2, 1, false); - _tnt.add(tnt); + _tnt.put(tnt, player); //Inform UtilPlayer.message(player, F.main("Skill", "You threw " + F.skill(GetName()) + ".")); @@ -58,13 +58,15 @@ public class ItemTNT extends ItemGadget if (!(event.getEntity() instanceof TNTPrimed)) return; - if (!_tnt.remove(event.getEntity())) + if (!_tnt.containsKey(event.getEntity())) return; + Player killer = _tnt.get(event.getEntity()); + HashMap players = UtilPlayer.getInRadius(event.getLocation(), 8); for (Player player : players.keySet()) { - if (Manager.collideEvent(this, player)) + if (Manager.collideEvent(killer, this, player)) continue; double mult = players.get(player); @@ -84,16 +86,12 @@ public class ItemTNT extends ItemGadget if (event.getType() != UpdateType.FAST) return; - Iterator tntIterator = _tnt.iterator(); - - while (tntIterator.hasNext()) + for (TNTPrimed tnt : new HashSet(_tnt.keySet())) { - TNTPrimed tnt = tntIterator.next(); - if (!tnt.isValid() || tnt.getTicksLived() > 200) { tnt.remove(); - tntIterator.remove(); + _tnt.remove(tnt); } } } 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 ee5a33290..90478d1eb 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 @@ -113,7 +113,7 @@ public class MorphCreeper extends MorphGadget if (other.equals(player)) continue; - if (Manager.collideEvent(this, other)) + if (Manager.collideEvent(player, this, other)) continue; double mult = players.get(other); 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 59ed09fa0..04fa7c32e 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 @@ -135,7 +135,7 @@ public class MorphPig extends MorphGadget if (UtilMath.offset(player, other) > range) continue; - if (Manager.collideEvent(this, other)) + if (Manager.collideEvent(player, this, other)) continue; //Cooldown 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 75e5ad743..8834023e1 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 @@ -143,7 +143,7 @@ public class MorphSnowman extends MorphGadget if (!_snowball.containsKey(proj)) return; - GadgetCollideEntityEvent gevent = new GadgetCollideEntityEvent(this, event.getEntity()); + GadgetCollideEntityEvent gevent = new GadgetCollideEntityEvent(_snowball.remove(proj), this, event.getEntity()); if(gevent.isCancelled()) return; 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 68091b674..aaed71945 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 @@ -139,7 +139,7 @@ public class MorphTitan extends MorphGadget for (Player ent : players.keySet()) { if (ent instanceof Player) - if (Manager.collideEvent(this, (Player)ent)) + if (Manager.collideEvent(event.GetPlayer(), this, (Player)ent)) continue; double mult = players.get(ent); 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 f327f0551..d2e9f9bad 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 @@ -116,7 +116,7 @@ public class MorphVillager extends MorphGadget implements IThrown return; if (target instanceof Player) - if (Manager.collideEvent(this, (Player) target)) + if (Manager.collideEvent((Player) data.GetThrower(), this, (Player) target)) return; //Pull 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 a2d68070f..f5029d34b 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 @@ -128,7 +128,7 @@ public class MorphWither extends MorphGadget HashMap players = UtilPlayer.getInRadius(event.getLocation(), 6); for (Player player : players.keySet()) { - if (Manager.collideEvent(this, player)) + if (Manager.collideEvent((Player) skull.getShooter(), this, player)) continue; double mult = players.get(player); diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/ValentinesManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/ValentinesManager.java new file mode 100644 index 000000000..02522542a --- /dev/null +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/ValentinesManager.java @@ -0,0 +1,103 @@ +package mineplex.hub.modules; + +import org.bukkit.ChatColor; +import org.bukkit.entity.Player; +import org.bukkit.entity.Sheep; +import org.bukkit.event.EventHandler; +import org.bukkit.plugin.java.JavaPlugin; + +import mineplex.core.MiniPlugin; +import mineplex.core.account.CoreClientManager; +import mineplex.core.common.CurrencyType; +import mineplex.core.common.util.C; +import mineplex.core.common.util.Callback; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilMath; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.donation.DonationManager; +import mineplex.core.gadget.event.GadgetCollideEntityEvent; +import mineplex.core.gadget.gadgets.item.ItemLovePotion; +import mineplex.core.server.util.TransactionResponse; + +public class ValentinesManager extends MiniPlugin +{ + /** + * Created by: Mysticate + * Timestamp: February 6, 2016 + */ + + private final boolean _enabled = true; + + private final String _prefix = C.cRed + "Polly the Pink Sheep"; + private final String _identifier = "polly the pink sheep"; + private final String _reward = "Loving Sheeples"; // The sales package to reward + + private final float _dropRate = .5F; // 50% + + private CoreClientManager _client; + private DonationManager _donation; + + private boolean _open = true; + + public ValentinesManager(JavaPlugin plugin, CoreClientManager client, DonationManager donation) + { + super("Valentines Sheep Manager", plugin); + + _client = client; + _donation = donation; + } + + @EventHandler + public void onGadget(GadgetCollideEntityEvent event) + { + if (!_enabled) + return; + + if (!(event.getGadget() instanceof ItemLovePotion)) + return; + + if (!(event.getOther() instanceof Sheep)) + return; + + Player player = event.getPlayer(); + + String name = ChatColor.stripColor(event.getOther().getCustomName()).toLowerCase(); + if (!name.contains(_identifier)) + return; + + event.setCancelled(false); // Uncancel + + if (_donation.Get(player).OwnsUnknownPackage(_reward)) + { + UtilPlayer.message(player, F.main(_prefix, "You already tricked me once!")); + return; + } + + float random = UtilMath.random.nextFloat(); + if (random < 1 - _dropRate) + { + UtilPlayer.message(player, F.main(_prefix, "I don't think of you like that, sorry.")); + return; + } + + UtilPlayer.message(player, F.main(_prefix, "I think I'm in love! Here, take one of my children as my gift to you!")); + + _donation.PurchaseUnknownSalesPackage(new Callback() + { + @Override + public void run(TransactionResponse data) + { + if (data == TransactionResponse.AlreadyOwns || data == TransactionResponse.Failed) + { + UtilPlayer.message(player, F.main("Error", "An error occured while rewarding " + F.elem(_reward) + ".")); + return; + } + + if (data == TransactionResponse.Success) + { + UtilPlayer.message(player, F.main("Reward", "You recieved " + F.elem(_reward + " Mount") + " from " + F.elem(_prefix) + "!")); + } + } + }, player.getName(), _client.getAccountId(event.getPlayer()), _reward, CurrencyType.Coins, 0, true); + } +} From a35a9ea31f871720381acd80273322c942a96866 Mon Sep 17 00:00:00 2001 From: Cheese Date: Sun, 7 Feb 2016 13:27:53 +1100 Subject: [PATCH 12/37] more valentines :) --- .../arcade/game/games/valentines/ValItem.java | 54 +++-- .../game/games/valentines/Valentines.java | 16 +- .../tutorial/TutorialPhaseValentines.java | 7 +- .../tutorial/TutorialValentines.java | 203 +++++++++++++++++- .../arcade/gametutorial/TutorialPhase.java | 15 +- 5 files changed, 252 insertions(+), 43 deletions(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/ValItem.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/ValItem.java index e23726cba..bb38e5317 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/ValItem.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/ValItem.java @@ -6,49 +6,59 @@ public enum ValItem { FLOWER1("Red Rose", "She will love this bouquet of roses!", - Material.RED_ROSE), + Material.RED_ROSE, 0), FLOWER2("Dandelion", - "Oh my, these flowers smell great!", - Material.YELLOW_FLOWER), + "I hope she's not allergic to these!", + Material.YELLOW_FLOWER, 0), - FLOWER3("Other Flower", - "MOO", - Material.REDSTONE), + FLOWER3("Blue Orchid", + "Thank you! These are her favourites!", + Material.RED_ROSE, 1), - WINE("Red Wine", - "This will go great with our dinner!", - Material.POTION), + WINE("Blue Wine", + "This will go great with our steak dinner!", + Material.POTION, 0), - GRASS("Organic Grass", - "Only the best for my date!", - Material.LONG_GRASS), + GRASS("Organic Free Range Grass", + "Yum! This is much tastier than caged grass!", + Material.LONG_GRASS, 1), DIAMONDS("Diamond Earings", - "An expensive, but worthwhile gift!", - Material.DIAMOND), + "I saved up for months for this gift!", + Material.DIAMOND, 0), - EMERALDS("Emerald Necklace", - "Such necklace, many wow!", - Material.EMERALD), + EMERALDS("Cold Hard Cash", + "They say love don't cost a thing. That's a lie!", + Material.EMERALD, 0), - BOOK("Book of Poetry", + BOOK("Love Poems", "I will use impress her with poetry!", - Material.BOOK), + Material.BOOK, 0), WATCH("Fancy Pocket Watch", - "This sure looks good on me!", - Material.WATCH); + "This Moolex Watch sure looks good on me!", + Material.WATCH, 0), + + LEASH("Checkered Neck Tie", + "Phew, you found my tie! This restaurant is fancy!", + Material.LEASH, 0), + + SADDLE("Saddle", + "Oh, uh... that's for later.", + Material.LEASH, 0); private String _title; private String _endText; private Material _item; + private byte _itemByte; - ValItem(String title, String endText, Material item) + ValItem(String title, String endText, Material item, int data) { _title = title; _item = item; _endText = endText; + _itemByte = (byte)data; } public String getTitle() diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/Valentines.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/Valentines.java index 1b1631744..b2ac18fcf 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/Valentines.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/Valentines.java @@ -58,6 +58,7 @@ import nautilus.game.arcade.game.Game.GameState; import nautilus.game.arcade.game.games.gladiators.tutorial.TutorialGladiators; import nautilus.game.arcade.game.games.valentines.kit.KitMasterOfLove; import nautilus.game.arcade.game.games.valentines.tutorial.TutorialValentines; +import nautilus.game.arcade.gametutorial.events.GameTutorialStartEvent; import nautilus.game.arcade.kit.Kit; public class Valentines extends SoloGame @@ -119,7 +120,7 @@ public class Valentines extends SoloGame this.HungerSet = 20; this.HealthSet = 20; - EnableTutorials = false; + EnableTutorials = true; try @@ -178,14 +179,7 @@ public class Valentines extends SoloGame { GetTeamList().get(0).setTutorial(new TutorialValentines(this, Manager)); } - - @EventHandler - public void tutorialUpdate(UpdateEvent event) - { - TutorialValentines tutorial = (TutorialValentines) GetTeamList().get(0).getTutorial(); - tutorial.update(event); - } - + @EventHandler public void knockback(CustomDamageEvent event) { @@ -675,10 +669,10 @@ public class Valentines extends SoloGame //Announce if (_pigs.size() > 1) - UtilTextMiddle.display("Round " + _round, _item.getTitle(), 0, 80, 20); + UtilTextMiddle.display(C.cYellow + "Round " + _round, _item.getTitle(), 0, 80, 20); else { - UtilTextMiddle.display("Final Round", "Capture the Pig!", 0, 80, 20); + UtilTextMiddle.display(C.cYellow + "Final Round", "Capture the Pig!", 0, 80, 20); for (Player player : GetPlayers(true)) player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.SADDLE, (byte)0, 1, "Pig Saddle")); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/tutorial/TutorialPhaseValentines.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/tutorial/TutorialPhaseValentines.java index e273444d2..2548c9284 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/tutorial/TutorialPhaseValentines.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/tutorial/TutorialPhaseValentines.java @@ -14,10 +14,15 @@ public class TutorialPhaseValentines extends TutorialPhase super(new TutorialText[] { new TutorialText(C.cRed + "Moolanie", "Calvin! Did you forget Valentines Day again?!", 1, Sound.COW_IDLE), - new TutorialText(C.cGreen + "Calvin", "...of course not!", 2, Sound.COW_IDLE), + new TutorialText(C.cGreen + "Calvin", "Of course not!!!", 2, Sound.COW_IDLE), new TutorialText(C.cGreen + "Calvin", "I promise this year will be amazing!", 3, Sound.COW_IDLE), new TutorialText(C.cRed + "Moolanie", "It better be, or we're finished...", 4, Sound.COW_IDLE), new TutorialText(C.cGreen + "Calvin", "Good thing I prepared for this!", 5, Sound.COW_IDLE), + new TutorialText(C.cGreen + "Calvin", "WHAT?!", 6, Sound.COW_IDLE), + new TutorialText(C.cGreen + "Calvin", "NO!!", 7, Sound.COW_IDLE), + new TutorialText(C.cGreen + "Calvin", "SOMEBODY HELP ME!", 8, Sound.COW_IDLE), + new TutorialText(C.cGreen + "Calvin", "I'M BEING ROBBED!", 9, Sound.COW_IDLE), + }); } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/tutorial/TutorialValentines.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/tutorial/TutorialValentines.java index 1f2c66df6..cb0831bcf 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/tutorial/TutorialValentines.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/tutorial/TutorialValentines.java @@ -1,13 +1,26 @@ package nautilus.game.arcade.game.games.valentines.tutorial; -import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map.Entry; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.Sound; import org.bukkit.entity.Cow; +import org.bukkit.entity.Item; +import org.bukkit.entity.MushroomCow; import org.bukkit.entity.Pig; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; -import mineplex.core.updater.event.UpdateEvent; +import mineplex.core.common.util.C; +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.UtilTextMiddle; import nautilus.game.arcade.ArcadeManager; -import nautilus.game.arcade.game.games.typewars.tutorial.TutorialPhaseTypeWars; +import nautilus.game.arcade.game.games.valentines.ValItem; import nautilus.game.arcade.game.games.valentines.Valentines; import nautilus.game.arcade.gametutorial.GameTutorial; import nautilus.game.arcade.gametutorial.TutorialPhase; @@ -15,20 +28,196 @@ import nautilus.game.arcade.gametutorial.TutorialPhase; public class TutorialValentines extends GameTutorial { private Valentines Host; - + private Cow _cowBoy; private Cow _cowGirl; - private ArrayList _pigs = new ArrayList(); - + private HashMap _pigs = new HashMap(); + + private Location _pigSpawn; + private Location _pigWaypointA; + private Location _pigWaypointB; + public TutorialValentines(Valentines valentines, ArcadeManager manager) { super(manager, new TutorialPhase[]{new TutorialPhaseValentines()}); Host = valentines; + + PlayTutorialSounds = true; + } + + @Override + public void onTick(int tick) + { + if (!hasStarted()) + return; + + if (getCurrentPhase() == null || getCurrentPhase().getCurrentText() == null) + return; + + cowGirlUpdate(tick); + cowBoyUpdate(tick); + pigUpdate(tick); + + lookUpdate(); + + } + + private void lookUpdate() + { + if (getCurrentPhase().getCurrentText().ID() == 2) + getPhase(1).setTarget(_cowBoy.getLocation().add(0, 2, 0)); + + if (getCurrentPhase().getCurrentText().ID() == 3) + getPhase(1).setTarget(_cowBoy.getLocation().add(0, 2, 0)); + + if (getCurrentPhase().getCurrentText().ID() == 4) + getPhase(1).setTarget(Host.WorldData.GetDataLocs("RED").get(0).clone().add(0, 2, 0)); + + if (getCurrentPhase().getCurrentText().ID() == 5) + getPhase(1).setTarget(_pigWaypointA.clone().add(0, 2, 0)); + } + + private void cowGirlUpdate(int tick) + { + if (getCurrentPhase().getCurrentText().ID() >= 4) + { + Location loc = _cowGirl.getLocation().add(UtilAlg.getTrajectory(_pigWaypointA, _cowGirl.getLocation()).multiply(5)); + + UtilEnt.CreatureMoveFast(_cowGirl, loc, 1.4f); + } } - public void update(UpdateEvent event) + private void cowBoyUpdate(int tick) { + if (getCurrentPhase().getCurrentText().ID() == 5) + { + Location loc = _cowBoy.getLocation().add(UtilAlg.getTrajectory(_cowBoy.getLocation(), _pigSpawn).multiply(5)); + + UtilEnt.CreatureMoveFast(_cowBoy, loc, 1f); + } + } + + private void pigUpdate(int tick) + { + //Pigs + if (getCurrentPhase().getCurrentText().ID() > 5) + { + //Spawn + if (_pigs.size() < 5 && tick % 20 == 0) + { + Host.CreatureAllowOverride = true; + + //Spawn + Pig pig = _pigSpawn.getWorld().spawn(_pigSpawn, Pig.class); + UtilEnt.Vegetate(pig); + + + //Item + Item item = pig.getWorld().dropItem(pig.getLocation(), new ItemStack(Material.CHEST)); + pig.setPassenger(item); + + _pigs.put(pig, 0);; + + Host.CreatureAllowOverride = false; + } + + //Move + for (Entry data : _pigs.entrySet()) + { + //Move + if (data.getValue().intValue() == 0) + { + if (UtilMath.offset(data.getKey().getLocation(), _pigWaypointA) > 1) + { + UtilEnt.CreatureMoveFast(data.getKey(), _pigWaypointA, 1.4f); + } + else + { + data.setValue(1); + } + } + if (data.getValue().intValue() == 1) + { + if (UtilMath.offset(data.getKey().getLocation(), _pigWaypointB) > 1) + { + UtilEnt.CreatureMoveFast(data.getKey(), _pigWaypointB, 1.2f); + } + else + { + data.setValue(2); + } + } + + //Oink + if (Math.random() > 0.98) + { + data.getKey().getWorld().playSound(data.getKey().getLocation(), Sound.PIG_IDLE, 1.5f, 1f); + } + } + } + } + + @Override + public void onStart() + { + //Pig Spawn + _pigSpawn = Host.WorldData.GetDataLocs("PINK").get(0); + + //Pig Waypoints + if (UtilMath.offset(_pigSpawn, Host.WorldData.GetDataLocs("ORANGE").get(0)) < + UtilMath.offset(_pigSpawn, Host.WorldData.GetDataLocs("ORANGE").get(1))) + { + _pigWaypointA = Host.WorldData.GetDataLocs("ORANGE").get(0); + _pigWaypointB = Host.WorldData.GetDataLocs("ORANGE").get(1); + } + else + { + _pigWaypointA = Host.WorldData.GetDataLocs("ORANGE").get(1); + _pigWaypointB = Host.WorldData.GetDataLocs("ORANGE").get(0); + } + + //Spawn Cows + Host.CreatureAllowOverride = true; + + _cowBoy = _pigSpawn.getWorld().spawn(Host.WorldData.GetDataLocs("BROWN").get(0), Cow.class); + _cowBoy.setCustomName(C.cGreenB + "Calvin"); + _cowBoy.setCustomNameVisible(true); + UtilEnt.Vegetate(_cowBoy); + + _cowGirl = _pigSpawn.getWorld().spawn(Host.WorldData.GetDataLocs("RED").get(0), MushroomCow.class); + _cowGirl.setCustomName(C.cRedB + "Moolanie"); + _cowGirl.setCustomNameVisible(true); + UtilEnt.Vegetate(_cowGirl); + + Host.CreatureAllowOverride = false; + + //Player Data + getPhase(1).setLocation(Host.WorldData.GetDataLocs("WHITE").get(0)); + getPhase(1).setTarget(_cowGirl.getLocation().add(0, 2, 0)); + } + + @Override + public void onEnd() + { + _cowBoy.remove(); + _cowGirl.remove(); + + for (Pig pig : _pigs.keySet()) + { + if (pig.getPassenger() != null) + pig.getPassenger().remove(); + + pig.remove(); + } + _pigs.clear(); + + for (Player player : getPlayers().keySet()) + { + Host.Manager.GetCondition().Factory().Blind("Tutorial End", player, player, 2, 0, false, false, false); + } + + UtilTextMiddle.display(C.cGreenB + "Calvin", "Get my things back from the pigs!", 0, 80, 20, UtilServer.getPlayers()); } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/gametutorial/TutorialPhase.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/gametutorial/TutorialPhase.java index 57c4baad5..e94afdbe3 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/gametutorial/TutorialPhase.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/gametutorial/TutorialPhase.java @@ -62,7 +62,7 @@ public abstract class TutorialPhase /** * preparing Pitch/Yaw of the location */ - private void prepareLocations() + public void prepareLocations() { Vector vector = new Vector(_target.getBlockX() - _location.getBlockX(), _target.getBlockY() - _location.getBlockY(), _target.getBlockZ() - _location.getBlockZ()); float pitch = UtilAlg.GetPitch(vector); @@ -158,7 +158,7 @@ public abstract class TutorialPhase i++; } displayMessage(text); - UtilTextMiddle.display("", text.getText(), 0, text.getStayTime(), 0, players); + UtilTextMiddle.display(text.getTitle(), text.getText(), 0, text.getStayTime(), 0, players); try { Thread.sleep(text.getStayTime() * 50); @@ -222,6 +222,11 @@ public abstract class TutorialPhase return _text; } + public TutorialText getCurrentText() + { + return _currentText; + } + public void setText(TutorialText[] text) { _text = text; @@ -240,11 +245,17 @@ public abstract class TutorialPhase public void setLocation(Location location) { _location = location; + + if (_location != null && _target != null) + prepareLocations(); } public void setTarget(Location target) { _target = target; + + if (_location != null && _target != null) + prepareLocations(); } public GameTutorial getTutorial() From 2ab1b51401ded8d8f1ae8666c2198071ac6ba08c Mon Sep 17 00:00:00 2001 From: Cheese Date: Sun, 7 Feb 2016 14:09:02 +1100 Subject: [PATCH 13/37] bug fixes --- .../arcade/game/games/valentines/ValItem.java | 16 +++++++-------- .../game/games/valentines/Valentines.java | 20 ++++++++++--------- .../tutorial/TutorialPhaseValentines.java | 2 +- .../tutorial/TutorialValentines.java | 6 +++--- .../arcade/gametutorial/TutorialText.java | 6 +++--- 5 files changed, 25 insertions(+), 25 deletions(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/ValItem.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/ValItem.java index bb38e5317..6dc6e4bd0 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/ValItem.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/ValItem.java @@ -38,15 +38,8 @@ public enum ValItem WATCH("Fancy Pocket Watch", "This Moolex Watch sure looks good on me!", - Material.WATCH, 0), - - LEASH("Checkered Neck Tie", - "Phew, you found my tie! This restaurant is fancy!", - Material.LEASH, 0), - - SADDLE("Saddle", - "Oh, uh... that's for later.", - Material.LEASH, 0); + Material.WATCH, 0); + private String _title; private String _endText; @@ -75,4 +68,9 @@ public enum ValItem { return _endText; } + + public byte getData() + { + return _itemByte; + } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/Valentines.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/Valentines.java index b2ac18fcf..cc15a91d6 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/Valentines.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/Valentines.java @@ -193,7 +193,7 @@ public class Valentines extends SoloGame @EventHandler public void knockbackRod(EntityDamageEvent event) { - if (!(event.getEntity() instanceof LivingEntity)) + if (!(event.getEntity() instanceof Player)) return; Projectile projectile = Manager.GetDamage().GetProjectile(event); @@ -208,7 +208,9 @@ public class Valentines extends SoloGame damagee.playEffect(EntityEffect.HURT); - UtilAction.velocity(damagee, UtilAlg.getTrajectory(damagee, damager), 0.6, false, 0, 0.2, 1, true); + UtilAction.velocity(damagee, UtilAlg.getTrajectory(damagee, damager), 0.2, false, 0, 0.1, 1, true); + + projectile.remove(); } @EventHandler @@ -252,8 +254,9 @@ public class Valentines extends SoloGame _pigs.remove(pig); - pig.playEffect(EntityEffect.DEATH); - _pigsDead.add(pig); + pig.damage(9999); +// pig.playEffect(EntityEffect.DEATH); +// _pigsDead.add(pig); //Remove Item from Pig if (pig.getPassenger() != null) @@ -404,7 +407,7 @@ public class Valentines extends SoloGame //Give Item if (toSpawn > 1) { - Item item = pig.getWorld().dropItem(pig.getLocation(), new ItemStack(_item.getMaterial())); + Item item = pig.getWorld().dropItem(pig.getLocation(),ItemStackFactory.Instance.CreateStack(_item.getMaterial(), _item.getData())); if (pig.getPassenger() != null) pig.getPassenger().remove(); @@ -431,7 +434,7 @@ public class Valentines extends SoloGame { UtilAction.velocity(pig, UtilAlg.getTrajectory(pig.getLocation(), - GetSpectatorLocation().add(Math.random() * 30 - 15, 0, Math.random() * 30 - 15)), + GetSpectatorLocation().clone().add(Math.random() * 30 - 15, 0, Math.random() * 30 - 15)), 2 + Math.random(), false, 0, 0.4, 10, true); pig.getWorld().playSound(pig.getLocation(), Sound.PIG_IDLE, 2f, 2f); @@ -522,14 +525,14 @@ public class Valentines extends SoloGame UtilAction.velocity(pig, UtilAlg.getTrajectory(pig.getLocation(), - GetSpectatorLocation().add(Math.random() * 30 - 15, 0, Math.random() * 30 - 15)), + GetSpectatorLocation().clone().add(Math.random() * 30 - 15, 0, Math.random() * 30 - 15)), 2 + Math.random(), false, 0, 0.4, 10, true); pig.getWorld().playSound(pig.getLocation(), Sound.PIG_IDLE, 2f, 2f); } } - UtilEnt.CreatureMoveFast(pig, target, 1.5f + (float)(1f * closestDist)); + UtilEnt.CreatureMoveFast(pig, target, (_finalRound ? 0.4f : 0f) + 1.5f + (float)(1f * closestDist)); } } @@ -614,7 +617,6 @@ public class Valentines extends SoloGame if (pig.getPassenger() != null) pig.getPassenger().remove(); - pig.playEffect(EntityEffect.DEATH); _pigsDead.add(pig); pigIter.remove(); } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/tutorial/TutorialPhaseValentines.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/tutorial/TutorialPhaseValentines.java index 2548c9284..923fe4947 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/tutorial/TutorialPhaseValentines.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/tutorial/TutorialPhaseValentines.java @@ -17,7 +17,7 @@ public class TutorialPhaseValentines extends TutorialPhase new TutorialText(C.cGreen + "Calvin", "Of course not!!!", 2, Sound.COW_IDLE), new TutorialText(C.cGreen + "Calvin", "I promise this year will be amazing!", 3, Sound.COW_IDLE), new TutorialText(C.cRed + "Moolanie", "It better be, or we're finished...", 4, Sound.COW_IDLE), - new TutorialText(C.cGreen + "Calvin", "Good thing I prepared for this!", 5, Sound.COW_IDLE), + new TutorialText(C.cGreen + "Calvin", "Good thing I prepared this year!", 5, Sound.COW_IDLE), new TutorialText(C.cGreen + "Calvin", "WHAT?!", 6, Sound.COW_IDLE), new TutorialText(C.cGreen + "Calvin", "NO!!", 7, Sound.COW_IDLE), new TutorialText(C.cGreen + "Calvin", "SOMEBODY HELP ME!", 8, Sound.COW_IDLE), diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/tutorial/TutorialValentines.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/tutorial/TutorialValentines.java index cb0831bcf..386bc5fe1 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/tutorial/TutorialValentines.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/tutorial/TutorialValentines.java @@ -104,7 +104,7 @@ public class TutorialValentines extends GameTutorial if (getCurrentPhase().getCurrentText().ID() > 5) { //Spawn - if (_pigs.size() < 5 && tick % 20 == 0) + if (_pigs.size() < 5 && tick % 15 == 0) { Host.CreatureAllowOverride = true; @@ -215,9 +215,9 @@ public class TutorialValentines extends GameTutorial for (Player player : getPlayers().keySet()) { - Host.Manager.GetCondition().Factory().Blind("Tutorial End", player, player, 2, 0, false, false, false); + Host.Manager.GetCondition().Factory().Blind("Tutorial End", player, player, 4, 0, false, false, false); } - UtilTextMiddle.display(C.cGreenB + "Calvin", "Get my things back from the pigs!", 0, 80, 20, UtilServer.getPlayers()); + UtilTextMiddle.display(C.cGreenB + "Calvin", "Punch the Pigs to get my items back!", 0, 100, 20, UtilServer.getPlayers()); } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/gametutorial/TutorialText.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/gametutorial/TutorialText.java index 98acc729f..82daa80c9 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/gametutorial/TutorialText.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/gametutorial/TutorialText.java @@ -23,17 +23,17 @@ public class TutorialText public TutorialText(String title, String text, int id, Sound sound) { - this(title, text, (int) (Math.round(1.5 * text.length()) + 25), id, sound); + this(title, text, (int) (Math.round(1.2 * text.length()) + 25), id, sound); } public TutorialText(String text, int id) { - this(null, text, (int) (Math.round(1.5 * text.length()) + 25), id, Sound.NOTE_PLING); + this(null, text, (int) (Math.round(1.2 * text.length()) + 25), id, Sound.NOTE_PLING); } public TutorialText(String text, int id, Sound sound) { - this(null, text, (int) (Math.round(1.5 * text.length()) + 25), id, sound); + this(null, text, (int) (Math.round(1.2 * text.length()) + 25), id, sound); } public TutorialText(String text, int stayTime, int id) From a8ff714ee4e26a0bb73590d6baa654fc3e0d06b0 Mon Sep 17 00:00:00 2001 From: Mysticate Date: Sun, 7 Feb 2016 10:19:40 -0500 Subject: [PATCH 14/37] Added love potion and hub sheep thing. --- .../core/cosmetic/ui/page/GadgetPage.java | 25 ++- .../mineplex/core/gadget/GadgetManager.java | 2 + .../core/gadget/gadgets/item/ItemBow.java | 15 +- .../gadget/gadgets/item/ItemLovePotion.java | 95 ++++++---- .../src/mineplex/core/shop/item/ShopItem.java | 10 + .../src/mineplex/hub/HubManager.java | 78 ++++---- .../hub/modules/ValentinesManager.java | 66 +++++-- .../hub/modules/valentines/Courtship.java | 179 ++++++++++++++++++ 8 files changed, 354 insertions(+), 116 deletions(-) create mode 100644 Plugins/Mineplex.Hub/src/mineplex/hub/modules/valentines/Courtship.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 e525ae631..38a11166d 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,7 +4,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; @@ -185,11 +184,11 @@ public class GadgetPage extends ShopPageBase 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)); + addButton(slot, new ShopItem(gadget.GetDisplayMaterial(), gadget.GetDisplayData(), gadget.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, false, false).hideInfo(), 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)); + addButton(slot, new ShopItem(gadget.GetDisplayMaterial(), gadget.GetDisplayData(), gadget.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false).hideInfo(), new ActivateGadgetButton(gadget, this)); } return; @@ -211,7 +210,7 @@ public class GadgetPage extends ShopPageBase im.setLore(itemLore); item.setItemMeta(im); - addButton(slot, new ShopItem(item, false, false), new DeactivateGadgetButton(gadget, this)); + addButton(slot, new ShopItem(item, false, false).hideInfo(), new DeactivateGadgetButton(gadget, this)); } else { @@ -220,7 +219,7 @@ public class GadgetPage extends ShopPageBase im.setLore(itemLore); item.setItemMeta(im); - addButton(slot, new ShopItem(item, false, false), new ActivateGadgetButton(gadget, this)); + addButton(slot, new ShopItem(item, false, false).hideInfo(), new ActivateGadgetButton(gadget, this)); } } else @@ -236,18 +235,18 @@ public class GadgetPage extends ShopPageBase itemLore.add(C.cBlack); 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)); + addButton(slot, new ShopItem(Material.INK_SACK, (byte) 8, gadget.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false).hideInfo(), 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)); + setItem(slot, new ShopItem(Material.INK_SACK, (byte)8, gadget.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false).hideInfo()); } else { - setItem(slot, new ShopItem(Material.INK_SACK, (byte)8, 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).hideInfo()); } } @@ -262,14 +261,14 @@ public class GadgetPage extends ShopPageBase 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)); + addButton(slot, new ShopItem(gadget.GetDisplayMaterial(), gadget.GetDisplayData(), gadget.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, false, false).hideInfo(), new DeactivateGadgetButton(gadget, this)); } else { 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)); + addButton(slot, new ShopItem(gadget.GetDisplayMaterial(), gadget.GetDisplayData(), gadget.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, false, false).hideInfo(), new ActivateGadgetButton(gadget, this)); } } else @@ -285,18 +284,18 @@ public class GadgetPage extends ShopPageBase itemLore.add(C.cBlack); 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)); + addButton(slot, new ShopItem(Material.INK_SACK, (byte) 8, gadget.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false).hideInfo(), 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)); + setItem(slot, new ShopItem(Material.INK_SACK, (byte)8, gadget.GetName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false).hideInfo()); } else { - setItem(slot, new ShopItem(Material.INK_SACK, (byte)8, 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).hideInfo()); } } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java index b466e0bf3..5d3b842d2 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java @@ -59,6 +59,7 @@ 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.ItemLovePotion; import mineplex.core.gadget.gadgets.item.ItemMelonLauncher; import mineplex.core.gadget.gadgets.item.ItemPaintballGun; import mineplex.core.gadget.gadgets.item.ItemPaintbrush; @@ -208,6 +209,7 @@ public class GadgetManager extends MiniPlugin addGadget(new ItemFreezeCannon(this)); addGadget(new ItemSnowball(this)); addGadget(new ItemBow(this)); + addGadget(new ItemLovePotion(this)); // Costume addGadget(new OutfitRaveSuitHelmet(this)); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemBow.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemBow.java index b72dd8069..32d554a2e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemBow.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemBow.java @@ -3,12 +3,9 @@ package mineplex.core.gadget.gadgets.item; import java.util.HashSet; import org.bukkit.Bukkit; -import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.Sound; -import org.bukkit.craftbukkit.v1_8_R3.entity.CraftEntity; import org.bukkit.entity.Creeper; -import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.entity.Snowball; import org.bukkit.event.EventHandler; @@ -34,7 +31,6 @@ import mineplex.core.packethandler.IPacketHandler; import mineplex.core.packethandler.PacketInfo; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; -import net.minecraft.server.v1_8_R3.AxisAlignedBB; import net.minecraft.server.v1_8_R3.PacketPlayOutSpawnEntity; public class ItemBow extends ItemGadget @@ -94,7 +90,7 @@ public class ItemBow extends ItemGadget { super(manager, "Cupid's Arrows", UtilText.splitLineToArray(C.cGray + "This symbol of love will live on with you forever! Mainly because we couldn't attach the cupid wings to it. I guess duct tape can't fix everything!", LineFormat.LORE), - -6, Material.BOW, (byte) 0, 1000, new Ammo("Cupid Arrow", "Cupid's Arrows", Material.ARROW, (byte) 0, UtilText.splitLineToArray(C.cGray + "Use these arrows to shoot love into people's hearts!", LineFormat.LORE), 1, 15)); + 1, Material.BOW, (byte) 0, 1000, new Ammo("Cupid Arrow", "Cupid's Arrows", Material.ARROW, (byte) 0, UtilText.splitLineToArray(C.cGray + "Use these arrows to shoot love into people's hearts!", LineFormat.LORE), 1, 15)); Manager.getPacketManager().addPacketHandler(_packetHandler, PacketPlayOutSpawnEntity.class); } @@ -185,15 +181,14 @@ public class ItemBow extends ItemGadget UtilPlayer.message(shooter, F.main(C.cRed + "Cupid", "You hit " + F.name(UtilEnt.getName(event.getEntity())) + " with an arrow! I wonder how they're feeling...")); - ((Player) event.getEntity()).addPotionEffect(new PotionEffect(PotionEffectType.CONFUSION, 40, 1, true, false)); + ((Player) event.getEntity()).addPotionEffect(new PotionEffect(PotionEffectType.CONFUSION, 200, 40, false, false)); UtilPlayer.message(event.getEntity(), F.main(C.cRed + "Cupid", F.name(UtilEnt.getName(shooter)) + " hit you with an arrow! " + UtilMath.randomElement(_responses))); } - - UtilParticle.PlayParticleToAll(ParticleType.HEART, arrow.getLocation(), .5F, .5F, .5F, 0F, 4, ViewDist.LONGER); + UtilParticle.PlayParticleToAll(ParticleType.HEART, event.getEntity().getLocation(), .5F, .5F, .5F, 0F, 4, ViewDist.LONGER); - UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.WOOL, 14), arrow.getLocation(), .5F, .5F, .5F, 0.0f, 5, ViewDist.NORMAL); - UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.WOOL, 6), arrow.getLocation(), .5F, .5F, .5F, 0.0f, 5, ViewDist.NORMAL); + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.WOOL, 14), event.getEntity().getLocation(), .5F, .5F, .5F, 0.0f, 5, ViewDist.NORMAL); + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.WOOL, 6), event.getEntity().getLocation(), .5F, .5F, .5F, 0.0f, 5, ViewDist.NORMAL); shooter.playSound(shooter.getLocation(), Sound.ORB_PICKUP, 0.5f, 0.5f); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemLovePotion.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemLovePotion.java index bc8d0f596..fbb3e95c2 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemLovePotion.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemLovePotion.java @@ -1,5 +1,9 @@ package mineplex.core.gadget.gadgets.item; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Player; @@ -7,8 +11,10 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.block.Action; import org.bukkit.event.player.PlayerInteractEntityEvent; import org.bukkit.event.player.PlayerInteractEvent; -import org.bukkit.event.player.PlayerItemConsumeEvent; +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.LineFormat; import mineplex.core.common.util.UtilBlock; @@ -20,8 +26,9 @@ import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.event.GadgetCollideEntityEvent; import mineplex.core.gadget.event.ItemGadgetOutOfAmmoEvent; 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.itemstack.ItemBuilder; import mineplex.core.recharge.Recharge; public class ItemLovePotion extends ItemGadget @@ -36,7 +43,7 @@ public class ItemLovePotion extends ItemGadget super( manager, "Love Potion", - UtilText.splitLineToArray("It doesn't seem to affect humans..? What kind of love potion is this!?", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "It doesn't seem to affect humans..? What kind of love potion is this!?", LineFormat.LORE), 1, Material.POTION, (byte) 8233, @@ -47,28 +54,49 @@ public class ItemLovePotion extends ItemGadget "Love Potion", Material.POTION, (byte) 8233, - UtilText.splitLineToArray("It doesn't seem to affect humans..? What kind of love potion is this!?", LineFormat.LORE), + UtilText.splitLineToArray(C.cGray + "It doesn't seem to affect humans..? What kind of love potion is this!?", LineFormat.LORE), 1, - 1) + 16) ); } + @Override + public void ApplyItem(Player player, boolean inform) + { + Manager.removeGadgetType(player, GadgetType.Item); + + _active.add(player); + + List itemLore = new ArrayList(); + itemLore.addAll(Arrays.asList(GetDescription())); + itemLore.add(C.cBlack); + itemLore.add(C.cWhite + "Your Ammo : " + Manager.getInventoryManager().Get(player).getItemCount(GetName())); + + player.getInventory().setItem(Manager.getActiveItemSlot(), new ItemBuilder(GetDisplayMaterial(), GetDisplayData()).setTitle(F.item(Manager.getInventoryManager().Get(player).getItemCount(GetName()) + " " + GetName())).setHideInfo(true).build()); + + if (inform) + UtilPlayer.message(player, F.main("Gadget", "You equipped " + F.elem(GetName()) + ".")); + } + @EventHandler public void onInteract(PlayerInteractEntityEvent event) { Player player = event.getPlayer(); - if (!UtilGear.isMat(event.getPlayer().getItemInHand(), this.GetDisplayMaterial())) + if (!UtilGear.isMat(event.getPlayer().getItemInHand(), GetDisplayMaterial())) return; if (!IsActive(player)) return; + + if (!Recharge.Instance.use(player, "Interact Love Potion", 1000, false, false)) + return; event.setCancelled(true); //Stock if (!hasAmmo(player)) - { + { UtilPlayer.message(player, F.main("Gadget", "You do not have any " + GetName() + " left.")); ItemGadgetOutOfAmmoEvent ammoEvent = new ItemGadgetOutOfAmmoEvent(event.getPlayer(), this); @@ -88,21 +116,25 @@ public class ItemLovePotion extends ItemGadget Bukkit.getPluginManager().callEvent(gadgetEvent); - if (event.isCancelled()) + if (gadgetEvent.isCancelled()) return; - + Recharge.Instance.use(player, GetName(), GetName(), _recharge, _recharge > 1000, true, false, true, "Cosmetics"); // Cooldown Manager.getInventoryManager().addItemToInventory(player, GetName(), -1); - player.getInventory().setItem(Manager.getActiveItemSlot(), ItemStackFactory.Instance.CreateStack(GetDisplayMaterial(), GetDisplayData(), 1, F.item(Manager.getInventoryManager().Get(player).getItemCount(GetName()) + " " + GetName()))); - - ActivateCustom(event.getPlayer()); + player.getInventory().setItem(Manager.getActiveItemSlot(), new ItemBuilder(GetDisplayMaterial(), GetDisplayData()).setTitle(F.item(Manager.getInventoryManager().Get(player).getItemCount(GetName()) + " " + GetName())).setHideInfo(true).build()); } @EventHandler - public void onConsume(PlayerItemConsumeEvent event) + 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; @@ -110,49 +142,42 @@ public class ItemLovePotion extends ItemGadget if (!IsActive(player)) return; - - event.setCancelled(true); - Bukkit.getScheduler().runTaskLater(Manager.getPlugin(), new Runnable() - { - @Override - public void run() - { - UtilInv.Update(player); - } - }, 1); + if (!Recharge.Instance.use(player, "Interact Love Potion", 500, false, false)) + return; + + event.setCancelled(true); //Stock if (!hasAmmo(player)) { 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); - + Bukkit.getServer().getPluginManager().callEvent(ammoEvent); + return; } //Recharge if (!Recharge.Instance.use(player, GetName(), GetName(), _recharge, _recharge > 1000, true, false, true, "Cosmetics")) - return; + { + UtilInv.Update(player); + return; + } + UtilPlayer.message(player, F.main("Potion", "You drank the love potion, because why not?")); + Manager.getInventoryManager().addItemToInventory(player, GetName(), -1); - player.getInventory().setItem(Manager.getActiveItemSlot(), ItemStackFactory.Instance.CreateStack(GetDisplayMaterial(), GetDisplayData(), 1, F.item(Manager.getInventoryManager().Get(player).getItemCount(GetName()) + " " + GetName()))); + player.getInventory().setItem(Manager.getActiveItemSlot(), new ItemBuilder(GetDisplayMaterial(), GetDisplayData()).setTitle(F.item(Manager.getInventoryManager().Get(player).getItemCount(GetName()) + " " + GetName())).setHideInfo(true).build()); ActivateCustom(event.getPlayer()); } - @EventHandler - public void Activate(PlayerInteractEvent event) - { - - } - @Override public void ActivateCustom(Player player) { - + player.addPotionEffect(new PotionEffect(PotionEffectType.CONFUSION, 400, 40, false, false)); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/shop/item/ShopItem.java b/Plugins/Mineplex.Core/src/mineplex/core/shop/item/ShopItem.java index 342784570..d05f7734c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/shop/item/ShopItem.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/shop/item/ShopItem.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import org.bukkit.Material; import org.bukkit.craftbukkit.v1_8_R3.inventory.CraftItemStack; +import org.bukkit.inventory.ItemFlag; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; @@ -210,4 +211,13 @@ public class ShopItem extends ItemStack return this; } + + public ShopItem hideInfo() + { + ItemMeta meta = getItemMeta(); + meta.addItemFlags(ItemFlag.values()); + setItemMeta(meta); + + return this; + } } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java index 25ae3c257..66d30be85 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java @@ -8,6 +8,39 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Random; +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.GameMode; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.craftbukkit.v1_8_R3.CraftWorld; +import org.bukkit.entity.Egg; +import org.bukkit.entity.Entity; +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.entity.EntityTargetEvent.TargetReason; +import org.bukkit.event.entity.ItemSpawnEvent; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.player.AsyncPlayerChatEvent; +import org.bukkit.event.player.PlayerCommandPreprocessEvent; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerLoginEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.event.player.PlayerRespawnEvent; +import org.bukkit.event.player.PlayerVelocityEvent; +import org.bukkit.event.server.ServerListPingEvent; +import org.bukkit.event.world.ChunkLoadEvent; +import org.bukkit.plugin.java.JavaPlugin; +import org.bukkit.scoreboard.DisplaySlot; +import org.bukkit.scoreboard.Objective; +import org.bukkit.scoreboard.Scoreboard; + import mineplex.core.MiniClientPlugin; import mineplex.core.account.CoreClient; import mineplex.core.account.CoreClientManager; @@ -18,7 +51,6 @@ import mineplex.core.blockrestore.BlockRestore; import mineplex.core.bonuses.BonusManager; import mineplex.core.botspam.BotSpamManager; import mineplex.core.common.Rank; -import mineplex.core.common.jsonchat.JsonMessage; import mineplex.core.common.util.C; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilInv; @@ -74,7 +106,6 @@ import mineplex.hub.commands.GadgetToggle; import mineplex.hub.commands.GameModeCommand; import mineplex.hub.commands.NewsCommand; import mineplex.hub.modules.ForcefieldManager; -import mineplex.hub.modules.HolidayGiftManager; import mineplex.hub.modules.HubVisibilityManager; import mineplex.hub.modules.JumpManager; import mineplex.hub.modules.KothManager; @@ -82,6 +113,7 @@ import mineplex.hub.modules.NewsManager; import mineplex.hub.modules.ParkourManager; import mineplex.hub.modules.SoccerManager; import mineplex.hub.modules.TextManager; +import mineplex.hub.modules.ValentinesManager; import mineplex.hub.modules.WorldManager; import mineplex.hub.profile.gui.GUIProfile; import mineplex.hub.tutorial.TutorialManager; @@ -90,51 +122,12 @@ import mineplex.minecraft.game.classcombat.item.event.ItemTriggerEvent; import mineplex.minecraft.game.core.combat.DeathMessageType; import mineplex.minecraft.game.core.combat.event.CombatDeathEvent; import mineplex.minecraft.game.core.condition.ConditionManager; -import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.api.chat.ClickEvent; import net.md_5.bungee.api.chat.ComponentBuilder; import net.md_5.bungee.api.chat.HoverEvent; import net.md_5.bungee.api.chat.HoverEvent.Action; import net.md_5.bungee.api.chat.TextComponent; -import org.jooq.tools.json.JSONObject; - -import net.minecraft.server.v1_8_R3.ChatMessage; import net.minecraft.server.v1_8_R3.EntityInsentient; import net.minecraft.server.v1_8_R3.EntityPlayer; -import net.minecraft.server.v1_8_R3.IChatBaseComponent; - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.GameMode; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.craftbukkit.v1_8_R3.CraftWorld; -import org.bukkit.entity.Egg; -import org.bukkit.entity.Entity; -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.entity.EntityTargetEvent.TargetReason; -import org.bukkit.event.entity.ItemSpawnEvent; -import org.bukkit.event.entity.PlayerDeathEvent; -import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.event.player.AsyncPlayerChatEvent; -import org.bukkit.event.player.PlayerCommandPreprocessEvent; -import org.bukkit.event.player.PlayerInteractEvent; -import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.event.player.PlayerLoginEvent; -import org.bukkit.event.player.PlayerQuitEvent; -import org.bukkit.event.player.PlayerRespawnEvent; -import org.bukkit.event.player.PlayerVelocityEvent; -import org.bukkit.event.server.ServerListPingEvent; -import org.bukkit.event.world.ChunkLoadEvent; -import org.bukkit.plugin.java.JavaPlugin; -import org.bukkit.scoreboard.DisplaySlot; -import org.bukkit.scoreboard.Objective; -import org.bukkit.scoreboard.Scoreboard; public class HubManager extends MiniClientPlugin { @@ -168,6 +161,7 @@ public class HubManager extends MiniClientPlugin private PlayerCountManager _playerCountManager; private CustomDataManager _customDataManager; private Punish _punishManager; + private ValentinesManager _valentinesManager; // private HalloweenSpookinessManager _halloweenManager; // private TrickOrTreatManager _trickOrTreatManager; @@ -267,6 +261,8 @@ public class HubManager extends MiniClientPlugin _songs = new ArrayList(); _punishManager = punish; + + _valentinesManager = new ValentinesManager(plugin, clientManager, donationManager); try { diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/ValentinesManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/ValentinesManager.java index 02522542a..53c91a712 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/ValentinesManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/ValentinesManager.java @@ -1,6 +1,5 @@ package mineplex.hub.modules; -import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.bukkit.entity.Sheep; import org.bukkit.event.EventHandler; @@ -14,10 +13,14 @@ import mineplex.core.common.util.Callback; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilTime; import mineplex.core.donation.DonationManager; import mineplex.core.gadget.event.GadgetCollideEntityEvent; import mineplex.core.gadget.gadgets.item.ItemLovePotion; import mineplex.core.server.util.TransactionResponse; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; +import mineplex.hub.modules.valentines.Courtship; public class ValentinesManager extends MiniPlugin { @@ -29,7 +32,7 @@ public class ValentinesManager extends MiniPlugin private final boolean _enabled = true; private final String _prefix = C.cRed + "Polly the Pink Sheep"; - private final String _identifier = "polly the pink sheep"; + private final String _identifier = "Polly the Pink Sheep"; private final String _reward = "Loving Sheeples"; // The sales package to reward private final float _dropRate = .5F; // 50% @@ -37,7 +40,8 @@ public class ValentinesManager extends MiniPlugin private CoreClientManager _client; private DonationManager _donation; - private boolean _open = true; + private Courtship _active = null; + private long _lastEnd = -1; public ValentinesManager(JavaPlugin plugin, CoreClientManager client, DonationManager donation) { @@ -49,7 +53,7 @@ public class ValentinesManager extends MiniPlugin @EventHandler public void onGadget(GadgetCollideEntityEvent event) - { + { if (!_enabled) return; @@ -61,43 +65,71 @@ public class ValentinesManager extends MiniPlugin Player player = event.getPlayer(); - String name = ChatColor.stripColor(event.getOther().getCustomName()).toLowerCase(); - if (!name.contains(_identifier)) + player.sendMessage(event.getOther().getCustomName()); + + if (!event.getOther().getCustomName().contains(_identifier)) return; - event.setCancelled(false); // Uncancel + if (_lastEnd != -1 && !UtilTime.elapsed(_lastEnd, 1000)) + return; + if (_active != null) + { + UtilPlayer.message(player, F.main("Cupid", "Someone is already courting " + F.elem(_prefix) + "!")); + return; + } + if (_donation.Get(player).OwnsUnknownPackage(_reward)) { - UtilPlayer.message(player, F.main(_prefix, "You already tricked me once!")); + UtilPlayer.message(player, F.main(_prefix, "I already love you!")); return; } - float random = UtilMath.random.nextFloat(); - if (random < 1 - _dropRate) - { - UtilPlayer.message(player, F.main(_prefix, "I don't think of you like that, sorry.")); + event.setCancelled(false); // Uncancel + + final boolean success = UtilMath.random.nextFloat() > 1 - _dropRate; + _active = new Courtship(this, player, (Sheep) event.getOther(), _prefix, success); + } + + @EventHandler + public void onTick(UpdateEvent event) + { + if (_active == null) return; + + if (event.getType() == UpdateType.TICK) + { + if (_active.tick()) + { + _active = null; + _lastEnd = System.currentTimeMillis(); + } } - - UtilPlayer.message(player, F.main(_prefix, "I think I'm in love! Here, take one of my children as my gift to you!")); - + } + + public void giveReward(Player player) + { _donation.PurchaseUnknownSalesPackage(new Callback() { @Override public void run(TransactionResponse data) { +// if (data == TransactionResponse.AlreadyOwns) +// { +// UtilPlayer.message(player, "owned but it worked"); +// } +// if (data == TransactionResponse.AlreadyOwns || data == TransactionResponse.Failed) { UtilPlayer.message(player, F.main("Error", "An error occured while rewarding " + F.elem(_reward) + ".")); return; } - + if (data == TransactionResponse.Success) { UtilPlayer.message(player, F.main("Reward", "You recieved " + F.elem(_reward + " Mount") + " from " + F.elem(_prefix) + "!")); } } - }, player.getName(), _client.getAccountId(event.getPlayer()), _reward, CurrencyType.Coins, 0, true); + }, player.getName(), _client.getAccountId(player), _reward, CurrencyType.Coins, 0, true); } } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/valentines/Courtship.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/valentines/Courtship.java new file mode 100644 index 000000000..29fa735c5 --- /dev/null +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/valentines/Courtship.java @@ -0,0 +1,179 @@ +package mineplex.hub.modules.valentines; + +import org.bukkit.DyeColor; +import org.bukkit.Sound; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Player; +import org.bukkit.entity.Sheep; +import org.bukkit.util.Vector; + +import mineplex.core.common.util.C; +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.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; +import mineplex.core.recharge.Recharge; +import mineplex.hub.modules.ValentinesManager; + +public class Courtship +{ + /** + * Created by: Mysticate + * Timestamp: February 6, 2016 + */ + + private ValentinesManager _manager; + private Player _player; + private Sheep _sheep; + private String _prefix; + private final boolean _success; + + private int _tick = 0; + + public Courtship(ValentinesManager manager, Player player, Sheep sheep, String prefix, boolean success) + { + _manager = manager; + _player = player; + _sheep = sheep; + _prefix = prefix; + _success = success; + } + + public boolean tick() + { + if (!_player.isOnline()) + return true; + + _tick++; + + { + Vector vec = UtilAlg.getTrajectory(_sheep, _player); + UtilEnt.CreatureForceLook(_sheep, UtilAlg.GetPitch(vec), UtilAlg.GetYaw(vec)); + } + + for (Player player : UtilPlayer.getNearby(_sheep.getLocation(), 4)) + { + if (player != _player) + { + if (Recharge.Instance.use(player, "Sheep Bump", 500, false, false)) + { + Entity bottom = player; + while (bottom.getVehicle() != null) + bottom = bottom.getVehicle(); + + UtilAction.velocity(bottom, UtilAlg.getTrajectory2d(_sheep, bottom), .5, true, 0.8, 0, 10, true); + player.playSound(player.getLocation(), Sound.CHICKEN_EGG_POP, 2f, 0.5f); + + UtilPlayer.message(player, F.main(_prefix, "I'm talking to someone else right now!")); + } + } + } + + if (_tick == 20) + { + message("What do we have here?"); + _sheep.getWorld().playSound(_sheep.getLocation(), Sound.NOTE_BASS, 1F, 1F); + } + + if (_tick == 40) + { + if (_success) + { + message("I feel weird..."); + _sheep.getWorld().playSound(_sheep.getLocation(), Sound.NOTE_BASS, 2F, 1F); + } + else + { + message("Was that a love potion?"); + _sheep.getWorld().playSound(_sheep.getLocation(), Sound.NOTE_BASS, .5F, 1F); + } + } + + if (_tick > 40 && _tick < 80) + { + if (_tick % 2 == 0) + { + _sheep.getWorld().playSound(_sheep.getLocation(), Sound.DIG_GRASS, 1F, 1F); + + UtilParticle.PlayParticle(ParticleType.HEART, _sheep.getLocation().clone().add(0, 1, 0), new Vector(), 0F, 1, ViewDist.NORMAL, _player); + UtilParticle.PlayParticle(ParticleType.FIREWORKS_SPARK, _sheep.getLocation(), 1F, 1F, 1F, 0F, 1, ViewDist.NORMAL, _player); + + _sheep.setColor(DyeColor.PINK); + } + else + { + _sheep.setColor(DyeColor.WHITE); + } + } + + if (_tick == 80) + { + if (_success) + { + message("I..."); + _sheep.getWorld().playSound(_sheep.getLocation(), Sound.FIZZ, 1F, 1F); + } + else + { + message("I don't think of you like that. I'm sorry."); + _sheep.getWorld().playSound(_sheep.getLocation(), Sound.ANVIL_BREAK, 1F, 1F); + _sheep.setColor(DyeColor.BLACK); + } + } + + if (_tick > 80 && _tick < 120 && _success) + { + if (_tick % 2 == 0) + { + _sheep.setColor(DyeColor.PINK); + } + else + { + _sheep.setColor(DyeColor.RED); + } + } + + if (_tick == 90 && _success) + { + message("I think..."); + _sheep.getWorld().playSound(_sheep.getLocation(), Sound.FIZZ, 1F, 1F); + } + + if (_tick == 100 && _success) + { + message("I think I'm in love!"); + _sheep.getWorld().playSound(_sheep.getLocation(), Sound.LEVEL_UP, 1F, 1F); + } + + if (_tick == 120 && _success) + { + message("Here, take this present as a token of my admiration."); + _sheep.getWorld().playSound(_sheep.getLocation(), Sound.LEVEL_UP, 1F, 1F); + + _manager.giveReward(_player); + + _sheep.setColor(DyeColor.RED); + + UtilServer.broadcast(C.cRedB + "Cupid: " + C.cWhiteB + C.cYellowB + _player.getName() + C.cWhiteB + " tricked " + C.cGoldB + "Polly the Pink Sheep" + C.cWhiteB + " with a love potion!"); + } + + if (_tick == 130) + { + _sheep.setColor(DyeColor.PINK); + return true; + } + + return false; + } + + private void message(String message) + { + UtilPlayer.message(_player, " "); + UtilPlayer.message(_player, F.main(_prefix, message)); + } +} From f502c2a69306fbe6cbd6210c4464c2a9cc9f826c Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Sun, 7 Feb 2016 12:15:08 -0600 Subject: [PATCH 15/37] Fix filtermessage sync calls --- .../src/mineplex/core/chat/Chat.java | 5 +++- .../mineplex/core/message/MessageManager.java | 25 +++---------------- 2 files changed, 8 insertions(+), 22 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/chat/Chat.java b/Plugins/Mineplex.Core/src/mineplex/core/chat/Chat.java index eca038bb7..839b0b015 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/chat/Chat.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/chat/Chat.java @@ -243,7 +243,10 @@ public class Chat extends MiniPlugin event.setMessage(getFilteredMessage(event.getPlayer(), event.getMessage())); } } - + + /** + * This should only be called from an async thread! + */ public String getFilteredMessage(Player player, String originalMessage) { final String playerName = player.getUniqueId().toString(); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/message/MessageManager.java b/Plugins/Mineplex.Core/src/mineplex/core/message/MessageManager.java index 59dc27148..10b0c9707 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/message/MessageManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/message/MessageManager.java @@ -209,8 +209,6 @@ public class MessageManager extends MiniClientPlugin } } - message = _chat.getFilteredMessage(from, message); - // Inform UtilPlayer.message(from, C.cGold + "§l" + from.getName() + " > " + to.getName() + C.cYellow + " §l" + message); @@ -229,11 +227,6 @@ public class MessageManager extends MiniClientPlugin UtilPlayer.message(from, C.cPurple + to.getName() + " is often AFK or minimized, due to plugin development."); UtilPlayer.message(from, C.cPurple + "Please be patient if she does not reply instantly."); } - - /*if(to.getName().equals("ishh")) - { - UtilPlayer.message(from, C.cPurple + "Hi, my name is ishh. If I don't respond to your message, please be patient and try again later!"); - }*/ // Log // Logger().logChat("Private Message", from, to.getName(), message); @@ -495,26 +488,16 @@ public class MessageManager extends MiniClientPlugin final FriendStatus friendInfo = friend; - new BukkitRunnable() + runAsync(new Runnable() { - final String newMessage = _chat.getFilteredMessage(sender, message); - @Override public void run() { - new BukkitRunnable() - { + final String newMessage = _chat.getFilteredMessage(sender, message); - @Override - public void run() - { - sendMessage(sender, target, newMessage, adminMessage, isReply, friendInfo); - } - - }.runTask(getPlugin()); + runSync(() -> sendMessage(sender, target, newMessage, adminMessage, isReply, friendInfo)); } - - }.runTaskAsynchronously(getPlugin()); + }); } private void sendMessage(final Player sender, String target, String message, final boolean adminMessage, boolean isReply, From 465f12e210120e316e9252dc4e5b7207b4ae0279 Mon Sep 17 00:00:00 2001 From: Mysticate Date: Sun, 7 Feb 2016 13:27:38 -0500 Subject: [PATCH 16/37] Fixed NPE --- .../src/nautilus/game/arcade/game/games/bridge/Bridge.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java index 0faa77cc3..d19dc43e7 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java @@ -1340,7 +1340,7 @@ public class Bridge extends TeamGame implements OreObsfucation if (event.getBlock().getType() == Material.FURNACE || UtilItem.isOre(event.getBlock().getType())) // Can't be broken by fist { - if (!CraftItemStack.asNMSCopy(event.getPlayer().getItemInHand()).b(CraftMagicNumbers.getBlock((CraftBlock) event.getBlock()))) + if (event.getPlayer().getItemInHand() == null || !CraftItemStack.asNMSCopy(event.getPlayer().getItemInHand()).b(CraftMagicNumbers.getBlock((CraftBlock) event.getBlock()))) return; } From c059425e9d94ea919d18166b3d727bd5f2d9e7fc Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Sun, 7 Feb 2016 13:18:29 -0600 Subject: [PATCH 17/37] Remove GiveawayManager (not used anymore) --- .../src/mineplex/core/bonuses/BonusManager.java | 5 ++--- .../core/globalpacket/GlobalPacketManager.java | 5 ++--- .../src/mineplex/core/reward/RewardManager.java | 4 +--- .../src/mineplex/core/treasure/TreasureManager.java | 5 ++--- Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java | 6 ++---- .../Mineplex.Hub/src/mineplex/hub/HubManager.java | 6 +++--- .../src/nautilus/game/arcade/Arcade.java | 6 ++---- .../src/nautilus/game/arcade/ArcadeManager.java | 12 ++---------- .../game/arcade/managers/GameLootManager.java | 2 +- 9 files changed, 17 insertions(+), 34 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusManager.java b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusManager.java index 8f5879b6f..450d78722 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusManager.java @@ -31,7 +31,6 @@ import mineplex.core.database.DBPool; import mineplex.core.donation.DonationManager; import mineplex.core.donation.GiveDonorData; import mineplex.core.facebook.FacebookManager; -import mineplex.core.giveaway.GiveawayManager; import mineplex.core.hologram.Hologram; import mineplex.core.hologram.HologramManager; import mineplex.core.inventory.InventoryManager; @@ -167,7 +166,7 @@ public class BonusManager extends MiniClientPlugin implements I updateOffSet(); } - public BonusManager(JavaPlugin plugin, CoreClientManager clientManager, ServerStatusManager statusManager, DonationManager donationManager, PollManager pollManager, NpcManager npcManager, HologramManager hologramManager, StatsManager statsManager, InventoryManager inventoryManager, PetManager petManager, GiveawayManager giveawayManager, FacebookManager facebookManager) + public BonusManager(JavaPlugin plugin, CoreClientManager clientManager, ServerStatusManager statusManager, DonationManager donationManager, PollManager pollManager, NpcManager npcManager, HologramManager hologramManager, StatsManager statsManager, InventoryManager inventoryManager, PetManager petManager, FacebookManager facebookManager) { super("Bonus", plugin); _repository = new BonusRepository(plugin, this, donationManager); @@ -177,7 +176,7 @@ public class BonusManager extends MiniClientPlugin implements I _hologramManager = hologramManager; _inventoryManager = inventoryManager; - _rewardManager = new RewardManager(clientManager, statusManager, donationManager, inventoryManager, petManager, statsManager, giveawayManager, + _rewardManager = new RewardManager(clientManager, statusManager, donationManager, inventoryManager, petManager, statsManager, 100, 250, 500, 1000, 4000, 6000, diff --git a/Plugins/Mineplex.Core/src/mineplex/core/globalpacket/GlobalPacketManager.java b/Plugins/Mineplex.Core/src/mineplex/core/globalpacket/GlobalPacketManager.java index 97257bd98..e6d4a4897 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/globalpacket/GlobalPacketManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/globalpacket/GlobalPacketManager.java @@ -12,7 +12,6 @@ import mineplex.core.common.Rank; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilPlayer; import mineplex.core.donation.DonationManager; -import mineplex.core.giveaway.GiveawayManager; import mineplex.core.globalpacket.command.GlobalPacketCommand; import mineplex.core.globalpacket.listeners.GlobalGiveCoins; import mineplex.core.globalpacket.listeners.GlobalGiveGems; @@ -35,7 +34,7 @@ public class GlobalPacketManager extends MiniPlugin private DonationManager _donationManager; private RewardManager _rewardManager; - public GlobalPacketManager(JavaPlugin plugin, CoreClientManager clientManager, ServerStatusManager statusManager, InventoryManager inventoryManager, DonationManager donationManager, PetManager petManager, StatsManager statsManager, GiveawayManager giveawayManager) + public GlobalPacketManager(JavaPlugin plugin, CoreClientManager clientManager, ServerStatusManager statusManager, InventoryManager inventoryManager, DonationManager donationManager, PetManager petManager, StatsManager statsManager) { super("Global Packet Manager", plugin); @@ -44,7 +43,7 @@ public class GlobalPacketManager extends MiniPlugin _inventoryManager = inventoryManager; _donationManager = donationManager; - _rewardManager = new RewardManager(clientManager, statusManager, donationManager, inventoryManager, petManager, statsManager, giveawayManager, + _rewardManager = new RewardManager(clientManager, statusManager, donationManager, inventoryManager, petManager, statsManager, 100, 250, 500, 1000, 1500, 2500, diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java index 6a8507a5e..9ec54372b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java @@ -39,7 +39,6 @@ public class RewardManager private CoreClientManager _clientManager; private DonationManager _donationManager; private ServerStatusManager _statusManager; - private GiveawayManager _giveawayManager; private boolean _doubleGadgetValue; @@ -48,7 +47,7 @@ public class RewardManager private int _legendaryShards = 5000; - public RewardManager(CoreClientManager clientManager, ServerStatusManager statusManager, DonationManager donationManager, InventoryManager inventoryManager, PetManager petManager, StatsManager statsManager, GiveawayManager giveawayManager, + public RewardManager(CoreClientManager clientManager, ServerStatusManager statusManager, DonationManager donationManager, InventoryManager inventoryManager, PetManager petManager, StatsManager statsManager, int commonValueMin, int commonValueMax, int uncommonValueMin, int uncommonValueMax, int rareValueMin, int rareValueMax, @@ -67,7 +66,6 @@ public class RewardManager _clientManager = clientManager; _statusManager = statusManager; _donationManager = donationManager; - _giveawayManager = giveawayManager; _doubleGadgetValue = doubleGadgetValue; _carlSpinner = carlSpinner; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java index a5c89e0ce..104272137 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureManager.java @@ -14,7 +14,6 @@ import mineplex.core.MiniPlugin; import mineplex.core.account.CoreClientManager; import mineplex.core.blockrestore.BlockRestore; import mineplex.core.donation.DonationManager; -import mineplex.core.giveaway.GiveawayManager; import mineplex.core.hologram.HologramManager; import mineplex.core.inventory.InventoryManager; import mineplex.core.pet.PetManager; @@ -38,7 +37,7 @@ public class TreasureManager extends MiniPlugin private StatsManager _statsManager; private List _treasureLocations; - public TreasureManager(JavaPlugin plugin, CoreClientManager clientManager, ServerStatusManager statusManager, DonationManager donationManager, InventoryManager inventoryManager, PetManager petManager, BlockRestore blockRestore, HologramManager hologramManager, StatsManager statsManager, GiveawayManager giveawayManager) + public TreasureManager(JavaPlugin plugin, CoreClientManager clientManager, ServerStatusManager statusManager, DonationManager donationManager, InventoryManager inventoryManager, PetManager petManager, BlockRestore blockRestore, HologramManager hologramManager, StatsManager statsManager) { super("Treasure", plugin); @@ -47,7 +46,7 @@ public class TreasureManager extends MiniPlugin _blockRestore = blockRestore; _hologramManager = hologramManager; _statsManager = statsManager; - _rewardManager = new RewardManager(clientManager, statusManager, donationManager, _inventoryManager, petManager, statsManager, giveawayManager, + _rewardManager = new RewardManager(clientManager, statusManager, donationManager, _inventoryManager, petManager, statsManager, 100, 250, 500, 1000, 4000, 6000, diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java b/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java index de561f590..15513f191 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java @@ -22,7 +22,6 @@ import mineplex.core.elo.EloManager; import mineplex.core.energy.Energy; import mineplex.core.friend.FriendManager; import mineplex.core.give.Give; -import mineplex.core.giveaway.GiveawayManager; import mineplex.core.globalpacket.GlobalPacketManager; import mineplex.core.hologram.HologramManager; import mineplex.core.ignore.IgnoreManager; @@ -117,7 +116,6 @@ public class Hub extends JavaPlugin implements IRelation //Main Modules ServerStatusManager serverStatusManager = new ServerStatusManager(this, clientManager, new LagMeter(this, clientManager)); - GiveawayManager giveawayManager = new GiveawayManager(this, clientManager, serverStatusManager); new TitanGiveawayManager(this, clientManager, serverStatusManager); Portal portal = new Portal(this, clientManager, serverStatusManager.getCurrentServerName()); @@ -138,7 +136,7 @@ public class Hub extends JavaPlugin implements IRelation CustomDataManager customDataManager = new CustomDataManager(this, clientManager); PersonalServerManager personalServerManager = new PersonalServerManager(this, clientManager); - HubManager hubManager = new HubManager(this, blockRestore, clientManager, donationManager, inventoryManager, conditionManager, disguiseManager, new TaskManager(this, clientManager, webServerAddress), portal, partyManager, preferenceManager, petManager, pollManager, statsManager, achievementManager, new HologramManager(this, packetHandler), npcManager, personalServerManager, packetHandler, punish, serverStatusManager, giveawayManager, customDataManager); + HubManager hubManager = new HubManager(this, blockRestore, clientManager, donationManager, inventoryManager, conditionManager, disguiseManager, new TaskManager(this, clientManager, webServerAddress), portal, partyManager, preferenceManager, petManager, pollManager, statsManager, achievementManager, new HologramManager(this, packetHandler), npcManager, personalServerManager, packetHandler, punish, serverStatusManager, customDataManager); QueueManager queueManager = new QueueManager(this, clientManager, donationManager, new EloManager(this, clientManager), partyManager); @@ -150,7 +148,7 @@ public class Hub extends JavaPlugin implements IRelation new CustomTagFix(this, packetHandler); new PacketsInteractionFix(this, packetHandler); new ResourcePackManager(this, portal); - new GlobalPacketManager(this, clientManager, serverStatusManager, inventoryManager, donationManager, petManager, statsManager, giveawayManager); + new GlobalPacketManager(this, clientManager, serverStatusManager, inventoryManager, donationManager, petManager, statsManager); //new Replay(this, packetHandler); AprilFoolsManager.Initialize(this, clientManager, disguiseManager); diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java index 3828bda01..6934625a1 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java @@ -190,7 +190,7 @@ public class HubManager extends MiniClientPlugin // private final String[] _songNames = {"JingleBells.nbs", "TheFirstNoel.nbs", "Hark.nbs", "DeckTheHalls.nbs", "Joy.nbs", "MerryChristmas.nbs"}; private final ArrayList _songs; - public HubManager(JavaPlugin plugin, BlockRestore blockRestore, CoreClientManager clientManager, DonationManager donationManager, InventoryManager inventoryManager, ConditionManager conditionManager, DisguiseManager disguiseManager, TaskManager taskManager, Portal portal, PartyManager partyManager, PreferencesManager preferences, PetManager petManager, PollManager pollManager, StatsManager statsManager, AchievementManager achievementManager, HologramManager hologramManager, NpcManager npcManager, PersonalServerManager personalServerManager, PacketHandler packetHandler, Punish punish, ServerStatusManager serverStatusManager, GiveawayManager giveawayManager, CustomDataManager customDataManager) + public HubManager(JavaPlugin plugin, BlockRestore blockRestore, CoreClientManager clientManager, DonationManager donationManager, InventoryManager inventoryManager, ConditionManager conditionManager, DisguiseManager disguiseManager, TaskManager taskManager, Portal portal, PartyManager partyManager, PreferencesManager preferences, PetManager petManager, PollManager pollManager, StatsManager statsManager, AchievementManager achievementManager, HologramManager hologramManager, NpcManager npcManager, PersonalServerManager personalServerManager, PacketHandler packetHandler, Punish punish, ServerStatusManager serverStatusManager, CustomDataManager customDataManager) { super("Hub Manager", plugin); @@ -223,7 +223,7 @@ public class HubManager extends MiniClientPlugin new BenefitManager(plugin, clientManager, _inventoryManager); _gadgetManager = new GadgetManager(_plugin, clientManager, donationManager, _inventoryManager, _mountManager, petManager, preferences, disguiseManager, blockRestore, new ProjectileManager(plugin), achievementManager); - _treasureManager = new TreasureManager(_plugin, clientManager, serverStatusManager, donationManager, _inventoryManager, petManager, _blockRestore, hologramManager, statsManager, giveawayManager); + _treasureManager = new TreasureManager(_plugin, clientManager, serverStatusManager, donationManager, _inventoryManager, petManager, _blockRestore, hologramManager, statsManager); new CosmeticManager(_plugin, clientManager, donationManager, _inventoryManager, _gadgetManager, _mountManager, petManager, _treasureManager); new SoccerManager(this, _gadgetManager); @@ -251,7 +251,7 @@ public class HubManager extends MiniClientPlugin ((CraftWorld)Bukkit.getWorlds().get(0)).getHandle().pvpMode = true; FacebookManager facebookManager = new FacebookManager(plugin, clientManager, donationManager, inventoryManager); - new BonusManager(plugin, clientManager, serverStatusManager, donationManager, pollManager , npcManager, hologramManager, statsManager, _inventoryManager, petManager, giveawayManager, facebookManager); + new BonusManager(plugin, clientManager, serverStatusManager, donationManager, pollManager , npcManager, hologramManager, statsManager, _inventoryManager, petManager, facebookManager); // _halloweenManager = new HalloweenSpookinessManager(this); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java index cf2b849dc..b3dc5e48d 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/Arcade.java @@ -27,7 +27,6 @@ import mineplex.core.donation.DonationManager; import mineplex.core.friend.FriendManager; import mineplex.core.gadget.GadgetManager; import mineplex.core.give.Give; -import mineplex.core.giveaway.GiveawayManager; import mineplex.core.globalpacket.GlobalPacketManager; import mineplex.core.hologram.HologramManager; import mineplex.core.ignore.IgnoreManager; @@ -149,14 +148,13 @@ public class Arcade extends JavaPlugin cosmeticManager.setInterfaceSlot(7); cosmeticManager.disableTeamArmor(); - GiveawayManager giveawayManager = new GiveawayManager(this, _clientManager, serverStatusManager); CustomDataManager customDataManager = new CustomDataManager(this, _clientManager); - new GlobalPacketManager(this, _clientManager, serverStatusManager, inventoryManager, _donationManager, petManager, statsManager, giveawayManager); + new GlobalPacketManager(this, _clientManager, serverStatusManager, inventoryManager, _donationManager, petManager, statsManager); //Arcade Manager PollManager pollManager = new PollManager(this, _clientManager, _donationManager); - _gameManager = new ArcadeManager(this, serverStatusManager, ReadServerConfig(), _clientManager, _donationManager, _damageManager, statsManager, achievementManager, disguiseManager, creature, teleport, new Blood(this), chat, portal, preferenceManager, inventoryManager, packetHandler, cosmeticManager, projectileManager, petManager, hologramManager, webServerAddress, pollManager, npcmanager, giveawayManager, customDataManager, punish); + _gameManager = new ArcadeManager(this, serverStatusManager, ReadServerConfig(), _clientManager, _donationManager, _damageManager, statsManager, achievementManager, disguiseManager, creature, teleport, new Blood(this), chat, portal, preferenceManager, inventoryManager, packetHandler, cosmeticManager, projectileManager, petManager, hologramManager, webServerAddress, pollManager, npcmanager, customDataManager, punish); new MemoryFix(this); new CustomTagFix(this, packetHandler); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java index 1c803d15a..cdcd2f7b9 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java @@ -33,7 +33,6 @@ import mineplex.core.explosion.ExplosionEvent; import mineplex.core.facebook.FacebookManager; import mineplex.core.gadget.types.Gadget; import mineplex.core.gadget.types.GadgetType; -import mineplex.core.giveaway.GiveawayManager; import mineplex.core.hologram.HologramManager; import mineplex.core.inventory.InventoryManager; import mineplex.core.itemstack.ItemStackFactory; @@ -184,7 +183,6 @@ public class ArcadeManager extends MiniPlugin implements IRelation private StatsManager _statsManager; private PartyManager _partyManager; private PreferencesManager _preferencesManager; - private GiveawayManager _giveawayManager; private ResourcePackManager _resourcePackManager; private CustomDataManager _customDataManager; private Punish _punishmentManager; @@ -212,7 +210,7 @@ public class ArcadeManager extends MiniPlugin implements IRelation StatsManager statsManager, AchievementManager achievementManager, DisguiseManager disguiseManager, Creature creature, Teleport teleport, Blood blood, Chat chat, Portal portal, PreferencesManager preferences, InventoryManager inventoryManager, PacketHandler packetHandler, CosmeticManager cosmeticManager, ProjectileManager projectileManager, PetManager petManager, HologramManager hologramManager, String webAddress, PollManager pollManager, - NpcManager npcManager, GiveawayManager giveawayManager, CustomDataManager customDataManager, Punish punish) + NpcManager npcManager, CustomDataManager customDataManager, Punish punish) { super("Game Manager", plugin); @@ -270,7 +268,6 @@ public class ArcadeManager extends MiniPlugin implements IRelation _portal = portal; _petManager = petManager; _eventManager = new EventModule(this, getPlugin()); - _giveawayManager = giveawayManager; _resourcePackManager = new ResourcePackManager(plugin, portal); _customDataManager = customDataManager; @@ -307,7 +304,7 @@ public class ArcadeManager extends MiniPlugin implements IRelation new TeamArmorAddon(plugin, this); FacebookManager facebookManager = new FacebookManager(plugin, clientManager, donationManager, inventoryManager); - new BonusManager(plugin, clientManager, serverStatusManager, donationManager, pollManager , npcManager, hologramManager, statsManager, _inventoryManager, petManager, giveawayManager, facebookManager); + new BonusManager(plugin, clientManager, serverStatusManager, donationManager, pollManager , npcManager, hologramManager, statsManager, _inventoryManager, petManager, facebookManager); //Champions Modules _energy = new Energy(plugin); @@ -449,11 +446,6 @@ public class ArcadeManager extends MiniPlugin implements IRelation return _explosionManager; } - public GiveawayManager getGiveawayManager() - { - return _giveawayManager; - } - public Fire GetFire() { return _fire; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameLootManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameLootManager.java index 60bf68b48..c78bd3771 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameLootManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameLootManager.java @@ -52,7 +52,7 @@ public class GameLootManager implements Listener Manager.getPluginManager().registerEvents(this, Manager.getPlugin()); - _rewardManager = new RewardManager(Manager.GetClients(), Manager.GetServerStatusManager(), Manager.GetDonation(), Manager.getInventoryManager(), petManager, Manager.GetStatsManager(), Manager.getGiveawayManager(), + _rewardManager = new RewardManager(Manager.GetClients(), Manager.GetServerStatusManager(), Manager.GetDonation(), Manager.getInventoryManager(), petManager, Manager.GetStatsManager(), 100, 250, 500, 1000, 1500, 2500, From 7e9ff95ae30edd64496a2e6f92031174e661c658 Mon Sep 17 00:00:00 2001 From: Virizion <9b717b9d4e5f09e89fa3@gmail.com> Date: Sun, 7 Feb 2016 15:27:39 -0500 Subject: [PATCH 18/37] spec command add guardian --- .../games/speedbuilders/SpeedBuilders.java | 51 ++++++++++++++----- 1 file changed, 39 insertions(+), 12 deletions(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java index f752bf844..cadf18aba 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java @@ -433,8 +433,8 @@ public class SpeedBuilders extends SoloGame EndCheck(); } - @EventHandler(priority = EventPriority.MONITOR) - public void teamGen(GameStateChangeEvent event) + @EventHandler(priority = EventPriority.LOWEST) + public void onPrepare(GameStateChangeEvent event) { if (event.GetState() != GameState.Prepare) return; @@ -446,13 +446,6 @@ public class SpeedBuilders extends SoloGame GameTeam guardians = new GameTeam(this, "Guardians", ChatColor.GRAY, spawns); AddTeam(guardians); - } - - @EventHandler(priority = EventPriority.LOWEST) - public void onPrepare(GameStateChangeEvent event) - { - if (event.GetState() != GameState.Prepare) - return; spawnJudge(); //GUARDIAN LAZORZ WILL ROXORZ YOUR BOXORZ @@ -463,10 +456,44 @@ public class SpeedBuilders extends SoloGame { if (i >= WorldData.GetDataLocs("YELLOW").size()) { - Manager.addSpectator(players.get(i), true); GetTeamList().get(0).RemovePlayer(players.get(i)); + + moveToGuardians(players.get(i), false); + + players.get(i).teleport(GetSpectatorLocation()); } } + + for (Player player : UtilServer.getPlayers()) + { + //Not on a team will become a spec + if (!IsAlive(player)) + { + moveToGuardians(player, false); + + player.teleport(GetSpectatorLocation()); + } + } + + for (Player player : GetTeamList().get(1).GetPlayers(false)) + { + //Reapply disguise 5 ticks later + Manager.runSyncLater(new Runnable() + { + @Override + public void run() + { + DisguiseGuardian disguise = new DisguiseGuardian(player); + disguise.setName(C.cGray + player.getName()); + disguise.setCustomNameVisible(true); + + Manager.GetDisguise().disguise(disguise); + + player.setAllowFlight(true); + player.setFlying(true); + } + }, 5); + } } @EventHandler @@ -475,7 +502,7 @@ public class SpeedBuilders extends SoloGame if (!IsLive()) return; - if (WorldData.GetDataLocs("YELLOW").size() < GetPlayers(true).size()) + if (WorldData.GetDataLocs("YELLOW").size() < GetTeamList().get(0).GetPlayers(true).size()) { Announce(C.Bold + "Too many players..."); SetState(GameState.End); @@ -493,7 +520,7 @@ public class SpeedBuilders extends SoloGame HashSet usedBuildLocs = new HashSet(); - for (Player player : GetPlayers(true)) + for (Player player : GetTeamList().get(0).GetPlayers(true)) { Location buildLoc = UtilAlg.findClosest(player.getLocation(), WorldData.GetDataLocs("YELLOW")); Location spawnLoc = UtilAlg.findClosest(buildLoc, GetTeamList().get(0).GetSpawns()); From e96b4c4a7f3adad92c3453c6f12770fbcf03db21 Mon Sep 17 00:00:00 2001 From: Virizion <9b717b9d4e5f09e89fa3@gmail.com> Date: Sun, 7 Feb 2016 15:59:59 -0500 Subject: [PATCH 19/37] Mob egg baby fix. Also fixed non build entities from being "broken" --- .../games/speedbuilders/SpeedBuilders.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java index cadf18aba..9260d6e39 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java @@ -39,6 +39,7 @@ import org.bukkit.event.inventory.InventoryPickupItemEvent; import org.bukkit.event.player.PlayerBucketEmptyEvent; import org.bukkit.event.player.PlayerBucketFillEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent; +import org.bukkit.event.player.PlayerInteractEntityEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerMoveEvent; @@ -1256,9 +1257,34 @@ public class SpeedBuilders extends SoloGame if (!_buildRecreations.get(player).inBuildArea(event.getEntity().getLocation())) return; + boolean hasMobType = false; + + for (MobData mobData : _currentBuild.Mobs) + { + if (mobData.EntityType == event.getEntityType()) + { + hasMobType = true; + + break; + } + } + + if (!hasMobType) + return; + _buildRecreations.get(player).addToDemolition(event.getEntity()); } + @EventHandler + public void stopBabyEgg(PlayerInteractEntityEvent event) + { + if (!IsLive()) + return; + + if (event.getPlayer().getItemInHand().getType() == Material.MONSTER_EGG) + event.setCancelled(true); + } + @EventHandler public void updateDemolitionBlocks(UpdateEvent event) { From b40f018ee26623132a2c18b2b1ad172a573f6dc6 Mon Sep 17 00:00:00 2001 From: Virizion <9b717b9d4e5f09e89fa3@gmail.com> Date: Sun, 7 Feb 2016 17:20:58 -0500 Subject: [PATCH 20/37] Stop mid game joiners from getting participation gems. --- .../game/games/speedbuilders/SpeedBuilders.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java index 9260d6e39..ec6d074fe 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java @@ -1771,7 +1771,17 @@ public class SpeedBuilders extends SoloGame if (places.size() >= 3) AddGems(places.get(2), 10, "3rd Place", false, false); - for (Player player : GetPlayers(false)) + ArrayList participants = new ArrayList(); + + ArrayList guardians = GetTeamList().get(1).GetPlayers(false); + + participants.addAll(playersTeam.GetPlayers(true)); + + guardians.retainAll(playersTeam.GetPlacements(true)); + + participants.addAll(guardians); + + for (Player player : participants) if (player.isOnline()) AddGems(player, 10, "Participation", false, false); From aaf1fd42f3973f987d7a7789dba4ae6b77716f6e Mon Sep 17 00:00:00 2001 From: Virizion <9b717b9d4e5f09e89fa3@gmail.com> Date: Sun, 7 Feb 2016 18:16:36 -0500 Subject: [PATCH 21/37] Only eliminated players are guardians. Broken blocks/mobs go directly into inventory. --- .../games/speedbuilders/SpeedBuilders.java | 69 ++----------------- .../speedbuilders/data/DemolitionData.java | 26 +++---- 2 files changed, 15 insertions(+), 80 deletions(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java index ec6d074fe..80a2a5b80 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java @@ -41,7 +41,6 @@ import org.bukkit.event.player.PlayerBucketFillEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.event.player.PlayerInteractEntityEvent; import org.bukkit.event.player.PlayerInteractEvent; -import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerPickupItemEvent; import org.bukkit.event.player.PlayerQuitEvent; @@ -458,44 +457,12 @@ public class SpeedBuilders extends SoloGame if (i >= WorldData.GetDataLocs("YELLOW").size()) { GetTeamList().get(0).RemovePlayer(players.get(i)); - - moveToGuardians(players.get(i), false); - - players.get(i).teleport(GetSpectatorLocation()); + Manager.addSpectator(players.get(i), true); } } - - for (Player player : UtilServer.getPlayers()) - { - //Not on a team will become a spec - if (!IsAlive(player)) - { - moveToGuardians(player, false); - - player.teleport(GetSpectatorLocation()); - } - } - - for (Player player : GetTeamList().get(1).GetPlayers(false)) - { - //Reapply disguise 5 ticks later - Manager.runSyncLater(new Runnable() - { - @Override - public void run() - { - DisguiseGuardian disguise = new DisguiseGuardian(player); - disguise.setName(C.cGray + player.getName()); - disguise.setCustomNameVisible(true); - - Manager.GetDisguise().disguise(disguise); - - player.setAllowFlight(true); - player.setFlying(true); - } - }, 5); - } } + + @EventHandler public void onLive(GameStateChangeEvent event) @@ -1645,34 +1612,6 @@ public class SpeedBuilders extends SoloGame event.setCancelled(true); } - //Add to guardians before arcade manager adds to spectator to trick it into thinking the player is "alive" - @EventHandler(priority = EventPriority.LOW) - public void joinAddGuardian(PlayerJoinEvent event) - { - if (!InProgress()) - return; - - moveToGuardians(event.getPlayer(), false); - event.getPlayer().teleport(GetSpectatorLocation()); - - //We need to disguise a tick after - Manager.runSyncLater(new Runnable() - { - @Override - public void run() - { - DisguiseGuardian disguise = new DisguiseGuardian(event.getPlayer()); - disguise.setName(C.cGray + event.getPlayer().getName()); - disguise.setCustomNameVisible(true); - - Manager.GetDisguise().disguise(disguise); - - event.getPlayer().setAllowFlight(true); - event.getPlayer().setFlying(true); - } - }, 1); - } - @EventHandler public void setNextBuild(PlayerCommandPreprocessEvent event) { @@ -1853,7 +1792,7 @@ public class SpeedBuilders extends SoloGame for (Player player : playersDead) { - Scoreboard.Write(C.cGray + player.getName()); + Scoreboard.Write(C.cDGray + player.getName()); } Scoreboard.Draw(); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/data/DemolitionData.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/data/DemolitionData.java index f53f653c0..0f8804aac 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/data/DemolitionData.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/data/DemolitionData.java @@ -2,14 +2,6 @@ package nautilus.game.arcade.game.games.speedbuilders.data; import java.util.ArrayList; -import mineplex.core.common.util.MapUtil; -import mineplex.core.common.util.NautHashMap; -import mineplex.core.common.util.UtilAlg; -import mineplex.core.common.util.UtilBlock; -import mineplex.core.common.util.UtilEnt; -import mineplex.core.common.util.UtilTime; -import mineplex.core.hologram.Hologram; - import org.bukkit.Effect; import org.bukkit.Location; import org.bukkit.Material; @@ -17,11 +9,19 @@ import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.block.BlockState; import org.bukkit.entity.Entity; -import org.bukkit.entity.Item; import org.bukkit.inventory.ItemStack; import org.bukkit.material.Bed; import org.bukkit.material.Door; +import mineplex.core.common.util.MapUtil; +import mineplex.core.common.util.NautHashMap; +import mineplex.core.common.util.UtilAlg; +import mineplex.core.common.util.UtilBlock; +import mineplex.core.common.util.UtilEnt; +import mineplex.core.common.util.UtilInv; +import mineplex.core.common.util.UtilTime; +import mineplex.core.hologram.Hologram; + public class DemolitionData { @@ -170,9 +170,7 @@ public class DemolitionData for (ItemStack itemStack : UtilBlock.blockToInventoryItemStacks(block)) { - Item item = block.getWorld().dropItem(block.getLocation().add(0.5, 0.5, 0.5), itemStack); - - Parent.DroppedItems.put(item, System.currentTimeMillis()); + UtilInv.insert(Parent.Player, itemStack); } //Destroy the other part @@ -210,9 +208,7 @@ public class DemolitionData { ItemStack spawnEgg = new ItemStack(Material.MONSTER_EGG, 1, entity.getType().getTypeId()); - Item item = entity.getWorld().dropItem(entity.getLocation().add(0, 1, 0), spawnEgg); - - Parent.DroppedItems.put(item, System.currentTimeMillis()); + UtilInv.insert(Parent.Player, spawnEgg); entity.remove(); From 51d152d48473f820ab6d03586fb41f890750f645 Mon Sep 17 00:00:00 2001 From: Virizion <9b717b9d4e5f09e89fa3@gmail.com> Date: Sun, 7 Feb 2016 19:05:53 -0500 Subject: [PATCH 22/37] Perfect build all fix --- .../game/arcade/game/games/speedbuilders/SpeedBuilders.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java index 80a2a5b80..ea2b2960e 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java @@ -645,7 +645,7 @@ public class SpeedBuilders extends SoloGame _perfectBuild.put(player, System.currentTimeMillis()); - if (_perfectBuild.size() == GetTeamList().get(0).GetPlayers(false).size()) + if (_perfectBuild.size() == _buildRecreations.size()) { // Everyone has a perfect build _allPerfect = true; From a868b8b2b890aa142ec90f298519fd56cc21b695 Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Mon, 8 Feb 2016 22:26:33 -0600 Subject: [PATCH 23/37] Valentines gifts --- .../mineplex/core/bonuses/BonusManager.java | 19 +-- .../mineplex/core/gadget/GadgetManager.java | 18 +-- .../gadget/gadgets/item/ItemFlowerGift.java | 115 ++++++++++++++++++ .../src/mineplex/core/npc/NpcManager.java | 2 +- .../mineplex/core/reward/RewardManager.java | 26 ++++ .../src/mineplex/core/reward/RewardPool.java | 3 +- .../src/mineplex/core/reward/RewardType.java | 1 + .../reward/rewards/TreasureShardReward.java | 34 +++++- .../valentines/ValentinesGiftManager.java | 91 ++++++++++++++ .../valentines/ValentinesGiftRepository.java | 33 +++++ .../valentines/event/AttemptGiftEvent.java | 31 +++++ .../src/mineplex/hub/HubManager.java | 8 ++ 12 files changed, 340 insertions(+), 41 deletions(-) create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFlowerGift.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/valentines/ValentinesGiftManager.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/valentines/ValentinesGiftRepository.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/valentines/event/AttemptGiftEvent.java diff --git a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusManager.java b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusManager.java index 8f5879b6f..38e84de90 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusManager.java @@ -818,7 +818,7 @@ public class BonusManager extends MiniClientPlugin implements I } } - @EventHandler + @EventHandler(ignoreCancelled = true) public void openGui(PlayerInteractEntityEvent event) { if (!_enabled) @@ -832,23 +832,6 @@ public class BonusManager extends MiniClientPlugin implements I } } - @EventHandler - public void openGui(EntityDamageByEntityEvent event) - { - if (!_enabled) - return; - - if (event.getDamager() instanceof Player) - { - Player player = (Player) event.getDamager(); - if (event.getEntity().equals(_carlNpc.getEntity())) - { - updateDailyStreak(player); - new BonusGui(_plugin, player, this, _rewardManager, _facebookManager).openInventory(); - } - } - } - public static long getNextVoteTime(long time) { Calendar calendar = Calendar.getInstance(); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java index 5d3b842d2..753ab4217 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java @@ -5,6 +5,7 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import mineplex.core.gadget.gadgets.item.*; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; @@ -50,22 +51,6 @@ import mineplex.core.gadget.gadgets.hat.HatPresent; import mineplex.core.gadget.gadgets.hat.HatRudolph; 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.ItemBow; -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.ItemLovePotion; -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; @@ -210,6 +195,7 @@ public class GadgetManager extends MiniPlugin addGadget(new ItemSnowball(this)); addGadget(new ItemBow(this)); addGadget(new ItemLovePotion(this)); + addGadget(new ItemFlowerGift(this)); // Costume addGadget(new OutfitRaveSuitHelmet(this)); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFlowerGift.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFlowerGift.java new file mode 100644 index 000000000..40b5fd105 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFlowerGift.java @@ -0,0 +1,115 @@ +package mineplex.core.gadget.gadgets.item; + +import mineplex.core.common.util.*; +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.valentines.event.AttemptGiftEvent; +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.block.Action; +import org.bukkit.event.player.PlayerInteractAtEntityEvent; +import org.bukkit.event.player.PlayerInteractEntityEvent; +import org.bukkit.event.player.PlayerInteractEvent; + +public class ItemFlowerGift extends ItemGadget +{ + public ItemFlowerGift(GadgetManager manager) + { + super(manager, + "Valentines Gift", + UtilText.splitLineToArray(C.cGray + "Maybe you can win over Chiss' heart with this!", LineFormat.LORE), + 1, + Material.RED_ROSE, + (byte) 0, + 2000, + new Ammo("Valentines Gift", "Valentines Gift", Material.RED_ROSE, (byte) 0, UtilText.splitLineToArray(C.cGray + "Maybe you can win over Chiss' heart with this!", LineFormat.LORE), 1, 10)); + } + + @Override + public void ActivateCustom(Player player) + { + + } + + @EventHandler(priority = EventPriority.LOWEST) + public void onInteract(PlayerInteractAtEntityEvent event) + { + Player player = event.getPlayer(); + + if (!IsActive(player)) + return; + + if (!UtilGear.isMat(player.getItemInHand(), GetDisplayMaterial())) + return; + + if (!hasAmmo(player)) + { + 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; + } + + if (event.getRightClicked() instanceof Player) + { + Player to = ((Player) event.getRightClicked()); + AttemptGiftEvent giftEvent = new AttemptGiftEvent(player, to); + Bukkit.getPluginManager().callEvent(giftEvent); + } + else + { + UtilPlayer.message(player, F.main("Gadget", "You used " + F.elem("Give Rose") + " on " + F.name(event.getRightClicked().getName()) + ". It's not very effective...")); + } + + event.setCancelled(true); + } + + @Override + @EventHandler + public void Activate(PlayerInteractEvent event) + { + if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK) + return; + + if (!IsActive(event.getPlayer())) + return; + + if (!UtilGear.isMat(event.getPlayer().getItemInHand(), GetDisplayMaterial())) + return; + + //Recharge + if (!Recharge.Instance.use(event.getPlayer(), GetName(), GetName(), _recharge, false, true, false, true, "Cosmetics")) + return; + + if (!hasAmmo(event.getPlayer())) + { + UtilPlayer.message(event.getPlayer(), F.main("Gadget", "You do not have any " + GetName() + " left.")); + + ItemGadgetOutOfAmmoEvent ammoEvent = new ItemGadgetOutOfAmmoEvent(event.getPlayer(), this); + Bukkit.getServer().getPluginManager().callEvent(ammoEvent); + + return; + } + + event.setCancelled(true); + + // Logic is handled in onInteract (so we can cancel interact events on npc's) + UtilPlayer.message(event.getPlayer(), F.main("Gadget", "Nothing happened... Maybe I should try giving this to someone?!")); + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/npc/NpcManager.java b/Plugins/Mineplex.Core/src/mineplex/core/npc/NpcManager.java index 1235a6301..b3c7bef3d 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/npc/NpcManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/npc/NpcManager.java @@ -236,7 +236,7 @@ public class NpcManager extends MiniPlugin event.setCancelled(true); } - @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) + @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) public void onPlayerInteractEntity(PlayerInteractEntityEvent event) { if (event.getRightClicked() instanceof LivingEntity) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java index 6a8507a5e..c7bd87f8f 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java @@ -101,6 +101,10 @@ public class RewardManager maxValue *= 2; } + // Valentines + addReward(RewardPool.Type.VALENTINES_GIFT, new TreasureShardReward(_clientManager, donationManager, 50, 100, 10, rarity)); + + // Christmas addReward(RewardPool.Type.WINTER_HOLIDAY, new InventoryReward(inventoryManager, "Coal", "Coal", 50, 100, new ItemStack(Material.COAL), rarity, 10, 0)); @@ -162,6 +166,13 @@ public class RewardManager maxValue *= 2; } + // Valentines + addReward(RewardPool.Type.VALENTINES_GIFT, new InventoryReward(inventoryManager, "Love Potion", "Love Potion", 1, 2, + new ItemStack(Material.POTION, 1), rarity, 10, 0)); + addReward(RewardPool.Type.VALENTINES_GIFT, new InventoryReward(inventoryManager, "Cupid's Arrows", "Cupid Arrow", 1, 10, + new ItemStack(Material.BOW, 1), rarity, 10, 0)); + + // Christmas addReward(RewardPool.Type.WINTER_HOLIDAY, new InventoryReward(inventoryManager, "Freeze Cannon", "Freeze Cannon", 5, 10, new ItemStack(Material.ICE), rarity, 10, 0)); addReward(RewardPool.Type.WINTER_HOLIDAY, new InventoryReward(inventoryManager, "Party Popper", "Party Popper", 5, 10, @@ -257,6 +268,10 @@ public class RewardManager // addReward(new CoinReward(donationManager, (int)minValue, (int)maxValue, 100, RewardRarity.RARE)); } + // Valentines + addReward(RewardPool.Type.VALENTINES_GIFT, new TreasureShardReward(_clientManager, donationManager, 100, 300, 10, rarity)); + + // Christmas addReward(RewardPool.Type.WINTER_HOLIDAY, new UnknownPackageReward(donationManager, "Hat", "Santa", "Santa", SkinData.SANTA.getSkull(), rarity, 5, _rareShards)); addReward(RewardPool.Type.WINTER_HOLIDAY, new PetReward(petManager, inventoryManager, donationManager, "Elf", "Christmas Elf", @@ -326,6 +341,17 @@ public class RewardManager // addReward(new CoinReward(donationManager, (int)minValue, (int)maxValue, 25, rarity)); } + // Valentines + addReward(RewardPool.Type.VALENTINES_GIFT, new UnknownPackageReward(donationManager, "Arrow Effect", "Arrows of Cupid", "Arrows of Cupid", + new ItemStack(Material.POTION), rarity, 10, _rareShards)); + addReward(RewardPool.Type.VALENTINES_GIFT, new UnknownPackageReward(donationManager, "Death Effect", "Broken Hearted", "Broken Hearted", + new ItemStack(Material.POTION), rarity, 10, _rareShards)); + addReward(RewardPool.Type.VALENTINES_GIFT, new UnknownPackageReward(donationManager, "Jump Effect", "Wings of Love", "Wings of Love", + new ItemStack(Material.POTION), rarity, 10, _rareShards)); + addReward(RewardPool.Type.VALENTINES_GIFT, new UnknownPackageReward(donationManager, "Particles", "Heartfelt Halo", "Heartfelt Halo", + new ItemStack(Material.POTION), rarity, 10, _rareShards)); + + // Christmas addReward(RewardPool.Type.WINTER_HOLIDAY, new UnknownPackageReward(donationManager, "Hat", "The Grinch", "The Grinch", SkinData.THE_GRINCH.getSkull(), rarity, 5, _legendaryShards)); addReward(RewardPool.Type.WINTER_HOLIDAY, new UnknownPackageReward(donationManager, "Morph", "Olaf", "Olaf Morph", diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardPool.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardPool.java index 72c38535f..69f97085c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardPool.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardPool.java @@ -35,6 +35,7 @@ public class RewardPool public static enum Type { NORMAL, - WINTER_HOLIDAY; + WINTER_HOLIDAY, + VALENTINES_GIFT; } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardType.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardType.java index a26c177a7..47d17c65c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardType.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardType.java @@ -11,6 +11,7 @@ public enum RewardType AncientChest( 0, 2, 8, 32), MythicalChest( 0.1, 4, 16, 72), WinterChest( 0, 5, 18, 32), + ValentinesGift( 9, 10, 25, 40), SpinnerFiller( 0.1, 1, 4, 20), SpinnerReal( 0.000001, 0.05, 0.4, 5); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java index 2fcb04e18..5f9c368e5 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/rewards/TreasureShardReward.java @@ -1,6 +1,7 @@ package mineplex.core.reward.rewards; import mineplex.core.account.CoreClientManager; +import mineplex.core.common.util.UtilMath; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Player; @@ -18,7 +19,8 @@ public class TreasureShardReward extends Reward private CoreClientManager _clientManager; private DonationManager _donationManager; private Reward _otherReward; - private int _shards = 0; + private int _shardsMin = 0; + private int _shardsMax = 0; public TreasureShardReward(CoreClientManager clientManager, DonationManager donationManager, Reward otherReward, int weight, RewardRarity rarity) { @@ -28,14 +30,36 @@ public class TreasureShardReward extends Reward _donationManager = donationManager; _otherReward = otherReward; - _shards += (int) (otherReward.getShardValue() + (Math.random() * otherReward.getShardValue() / 2.0)); + _shardsMin = (int) (otherReward.getShardValue() + (Math.random() * otherReward.getShardValue() / 2.0)); + _shardsMax = _shardsMin; + } + + public TreasureShardReward(CoreClientManager clientManager, DonationManager donationManager, int min, int max, int weight, RewardRarity rarity) + { + super(rarity, weight, 0); + + _clientManager = clientManager; + _donationManager = donationManager; + + _shardsMin = min; + _shardsMax = max; } @Override public RewardData giveRewardCustom(Player player, RewardType rewardType) { - RewardData fakeData = _otherReward.getFakeRewardData(player); - RewardData rewardData = new RewardData(fakeData.getHeader(), fakeData.getFriendlyName(), fakeData.getDisplayItem(), fakeData.getRarity(), _shards); + RewardData rewardData; + final int shards = UtilMath.rRange(_shardsMin, _shardsMax); + + if (_otherReward != null) + { + RewardData fakeData = _otherReward.getFakeRewardData(player); + rewardData = new RewardData(fakeData.getHeader(), fakeData.getFriendlyName(), fakeData.getDisplayItem(), fakeData.getRarity(), shards); + } + else + { + rewardData = new RewardData(null, getRarity().getColor() + shards + " Treasure Shards", new ItemStack(Material.PRISMARINE_SHARD), getRarity()); + } int accountId = _clientManager.getAccountId(player); @@ -45,7 +69,7 @@ public class TreasureShardReward extends Reward @Override public void run() { - _donationManager.rewardCoinsUntilSuccess(null, "Treasure", player.getName(), accountId, _shards); + _donationManager.rewardCoinsUntilSuccess(null, "Treasure", player.getName(), accountId, shards); } }, 100); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/valentines/ValentinesGiftManager.java b/Plugins/Mineplex.Core/src/mineplex/core/valentines/ValentinesGiftManager.java new file mode 100644 index 000000000..4e9ffd3d6 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/valentines/ValentinesGiftManager.java @@ -0,0 +1,91 @@ +package mineplex.core.valentines; + +import mineplex.core.MiniPlugin; +import mineplex.core.account.CoreClientManager; +import mineplex.core.common.util.Callback; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.gadget.GadgetManager; +import mineplex.core.inventory.InventoryManager; +import mineplex.core.itemstack.ItemStackFactory; +import mineplex.core.reward.*; +import mineplex.core.valentines.event.AttemptGiftEvent; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.plugin.java.JavaPlugin; + +public class ValentinesGiftManager extends MiniPlugin +{ + private final String ITEM_NAME = "Valentines Gift"; + private final Material ITEM_MATERIAL = Material.RED_ROSE; + + private CoreClientManager _clientManager; + private RewardManager _rewardManager; + private InventoryManager _inventoryManager; + private GadgetManager _gadgetManager; + + private ValentinesGiftRepository _repository; + + public ValentinesGiftManager(JavaPlugin plugin, CoreClientManager clientManager, RewardManager rewardManager, InventoryManager inventoryManager, GadgetManager gadgetManager) + { + super("Valentines", plugin); + + _clientManager = clientManager; + _rewardManager = rewardManager; + _inventoryManager = inventoryManager; + _gadgetManager = gadgetManager; + + _repository = new ValentinesGiftRepository(plugin); + } + + @EventHandler + public void onAttemptGift(AttemptGiftEvent event) + { + Player from = event.getFrom(); + Player to = event.getTo(); + + final int fromId = _clientManager.getAccountId(from); + final int toId = _clientManager.getAccountId(to); + + runAsync(() -> { +// final boolean complete = _repository.giveGift(fromId, toId); + final boolean complete = true; + runSync(() -> giveGift(from, to, complete)); + }); + } + + private void giveGift(Player from, Player to, boolean success) + { + if (success) + { + _rewardManager.nextReward(to, RewardPool.Type.VALENTINES_GIFT, null, false, RewardType.ValentinesGift, false).giveReward(RewardType.ValentinesGift, to, new Callback() + { + @Override + public void run(RewardData data) + { + UtilPlayer.message(to, F.main("Gift", F.name(from.getName()) + " gave you " + data.getRarity().getColor() + data.getFriendlyName())); + UtilPlayer.message(from, F.main("Gift", "You gave " + F.name(to.getName()) + " " + data.getRarity().getColor() + data.getFriendlyName())); + } + }); + + _rewardManager.nextReward(from, RewardPool.Type.VALENTINES_GIFT, null, false, RewardType.ValentinesGift, false).giveReward(RewardType.ValentinesGift, from, new Callback() + { + @Override + public void run(RewardData data) + { + UtilPlayer.message(from, F.main("Gift", "You found " + F.elem(data.getRarity().getColor() + data.getFriendlyName()) + " for your good karma")); + } + }); + + _inventoryManager.addItemToInventory(from, ITEM_NAME, -1); + + from.getInventory().setItem(_gadgetManager.getActiveItemSlot(), ItemStackFactory.Instance.CreateStack(ITEM_MATERIAL, (byte) 0, 1, F.item(_inventoryManager.Get(from).getItemCount(ITEM_NAME) + " " + ITEM_NAME))); + } + else + { + UtilPlayer.message(from, F.main("Gadget", "You have already given a gift to " + F.name(to.getName()) + "!")); + } + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/valentines/ValentinesGiftRepository.java b/Plugins/Mineplex.Core/src/mineplex/core/valentines/ValentinesGiftRepository.java new file mode 100644 index 000000000..39a9d4034 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/valentines/ValentinesGiftRepository.java @@ -0,0 +1,33 @@ +package mineplex.core.valentines; + +import mineplex.core.database.DBPool; +import mineplex.core.database.RepositoryBase; +import mineplex.core.database.column.ColumnInt; +import org.bukkit.plugin.java.JavaPlugin; + +public class ValentinesGiftRepository extends RepositoryBase +{ + private String GIVE_GIFT = "INSERT INTO accountValentinesGift (senderId, targetId) VALUES (?, ?);"; + + public ValentinesGiftRepository(JavaPlugin plugin) + { + super(plugin, DBPool.getAccount()); + } + + @Override + protected void initialize() + { + + } + + @Override + protected void update() + { + + } + + public boolean giveGift(int senderId, int targetId) + { + return executeUpdate(GIVE_GIFT, new ColumnInt("senderId", senderId), new ColumnInt("targetId", targetId)) == 1; + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/valentines/event/AttemptGiftEvent.java b/Plugins/Mineplex.Core/src/mineplex/core/valentines/event/AttemptGiftEvent.java new file mode 100644 index 000000000..6b5d5f806 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/valentines/event/AttemptGiftEvent.java @@ -0,0 +1,31 @@ +package mineplex.core.valentines.event; + +import org.bukkit.entity.Player; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; + +public class AttemptGiftEvent extends Event +{ + private static final HandlerList handlers = new HandlerList(); + public static HandlerList getHandlerList() { return handlers; } + public HandlerList getHandlers() { return handlers; } + + private Player _from; + private Player _to; + + public AttemptGiftEvent(Player from, Player to) + { + _from = from; + _to = to; + } + + public Player getFrom() + { + return _from; + } + + public Player getTo() + { + return _to; + } +} diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java index 66d30be85..fc47546b5 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java @@ -8,6 +8,8 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.Random; +import mineplex.core.reward.RewardManager; +import mineplex.core.valentines.ValentinesGiftManager; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.GameMode; @@ -253,6 +255,12 @@ public class HubManager extends MiniClientPlugin new PlayerDisguiseManager(plugin, _clientManager); // NotificationManager notificationManager = new NotificationManager(plugin, clientManager, donationManager); // new MailManager(_plugin, notificationManager); + new ValentinesGiftManager(plugin, clientManager, new RewardManager(clientManager, serverStatusManager, donationManager, _inventoryManager, petManager, statsManager, giveawayManager, + 100, 250, + 500, 1000, + 4000, 6000, + 12000, 22000, + true, false), inventoryManager, _gadgetManager); _playerCountManager = new PlayerCountManager(plugin); From 6800e4ef478e2d1eea5c19ec52a8368ec0bd520a Mon Sep 17 00:00:00 2001 From: Cheese Date: Tue, 9 Feb 2016 20:43:24 +1100 Subject: [PATCH 24/37] valentines final push --- .../nautilus/game/arcade/game/SoloGame.java | 2 +- .../game/games/valentines/Valentines.java | 92 +++++++++++++++++-- 2 files changed, 86 insertions(+), 8 deletions(-) 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 3d5ca5cf0..6e029034f 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 @@ -18,7 +18,7 @@ import nautilus.game.arcade.kit.Kit; public abstract class SoloGame extends Game { - private GameTeam _players; + protected GameTeam _players; public SoloGame(ArcadeManager manager, GameType gameType, Kit[] kits, String[] gameDesc) { diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/Valentines.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/Valentines.java index cc15a91d6..fb1d9ef2b 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/Valentines.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/Valentines.java @@ -28,6 +28,8 @@ import org.bukkit.inventory.ItemStack; 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.UtilAction; import mineplex.core.common.util.UtilAlg; @@ -36,6 +38,7 @@ import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilEvent; 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.UtilTextBottom; import mineplex.core.common.util.UtilTextMiddle; @@ -55,6 +58,7 @@ import nautilus.game.arcade.GameType; import nautilus.game.arcade.events.GameStateChangeEvent; import nautilus.game.arcade.game.SoloGame; import nautilus.game.arcade.game.Game.GameState; +import nautilus.game.arcade.game.games.christmas.ChristmasAudio; import nautilus.game.arcade.game.games.gladiators.tutorial.TutorialGladiators; import nautilus.game.arcade.game.games.valentines.kit.KitMasterOfLove; import nautilus.game.arcade.game.games.valentines.tutorial.TutorialValentines; @@ -201,14 +205,14 @@ public class Valentines extends SoloGame if (!(projectile instanceof Fish)) return; - LivingEntity damagee = Manager.GetDamage().GetDamageeEntity(event); - LivingEntity damager = UtilEvent.GetDamagerEntity(event, true); +// LivingEntity damagee = Manager.GetDamage().GetDamageeEntity(event); +// LivingEntity damager = UtilEvent.GetDamagerEntity(event, true); event.setCancelled(true); - damagee.playEffect(EntityEffect.HURT); - - UtilAction.velocity(damagee, UtilAlg.getTrajectory(damagee, damager), 0.2, false, 0, 0.1, 1, true); +// damagee.playEffect(EntityEffect.HURT); +// +// UtilAction.velocity(damagee, UtilAlg.getTrajectory(damagee, damager), 0.2, false, 0, 0.1, 1, true); projectile.remove(); } @@ -263,7 +267,7 @@ public class Valentines extends SoloGame pig.getPassenger().remove(); //Give Item to Player - player.getInventory().addItem(new ItemStack(_item.getMaterial())); + player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(_item.getMaterial(), _item.getData())); _hasItem.add(player); @@ -532,7 +536,7 @@ public class Valentines extends SoloGame } } - UtilEnt.CreatureMoveFast(pig, target, (_finalRound ? 0.4f : 0f) + 1.5f + (float)(1f * closestDist)); + UtilEnt.CreatureMoveFast(pig, target, 1.5f + (float)(1f * closestDist)); } } @@ -724,4 +728,78 @@ public class Valentines extends SoloGame Scoreboard.Draw(); } + + @Override + public void EndCheck() + { + if (!IsLive()) + return; + + if (GetPlayers(true).size() == 1) + { + ArrayList places = _players.GetPlacements(true); + + //Announce + AnnounceEnd(places); + + //Gems + if (places.size() >= 1) + AddGems(places.get(0), 20, "1st Place", false, false); + + if (places.size() >= 2) + AddGems(places.get(1), 15, "2nd Place", false, false); + + if (places.size() >= 3) + AddGems(places.get(2), 10, "3rd Place", false, false); + + for (Player player : GetPlayers(false)) + if (player.isOnline()) + AddGems(player, 10, "Participation", false, false); + + + if (GetPlayers(true).size() >= 1) + { + Player winner = places.get(0); + + if (Manager.GetTaskManager().hasCompletedTask(winner, "Valentines Reward 2016")) + { + + } + else + { + SetCustomWinMessage(winner, winner.getName() + " earned " + C.cYellow + "5x Valentines Gift"); + + Manager.GetTaskManager().completedTask(new Callback() + { + @Override + public void run(Boolean data) + { + if (data) + { + Manager.getInventoryManager().addItemToInventory(winner, "Valentines Gift", 5); + } + else + { + UtilPlayer.message(winner, F.main("Inventory", "An error occured while giving you " + C.cRed + "5x Valentines Gift" + C.cGray + ".")); + } + } + }, winner, "Valentines Reward 2016"); + } + } + + //End + SetState(GameState.End); + } + else if (GetPlayers(true).size() == 0) + { + for (Player player : GetPlayers(false)) + { + Manager.GetGame().AddGems(player, 10, "Participation", false, false); + } + + SetCustomWinLine("Moolanie broke up with Calvin..."); + + SetState(GameState.End); + } + } } From 57638ff68496b6f10012f8782633066b52a8a715 Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Tue, 9 Feb 2016 16:26:17 -0600 Subject: [PATCH 25/37] More work on valentines --- .../gadget/gadgets/item/ItemFlowerGift.java | 4 +- .../core/inventory/InventoryManager.java | 7 +++ .../src/mineplex/core/npc/NpcManager.java | 19 ++----- .../valentines/ValentinesGiftManager.java | 56 +++++++++++-------- 4 files changed, 47 insertions(+), 39 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFlowerGift.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFlowerGift.java index 40b5fd105..c9de08856 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFlowerGift.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFlowerGift.java @@ -74,7 +74,7 @@ public class ItemFlowerGift extends ItemGadget } else { - UtilPlayer.message(player, F.main("Gadget", "You used " + F.elem("Give Rose") + " on " + F.name(event.getRightClicked().getName()) + ". It's not very effective...")); + UtilPlayer.message(player, F.main("Gadget", "You used " + F.elem(GetName()) + " on " + F.name(event.getRightClicked().getName()) + ". It's not very effective...")); } event.setCancelled(true); @@ -110,6 +110,6 @@ public class ItemFlowerGift extends ItemGadget event.setCancelled(true); // Logic is handled in onInteract (so we can cancel interact events on npc's) - UtilPlayer.message(event.getPlayer(), F.main("Gadget", "Nothing happened... Maybe I should try giving this to someone?!")); + UtilPlayer.message(event.getPlayer(), F.main("Gift", "Nothing happened... Maybe I should try giving this to someone?!")); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/inventory/InventoryManager.java b/Plugins/Mineplex.Core/src/mineplex/core/inventory/InventoryManager.java index 4d3431275..72a33d939 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/inventory/InventoryManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/inventory/InventoryManager.java @@ -103,6 +103,13 @@ public class InventoryManager extends MiniDbClientPlugin { System.out.println("Add item to Inventory FAILED for " + player.getName()); } + else + { + if (_items.containsKey(item)) + { + Get(player).addItem(new ClientItem(_items.get(item), count)); + } + } if (callback != null) callback.run(success); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/npc/NpcManager.java b/Plugins/Mineplex.Core/src/mineplex/core/npc/NpcManager.java index b3c7bef3d..56d689a77 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/npc/NpcManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/npc/NpcManager.java @@ -11,25 +11,12 @@ import java.util.Map; import java.util.Set; import java.util.UUID; -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.Sound; -import org.bukkit.World; +import org.bukkit.*; import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.craftbukkit.v1_8_R3.entity.CraftCreature; import org.bukkit.craftbukkit.v1_8_R3.entity.CraftLivingEntity; -import org.bukkit.entity.Ageable; -import org.bukkit.entity.Entity; -import org.bukkit.entity.EntityType; -import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Player; -import org.bukkit.entity.Skeleton; -import org.bukkit.entity.Slime; -import org.bukkit.entity.Villager; -import org.bukkit.entity.Zombie; +import org.bukkit.entity.*; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.entity.EntityCombustEvent; @@ -350,6 +337,8 @@ public class NpcManager extends MiniPlugin ((Skeleton) entity).setSkeletonType(Skeleton.SkeletonType.valueOf(npc.getDatabaseRecord().getEntityMeta().toUpperCase())); if (entity instanceof Villager && npc.getDatabaseRecord().getEntityMeta() != null) ((Villager) entity).setProfession(Villager.Profession.valueOf(npc.getDatabaseRecord().getEntityMeta().toUpperCase())); + if (entity instanceof Sheep && npc.getDatabaseRecord().getEntityMeta() != null) + ((Sheep) entity).setColor(DyeColor.valueOf(npc.getDatabaseRecord().getEntityMeta().toUpperCase())); if (entity instanceof org.bukkit.entity.Creature) ((org.bukkit.entity.Creature) entity).setTarget(null); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/valentines/ValentinesGiftManager.java b/Plugins/Mineplex.Core/src/mineplex/core/valentines/ValentinesGiftManager.java index 4e9ffd3d6..8623b45df 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/valentines/ValentinesGiftManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/valentines/ValentinesGiftManager.java @@ -2,9 +2,7 @@ package mineplex.core.valentines; import mineplex.core.MiniPlugin; import mineplex.core.account.CoreClientManager; -import mineplex.core.common.util.Callback; -import mineplex.core.common.util.F; -import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.*; import mineplex.core.gadget.GadgetManager; import mineplex.core.inventory.InventoryManager; import mineplex.core.itemstack.ItemStackFactory; @@ -59,32 +57,46 @@ public class ValentinesGiftManager extends MiniPlugin { if (success) { - _rewardManager.nextReward(to, RewardPool.Type.VALENTINES_GIFT, null, false, RewardType.ValentinesGift, false).giveReward(RewardType.ValentinesGift, to, new Callback() + _inventoryManager.addItemToInventory(new Callback() { @Override - public void run(RewardData data) + public void run(Boolean data) { - UtilPlayer.message(to, F.main("Gift", F.name(from.getName()) + " gave you " + data.getRarity().getColor() + data.getFriendlyName())); - UtilPlayer.message(from, F.main("Gift", "You gave " + F.name(to.getName()) + " " + data.getRarity().getColor() + data.getFriendlyName())); + if (data) + { + _rewardManager.nextReward(to, RewardPool.Type.VALENTINES_GIFT, null, false, RewardType.ValentinesGift, false).giveReward(RewardType.ValentinesGift, to, new Callback() + { + @Override + public void run(RewardData data) + { + UtilTextMiddle.display(data.getRarity().getColor() + data.getFriendlyName(), C.cPurple + "Gift from " + from.getName(), to); + UtilPlayer.message(to, F.main("Gift", F.name(from.getName()) + " gave you " + data.getRarity().getColor() + data.getFriendlyName())); + UtilPlayer.message(from, F.main("Gift", "You gave " + F.name(to.getName()) + " " + data.getRarity().getColor() + data.getFriendlyName())); + } + }); + + _rewardManager.nextReward(from, RewardPool.Type.VALENTINES_GIFT, null, false, RewardType.ValentinesGift, false).giveReward(RewardType.ValentinesGift, from, new Callback() + { + @Override + public void run(RewardData data) + { + UtilTextMiddle.display(data.getRarity().getColor() + data.getFriendlyName(), C.cPurple + "Gift in Return", from); + UtilPlayer.message(from, F.main("Gift", "You found " + F.elem(data.getRarity().getColor() + data.getFriendlyName()) + " for your good karma")); + } + }); + + from.getInventory().setItem(_gadgetManager.getActiveItemSlot(), ItemStackFactory.Instance.CreateStack(ITEM_MATERIAL, (byte) 0, 1, F.item(_inventoryManager.Get(from).getItemCount(ITEM_NAME) + " " + ITEM_NAME))); + } + else + { + UtilPlayer.message(from, F.main("Gift", "Error giving gift! Please try again")); + } } - }); - - _rewardManager.nextReward(from, RewardPool.Type.VALENTINES_GIFT, null, false, RewardType.ValentinesGift, false).giveReward(RewardType.ValentinesGift, from, new Callback() - { - @Override - public void run(RewardData data) - { - UtilPlayer.message(from, F.main("Gift", "You found " + F.elem(data.getRarity().getColor() + data.getFriendlyName()) + " for your good karma")); - } - }); - - _inventoryManager.addItemToInventory(from, ITEM_NAME, -1); - - from.getInventory().setItem(_gadgetManager.getActiveItemSlot(), ItemStackFactory.Instance.CreateStack(ITEM_MATERIAL, (byte) 0, 1, F.item(_inventoryManager.Get(from).getItemCount(ITEM_NAME) + " " + ITEM_NAME))); + }, from, ITEM_NAME, -1); } else { - UtilPlayer.message(from, F.main("Gadget", "You have already given a gift to " + F.name(to.getName()) + "!")); + UtilPlayer.message(from, F.main("Gift", "Spread the love! You have already gifted " + F.name(to.getName()))); } } From 00f7880dd2ed3fc9b524bc6a0f07120bab65ae10 Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Tue, 9 Feb 2016 21:15:15 -0600 Subject: [PATCH 26/37] Fix compile error --- Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java index 86aaf0fe8..01ffdbfbc 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java @@ -255,7 +255,7 @@ public class HubManager extends MiniClientPlugin new PlayerDisguiseManager(plugin, _clientManager); // NotificationManager notificationManager = new NotificationManager(plugin, clientManager, donationManager); // new MailManager(_plugin, notificationManager); - new ValentinesGiftManager(plugin, clientManager, new RewardManager(clientManager, serverStatusManager, donationManager, _inventoryManager, petManager, statsManager, giveawayManager, + new ValentinesGiftManager(plugin, clientManager, new RewardManager(clientManager, serverStatusManager, donationManager, _inventoryManager, petManager, statsManager, 100, 250, 500, 1000, 4000, 6000, From eebe25040e4b4c644fbf77d893beffc6eb4d796b Mon Sep 17 00:00:00 2001 From: Cheese Date: Wed, 10 Feb 2016 16:31:25 +1100 Subject: [PATCH 27/37] cleaned the particle effects a bit --- .../gadgets/arrowtrail/ArrowTrailHearts.java | 9 --------- .../core/gadget/gadgets/death/DeathHearts.java | 14 +------------- .../gadgets/doublejump/DoubleJumpHearts.java | 5 +---- .../arcade/game/games/valentines/Valentines.java | 6 +++--- 4 files changed, 5 insertions(+), 29 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailHearts.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailHearts.java index fa8c5a962..6155cb79f 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailHearts.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailHearts.java @@ -32,20 +32,11 @@ public class ArrowTrailHearts extends ArrowEffectGadget public void doTrail(Arrow arrow) { UtilParticle.PlayParticleToAll(ParticleType.HEART, arrow.getLocation(), .1F, .1F, .1F, 0F, 1, ViewDist.LONGER); - - byte data = 14; - if (UtilMath.random.nextDouble() > .5) - data = 6; - - UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.WOOL, data), arrow.getLocation(), 0, 0, 0, 0.0f, 5, ViewDist.NORMAL); } @Override public void doHitEffect(Arrow arrow) { UtilParticle.PlayParticleToAll(ParticleType.HEART, arrow.getLocation(), .5F, .5F, .5F, 0F, 4, ViewDist.LONGER); - - UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.WOOL, 14), arrow.getLocation(), .5F, .5F, .5F, 0.0f, 5, ViewDist.NORMAL); - UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.WOOL, 6), arrow.getLocation(), .5F, .5F, .5F, 0.0f, 5, ViewDist.NORMAL); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathHearts.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathHearts.java index dbc6eb03b..eb09ce579 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathHearts.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathHearts.java @@ -27,7 +27,7 @@ public class DeathHearts extends DeathEffectGadget { super(manager, "Broken Hearted", UtilText.splitLineToArray(C.cGray + "Nothing hurts more than having your heart broken. Apart from being killed, that is.", LineFormat.LORE), - 1, Material.DOUBLE_PLANT, (byte) 4); + 1, Material.APPLE, (byte) 4); } @EventHandler @@ -48,18 +48,6 @@ public class DeathHearts extends DeathEffectGadget Location loc = event.getLocation().clone().add(0, .5, 0); UtilParticle.PlayParticleToAll(ParticleType.HEART, loc, 0F, 0F, 0F, 0F, 1, ViewDist.NORMAL); - - Bukkit.getScheduler().runTaskLater(Manager.getPlugin(), new Runnable() - { - @Override - public void run() - { - loc.add(0, .2, 0); - - UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.WOOL, 14), loc, .1F, .1F, .1F, 0.0f, 5, ViewDist.NORMAL); - UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.WOOL, 6), loc, .1F, .1F, .1F, 0.0f, 5, ViewDist.NORMAL); - } - }, 10); } } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpHearts.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpHearts.java index 12312cde7..b2eba87f9 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpHearts.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpHearts.java @@ -24,15 +24,12 @@ public class DoubleJumpHearts extends DoubleJumpEffectGadget { super(manager, "Wings of Love", UtilText.splitLineToArray(C.cGray + "Nothing hurts more than having your heart broken. Apart from being killed, that is.", LineFormat.LORE), - 1, Material.RED_MUSHROOM, (byte) 0); + 1, Material.APPLE, (byte) 0); } @Override public void doEffect(Player player) { UtilParticle.PlayParticleToAll(ParticleType.HEART, player.getLocation(), .5F, .5F, .5F, 0F, 4, ViewDist.LONGER); - - UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.WOOL, 14), player.getLocation(), .5F, .5F, .5F, 0.0f, 2, ViewDist.NORMAL); - UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.WOOL, 6), player.getLocation(), .5F, .5F, .5F, 0.0f, 2, ViewDist.NORMAL); } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/Valentines.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/Valentines.java index fb1d9ef2b..0d66d9b3f 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/Valentines.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/Valentines.java @@ -767,7 +767,7 @@ public class Valentines extends SoloGame } else { - SetCustomWinMessage(winner, winner.getName() + " earned " + C.cYellow + "5x Valentines Gift"); + SetCustomWinMessage(winner, winner.getName() + " earned " + C.cYellow + "3x Valentines Gift"); Manager.GetTaskManager().completedTask(new Callback() { @@ -776,11 +776,11 @@ public class Valentines extends SoloGame { if (data) { - Manager.getInventoryManager().addItemToInventory(winner, "Valentines Gift", 5); + Manager.getInventoryManager().addItemToInventory(winner, "Valentines Gift", 3); } else { - UtilPlayer.message(winner, F.main("Inventory", "An error occured while giving you " + C.cRed + "5x Valentines Gift" + C.cGray + ".")); + UtilPlayer.message(winner, F.main("Inventory", "An error occured while giving you " + C.cRed + "3x Valentines Gift" + C.cGray + ".")); } } }, winner, "Valentines Reward 2016"); From d8965179f7de3fd3f702dbfb961674a5af6b26dd Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Thu, 11 Feb 2016 23:01:59 -0600 Subject: [PATCH 28/37] More valentines adjustments/fix gladiators tutorial being enabled --- .../mineplex/core/common/skin/SkinData.java | 4 ++++ .../mineplex/core/bonuses/BonusManager.java | 23 +++++++++++++++++-- .../core/cosmetic/ui/page/GadgetPage.java | 7 +++++- .../mineplex/core/gadget/GadgetManager.java | 8 +++++++ .../gadgets/arrowtrail/ArrowTrailHearts.java | 2 +- .../gadget/gadgets/death/DeathHearts.java | 2 +- .../gadgets/doublejump/DoubleJumpHearts.java | 2 +- .../core/gadget/gadgets/hat/HatCompanion.java | 19 +++++++++++++++ .../gadget/gadgets/hat/HatLovestruck.java | 19 +++++++++++++++ .../gadget/gadgets/hat/HatSecretPackage.java | 19 +++++++++++++++ .../core/gadget/gadgets/hat/HatTeddyBear.java | 19 +++++++++++++++ .../core/gadget/gadgets/item/ItemBow.java | 2 +- .../gadget/gadgets/item/ItemFlowerGift.java | 6 ++--- .../gadget/gadgets/item/ItemLovePotion.java | 16 +++++++++---- .../hub/modules/ValentinesManager.java | 16 ++++++------- .../hub/modules/valentines/Courtship.java | 8 ++++++- .../game/games/gladiators/Gladiators.java | 2 +- 17 files changed, 149 insertions(+), 25 deletions(-) create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatCompanion.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatLovestruck.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSecretPackage.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatTeddyBear.java diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/skin/SkinData.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/skin/SkinData.java index f53e986b2..ebc0fdb1b 100644 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/skin/SkinData.java +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/skin/SkinData.java @@ -28,6 +28,10 @@ public class SkinData 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="); + public final static SkinData TEDDY_BEAR = new SkinData("eyJ0aW1lc3RhbXAiOjE0NTUxMDkzOTE4MjYsInByb2ZpbGVJZCI6ImE5ZDBjMDcyYmYxOTQwYTFhMTkzNjhkMDlkNTAwMjZlIiwicHJvZmlsZU5hbWUiOiJTcGlyaXR1c1NhbmN0dXMiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzQ0OTU4ZDdjNjlhZTQ4NGM2NWYzMTM0N2NkY2M5MmM2OWY1NDA2ODA1YjUzNjUyYTc1YThlZDc5OWRmNyJ9fX0=", "sNTRV9jTjLszUmyaqyEG7N8d5RM1jbwMSXi34S2EkVmIjWsowfSMnHRQqqgZfxcyqBM5I7MljtB84IeQWu4rqhyFrM9blWvtowjijFIOgKCs97q2sswv9iauU6ohvgTpgN5B0Q16MJmMIgZU8d8TATtEaIzq2eg6Ve1AJlNnW4huGNsoNfm8WdVU1tZmsYAwtVP/ryvhyj7mHyVF27m0Sm4fZRf/lHH5gEJYB4JHSAoEhjPIQOdkgRMJRrWGOfhhiGs3kEWmsRGfIPFo2ZJfcu+TFV2rd4Q+A1LmY8kimnzdKX3InXeKbk8qzcgqGNro4XFnSiHo1d6/B+N0JeYOTITYRQ6u24rNSUh5ezbG01iikVFCfrgb7UR6utoLK15F4/fmhpex+BJpmyZoXAqk08tZws/5wsIWQ1okrGcbBKWEHhw2ekUc82US21/W53vd657UBg7FuqM4FhkAqmsYPvYLMpNYxxmDJaI8uJyU7cnGFYyBaFlqUxfJUfcFTwWo10JO3yp5FjqeCQa7rFvfpsqw3w2mBpJmlZ5HRjfS5pmhk0QiY0TRfwZfFemkuZYnNbO82qLUm+6zTm0fbC90Swt8nNr/42ajzEoUjnL6VsERIXS5/fPwjftbQAC60ujy8yo66Sp3sSAALNg5zjM+Uizkq2f9Axc+kind22hp10M="); + public final static SkinData COMPANION_CUBE = new SkinData("eyJ0aW1lc3RhbXAiOjE0NTUxMDk5NjI0NjEsInByb2ZpbGVJZCI6ImE5ZDBjMDcyYmYxOTQwYTFhMTkzNjhkMDlkNTAwMjZlIiwicHJvZmlsZU5hbWUiOiJTcGlyaXR1c1NhbmN0dXMiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2MyMTVkYmRhNTY1ZjVjYjhlYjEyZjU1NWY1ZTNkYTBlYTVmNTUxOTg5MWNjNWM1ZDY3NmZkODJjNjIifX19", "vaAQbhnhnTOs64ToFWLg7o4JmqkIl07HWJ6l7xibfISaOcU4BvYBxsfGvmoxlVdsUeCunAJ8/05qVLl5zZYd8Dt+To6JSY0RlqV8piRaaj3FztYWV2ZvG3YZxPxiD3HRJTAQnDobSuxHyPa1e3khjAFp9xJo4q1oqQ28oI2WDuoT+IHqxwkKVbGzO7UD5lzz5chjQC46E8SxddNKp9aqwbbccrkHYT4gteoonOXu4MFxZniJN12LqUCb6+G15rU8MijlBkWx0xE5NMUloeTGuJZItbHun9fysLk/+HE5xJOKYtpZNMuWX+DB/O5ds9dXrOoSAg+Vn0QU4CZbwcxzLii5ILOfEEBtePuEAgzROri+iCKp59CqlEMBrCsd3Um0MCdbuOfvkXGBHBz+bqX7VJY1ujlSdMefmbJtHAkDANnsaaVb+eli9Dk6139041sptsLytD+EfJzaitX6crBwKZ2WDx2P6LHo8B+iSOzOJxjf/08zlXqFw1vsk62IN6lisuZ89QyZw23RvOx3obLAGYs1GxAlMl9qQdpXcmuE1+lPR3g8gZ0BfnTeYwflC2wbR1tuwGG98lyUGCvGLyqNKAQTN87XV4IFQWR81mi1c5CcasoWhKf9D9nAik9aK7A915fEE5IvpeuUdZseDxDVVN5dBIs5q2PIHFAS0rDsDBc="); + public final static SkinData LOVESTRUCK = new SkinData("eyJ0aW1lc3RhbXAiOjE0NTUxMTAyNDMyNjUsInByb2ZpbGVJZCI6ImE5ZDBjMDcyYmYxOTQwYTFhMTkzNjhkMDlkNTAwMjZlIiwicHJvZmlsZU5hbWUiOiJTcGlyaXR1c1NhbmN0dXMiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzczMTY5YWQwZTUyYjM1N2NiZGYxZDU0NGVkNGNmOWJmOTI4YmI0ZWNlMDhlY2YyY2M0YmYyYTlmMjJhODI4MmQifX19", "LL4RiSKQoTZamRQ4QG6izpvhgFu5gAqW4eZxcWAihk7GkhyxifpJpBTOzKrj5hH9fCUfYkkijVWUYTEcVSVRWhocp2HXW59TbKfxOeMvHU5vTMwgpwm6PnUfwuTsRPSLC7WMnEreI3cjOxPVmXbTniOSd+o8j4oOIgwFS+VLPiYLh5Jl16i5I/9ekafl3/x41NISKWl62geqO2jPWehlk+r3soiRJsxaKw20T61GSNLu19iA96Rz2T2tUHB4opm8hbLgoiNL2g1affTjq3cZPLHH4JWF3vPhqLB5uw6xb55vFLM/PP0YiEMIi7YZOfRGeaPp7uXbXgHeew+7PG9UDVMfqbwANQY4ndECijZoei54+xX3MDXkMhQsc5S+FLnGH6e4d008v81eEOyzJUPkKbGxLCBgTUb1s4IHwomCr30twPlo1IuFBOY1qeVvZUfAfPJsREuj5q/oCAoYFgupmb3ClWECnwwaH/T4wdHjfSBHoZQdLzcgDOAl0b5EXxWmYBECqk/WA4TrYIDVGdwkqjI0RkPLUoxTj6135KO+F7P7PwhU9WBGeW8hHq918DBL0fjQVHjrzvolTqwmw6nySSePnPOxFX/iwtHWzpBa9V6kUNNN+V7OGTgRr0H/yUxB+oq1F8UBqyqT4YpqxXCSD36derF/Xt5IdpTbEbGBpm0="); + public final static SkinData SECRET_PACKAGE = new SkinData("eyJ0aW1lc3RhbXAiOjE0NTUxMTAzNzE3OTIsInByb2ZpbGVJZCI6ImE5ZDBjMDcyYmYxOTQwYTFhMTkzNjhkMDlkNTAwMjZlIiwicHJvZmlsZU5hbWUiOiJTcGlyaXR1c1NhbmN0dXMiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2QyNWI5YTRjOWRhOThkZTliZmIwZDNjOWI1M2MzMjJhMjgxN2IyMTMxOTQzY2E1YWM2NTBjZThmMzEzZjdhIn19fQ==", "Wb5T0Zhp1RVt78V/i8dYrwZCNT0xZIRe3LvL0bngH498f8Jrl43KHgTi4f299zE9giVynkTogGhJ8inq/xqFCRctl7Nn9L3LVu78uQwt+fs+o+kw/Qc+lggFSjEIc+fc13AZndpec0Df46Kh/OGD7NXbtbLb6TE/0dU2RwQlvZrZ/QHYJb8OJ6aUcnHvAZim8NUtG/nlZtSClepHVSuKdNnfzoF9rFVFA/x4jTr6mZYPZ33YgQd2oTAPk+qE3iN+0InjZQNs2YLoKFmFrgzn+tGvNApC0siF0HEZGQCFIwJOtnBsasGoxujIrln/ZdOil+5ac4VWInXr8lKgY0Q3Ocy8/0cJl+E/XqB+ztG29zhB8B1zdHBfJr+MgeSIqBCPx4SCtY6r7gnMlQYG+uVx5NP3S5aJW/cEfDyXmpCykIcBPzeErnKC0SiAqXkCVNjWJpX6qRWvWMXqS69w6ht6qHvEY2GxlZUb5AP+JgFlsl3hJDms6EPvM4zNL0Ko4oWIBzwYRQXiemrP9TGgyo0aL1RcQ0JgBFO2hSo37PK0YL3tUPgteJXzm21wu0TiZLkLCWSgMUfYfvVnhTa+xzod0xvfujpN6Y1DUTdcf8WS8TRYw2JigSkWrRW0fXPBCtTtQN5jiwM5/HrTpNLzg03J6SpfZ+rr8Rhq0S/8beQOMas="); private Property _skinProperty; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusManager.java b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusManager.java index 3cfc1f351..d2ec49e6e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/bonuses/BonusManager.java @@ -64,7 +64,9 @@ import org.bukkit.craftbukkit.v1_8_R3.entity.CraftEntity; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.bukkit.event.player.PlayerInteractAtEntityEvent; import org.bukkit.event.player.PlayerInteractEntityEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; @@ -817,8 +819,8 @@ public class BonusManager extends MiniClientPlugin implements I } } - @EventHandler(ignoreCancelled = true) - public void openGui(PlayerInteractEntityEvent event) + @EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) + public void openGui(PlayerInteractAtEntityEvent event) { if (!_enabled) return; @@ -831,6 +833,23 @@ public class BonusManager extends MiniClientPlugin implements I } } + @EventHandler + public void openGui(EntityDamageByEntityEvent event) + { + if (!_enabled) + return; + + if (event.getDamager() instanceof Player) + { + Player player = (Player) event.getDamager(); + if (event.getEntity().equals(_carlNpc.getEntity())) + { + updateDailyStreak(player); + new BonusGui(_plugin, player, this, _rewardManager, _facebookManager).openInventory(); + } + } + } + public static long getNextVoteTime(long time) { Calendar calendar = Calendar.getInstance(); 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 38a11166d..5cea16e7b 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 @@ -129,7 +129,12 @@ public class GadgetPage extends ShopPageBase else if (gadget.GetCost(CurrencyType.Coins) == -6) { itemLore.add(C.cBlack); - itemLore.add(C.cBlue + "Found in Valentines Holiday Treasure"); + itemLore.add(C.cBlue + "Found in Valentines Gifts"); + } + else if (gadget.GetCost(CurrencyType.Coins) == -7) + { + itemLore.add(C.cBlack); + itemLore.add(C.cBlue + "Purchased from shop.mineplex.com"); } //Rank Unlocks else if (gadget.GetCost(CurrencyType.Coins) == -10) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java index 753ab4217..9ee33c6d9 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java @@ -5,6 +5,10 @@ import java.util.HashSet; import java.util.List; import java.util.Set; +import mineplex.core.gadget.gadgets.hat.HatCompanion; +import mineplex.core.gadget.gadgets.hat.HatLovestruck; +import mineplex.core.gadget.gadgets.hat.HatSecretPackage; +import mineplex.core.gadget.gadgets.hat.HatTeddyBear; import mineplex.core.gadget.gadgets.item.*; import org.bukkit.Bukkit; import org.bukkit.Location; @@ -270,6 +274,10 @@ public class GadgetManager extends MiniPlugin addGadget(new HatCoal(this)); addGadget(new HatRudolph(this)); addGadget(new HatGrinch(this)); + addGadget(new HatLovestruck(this)); + addGadget(new HatSecretPackage(this)); + addGadget(new HatTeddyBear(this)); + addGadget(new HatCompanion(this)); // Music addGadget(new MusicGadget(this, "13 Disc", new String[] {""}, -2, 2256, 178000)); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailHearts.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailHearts.java index 6155cb79f..1c9ca8eec 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailHearts.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/arrowtrail/ArrowTrailHearts.java @@ -24,7 +24,7 @@ public class ArrowTrailHearts extends ArrowEffectGadget { super(manager, "Arrows of Cupid", UtilText.splitLineToArray(C.cGray + "Tether your love to an arrow, then spear someone with it. Maybe they'll fall in love!", LineFormat.LORE), - 1, + -6, Material.APPLE, (byte) 0); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathHearts.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathHearts.java index eb09ce579..69ecc8c18 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathHearts.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathHearts.java @@ -27,7 +27,7 @@ public class DeathHearts extends DeathEffectGadget { super(manager, "Broken Hearted", UtilText.splitLineToArray(C.cGray + "Nothing hurts more than having your heart broken. Apart from being killed, that is.", LineFormat.LORE), - 1, Material.APPLE, (byte) 4); + -6, Material.APPLE, (byte) 4); } @EventHandler diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpHearts.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpHearts.java index b2eba87f9..2b2b7af15 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpHearts.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/doublejump/DoubleJumpHearts.java @@ -24,7 +24,7 @@ public class DoubleJumpHearts extends DoubleJumpEffectGadget { super(manager, "Wings of Love", UtilText.splitLineToArray(C.cGray + "Nothing hurts more than having your heart broken. Apart from being killed, that is.", LineFormat.LORE), - 1, Material.APPLE, (byte) 0); + -6, Material.APPLE, (byte) 0); } @Override diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatCompanion.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatCompanion.java new file mode 100644 index 000000000..e3191207f --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatCompanion.java @@ -0,0 +1,19 @@ +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 HatCompanion extends HatGadget +{ + public HatCompanion(GadgetManager manager) + { + super(manager, "Companion", + UtilText.splitLineToArray(C.cGray + "The Enrichment Center reminds you that the Weighted Companion Cube will never threaten to stab you and, in fact, cannot speak", LineFormat.LORE), + -6, + SkinData.COMPANION_CUBE.getSkull()); + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatLovestruck.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatLovestruck.java new file mode 100644 index 000000000..87a2ea0ee --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatLovestruck.java @@ -0,0 +1,19 @@ +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 HatLovestruck extends HatGadget +{ + public HatLovestruck(GadgetManager manager) + { + super(manager, "Lovestruck", + UtilText.splitLineToArray(C.cGray + "I think I'm in love... Wait a minute, did someone use a love potion on me?!", LineFormat.LORE), + -6, + SkinData.LOVESTRUCK.getSkull()); + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSecretPackage.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSecretPackage.java new file mode 100644 index 000000000..d6b4ca66b --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatSecretPackage.java @@ -0,0 +1,19 @@ +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 HatSecretPackage extends HatGadget +{ + public HatSecretPackage(GadgetManager manager) + { + super(manager, "Secret Package", + UtilText.splitLineToArray(C.cGray + "I hope Chiss is inside!", LineFormat.LORE), + -6, + SkinData.SECRET_PACKAGE.getSkull()); + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatTeddyBear.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatTeddyBear.java new file mode 100644 index 000000000..6a5868d42 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/hat/HatTeddyBear.java @@ -0,0 +1,19 @@ +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 HatTeddyBear extends HatGadget +{ + public HatTeddyBear(GadgetManager manager) + { + super(manager, "Teddy Bear", + UtilText.splitLineToArray(C.cGray + "Aww, it's a cute teddy bear! What shall I name him?", LineFormat.LORE), + -6, + SkinData.TEDDY_BEAR.getSkull()); + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemBow.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemBow.java index 32d554a2e..16e78ec14 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemBow.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemBow.java @@ -90,7 +90,7 @@ public class ItemBow extends ItemGadget { super(manager, "Cupid's Arrows", UtilText.splitLineToArray(C.cGray + "This symbol of love will live on with you forever! Mainly because we couldn't attach the cupid wings to it. I guess duct tape can't fix everything!", LineFormat.LORE), - 1, Material.BOW, (byte) 0, 1000, new Ammo("Cupid Arrow", "Cupid's Arrows", Material.ARROW, (byte) 0, UtilText.splitLineToArray(C.cGray + "Use these arrows to shoot love into people's hearts!", LineFormat.LORE), 1, 15)); + -6, Material.BOW, (byte) 0, 1000, new Ammo("Cupid Arrow", "Cupid's Arrows", Material.ARROW, (byte) 0, UtilText.splitLineToArray(C.cGray + "Use these arrows to shoot love into people's hearts!", LineFormat.LORE), -6, 15)); Manager.getPacketManager().addPacketHandler(_packetHandler, PacketPlayOutSpawnEntity.class); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFlowerGift.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFlowerGift.java index c9de08856..739bdfbf2 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFlowerGift.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFlowerGift.java @@ -24,12 +24,12 @@ public class ItemFlowerGift extends ItemGadget { super(manager, "Valentines Gift", - UtilText.splitLineToArray(C.cGray + "Maybe you can win over Chiss' heart with this!", LineFormat.LORE), - 1, + UtilText.splitLineToArray(C.cGray + "Maybe if Sigils and Phinary used these they wouldn't be so alone", LineFormat.LORE), + -7, Material.RED_ROSE, (byte) 0, 2000, - new Ammo("Valentines Gift", "Valentines Gift", Material.RED_ROSE, (byte) 0, UtilText.splitLineToArray(C.cGray + "Maybe you can win over Chiss' heart with this!", LineFormat.LORE), 1, 10)); + new Ammo("Valentines Gift", "Valentines Gift", Material.RED_ROSE, (byte) 0, UtilText.splitLineToArray(C.cGray + "Maybe if Sigils and Phinary used these they wouldn't be so alone", LineFormat.LORE), -7, 10)); } @Override diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemLovePotion.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemLovePotion.java index fbb3e95c2..1f3346e34 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemLovePotion.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemLovePotion.java @@ -20,6 +20,7 @@ import mineplex.core.common.util.LineFormat; 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.UtilPlayer; import mineplex.core.common.util.UtilText; import mineplex.core.gadget.GadgetManager; @@ -33,6 +34,12 @@ import mineplex.core.recharge.Recharge; public class ItemLovePotion extends ItemGadget { + private static final String[] DRINK_MESSAGES = { + "YUCK! This does not taste like it was meant for humans.", + "Gross! Why do I keep drinking this stuff... ", + "BAAAAA BAAAAAAAA. Weird, that made me feel a bit sheepish." + }; + /** * Created by: Mysticate * Timestamp: February 6, 2016 @@ -44,7 +51,7 @@ public class ItemLovePotion extends ItemGadget manager, "Love Potion", UtilText.splitLineToArray(C.cGray + "It doesn't seem to affect humans..? What kind of love potion is this!?", LineFormat.LORE), - 1, + -6, Material.POTION, (byte) 8233, 20000, @@ -55,7 +62,7 @@ public class ItemLovePotion extends ItemGadget Material.POTION, (byte) 8233, UtilText.splitLineToArray(C.cGray + "It doesn't seem to affect humans..? What kind of love potion is this!?", LineFormat.LORE), - 1, + -6, 16) ); } @@ -165,8 +172,9 @@ public class ItemLovePotion extends ItemGadget UtilInv.Update(player); return; } - - UtilPlayer.message(player, F.main("Potion", "You drank the love potion, because why not?")); + + String message = UtilMath.randomElement(DRINK_MESSAGES); + UtilPlayer.message(player, F.main("Potion", message)); Manager.getInventoryManager().addItemToInventory(player, GetName(), -1); diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/ValentinesManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/ValentinesManager.java index 53c91a712..dfd461ab7 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/ValentinesManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/ValentinesManager.java @@ -31,11 +31,11 @@ public class ValentinesManager extends MiniPlugin private final boolean _enabled = true; - private final String _prefix = C.cRed + "Polly the Pink Sheep"; + private final String _prefix = C.cDPurple + "Polly"; private final String _identifier = "Polly the Pink Sheep"; private final String _reward = "Loving Sheeples"; // The sales package to reward - private final float _dropRate = .5F; // 50% + private final float _dropRate = .1F; private CoreClientManager _client; private DonationManager _donation; @@ -65,8 +65,6 @@ public class ValentinesManager extends MiniPlugin Player player = event.getPlayer(); - player.sendMessage(event.getOther().getCustomName()); - if (!event.getOther().getCustomName().contains(_identifier)) return; @@ -79,11 +77,11 @@ public class ValentinesManager extends MiniPlugin return; } - if (_donation.Get(player).OwnsUnknownPackage(_reward)) - { - UtilPlayer.message(player, F.main(_prefix, "I already love you!")); - return; - } +// if (_donation.Get(player).OwnsUnknownPackage(_reward)) +// { +// UtilPlayer.message(player, F.main(_prefix, "I already love you!")); +// return; +// } event.setCancelled(false); // Uncancel diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/valentines/Courtship.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/valentines/Courtship.java index 29fa735c5..95cef2bfa 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/valentines/Courtship.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/valentines/Courtship.java @@ -22,6 +22,12 @@ import mineplex.hub.modules.ValentinesManager; public class Courtship { + private static final String[] FAIL_MESSAGES = { + "Mmmmmm, that's delicious! I still don't like you very much though.", + "For a moment there, I thought you were my friend... But you're not! Leave me alone!", + "Just because I'm drinking your drink, doesn't mean we're friends!" + }; + /** * Created by: Mysticate * Timestamp: February 6, 2016 @@ -174,6 +180,6 @@ public class Courtship private void message(String message) { UtilPlayer.message(_player, " "); - UtilPlayer.message(_player, F.main(_prefix, message)); + UtilPlayer.message(_player, F.main(_prefix, C.cPurple + message)); } } 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 365688c93..fbf5edc54 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 @@ -110,7 +110,7 @@ public class Gladiators extends SoloGame DamageTeamSelf = true; HungerSet = 20; DontAllowOverfill = true; - EnableTutorials = true; + EnableTutorials = false; BlockBreakAllow.add(Material.SUGAR_CANE_BLOCK.getId()); BlockBreakAllow.add(Material.DEAD_BUSH.getId()); From d51e26a5a44de61b3db1a271273ba57136d94bbc Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Fri, 12 Feb 2016 01:34:29 -0600 Subject: [PATCH 29/37] Valentines game adjustments --- .../game/games/valentines/Valentines.java | 50 ++++++++++++++++--- 1 file changed, 44 insertions(+), 6 deletions(-) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/Valentines.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/Valentines.java index 0d66d9b3f..eb24917bf 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/Valentines.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/valentines/Valentines.java @@ -5,6 +5,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; +import java.util.stream.Collectors; import org.bukkit.EntityEffect; import org.bukkit.Location; @@ -72,7 +73,8 @@ public class Valentines extends SoloGame private Cow _cow; private NotePlayer _music; - private NoteSong _song; + private NoteSong[] _songs; + private NoteSong _finalSong; private int _playersOutPerRound = 1; @@ -129,7 +131,10 @@ public class Valentines extends SoloGame try { - _song = NBSReader.loadSong("../../update/songs/popcorn.nbs"); + _songs = new NoteSong[2]; + _songs[0] = NBSReader.loadSong("../../update/songs/tetris.nbs"); + _songs[1] = NBSReader.loadSong("../../update/songs/gangnam.nbs"); + _finalSong = NBSReader.loadSong("../../update/songs/popcorn.nbs"); } catch (FileNotFoundException e) { @@ -200,6 +205,7 @@ public class Valentines extends SoloGame if (!(event.getEntity() instanceof Player)) return; + Player player = ((Player) event.getEntity()); Projectile projectile = Manager.GetDamage().GetProjectile(event); if (!(projectile instanceof Fish)) @@ -207,6 +213,12 @@ public class Valentines extends SoloGame // LivingEntity damagee = Manager.GetDamage().GetDamageeEntity(event); // LivingEntity damager = UtilEvent.GetDamagerEntity(event, true); + + if (player.getVehicle() != null) + { + UtilTextMiddle.display("", C.cRed + "You were knocked off the pig!", player); + player.getVehicle().eject(); + } event.setCancelled(true); @@ -672,20 +684,26 @@ public class Valentines extends SoloGame //Restock Pigs pigSpawn(); - + + + NoteSong noteSong; //Announce if (_pigs.size() > 1) + { UtilTextMiddle.display(C.cYellow + "Round " + _round, _item.getTitle(), 0, 80, 20); + noteSong = _songs[_round % _songs.length]; + } else { UtilTextMiddle.display(C.cYellow + "Final Round", "Capture the Pig!", 0, 80, 20); - + for (Player player : GetPlayers(true)) player.getInventory().addItem(ItemStackFactory.Instance.CreateStack(Material.SADDLE, (byte)0, 1, "Pig Saddle")); + noteSong = _finalSong; } - + //Music! - _music = new NotePlayer(Manager.getPlugin(), _song, new INoteVerifier() + _music = new NotePlayer(Manager.getPlugin(), noteSong, new INoteVerifier() { @Override public boolean shouldPlay(Player player) @@ -802,4 +820,24 @@ public class Valentines extends SoloGame SetState(GameState.End); } } + + @EventHandler + public void displayCalvinMessage(UpdateEvent event) + { + if (event.getType() != UpdateType.FAST) + return; + + if (!IsLive()) + return; + + String message = _finalRound ? "Bring the Pig to Calvin!" : "Return " + _item.getTitle() + " to Calvin!"; + + Player[] players = GetPlayers(true).stream().filter(this::canReturnToCow).toArray(size -> new Player[size]); + UtilTextMiddle.display("", C.cGreen + message, players); + } + + private boolean canReturnToCow(Player player) + { + return _hasItem.contains(player) || player.getVehicle() != null; + } } From 4f0f81c8df8f89385c64a86e641edfdfc9ef7859 Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Fri, 12 Feb 2016 01:47:20 -0600 Subject: [PATCH 30/37] Update Courtship messages --- .../mineplex/hub/modules/valentines/Courtship.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/valentines/Courtship.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/valentines/Courtship.java index 95cef2bfa..fe867185a 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/valentines/Courtship.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/valentines/Courtship.java @@ -12,6 +12,7 @@ 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.UtilParticle; import mineplex.core.common.util.UtilParticle.ParticleType; import mineplex.core.common.util.UtilParticle.ViewDist; @@ -23,9 +24,13 @@ import mineplex.hub.modules.ValentinesManager; public class Courtship { private static final String[] FAIL_MESSAGES = { - "Mmmmmm, that's delicious! I still don't like you very much though.", + "Sorry, but you don't seem like the type of person I prefer to associate with.", + "Mmmmmm, that's delicious! But I still don't like you very much.", "For a moment there, I thought you were my friend... But you're not! Leave me alone!", - "Just because I'm drinking your drink, doesn't mean we're friends!" + "Just because I'm drinking your drink, doesn't mean we're friends!", + "Hmmm... I don't know. I think I have enough friends right now, thanks.", + "Ugh why are you always trying to talk to me?", + "Just because I eat grass sometimes, doesn't mean I'm desperate enough to be your friend." }; /** @@ -126,7 +131,7 @@ public class Courtship } else { - message("I don't think of you like that. I'm sorry."); + message(UtilMath.randomElement(FAIL_MESSAGES)); _sheep.getWorld().playSound(_sheep.getLocation(), Sound.ANVIL_BREAK, 1F, 1F); _sheep.setColor(DyeColor.BLACK); } @@ -165,7 +170,7 @@ public class Courtship _sheep.setColor(DyeColor.RED); - UtilServer.broadcast(C.cRedB + "Cupid: " + C.cWhiteB + C.cYellowB + _player.getName() + C.cWhiteB + " tricked " + C.cGoldB + "Polly the Pink Sheep" + C.cWhiteB + " with a love potion!"); + UtilServer.broadcast(C.cYellowB + _player.getName() + C.cWhiteB + " tricked " + C.cGoldB + "Polly the Pink Sheep" + C.cWhiteB + " with a love potion!"); } if (_tick == 130) From dfd61833b790b02e6c56effb99891f3844455ac8 Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Fri, 12 Feb 2016 03:03:47 -0600 Subject: [PATCH 31/37] Valentines changes --- .../core/cosmetic/ui/page/GadgetPage.java | 1 + .../mount/types/MountValentinesSheep.java | 2 +- .../mineplex/core/valentines/GiftEffect.java | 134 ++++++++++++++++++ .../valentines/ValentinesGiftManager.java | 52 +++++-- .../salespackages/LifetimeTitan.java | 24 ++++ 5 files changed, 199 insertions(+), 14 deletions(-) create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/valentines/GiftEffect.java create mode 100644 Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/salespackages/LifetimeTitan.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 5cea16e7b..6e8168a61 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 @@ -136,6 +136,7 @@ public class GadgetPage extends ShopPageBase itemLore.add(C.cBlack); itemLore.add(C.cBlue + "Purchased from shop.mineplex.com"); } + //Rank Unlocks else if (gadget.GetCost(CurrencyType.Coins) == -10) { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountValentinesSheep.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountValentinesSheep.java index 9f0801c58..5213be86b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountValentinesSheep.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountValentinesSheep.java @@ -33,7 +33,7 @@ public class MountValentinesSheep extends HorseMount { super(manager, "Loving Sheeples", UtilText.splitLineToArray(C.cGray + "This symbol of love will live on with you forever! Mainly because we couldn't attach the cupid wings to it. I guess duct tape can't fix everything!", LineFormat.LORE), - Material.WOOL, (byte) 6, 1, Horse.Color.BLACK, Horse.Style.NONE, Horse.Variant.HORSE, 1.0, null); + Material.WOOL, (byte) 6, -1, Horse.Color.BLACK, Horse.Style.NONE, Horse.Variant.HORSE, 1.0, null); } @Override diff --git a/Plugins/Mineplex.Core/src/mineplex/core/valentines/GiftEffect.java b/Plugins/Mineplex.Core/src/mineplex/core/valentines/GiftEffect.java new file mode 100644 index 000000000..2f0070892 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/valentines/GiftEffect.java @@ -0,0 +1,134 @@ +package mineplex.core.valentines; + +import org.bukkit.Color; +import org.bukkit.FireworkEffect; +import org.bukkit.Location; +import org.bukkit.Sound; +import org.bukkit.entity.Player; + +import mineplex.core.common.util.C; +import mineplex.core.common.util.UtilFirework; +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilTextMiddle; + +public class GiftEffect +{ + private static final int ANIMATION_LENGTH = 20 * 5; + private static final double CIRCLE_RADIUS = 3; + private static final double CIRCLE_HEIGHT = 3; + + private Player _from; + private Player _to; + private String _fromGift; + private String _toGift; + private Location _centerLocation; + private boolean _finished; + private int _ticks; + + public GiftEffect(Player from, Player to, String fromGift, String toGift, Location centerLocation) + { + _from = from; + _to = to; + _fromGift = fromGift; + _toGift = toGift; + _centerLocation = centerLocation; + _finished = false; + _ticks = 0; + + _to.setWalkSpeed(0.0F); + _from.setWalkSpeed(0.0F); + } + + public void tick() + { + _ticks++; + + if (_ticks == 20) + { + if (_to.isOnline()) + { + UtilTextMiddle.display("", C.cPurple + _from.getName() + " shared a Gift with you", _to); + _to.playSound(_to.getLocation(), Sound.NOTE_PLING, 1f, 1f);; + } + if (_from.isOnline()) + { + UtilTextMiddle.display("", C.cPurple + "You shared a Gift with " + _to.getName(), _from); + _from.playSound(_from.getLocation(), Sound.NOTE_PLING, 1f, 1f); + } + } + else if (_ticks == 40) + { + if (_to.isOnline()) + { + UtilTextMiddle.display("", C.cRed + "3", _to); + _to.playSound(_to.getEyeLocation(), Sound.NOTE_PLING, 1F, 1F - 0.3f); + } + if (_from.isOnline()) + { + UtilTextMiddle.display("", C.cRed + "3", _from); + _from.playSound(_from.getEyeLocation(), Sound.NOTE_PLING, 1F, 1F - 0.3f); + } + } + else if (_ticks == 60) + { + if (_to.isOnline()) + { + UtilTextMiddle.display("", C.cGold + "2", _to); + _to.playSound(_to.getEyeLocation(), Sound.NOTE_PLING, 1F, 1F - 0.2f); + } + if (_from.isOnline()) + { + UtilTextMiddle.display("", C.cGold + "2", _from); + _from.playSound(_from.getEyeLocation(), Sound.NOTE_PLING, 1F, 1F - 0.2f); + } + } + else if (_ticks == 80) + { + if (_to.isOnline()) + { + UtilTextMiddle.display("", C.cGreen + "1", _to); + _to.playSound(_to.getEyeLocation(), Sound.NOTE_PLING, 1F, 1F - 0.1f); + } + if (_from.isOnline()) + { + UtilTextMiddle.display("", C.cGreen + "1", _from); + _from.playSound(_from.getEyeLocation(), Sound.NOTE_PLING, 1F, 1F - 0.1f); + } + } + else if (_ticks == 100) + { + if (_to.isOnline()) + { + UtilTextMiddle.display("", C.cPurple + "You received " + _toGift, _to); + _to.playSound(_to.getEyeLocation(), Sound.LEVEL_UP, 1F, 1F); + } + if (_from.isOnline()) + { + UtilTextMiddle.display("", C.cPurple + "You received " + _fromGift, _from); + _from.playSound(_from.getEyeLocation(), Sound.LEVEL_UP, 1F, 1F); + } + } + + double yAdd = CIRCLE_HEIGHT * ((double) _ticks) / ANIMATION_LENGTH; + double xAdd = CIRCLE_RADIUS * Math.sin(_ticks / 10.0 * Math.PI); + double zAdd = CIRCLE_RADIUS * Math.cos(_ticks / 10.0 * Math.PI); + + UtilParticle.PlayParticleToAll(UtilParticle.ParticleType.HEART, _centerLocation.clone().add(xAdd, yAdd, zAdd), 0.5f, 0.5f, 0.5f, 0, 5, UtilParticle.ViewDist.NORMAL); + + if (_ticks % 10 == 0) + UtilParticle.PlayParticleToAll(UtilParticle.ParticleType.FIREWORKS_SPARK, _centerLocation.clone().add(0, 1, 0), 3f, 3f, 3f, 0, 10, UtilParticle.ViewDist.NORMAL); + + if (_ticks >= ANIMATION_LENGTH) + { + UtilFirework.playFirework(_centerLocation.clone().add(0, 3, 0), FireworkEffect.builder().with(FireworkEffect.Type.STAR).withColor(Color.RED).withFade(Color.WHITE).withFlicker().build()); + _finished = true; + if (_to.isOnline()) _to.setWalkSpeed(0.2F); + if (_from.isOnline()) _from.setWalkSpeed(0.2F); + } + } + + public boolean isFinished() + { + return _finished; + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/valentines/ValentinesGiftManager.java b/Plugins/Mineplex.Core/src/mineplex/core/valentines/ValentinesGiftManager.java index 8623b45df..a7a5b9ebc 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/valentines/ValentinesGiftManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/valentines/ValentinesGiftManager.java @@ -1,5 +1,8 @@ package mineplex.core.valentines; +import java.util.Iterator; +import java.util.LinkedList; + import mineplex.core.MiniPlugin; import mineplex.core.account.CoreClientManager; import mineplex.core.common.util.*; @@ -7,8 +10,13 @@ import mineplex.core.gadget.GadgetManager; import mineplex.core.inventory.InventoryManager; import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.reward.*; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; import mineplex.core.valentines.event.AttemptGiftEvent; +import net.md_5.bungee.api.ChatColor; + import org.bukkit.Material; +import org.bukkit.Sound; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.plugin.java.JavaPlugin; @@ -24,6 +32,7 @@ public class ValentinesGiftManager extends MiniPlugin private GadgetManager _gadgetManager; private ValentinesGiftRepository _repository; + private LinkedList _effects; public ValentinesGiftManager(JavaPlugin plugin, CoreClientManager clientManager, RewardManager rewardManager, InventoryManager inventoryManager, GadgetManager gadgetManager) { @@ -35,6 +44,7 @@ public class ValentinesGiftManager extends MiniPlugin _gadgetManager = gadgetManager; _repository = new ValentinesGiftRepository(plugin); + _effects = new LinkedList<>(); } @EventHandler @@ -67,21 +77,19 @@ public class ValentinesGiftManager extends MiniPlugin _rewardManager.nextReward(to, RewardPool.Type.VALENTINES_GIFT, null, false, RewardType.ValentinesGift, false).giveReward(RewardType.ValentinesGift, to, new Callback() { @Override - public void run(RewardData data) + public void run(RewardData toData) { - UtilTextMiddle.display(data.getRarity().getColor() + data.getFriendlyName(), C.cPurple + "Gift from " + from.getName(), to); - UtilPlayer.message(to, F.main("Gift", F.name(from.getName()) + " gave you " + data.getRarity().getColor() + data.getFriendlyName())); - UtilPlayer.message(from, F.main("Gift", "You gave " + F.name(to.getName()) + " " + data.getRarity().getColor() + data.getFriendlyName())); - } - }); + String toGift = ChatColor.stripColor(toData.getFriendlyName()); - _rewardManager.nextReward(from, RewardPool.Type.VALENTINES_GIFT, null, false, RewardType.ValentinesGift, false).giveReward(RewardType.ValentinesGift, from, new Callback() - { - @Override - public void run(RewardData data) - { - UtilTextMiddle.display(data.getRarity().getColor() + data.getFriendlyName(), C.cPurple + "Gift in Return", from); - UtilPlayer.message(from, F.main("Gift", "You found " + F.elem(data.getRarity().getColor() + data.getFriendlyName()) + " for your good karma")); + _rewardManager.nextReward(from, RewardPool.Type.VALENTINES_GIFT, null, false, RewardType.ValentinesGift, false).giveReward(RewardType.ValentinesGift, from, new Callback() + { + @Override + public void run(RewardData fromData) + { + String fromGift = ChatColor.stripColor(fromData.getFriendlyName()); + _effects.add(new GiftEffect(from, to, fromGift, toGift, UtilAlg.getMidpoint(to.getLocation(), from.getLocation()))); + } + }); } }); @@ -100,4 +108,22 @@ public class ValentinesGiftManager extends MiniPlugin } } + @EventHandler + public void updateEffects(UpdateEvent event) + { + if (event.getType() != UpdateType.TICK) + return; + + Iterator iterator = _effects.iterator(); + + while (iterator.hasNext()) + { + GiftEffect effect = iterator.next(); + if (effect.isFinished()) + iterator.remove(); + else + effect.tick(); + } + } + } diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/salespackages/LifetimeTitan.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/salespackages/LifetimeTitan.java new file mode 100644 index 000000000..42d2b459b --- /dev/null +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/salespackages/LifetimeTitan.java @@ -0,0 +1,24 @@ +package mineplex.staffServer.salespackage.salespackages; + +import mineplex.staffServer.salespackage.SalesPackageManager; + +import org.bukkit.entity.Player; + +public class LifetimeTitan extends SalesPackageBase +{ + public LifetimeTitan(SalesPackageManager manager) + { + super(manager, "Lifetime Titan"); + } + + public void displayToAgent(Player agent, String playerName) + { + addButton(agent, "/sales rank " + playerName + " TITAN true", " Lifetime Titan."); + addButton(agent, "/sales item " + playerName + " 1 Molten Snake", "Gives Molten Snake Mount."); + addButton(agent, "/sales item " + playerName + " 1 Elder Guardian Morph", "Gives Elder Guardian Morph."); + addButton(agent, "/sales item " + playerName + " 1 Flame of the Titans", "Gives Titan Particle."); + addButton(agent, "Apply All", "/sales lifetimelegend " + playerName, " Apply all above."); + agent.sendMessage(" "); + addBackButton(agent, playerName); + } +} From 66aa89b5e0a3becf10a6b61d986bb308da2f11c3 Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Fri, 12 Feb 2016 04:32:26 -0600 Subject: [PATCH 32/37] Fix sheep look bug, valentines gift effects, valentines achievements --- .../mineplex/core/achievement/Achievement.java | 16 +++++++++++++++- .../mineplex/core/valentines/GiftEffect.java | 18 +++++++++--------- .../core/valentines/ValentinesGiftManager.java | 16 +++++++++++++++- .../hub/modules/valentines/Courtship.java | 2 ++ 4 files changed, 41 insertions(+), 11 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/achievement/Achievement.java b/Plugins/Mineplex.Core/src/mineplex/core/achievement/Achievement.java index ab07c5147..db14687ac 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/achievement/Achievement.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/achievement/Achievement.java @@ -29,7 +29,21 @@ public enum Achievement "during Christmas 2015!"}, new int[]{200}, AchievementCategory.HOLIDAY), - + + GLOBAL_GIFT_GIVER_2016("2016 Gift Giver", 2000, + new String[]{"Global.Valentines2016.GiftsGiven"}, + new String[]{"Give 50 Valentines Gifts", + "during Valentines 2016!"}, + new int[]{50}, + AchievementCategory.HOLIDAY), + + GLOBAL_GIFT_GETTER_2016("2016 People Love Me", 2000, + new String[]{"Global.Valentines2016.GiftsReceived"}, + new String[]{"Receive 10 Gifts", + "during Valentines 2016!"}, + new int[]{10}, + AchievementCategory.HOLIDAY), + //Bridges BRIDGES_WINS("Bridge Champion", 600, new String[]{"The Bridges.Wins"}, diff --git a/Plugins/Mineplex.Core/src/mineplex/core/valentines/GiftEffect.java b/Plugins/Mineplex.Core/src/mineplex/core/valentines/GiftEffect.java index 2f0070892..638c15fa1 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/valentines/GiftEffect.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/valentines/GiftEffect.java @@ -35,25 +35,25 @@ public class GiftEffect _finished = false; _ticks = 0; - _to.setWalkSpeed(0.0F); - _from.setWalkSpeed(0.0F); +// _to.setWalkSpeed(0.0F); +// _from.setWalkSpeed(0.0F); } public void tick() { _ticks++; - if (_ticks == 20) + if (_ticks == 1) { if (_to.isOnline()) { - UtilTextMiddle.display("", C.cPurple + _from.getName() + " shared a Gift with you", _to); - _to.playSound(_to.getLocation(), Sound.NOTE_PLING, 1f, 1f);; + UtilTextMiddle.display("", C.cYellow + _from.getName() + C.cPurple + " is sharing a Gift with you", _to); + _to.playSound(_to.getLocation(), Sound.CAT_MEOW, 1f, 1f);; } if (_from.isOnline()) { - UtilTextMiddle.display("", C.cPurple + "You shared a Gift with " + _to.getName(), _from); - _from.playSound(_from.getLocation(), Sound.NOTE_PLING, 1f, 1f); + UtilTextMiddle.display("", C.cPurple + "You are sharing a Gift with " + C.cYellow + _to.getName(), _from); + _from.playSound(_from.getLocation(), Sound.CAT_MEOW, 1f, 1f); } } else if (_ticks == 40) @@ -122,8 +122,8 @@ public class GiftEffect { UtilFirework.playFirework(_centerLocation.clone().add(0, 3, 0), FireworkEffect.builder().with(FireworkEffect.Type.STAR).withColor(Color.RED).withFade(Color.WHITE).withFlicker().build()); _finished = true; - if (_to.isOnline()) _to.setWalkSpeed(0.2F); - if (_from.isOnline()) _from.setWalkSpeed(0.2F); +// if (_to.isOnline()) _to.setWalkSpeed(0.2F); +// if (_from.isOnline()) _from.setWalkSpeed(0.2F); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/valentines/ValentinesGiftManager.java b/Plugins/Mineplex.Core/src/mineplex/core/valentines/ValentinesGiftManager.java index a7a5b9ebc..a58a05c10 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/valentines/ValentinesGiftManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/valentines/ValentinesGiftManager.java @@ -10,6 +10,7 @@ import mineplex.core.gadget.GadgetManager; import mineplex.core.inventory.InventoryManager; import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.reward.*; +import mineplex.core.stats.StatsManager; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import mineplex.core.valentines.event.AttemptGiftEvent; @@ -30,11 +31,12 @@ public class ValentinesGiftManager extends MiniPlugin private RewardManager _rewardManager; private InventoryManager _inventoryManager; private GadgetManager _gadgetManager; + private StatsManager _statsManager; private ValentinesGiftRepository _repository; private LinkedList _effects; - public ValentinesGiftManager(JavaPlugin plugin, CoreClientManager clientManager, RewardManager rewardManager, InventoryManager inventoryManager, GadgetManager gadgetManager) + public ValentinesGiftManager(JavaPlugin plugin, CoreClientManager clientManager, RewardManager rewardManager, InventoryManager inventoryManager, GadgetManager gadgetManager, StatsManager statsManager) { super("Valentines", plugin); @@ -42,6 +44,7 @@ public class ValentinesGiftManager extends MiniPlugin _rewardManager = rewardManager; _inventoryManager = inventoryManager; _gadgetManager = gadgetManager; + _statsManager = statsManager; _repository = new ValentinesGiftRepository(plugin); _effects = new LinkedList<>(); @@ -63,6 +66,9 @@ public class ValentinesGiftManager extends MiniPlugin }); } + /** + * I apologize for this mess. Love, Shaun + */ private void giveGift(Player from, Player to, boolean success) { if (success) @@ -86,6 +92,8 @@ public class ValentinesGiftManager extends MiniPlugin @Override public void run(RewardData fromData) { + + String fromGift = ChatColor.stripColor(fromData.getFriendlyName()); _effects.add(new GiftEffect(from, to, fromGift, toGift, UtilAlg.getMidpoint(to.getLocation(), from.getLocation()))); } @@ -126,4 +134,10 @@ public class ValentinesGiftManager extends MiniPlugin } } + private void incrementStat(Player from, Player to) + { + _statsManager.incrementStat(from, "Global.Valentines2016.GiftsGiven", 1); + _statsManager.incrementStat(to, "Global.Valentines2016.GiftsReceived", 1); + } + } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/valentines/Courtship.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/valentines/Courtship.java index fe867185a..948a334aa 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/valentines/Courtship.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/valentines/Courtship.java @@ -2,6 +2,7 @@ package mineplex.hub.modules.valentines; import org.bukkit.DyeColor; import org.bukkit.Sound; +import org.bukkit.craftbukkit.v1_8_R3.entity.CraftSheep; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; import org.bukkit.entity.Sheep; @@ -176,6 +177,7 @@ public class Courtship if (_tick == 130) { _sheep.setColor(DyeColor.PINK); + ((CraftSheep) _sheep).getHandle().setFakeHead(false); return true; } From 1e596a6969ae6c84127dbbc3b1e2bcf8075f9a95 Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Fri, 12 Feb 2016 04:54:09 -0600 Subject: [PATCH 33/37] Valentines rewards --- .../mineplex/core/reward/RewardManager.java | 79 ++++++++++++++++--- .../src/mineplex/core/reward/RewardPool.java | 18 ++++- .../src/mineplex/core/reward/RewardType.java | 2 +- 3 files changed, 84 insertions(+), 15 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java index 4b6d578f1..4ff1f99aa 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java @@ -100,7 +100,55 @@ public class RewardManager } // Valentines - addReward(RewardPool.Type.VALENTINES_GIFT, new TreasureShardReward(_clientManager, donationManager, 50, 100, 10, rarity)); + addReward(RewardPool.Type.VALENTINES_GIFT, new InventoryReward(inventoryManager, "Cupid's Arrows", "Cupid Arrow", 1, 5, + new ItemStack(Material.BOW, 1), rarity, 300, 0)); + // Pets + addReward(RewardPool.Type.VALENTINES_GIFT, new PetReward(petManager, inventoryManager, donationManager, "Cow Pet", "Cow", + EntityType.COW, rarity, 50, _uncommonShards)); + addReward(RewardPool.Type.VALENTINES_GIFT, new PetReward(petManager, inventoryManager, donationManager, "Sheep Pet", "Sheep", + EntityType.SHEEP, rarity, 50, _uncommonShards)); + addReward(RewardPool.Type.VALENTINES_GIFT, new PetReward(petManager, inventoryManager, donationManager, "Mooshroom Pet", "Mooshroom", + EntityType.MUSHROOM_COW, rarity, 50, _uncommonShards)); + addReward(RewardPool.Type.VALENTINES_GIFT, new PetReward(petManager, inventoryManager, donationManager, "Pig Pet", "Pig", + EntityType.PIG, rarity, 50, _uncommonShards)); + addReward(RewardPool.Type.VALENTINES_GIFT, new PetReward(petManager, inventoryManager, donationManager, "Ocelot Pet", "Cat", + EntityType.OCELOT, rarity, 50, _uncommonShards)); + addReward(RewardPool.Type.VALENTINES_GIFT, new PetReward(petManager, inventoryManager, donationManager, "Chicken Pet", "Chicken", + EntityType.CHICKEN, rarity, 50, _uncommonShards)); + addReward(RewardPool.Type.VALENTINES_GIFT, new PetReward(petManager, inventoryManager, donationManager, "Wolf Pet", "Dog", + EntityType.WOLF, rarity, 50, _uncommonShards)); + // Discs + addReward(RewardPool.Type.VALENTINES_GIFT, new UnknownPackageReward(donationManager, "Music Disc", "13 Disc", "13 Disc", + new ItemStack(2256), rarity, 10, _uncommonShards)); + addReward(RewardPool.Type.VALENTINES_GIFT, new UnknownPackageReward(donationManager, "Music Disc", "Cat Disc", "Cat Disc", + new ItemStack(2257), rarity, 10, _uncommonShards)); + addReward(RewardPool.Type.VALENTINES_GIFT, new UnknownPackageReward(donationManager, "Music Disc", "Blocks Disc", "Blocks Disc", + new ItemStack(2258), rarity, 10, _uncommonShards)); + addReward(RewardPool.Type.VALENTINES_GIFT, new UnknownPackageReward(donationManager, "Music Disc", "Chirp Disc", "Chirp Disc", + new ItemStack(2259), rarity, 10, _uncommonShards)); + addReward(RewardPool.Type.VALENTINES_GIFT, new UnknownPackageReward(donationManager, "Music Disc", "Far Disc", "Far Disc", + new ItemStack(2260), rarity, 10, _uncommonShards)); + addReward(RewardPool.Type.VALENTINES_GIFT, new UnknownPackageReward(donationManager, "Music Disc", "Mall Disc", "Mall Disc", + new ItemStack(2261), rarity, 10, _uncommonShards)); + addReward(RewardPool.Type.VALENTINES_GIFT, new UnknownPackageReward(donationManager, "Music Disc", "Mellohi Disc", "Mellohi Disc", + new ItemStack(2262), rarity, 10, _uncommonShards)); + addReward(RewardPool.Type.VALENTINES_GIFT, new UnknownPackageReward(donationManager, "Music Disc", "Stal Disc", "Stal Disc", + new ItemStack(2263), rarity, 10, _uncommonShards)); + addReward(RewardPool.Type.VALENTINES_GIFT, new UnknownPackageReward(donationManager, "Music Disc", "Strad Disc", "Strad Disc", + new ItemStack(2264), rarity, 10, _uncommonShards)); + addReward(RewardPool.Type.VALENTINES_GIFT, new UnknownPackageReward(donationManager, "Music Disc", "Ward Disc", "Ward Disc", + new ItemStack(2265), rarity, 10, _uncommonShards)); + addReward(RewardPool.Type.VALENTINES_GIFT, new UnknownPackageReward(donationManager, "Music Disc", "Wait Disc", "Wait Disc", + new ItemStack(2267), rarity, 10, _uncommonShards)); + // Mounts + addReward(RewardPool.Type.VALENTINES_GIFT, new UnknownPackageReward(donationManager, "Mount", "Mule", "Mount Mule", + new ItemStack(Material.HAY_BLOCK), rarity, 4, _rareShards)); + addReward(RewardPool.Type.VALENTINES_GIFT, new UnknownPackageReward(donationManager, "Mount", "Minecart", "Minecart", + new ItemStack(Material.MINECART), rarity, 3, _rareShards)); + addReward(RewardPool.Type.VALENTINES_GIFT, new UnknownPackageReward(donationManager, "Mount", "Slime", "Slime Mount", + new ItemStack(Material.SLIME_BALL), rarity, 2, _rareShards)); + addReward(RewardPool.Type.VALENTINES_GIFT, new UnknownPackageReward(donationManager, "Mount", "Glacial Steed", "Glacial Steed", + new ItemStack(Material.SNOW_BALL), rarity, 1, _rareShards)); // Christmas addReward(RewardPool.Type.WINTER_HOLIDAY, new InventoryReward(inventoryManager, "Coal", "Coal", 50, 100, @@ -165,10 +213,8 @@ public class RewardManager } // Valentines - addReward(RewardPool.Type.VALENTINES_GIFT, new InventoryReward(inventoryManager, "Love Potion", "Love Potion", 1, 2, - new ItemStack(Material.POTION, 1), rarity, 10, 0)); - addReward(RewardPool.Type.VALENTINES_GIFT, new InventoryReward(inventoryManager, "Cupid's Arrows", "Cupid Arrow", 1, 10, - new ItemStack(Material.BOW, 1), rarity, 10, 0)); + addReward(RewardPool.Type.VALENTINES_GIFT, new InventoryReward(inventoryManager, "Love Potion", "Love Potion", 1, 1, + new ItemStack(Material.POTION, 1), rarity, 100, 0)); // Christmas addReward(RewardPool.Type.WINTER_HOLIDAY, new InventoryReward(inventoryManager, "Freeze Cannon", "Freeze Cannon", 5, 10, @@ -267,7 +313,16 @@ public class RewardManager } // Valentines - addReward(RewardPool.Type.VALENTINES_GIFT, new TreasureShardReward(_clientManager, donationManager, 100, 300, 10, rarity)); + addReward(RewardPool.Type.VALENTINES_GIFT, new UnknownPackageReward(donationManager, "Hat", "Companion Hat", "Companion", + SkinData.COMPANION_CUBE.getSkull(), rarity, 100, 0)); + addReward(RewardPool.Type.VALENTINES_GIFT, new UnknownPackageReward(donationManager, "Hat", "Lovestruck Hat", "Lovestruck", + SkinData.LOVESTRUCK.getSkull(), rarity, 100, 0)); + addReward(RewardPool.Type.VALENTINES_GIFT, new UnknownPackageReward(donationManager, "Hat", "Secret Package Hat", "Secret Package", + SkinData.SECRET_PACKAGE.getSkull(), rarity, 100, 0)); + addReward(RewardPool.Type.VALENTINES_GIFT, new UnknownPackageReward(donationManager, "Hat", "Teddy Bear Hat", "Teddy Bear", + SkinData.TEDDY_BEAR.getSkull(), rarity, 100, 0)); + addReward(RewardPool.Type.VALENTINES_GIFT, new InventoryReward(inventoryManager, "Love Potion", "Love Potion", 1, 1, + new ItemStack(Material.POTION, 1), rarity, 1, 0)); // Christmas addReward(RewardPool.Type.WINTER_HOLIDAY, new UnknownPackageReward(donationManager, "Hat", "Santa", "Santa", @@ -341,13 +396,15 @@ public class RewardManager // Valentines addReward(RewardPool.Type.VALENTINES_GIFT, new UnknownPackageReward(donationManager, "Arrow Effect", "Arrows of Cupid", "Arrows of Cupid", - new ItemStack(Material.POTION), rarity, 10, _rareShards)); + new ItemStack(Material.POTION), rarity, 100, _rareShards)); addReward(RewardPool.Type.VALENTINES_GIFT, new UnknownPackageReward(donationManager, "Death Effect", "Broken Hearted", "Broken Hearted", - new ItemStack(Material.POTION), rarity, 10, _rareShards)); + new ItemStack(Material.POTION), rarity, 100, _rareShards)); addReward(RewardPool.Type.VALENTINES_GIFT, new UnknownPackageReward(donationManager, "Jump Effect", "Wings of Love", "Wings of Love", - new ItemStack(Material.POTION), rarity, 10, _rareShards)); + new ItemStack(Material.POTION), rarity, 100, _rareShards)); addReward(RewardPool.Type.VALENTINES_GIFT, new UnknownPackageReward(donationManager, "Particles", "Heartfelt Halo", "Heartfelt Halo", - new ItemStack(Material.POTION), rarity, 10, _rareShards)); + new ItemStack(Material.POTION), rarity, 100, _rareShards)); + addReward(RewardPool.Type.VALENTINES_GIFT, new InventoryReward(inventoryManager, "Love Potion", "Love Potion", 1, 1, + new ItemStack(Material.POTION, 1), rarity, 1, 0)); // Christmas addReward(RewardPool.Type.WINTER_HOLIDAY, new UnknownPackageReward(donationManager, "Hat", "The Grinch", "The Grinch", @@ -504,7 +561,7 @@ public class RewardManager } } - if (!isExcluded) + if (!isExcluded && (pool.getUseDuplicates() || treasure.canGiveReward(player))) { possibleRewards.add(treasure); totalWeight += treasure.getWeight(); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardPool.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardPool.java index 69f97085c..97f4f23c1 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardPool.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardPool.java @@ -34,8 +34,20 @@ public class RewardPool public static enum Type { - NORMAL, - WINTER_HOLIDAY, - VALENTINES_GIFT; + NORMAL(true), + WINTER_HOLIDAY(true), + VALENTINES_GIFT(false); + + private boolean _useDuplicates; + + Type(boolean useDuplicates) + { + _useDuplicates = useDuplicates; + } + + public boolean getUseDuplicates() + { + return _useDuplicates; + } } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardType.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardType.java index 47d17c65c..24773c6b8 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardType.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardType.java @@ -11,7 +11,7 @@ public enum RewardType AncientChest( 0, 2, 8, 32), MythicalChest( 0.1, 4, 16, 72), WinterChest( 0, 5, 18, 32), - ValentinesGift( 9, 10, 25, 40), + ValentinesGift( 0, 7, 20, 20), SpinnerFiller( 0.1, 1, 4, 20), SpinnerReal( 0.000001, 0.05, 0.4, 5); From eca400278c67c8b42a244e6213f1ba816db8875d Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Fri, 12 Feb 2016 05:00:09 -0600 Subject: [PATCH 34/37] Support server update --- .../customerSupport/CustomerSupport.java | 15 +++++++++++++- .../salespackage/SalesPackageManager.java | 4 ++++ .../salespackages/LifetimeTitan.java | 1 - .../salespackages/ValentinesGift.java | 20 +++++++++++++++++++ 4 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/salespackages/ValentinesGift.java diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/customerSupport/CustomerSupport.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/customerSupport/CustomerSupport.java index 1f12a4982..58e91b517 100644 --- a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/customerSupport/CustomerSupport.java +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/customerSupport/CustomerSupport.java @@ -106,6 +106,7 @@ public class CustomerSupport extends MiniPlugin int ancientChestsReceived = 0; int mythicalChestsReceived = 0; int winterChestsReceived = 0; + int valentinesGiftsReceived = 0; for (CoinTransactionToken transaction : donor.getCoinTransactions()) { @@ -160,7 +161,18 @@ public class CustomerSupport extends MiniPlugin else if (transaction.SalesPackageName.split(" ").length == 2) winterChestsReceived += 1; } - + + } + if (transaction.SalesPackageName.startsWith("Valentines Gift")) + { + if (transaction.Coins == 0 && transaction.Gems == 0) + { + if (transaction.SalesPackageName.split(" ").length == 3) + valentinesGiftsReceived += Integer.parseInt(transaction.SalesPackageName.split(" ")[2]); + else if (transaction.SalesPackageName.split(" ").length == 2) + valentinesGiftsReceived += 1; + } + } } @@ -169,6 +181,7 @@ public class CustomerSupport extends MiniPlugin caller.sendMessage(C.cBlue + "Ancient Chests Received : " + C.cYellow + ancientChestsReceived); caller.sendMessage(C.cBlue + "Mythical Chests Received : " + C.cYellow + mythicalChestsReceived); caller.sendMessage(C.cBlue + "Winter Chests Received : " + C.cYellow + winterChestsReceived); + caller.sendMessage(C.cBlue + "Valentines Gifts Received : " + C.cYellow + valentinesGiftsReceived); caller.sendMessage(C.cDGreen + C.Strike + "============================================="); _salesPackageManager.displaySalesPackages(caller, playerName); diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/SalesPackageManager.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/SalesPackageManager.java index e3ef2eba3..debd2f265 100644 --- a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/SalesPackageManager.java +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/SalesPackageManager.java @@ -21,12 +21,14 @@ import mineplex.staffServer.salespackage.salespackages.FrostLord; import mineplex.staffServer.salespackage.salespackages.GemHunter; import mineplex.staffServer.salespackage.salespackages.LifetimeHero; import mineplex.staffServer.salespackage.salespackages.LifetimeLegend; +import mineplex.staffServer.salespackage.salespackages.LifetimeTitan; import mineplex.staffServer.salespackage.salespackages.LifetimeUltra; import mineplex.staffServer.salespackage.salespackages.MonthlyHero; import mineplex.staffServer.salespackage.salespackages.MonthlyUltra; import mineplex.staffServer.salespackage.salespackages.MythicalChest; import mineplex.staffServer.salespackage.salespackages.SalesPackageBase; import mineplex.staffServer.salespackage.salespackages.OldChest; +import mineplex.staffServer.salespackage.salespackages.ValentinesGift; public class SalesPackageManager extends MiniPlugin { @@ -55,12 +57,14 @@ public class SalesPackageManager extends MiniPlugin AddSalesPackage(new LifetimeUltra(this)); AddSalesPackage(new LifetimeHero(this)); AddSalesPackage(new LifetimeLegend(this)); + AddSalesPackage(new LifetimeTitan(this)); AddSalesPackage(new GemHunter(this, 4)); AddSalesPackage(new GemHunter(this, 8)); AddSalesPackage(new ApplyKits(this)); AddSalesPackage(new OldChest(this)); AddSalesPackage(new AncientChest(this)); AddSalesPackage(new MythicalChest(this)); + AddSalesPackage(new ValentinesGift(this)); AddSalesPackage(new FrostLord(this)); AddSalesPackage(new EasterBunny(this)); } diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/salespackages/LifetimeTitan.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/salespackages/LifetimeTitan.java index 42d2b459b..b28e653f9 100644 --- a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/salespackages/LifetimeTitan.java +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/salespackages/LifetimeTitan.java @@ -17,7 +17,6 @@ public class LifetimeTitan extends SalesPackageBase addButton(agent, "/sales item " + playerName + " 1 Molten Snake", "Gives Molten Snake Mount."); addButton(agent, "/sales item " + playerName + " 1 Elder Guardian Morph", "Gives Elder Guardian Morph."); addButton(agent, "/sales item " + playerName + " 1 Flame of the Titans", "Gives Titan Particle."); - addButton(agent, "Apply All", "/sales lifetimelegend " + playerName, " Apply all above."); agent.sendMessage(" "); addBackButton(agent, playerName); } diff --git a/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/salespackages/ValentinesGift.java b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/salespackages/ValentinesGift.java new file mode 100644 index 000000000..2e593d682 --- /dev/null +++ b/Plugins/Mineplex.StaffServer/src/mineplex/staffServer/salespackage/salespackages/ValentinesGift.java @@ -0,0 +1,20 @@ +package mineplex.staffServer.salespackage.salespackages; + +import mineplex.staffServer.salespackage.SalesPackageManager; + +import org.bukkit.entity.Player; + +public class ValentinesGift extends SalesPackageBase +{ + public ValentinesGift(SalesPackageManager manager) + { + super(manager, "1 Valentines Gift"); + } + + public void displayToAgent(Player agent, String playerName) + { + addButton(agent, "/sales item " + playerName + " 1 Item Valentines Gift", "Give 1 Valentines Gift."); + agent.sendMessage(" "); + addBackButton(agent, playerName); + } +} From 960a0cdabbe2857a3cad07d3cf2f9cc7be97592b Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Fri, 12 Feb 2016 05:06:13 -0600 Subject: [PATCH 35/37] Fix constructor error, add ValentinesGiftManager to Arcade --- Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java | 2 +- .../src/nautilus/game/arcade/ArcadeManager.java | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java index 01ffdbfbc..8dfa24518 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java @@ -260,7 +260,7 @@ public class HubManager extends MiniClientPlugin 500, 1000, 4000, 6000, 12000, 22000, - true, false), inventoryManager, _gadgetManager); + true, false), inventoryManager, _gadgetManager, statsManager); _playerCountManager = new PlayerCountManager(plugin); 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 cdcd2f7b9..eadeb8bd7 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java @@ -48,6 +48,7 @@ import mineplex.core.projectile.ProjectileManager; import mineplex.core.punish.Punish; import mineplex.core.resourcepack.ResourcePackManager; import mineplex.core.reward.RewardData; +import mineplex.core.reward.RewardManager; import mineplex.core.reward.RewardRarity; import mineplex.core.reward.rewards.PetReward; import mineplex.core.stats.StatsManager; @@ -56,6 +57,7 @@ import mineplex.core.task.TaskManager; import mineplex.core.teleport.Teleport; import mineplex.core.timing.TimingManager; import mineplex.core.titangiveaway.TitanGiveawayManager; +import mineplex.core.valentines.ValentinesGiftManager; import mineplex.minecraft.game.classcombat.Class.ClassManager; import mineplex.minecraft.game.classcombat.Condition.SkillConditionManager; import mineplex.minecraft.game.classcombat.Skill.SkillFactory; @@ -295,6 +297,12 @@ public class ArcadeManager extends MiniPlugin implements IRelation _idleManager = new IdleManager(this); TitanGiveawayManager titanGiveaway = new TitanGiveawayManager(getPlugin(), clientManager, serverStatusManager); // new HolidayManager(this, titanGiveaway); + new ValentinesGiftManager(plugin, clientManager, new RewardManager(clientManager, serverStatusManager, donationManager, _inventoryManager, petManager, statsManager, + 100, 250, + 500, 1000, + 4000, 6000, + 12000, 22000, + true, false), inventoryManager, _cosmeticManager.getGadgetManager(), statsManager); new GameTestingManager(this); new PlayerDisguiseManager(plugin, _clientManager); From e8559d423ab6941adbc64676df217205fb3c0aff Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Fri, 12 Feb 2016 05:27:50 -0600 Subject: [PATCH 36/37] Add Valentines Vendetta to quick server menu --- .../mineplex/hub/server/ServerManager.java | 5 +++ .../hub/server/ui/ServerGameMenu.java | 33 ++++++++++++++----- .../hub/server/ui/button/SelectVVButton.java | 23 +++++++++++++ 3 files changed, 53 insertions(+), 8 deletions(-) create mode 100644 Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/button/SelectVVButton.java diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ServerManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ServerManager.java index 0782488fc..591671352 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ServerManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ServerManager.java @@ -913,4 +913,9 @@ public class ServerManager extends MiniPlugin { return _serverNpcShopMap.get("Type Wars"); } + + public ShopBase getValentinesShop() + { + return _serverNpcShopMap.get("Valentines"); + } } 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 0df7aac78..fb835b107 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerGameMenu.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerGameMenu.java @@ -40,17 +40,16 @@ public class ServerGameMenu extends ShopPageBase @Override protected void buildPage() { - addButton(2, new ItemBuilder(Material.NAME_TAG).setTitle(C.cYellowB + "Type Wars " + C.cGray + "Team Deathmatch").addLore(new String[] + addButton(2, new ItemBuilder(Material.RED_ROSE).setTitle(C.cYellowB + "Valentines Vendetta " + C.cGray + "Save Valentines!").addLore(new String[] { - (_extraValue ? C.cAquaB : C.cWhiteB) + "NEW GAME", + (_extraValue ? C.cAquaB : C.cWhiteB) + "LIMITED TIME GAME", C.Reset + "", - C.Reset + "Attack your enemies with", - C.Reset + "waves of mobs. Defend your giant", - C.Reset + "by typing the name of an enemy mob", - C.Reset + "to kill it.", + C.Reset + "Calvin the Cow has a Valentines Date,", + C.Reset + "but he was robbed by the nasty pigs!", + C.Reset + "Recover his items, and save the day!", C.Reset + "", - C.Reset + "Join " + ChatColor.GREEN + getPlugin().getGroupTagPlayerCount("TW") + C.Reset + " other players!", - }).setHideInfo(true).build(), new SelectTWButton(this)); + C.Reset + "Join " + ChatColor.GREEN + getPlugin().getGroupTagPlayerCount("VV") + C.Reset + " other players!", + }).setHideInfo(true).build(), new SelectVVButton(this)); addButton(4, new ItemBuilder(Material.QUARTZ_BLOCK).setTitle(C.cYellowB + "Speed Builders " + C.cGray + "Competitive Building").addLore(new String[] { @@ -76,6 +75,19 @@ public class ServerGameMenu extends ShopPageBase }).setHideInfo(true).build(), new SelectFEATButton(this, "Gladiators")); */ + /* + addButton(6, new ItemBuilder(Material.LAVA_BUCKET).setTitle(C.cYellowB + "Micro Battle" + C.cGray + " 4 Team Deathmatch").addLore(new String[] + { + (_extraValue ? C.cAquaB : C.cWhiteB) + "FEATURED ARCADE GAME", + C.Reset + "", + C.Reset + "4 teams stand alone", + C.Reset + "Who shall remain victorious", + C.Reset + "You decide", + C.Reset + "", + C.Reset + "Join " + C.cGreen + getPlugin().getGroupTagPlayerCount("MB") + C.Reset + " other players!" + }).setHideInfo(true).build(), new SelectFEATButton(this, "Micro Battle")); + */ + addButton(6, new ItemBuilder(Material.LAVA_BUCKET).setTitle(C.cYellowB + "Micro Battle" + C.cGray + " 4 Team Deathmatch").addLore(new String[] { (_extraValue ? C.cAquaB : C.cWhiteB) + "FEATURED ARCADE GAME", @@ -681,4 +693,9 @@ public class ServerGameMenu extends ShopPageBase { getPlugin().getTypeWarsShop().attemptShopOpen(player); } + + public void openValentines(Player player) + { + getPlugin().getValentinesShop().attemptShopOpen(player); + } } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/button/SelectVVButton.java b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/button/SelectVVButton.java new file mode 100644 index 000000000..f6a15ba35 --- /dev/null +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/button/SelectVVButton.java @@ -0,0 +1,23 @@ +package mineplex.hub.server.ui.button; + +import org.bukkit.entity.Player; +import org.bukkit.event.inventory.ClickType; + +import mineplex.core.shop.item.IButton; +import mineplex.hub.server.ui.ServerGameMenu; + +public class SelectVVButton implements IButton +{ + private ServerGameMenu _menu; + + public SelectVVButton(ServerGameMenu menu) + { + _menu = menu; + } + + @Override + public void onClick(Player player, ClickType clickType) + { + _menu.openValentines(player); + } +} From 0d19a8017fc40625b91577fc2c61ad5d50df930f Mon Sep 17 00:00:00 2001 From: Shaun Bennett Date: Fri, 12 Feb 2016 06:51:30 -0600 Subject: [PATCH 37/37] Update Featured arcade game, various bug fixes --- .../mineplex/core/cosmetic/ui/page/GadgetPage.java | 4 ++-- .../core/gadget/gadgets/death/DeathHearts.java | 2 +- .../core/gadget/gadgets/item/ItemFlowerGift.java | 2 +- .../src/mineplex/core/reward/RewardManager.java | 1 + .../src/mineplex/core/valentines/GiftEffect.java | 6 ++++++ .../src/mineplex/hub/server/ui/ServerGameMenu.java | 11 +++++------ 6 files changed, 16 insertions(+), 10 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 6e8168a61..db83190df 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 @@ -56,8 +56,8 @@ public class GadgetPage extends ShopPageBase slot++; - if (slot == 26) - slot = 28; + if (slot == 26 || slot == 35) + slot += 2; } 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/gadget/gadgets/death/DeathHearts.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathHearts.java index 69ecc8c18..abdc9e191 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathHearts.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/death/DeathHearts.java @@ -27,7 +27,7 @@ public class DeathHearts extends DeathEffectGadget { super(manager, "Broken Hearted", UtilText.splitLineToArray(C.cGray + "Nothing hurts more than having your heart broken. Apart from being killed, that is.", LineFormat.LORE), - -6, Material.APPLE, (byte) 4); + -6, Material.APPLE, (byte) 0); } @EventHandler diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFlowerGift.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFlowerGift.java index 739bdfbf2..085a5a5cb 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFlowerGift.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFlowerGift.java @@ -28,7 +28,7 @@ public class ItemFlowerGift extends ItemGadget -7, Material.RED_ROSE, (byte) 0, - 2000, + 6000, new Ammo("Valentines Gift", "Valentines Gift", Material.RED_ROSE, (byte) 0, UtilText.splitLineToArray(C.cGray + "Maybe if Sigils and Phinary used these they wouldn't be so alone", LineFormat.LORE), -7, 10)); } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java index 4ff1f99aa..1a7094a8f 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java @@ -215,6 +215,7 @@ public class RewardManager // Valentines addReward(RewardPool.Type.VALENTINES_GIFT, new InventoryReward(inventoryManager, "Love Potion", "Love Potion", 1, 1, new ItemStack(Material.POTION, 1), rarity, 100, 0)); + addReward(RewardPool.Type.VALENTINES_GIFT, new TreasureShardReward(_clientManager, donationManager, 100, 200, 25, rarity)); // Christmas addReward(RewardPool.Type.WINTER_HOLIDAY, new InventoryReward(inventoryManager, "Freeze Cannon", "Freeze Cannon", 5, 10, diff --git a/Plugins/Mineplex.Core/src/mineplex/core/valentines/GiftEffect.java b/Plugins/Mineplex.Core/src/mineplex/core/valentines/GiftEffect.java index 638c15fa1..c8411188c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/valentines/GiftEffect.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/valentines/GiftEffect.java @@ -7,8 +7,10 @@ import org.bukkit.Sound; import org.bukkit.entity.Player; import mineplex.core.common.util.C; +import mineplex.core.common.util.F; import mineplex.core.common.util.UtilFirework; import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilTextMiddle; public class GiftEffect @@ -101,11 +103,15 @@ public class GiftEffect { UtilTextMiddle.display("", C.cPurple + "You received " + _toGift, _to); _to.playSound(_to.getEyeLocation(), Sound.LEVEL_UP, 1F, 1F); + UtilPlayer.message(_to, F.main("Gift", "You received " + F.elem(_toGift) + "!")); + UtilPlayer.message(_to, F.main("Gift", F.name(_from.getName()) + " received " + F.elem(_fromGift) + "!")); } if (_from.isOnline()) { UtilTextMiddle.display("", C.cPurple + "You received " + _fromGift, _from); _from.playSound(_from.getEyeLocation(), Sound.LEVEL_UP, 1F, 1F); + UtilPlayer.message(_from, F.main("Gift", "You received " + F.elem(_fromGift) + "!")); + UtilPlayer.message(_from, F.main("Gift", F.name(_to.getName()) + " received " + F.elem(_toGift) + "!")); } } 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 fb835b107..42f56f53e 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerGameMenu.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/server/ui/ServerGameMenu.java @@ -88,16 +88,15 @@ public class ServerGameMenu extends ShopPageBase }).setHideInfo(true).build(), new SelectFEATButton(this, "Micro Battle")); */ - addButton(6, new ItemBuilder(Material.LAVA_BUCKET).setTitle(C.cYellowB + "Micro Battle" + C.cGray + " 4 Team Deathmatch").addLore(new String[] + addButton(6, new ItemBuilder(Material.TNT).setTitle(C.cYellowB + "Bomb Lobbers " + C.cGray + "TNT Mayhem").addLore(new String[] { (_extraValue ? C.cAquaB : C.cWhiteB) + "FEATURED ARCADE GAME", C.Reset + "", - C.Reset + "4 teams stand alone", - C.Reset + "Who shall remain victorious", - C.Reset + "You decide", + C.Reset + "Fight against your enemies using", + C.Reset + "the power of explosives!", C.Reset + "", - C.Reset + "Join " + C.cGreen + getPlugin().getGroupTagPlayerCount("MB") + C.Reset + " other players!" - }).setHideInfo(true).build(), new SelectFEATButton(this, "Micro Battle")); + C.Reset + "Join " + C.cGreen + getPlugin().getGroupTagPlayerCount("BL") + C.Reset + " other players!" + }).setHideInfo(true).build(), new SelectFEATButton(this, "Bomb Lobbers")); addButton(9, new ItemBuilder(Material.IRON_PICKAXE).setTitle(C.cYellowB + "The Bridges " + C.cGray + "4 Team Survival").addLore(new String[] {