From 91ce36d6e492df6720f8836976fe331dbe4b08bf Mon Sep 17 00:00:00 2001 From: Chiss Date: Wed, 18 Sep 2013 19:46:45 +1000 Subject: [PATCH] Hub refactor Hub parkour module --- Plugins/BuildFiles/common.xml | 24 ++ .../Mineplex.Hub/src/mineplex/hub/Hub.java | 1 - .../src/mineplex/hub/HubManager.java | 210 ++-------------- .../src/mineplex/hub/modules/JumpManager.java | 82 ++++++ .../src/mineplex/hub/modules/ParkourData.java | 39 +++ .../mineplex/hub/modules/ParkourManager.java | 236 ++++++++++++++++++ .../StackerManager.java} | 123 +++++---- .../TextManager.java} | 13 +- .../mineplex/hub/modules/WorldManager.java | 166 ++++++++++++ .../hub/tutorial/TutorialManager.java | 4 +- .../hub/tutorial/types/WelcomeTutorial.java | 4 +- .../games/deathtag/kits/KitAlphaChaser.java | 4 +- .../game/games/deathtag/kits/KitChaser.java | 4 +- .../game/games/dragonescape/DragonEscape.java | 8 + .../games/dragonescape/DragonEscapeData.java | 26 +- .../game/arcade/kit/perks/PerkDisruptor.java | 4 +- 16 files changed, 689 insertions(+), 259 deletions(-) create mode 100644 Plugins/Mineplex.Hub/src/mineplex/hub/modules/JumpManager.java create mode 100644 Plugins/Mineplex.Hub/src/mineplex/hub/modules/ParkourData.java create mode 100644 Plugins/Mineplex.Hub/src/mineplex/hub/modules/ParkourManager.java rename Plugins/Mineplex.Hub/src/mineplex/hub/{Stacker.java => modules/StackerManager.java} (88%) rename Plugins/Mineplex.Hub/src/mineplex/hub/{TextCreator.java => modules/TextManager.java} (95%) create mode 100644 Plugins/Mineplex.Hub/src/mineplex/hub/modules/WorldManager.java diff --git a/Plugins/BuildFiles/common.xml b/Plugins/BuildFiles/common.xml index 8beee32bc..b3d93dde9 100644 --- a/Plugins/BuildFiles/common.xml +++ b/Plugins/BuildFiles/common.xml @@ -228,6 +228,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java b/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java index 3da713838..65b29b87f 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/Hub.java @@ -79,7 +79,6 @@ public class Hub extends JavaPlugin implements INautilusPlugin, IRelation Portal portal = new Portal(this); PartyManager partyManager = new PartyManager(this, clientManager); new HubManager(this, clientManager, donationManager, new DisguiseManager(this, packetHandler), new TaskManager(this, GetWebServerAddress()), portal, partyManager); - new Stacker(this); new ServerManager(this, clientManager, donationManager, portal, partyManager, new ServerStatusManager(this, new LagMeter(this, clientManager))); new Chat(this, clientManager); new MemoryFix(this); diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java index 98911bd0c..88de1b4f8 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/HubManager.java @@ -8,44 +8,27 @@ import java.io.FileInputStream; import java.io.FileWriter; import java.io.InputStreamReader; import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; import org.bukkit.Bukkit; import org.bukkit.ChatColor; -import org.bukkit.Effect; import org.bukkit.GameMode; import org.bukkit.Location; -import org.bukkit.World; -import org.bukkit.block.BlockFace; import org.bukkit.craftbukkit.v1_6_R2.entity.CraftPlayer; -import org.bukkit.entity.Chicken; -import org.bukkit.entity.Cow; import org.bukkit.entity.Egg; import org.bukkit.entity.Entity; import org.bukkit.entity.LivingEntity; -import org.bukkit.entity.Pig; import org.bukkit.entity.Player; -import org.bukkit.entity.Sheep; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; -import org.bukkit.event.block.BlockBreakEvent; -import org.bukkit.event.block.BlockPlaceEvent; -import org.bukkit.event.block.BlockSpreadEvent; -import org.bukkit.event.block.LeavesDecayEvent; import org.bukkit.event.entity.EntityDamageEvent; -import org.bukkit.event.entity.EntityExplodeEvent; import org.bukkit.event.entity.ItemSpawnEvent; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; import org.bukkit.event.inventory.InventoryType; import org.bukkit.event.player.AsyncPlayerChatEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent; -import org.bukkit.event.player.PlayerDropItemEvent; import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.event.player.PlayerPickupItemEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerRespawnEvent; -import org.bukkit.event.player.PlayerToggleFlightEvent; import org.bukkit.event.server.ServerListPingEvent; import org.bukkit.event.world.ChunkLoadEvent; import org.bukkit.plugin.java.JavaPlugin; @@ -58,9 +41,6 @@ import mineplex.core.account.CoreClientManager; import mineplex.core.common.Rank; import mineplex.core.common.util.C; import mineplex.core.common.util.F; -import mineplex.core.common.util.UtilAction; -import mineplex.core.common.util.UtilBlock; -import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilInv; import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilPlayer; @@ -73,8 +53,7 @@ import mineplex.core.portal.Portal; import mineplex.core.task.TaskManager; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; -import mineplex.hub.modules.MapManager; -import mineplex.hub.modules.MountManager; +import mineplex.hub.modules.*; import mineplex.hub.party.Party; import mineplex.hub.party.PartyManager; import mineplex.hub.tutorial.TutorialManager; @@ -89,7 +68,8 @@ public class HubManager extends MiniClientPlugin private TutorialManager _tutorialManager; - private TextCreator _textCreator; + private TextManager _textCreator; + private ParkourManager _parkour; private Location _spawn; private int _scoreboardTick = 0; @@ -103,7 +83,6 @@ public class HubManager extends MiniClientPlugin private boolean _shuttingDown; - private HashSet _mobs = new HashSet(); public HubManager(JavaPlugin plugin, CoreClientManager clientManager, DonationManager donationManager, DisguiseManager disguiseManager, TaskManager taskManager, Portal portal, PartyManager partyManager) { @@ -116,11 +95,14 @@ public class HubManager extends MiniClientPlugin _spawn = new Location(UtilWorld.getWorld("world"), 0.5, 74, 0.5); - _textCreator = new TextCreator(this); - - new Dragon(this); + _textCreator = new TextManager(this); + _parkour = new ParkourManager(this, donationManager, taskManager); + new MountManager(this); new MapManager(this); + new WorldManager(this); + new JumpManager(this); + new StackerManager(this); _partyManager = partyManager; _tutorialManager = new TutorialManager(this, donationManager, taskManager, _textCreator); @@ -371,111 +353,18 @@ public class HubManager extends MiniClientPlugin { if (event.getCause() == DamageCause.VOID) if (event.getEntity() instanceof Player) + { + event.getEntity().eject(); + event.getEntity().leaveVehicle(); event.getEntity().teleport(GetSpawn()); + } + else event.getEntity().remove(); event.setCancelled(true); } - @EventHandler(priority = EventPriority.LOW) - public void ItemPickup(PlayerPickupItemEvent event) - { - if (event.getPlayer().getGameMode() == GameMode.CREATIVE) - return; - - event.setCancelled(true); - } - - @EventHandler(priority = EventPriority.LOW) - public void ItemDrop(PlayerDropItemEvent event) - { - if (event.getPlayer().getGameMode() == GameMode.CREATIVE) - return; - - event.setCancelled(true); - } - - @EventHandler - public void BlockBreak(BlockBreakEvent event) - { - if (event.getPlayer().getGameMode() == GameMode.CREATIVE) - return; - - event.setCancelled(true); - } - - @EventHandler - public void LeaveDecay(LeavesDecayEvent event) - { - event.setCancelled(true); - } - - @EventHandler - public void BlockPlace(BlockPlaceEvent event) - { - if (event.getPlayer().getGameMode() == GameMode.CREATIVE) - return; - - event.setCancelled(true); - } - - @EventHandler - public void FlightHop(PlayerToggleFlightEvent event) - { - Player player = event.getPlayer(); - - if (player.getGameMode() == GameMode.CREATIVE) - return; - - event.setCancelled(true); - player.setFlying(false); - - //Disable Flight - player.setAllowFlight(false); - - //Velocity - UtilAction.velocity(player, 1.4, 0.2, 1, true); - - //Sound - player.playEffect(player.getLocation(), Effect.BLAZE_SHOOT, 0); - } - - @EventHandler - public void FlightUpdate(UpdateEvent event) - { - if (event.getType() != UpdateType.TICK) - return; - - for (Player player : UtilServer.getPlayers()) - { - if (player.getGameMode() == GameMode.CREATIVE) - continue; - - if (UtilEnt.isGrounded(player) || UtilBlock.solid(player.getLocation().getBlock().getRelative(BlockFace.DOWN))) - { - player.setAllowFlight(true); - player.setFlying(false); - } - } - } - - @EventHandler - public void BorderUpdate(UpdateEvent event) - { - if (event.getType() != UpdateType.SEC) - return; - - for (Player player : UtilServer.getPlayers()) - { - if (UtilMath.offset(player.getLocation(), GetSpawn()) > 200) - { - player.eject(); - player.leaveVehicle(); - player.teleport(GetSpawn()); - } - } - } @EventHandler public void FoodHealthUpdate(UpdateEvent event) @@ -489,17 +378,6 @@ public class HubManager extends MiniClientPlugin player.setFoodLevel(20); } } - - @EventHandler - public void UpdateWeather(UpdateEvent event) - { - if (event.getType() != UpdateType.SEC) - return; - - World world = UtilWorld.getWorld("world"); - world.setTime(6000); - world.setStorm(false); - } @EventHandler public void UpdateScoreboard(UpdateEvent event) @@ -655,6 +533,11 @@ public class HubManager extends MiniClientPlugin { return _donationManager; } + + public ParkourManager GetParkour() + { + return _parkour; + } public Location GetSpawn() { @@ -674,7 +557,7 @@ public class HubManager extends MiniClientPlugin if (player.equals(other)) continue; - if (UtilMath.offset(player.getLocation(), GetSpawn()) < 4 || _tutorialManager.InTutorial(other) || _tutorialManager.InTutorial(player) || player.getOpenInventory().getType() != InventoryType.CRAFTING) + if (UtilMath.offset(player.getLocation(), GetSpawn()) < 4 || _tutorialManager.InTutorial(other) || _tutorialManager.InTutorial(player) || (player.getOpenInventory().getType() != InventoryType.CRAFTING && player.getOpenInventory().getType() != InventoryType.CREATIVE)) { ((CraftPlayer)other).hidePlayer(player, true, false); } @@ -685,57 +568,4 @@ public class HubManager extends MiniClientPlugin } } } - - @EventHandler - public void SpawnAnimals(UpdateEvent event) - { - if (event.getType() != UpdateType.SLOW) - return; - - Iterator entIterator = _mobs.iterator(); - - while (entIterator.hasNext()) - { - LivingEntity ent = entIterator.next(); - - if (!ent.isValid()) - { - ent.remove(); - entIterator.remove(); - } - } - - if (_mobs.size() > 24) - return; - - //Loc - double r = Math.random(); - - Location loc = GetSpawn(); - - if (r > 0.75) loc.add(32, 0.5, 0); - else if (r > 0.5) loc.add(0, 0.5, 32); - else if (r > 0.25) loc.add(-32, 0.5, 0); - else loc.add(0, 0.5, -32); - - //Spawn - r = Math.random(); - - if (r > 0.75) _mobs.add(loc.getWorld().spawn(loc, Cow.class)); - else if (r > 0.5) _mobs.add(loc.getWorld().spawn(loc, Pig.class)); - else if (r > 0.25) _mobs.add(loc.getWorld().spawn(loc, Sheep.class)); - else _mobs.add(loc.getWorld().spawn(loc, Chicken.class)); - } - - @EventHandler(priority = EventPriority.LOWEST) - public void Explosion(EntityExplodeEvent event) - { - event.blockList().clear(); - } - - @EventHandler - public void VineGrow(BlockSpreadEvent event) - { - event.setCancelled(true); - } } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/JumpManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/JumpManager.java new file mode 100644 index 000000000..0c1c37cb5 --- /dev/null +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/JumpManager.java @@ -0,0 +1,82 @@ +package mineplex.hub.modules; + +import org.bukkit.Effect; +import org.bukkit.GameMode; +import org.bukkit.block.BlockFace; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.player.PlayerToggleFlightEvent; +import org.bukkit.util.Vector; + +import mineplex.core.MiniPlugin; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilAction; +import mineplex.core.common.util.UtilBlock; +import mineplex.core.common.util.UtilEnt; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilServer; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; +import mineplex.hub.HubManager; + +public class JumpManager extends MiniPlugin +{ + public HubManager Manager; + + public JumpManager(HubManager manager) + { + super("Double Jump", manager.GetPlugin()); + + Manager = manager; + } + + @EventHandler + public void FlightHop(PlayerToggleFlightEvent event) + { + Player player = event.getPlayer(); + + if (player.getGameMode() == GameMode.CREATIVE) + return; + + event.setCancelled(true); + player.setFlying(false); + + //Disable Flight + player.setAllowFlight(false); + + //Parkour Disable + if (Manager.GetParkour().InParkour(player)) + { + UtilPlayer.message(player, F.main("Parkour", "You cannot Double Jump near Parkour Challenges.")); + player.setVelocity(new Vector(0,0,0)); + player.teleport(player.getLocation()); + return; + } + + //Velocity + UtilAction.velocity(player, 1.4, 0.2, 1, true); + + //Sound + player.playEffect(player.getLocation(), Effect.BLAZE_SHOOT, 0); + } + + @EventHandler + public void FlightUpdate(UpdateEvent event) + { + if (event.getType() != UpdateType.TICK) + return; + + for (Player player : UtilServer.getPlayers()) + { + if (player.getGameMode() == GameMode.CREATIVE) + continue; + + if (UtilEnt.isGrounded(player) || UtilBlock.solid(player.getLocation().getBlock().getRelative(BlockFace.DOWN))) + { + player.setAllowFlight(true); + player.setFlying(false); + } + } + } + +} diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/ParkourData.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/ParkourData.java new file mode 100644 index 000000000..4fe8512c0 --- /dev/null +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/ParkourData.java @@ -0,0 +1,39 @@ +package mineplex.hub.modules; + +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilPlayer; + +import org.bukkit.Location; +import org.bukkit.Sound; +import org.bukkit.entity.Player; + +public class ParkourData +{ + public String Name; + public String[] Desc; + public int Gems; + public Location Location; + public double Distance; + + public ParkourData(String name, String[] desc, int gems, Location loc, double dist) + { + Name = name; + Desc = desc; + Gems = gems; + Location = loc; + Distance = dist; + } + + public void Inform(Player player) + { + //Inform + UtilPlayer.message(player, F.main("Parkour", "Welcome to the " + F.elem(Name) + " course.")); + + for (String cur : Desc) + { + UtilPlayer.message(player, " " + cur); + } + + player.playSound(player.getLocation(), Sound.ORB_PICKUP, 1f, 2f); + } +} diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/ParkourManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/ParkourManager.java new file mode 100644 index 000000000..a16728243 --- /dev/null +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/ParkourManager.java @@ -0,0 +1,236 @@ +package mineplex.hub.modules; + +import java.util.HashSet; +import java.util.WeakHashMap; + +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.LivingEntity; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.block.BlockBreakEvent; +import org.bukkit.event.entity.EntityDamageEvent; +import org.bukkit.event.entity.EntityDamageEvent.DamageCause; +import org.bukkit.event.player.PlayerInteractEntityEvent; + +import mineplex.core.MiniPlugin; +import mineplex.core.common.util.C; +import mineplex.core.common.util.Callback; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilBlock; +import mineplex.core.common.util.UtilEnt; +import mineplex.core.common.util.UtilMath; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilTime; +import mineplex.core.donation.DonationManager; +import mineplex.core.recharge.Recharge; +import mineplex.core.task.TaskManager; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; +import mineplex.hub.HubManager; + +public class ParkourManager extends MiniPlugin +{ + public HubManager Manager; + + private HashSet _parkour = new HashSet(); + + private Location _lavaParkourReturn; + private WeakHashMap _lavaLocation = new WeakHashMap(); + private WeakHashMap _lavaTimer = new WeakHashMap(); + + //Modules + protected DonationManager _donationManager; + protected TaskManager _taskManager; + + public ParkourManager(HubManager manager, DonationManager donation, TaskManager task) + { + super("Parkour", manager.GetPlugin()); + + Manager = manager; + + _taskManager = task; + _donationManager = donation; + + _parkour.add(new ParkourData("Ruins Parkour", new String[] + { + "This is an extremely difficult parkour.", + "You will need to find the correct way through", + "the ruins, overcoming many challenging jumps.", + }, + 4000, new Location(Manager.GetSpawn().getWorld(), 115,70,-10), 50)); + + + _parkour.add(new ParkourData("Lava Parkour", new String[] + { + "This parkour is HOT! It's so hot that you", + "must keep sprinting for the entire course,", + "or you will die in flames!" + }, 1000, new Location(Manager.GetSpawn().getWorld(), -100,60,0), 50)); + + _lavaParkourReturn = new Location(Manager.GetSpawn().getWorld(), -89.5,68,36.5); + _lavaParkourReturn.setYaw(90); + } + + public boolean InParkour(Player player) + { + for (ParkourData data : _parkour) + { + if (UtilMath.offset(player.getLocation(), data.Location) < data.Distance) + { + return true; + } + } + + return false; + } + + @EventHandler + public void BlockBreak(BlockBreakEvent event) + { + if (InParkour(event.getPlayer())) + { + event.getPlayer().teleport(Manager.GetSpawn()); + UtilPlayer.message(event.getPlayer(), F.main("Parkour", "You cannot break blocks near parkour!")); + } + } + + @EventHandler + public void LavaReturn(EntityDamageEvent event) + { + if (event.getCause() == DamageCause.LAVA) + if (event.getEntity() instanceof Player) + { + event.getEntity().eject(); + event.getEntity().leaveVehicle(); + event.getEntity().teleport(_lavaParkourReturn); + event.getEntity().setFireTicks(0); + } + + else + event.getEntity().remove(); + + event.setCancelled(true); + } + + @EventHandler + public void LavaBlockReturn(UpdateEvent event) + { + if (event.getType() != UpdateType.TICK) + return; + + for (Player player : UtilServer.getPlayers()) + { + if (!UtilEnt.isGrounded(player)) + continue; + + int id = player.getLocation().getBlock().getRelative(BlockFace.DOWN).getTypeId(); + if (id != 0 && id != 112) + continue; + + if (!_lavaLocation.containsKey(player) || UtilMath.offset(player.getLocation(), _lavaLocation.get(player)) > 1.5) + { + _lavaLocation.put(player, player.getLocation()); + _lavaTimer.put(player, System.currentTimeMillis()); + continue; + } + + if (UtilTime.elapsed(_lavaTimer.get(player), 500)) + { + boolean inCourse = false; + for (Block block : UtilBlock.getInRadius(player.getLocation(), 1.5).keySet()) + { + if (block.getType() == Material.NETHER_BRICK) + { + inCourse = true; + break; + } + } + + if (!inCourse) + continue; + + + _lavaLocation.remove(player); + _lavaTimer.remove(player); + + player.eject(); + player.leaveVehicle(); + player.teleport(_lavaParkourReturn); + player.setFireTicks(0); + + UtilPlayer.message(player, F.main("Parkour", "You cannot stop running during Lava Parkour!")); + } + } + } + + @EventHandler + public void Finish(PlayerInteractEntityEvent event) + { + if (event.getRightClicked() == null) + return; + + if (!(event.getRightClicked() instanceof LivingEntity)) + return; + + LivingEntity ent = (LivingEntity)event.getRightClicked(); + + if (ent.getCustomName() == null) + return; + + //Start Message + if (ent.getCustomName().contains("Start")) + { + Player player = event.getPlayer(); + + for (ParkourData data : _parkour) + { + if (!ent.getCustomName().contains(data.Name)) + continue; + + data.Inform(player); + } + } + + //Finish Message + if (ent.getCustomName().contains("Finish")) + { + final Player player = event.getPlayer(); + + if (Recharge.Instance.use(player, "Finish Parkour", 30000, false)) + return; + + for (ParkourData data : _parkour) + { + if (!ent.getCustomName().contains(data.Name)) + continue; + + //Inform + UtilPlayer.message(player, F.main("Parkour", "You completed " + F.elem(data.Name) + ".")); + + //Gems + if (!_taskManager.hasCompletedTask(player, data.Name)) + { + final ParkourData fData = data; + + _donationManager.RewardGems(new Callback() + { + public void run(Boolean completed) + { + UtilPlayer.message(player, F.main("Parkour", "You received " + F.elem(C.cGreen + fData.Gems + " Gems") + ".")); + + _taskManager.completedTask(player, fData.Name); + + //Sound + player.playSound(player.getLocation(), Sound.LEVEL_UP, 2f, 1.5f); + } + }, player.getName(), data.Gems); + } + } + } + } +} diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/Stacker.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/StackerManager.java similarity index 88% rename from Plugins/Mineplex.Hub/src/mineplex/hub/Stacker.java rename to Plugins/Mineplex.Hub/src/mineplex/hub/modules/StackerManager.java index d0e20e417..7a6abdf52 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/Stacker.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/StackerManager.java @@ -1,4 +1,4 @@ -package mineplex.hub; +package mineplex.hub.modules; import java.util.HashSet; @@ -15,7 +15,6 @@ import org.bukkit.event.player.PlayerInteractEntityEvent; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerQuitEvent; -import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.util.Vector; import mineplex.core.MiniPlugin; @@ -33,103 +32,115 @@ import mineplex.core.itemstack.ItemStackFactory; import mineplex.core.projectile.IThrown; import mineplex.core.projectile.ProjectileManager; import mineplex.core.projectile.ProjectileUser; +import mineplex.hub.HubManager; -public class Stacker extends MiniPlugin implements IThrown +public class StackerManager extends MiniPlugin implements IThrown { + public HubManager Manager; + private ProjectileManager _projectileManager; - + private HashSet _disabled = new HashSet(); private HashSet _tempStackShift = new HashSet(); - - public Stacker(JavaPlugin plugin) + + public StackerManager(HubManager manager) { - super("Stacker", plugin); - - _projectileManager = new ProjectileManager(plugin); + super("Stacker", manager.GetPlugin()); + + Manager = manager; + + _projectileManager = new ProjectileManager(manager.GetPlugin()); } - + @EventHandler public void ToggleInvolvement(PlayerInteractEvent event) { Player player = event.getPlayer(); - + if (UtilGear.isMat(player.getItemInHand(), Material.GRILLED_PORK)) { _disabled.add(player.getName()); UtilPlayer.message(player, F.main("Stacker", "You are no longer stackable... boring...")); - + player.getInventory().setItem(4, ItemStackFactory.Instance.CreateStack(Material.PORK, (byte)0, 1, C.cGreen + "Enable Stacker")); UtilInv.Update(player); - + event.setCancelled(true); } else if (UtilGear.isMat(player.getItemInHand(), Material.PORK)) { _disabled.remove(player.getName()); UtilPlayer.message(player, F.main("Stacker", "You are back in the stacking games! Squeeeee!")); - + player.getInventory().setItem(4, ItemStackFactory.Instance.CreateStack(Material.GRILLED_PORK, (byte)0, 1, C.cRed + "Disable Stacker")); UtilInv.Update(player); - + event.setCancelled(true); } } - + @EventHandler public void PlayerJoin(PlayerJoinEvent event) { event.getPlayer().getInventory().setItem(4, ItemStackFactory.Instance.CreateStack(Material.GRILLED_PORK, (byte)0, 1, C.cRed + "Disable Stacker")); } - + @EventHandler public void PlayerQuit(PlayerQuitEvent event) { _disabled.remove(event.getPlayer().getName()); _tempStackShift.remove(event.getPlayer()); } - + @EventHandler public void GrabEntity(PlayerInteractEntityEvent event) { if (event.isCancelled()) return; - + Player stacker = event.getPlayer(); if (stacker.getGameMode() != GameMode.SURVIVAL) return; - + + //Parkour Disable + if (Manager.GetParkour().InParkour(stacker)) + { + UtilPlayer.message(stacker, F.main("Parkour", "You cannot Stack/Throw near Parkour Challenges.")); + return; + } + if (_disabled.contains(stacker.getName())) { UtilPlayer.message(stacker, F.main("Stacker", "You are not playing stacker.")); return; } - + if (stacker.getVehicle() != null || _tempStackShift.contains(stacker)) { UtilPlayer.message(stacker, F.main("Stacker", "You cannot stack while stacked...")); return; } - + Entity stackee = event.getRightClicked(); if (stackee == null) return; - + if (!(stackee instanceof LivingEntity)) return; - + if (stackee instanceof Horse) return; - + if (stackee instanceof Player && ((Player)stackee).getGameMode() != GameMode.SURVIVAL) return; - + if (stackee instanceof Player && _disabled.contains(((Player)stackee).getName())) { UtilPlayer.message(stacker, F.main("Stacker", F.name(UtilEnt.getName(stackee)) + " is not playing stacker.")); return; } - + if (stackee instanceof LivingEntity) { if (((LivingEntity)stackee).isCustomNameVisible()) @@ -138,54 +149,54 @@ public class Stacker extends MiniPlugin implements IThrown return; } } - + while (stackee.getVehicle() != null) stackee = stackee.getVehicle(); - + if (stackee.equals(stacker)) return; - + Entity top = stacker; while (top.getPassenger() != null) top = top.getPassenger(); - + top.setPassenger(stackee); - + UtilPlayer.message(stacker, F.main("Stacker", "You stacked " + F.name(UtilEnt.getName(stackee) + "."))); UtilPlayer.message(stackee, F.main("Stacker", "You were stacked by " + F.name(stacker.getName() + "."))); UtilPlayer.message(stackee, F.main("Stacker", "Push " + F.skill("Crouch") + " to escape!")); - + event.setCancelled(true); } - + @EventHandler public void ThrowEntity(PlayerInteractEvent event) { if (!UtilEvent.isAction(event, ActionType.L)) return; - + Player thrower = event.getPlayer(); - + if (thrower.getVehicle() != null) return; - + Entity throwee = thrower.getPassenger(); if (throwee == null) return; - + thrower.eject(); - + Entity throweeStack = throwee.getPassenger(); if (throweeStack != null) { throwee.eject(); throweeStack.leaveVehicle(); - + final Entity fThrower = thrower; final Entity fThroweeStack = throweeStack; - + _tempStackShift.add(throweeStack); - + GetPlugin().getServer().getScheduler().scheduleSyncDelayedTask(GetPlugin(), new Runnable() { public void run() @@ -195,21 +206,29 @@ public class Stacker extends MiniPlugin implements IThrown } }, 2); } - + + //Parkour Disable + if (Manager.GetParkour().InParkour(thrower)) + { + UtilPlayer.message(thrower, F.main("Parkour", "You cannot Stack/Throw near Parkour Challenges.")); + UtilPlayer.message(throwee, F.main("Parkour", "You cannot Stack/Throw near Parkour Challenges.")); + return; + } + UtilPlayer.message(thrower, F.main("Stacker", "You threw " + F.name(UtilEnt.getName(throwee)))); UtilPlayer.message(throwee, F.main("Stacker", "You were thrown by " + F.name(thrower.getName()))); - + UtilAction.velocity(throwee, thrower.getLocation().getDirection(), 1.8, false, 0, 0.3, 2, false); - + _projectileManager.AddThrow(throwee, thrower, this, -1, true, false, true, false, 2.4d); } - + @Override public void Collide(LivingEntity target, Block block, ProjectileUser data) { if (target == null) return; - + //Velocity UtilAction.velocity(target, UtilAlg.getTrajectory2d(data.GetThrown(), target), 1, true, 0.8, 0, 10, true); @@ -220,9 +239,9 @@ public class Stacker extends MiniPlugin implements IThrown rider.setVelocity(new Vector(0.25 - Math.random()/2, Math.random()/2, 0.25 - Math.random()/2)); rider = rider.getPassenger(); } - + UtilPlayer.message(target, F.main("Stacker", F.name(UtilEnt.getName(data.GetThrower())) + " hit you with " + F.name(UtilEnt.getName(data.GetThrown())))); - + //Effect data.GetThrown().getWorld().playSound(data.GetThrown().getLocation(), Sound.HURT, 1f, 1f); } @@ -230,14 +249,14 @@ public class Stacker extends MiniPlugin implements IThrown @Override public void Idle(ProjectileUser data) { - + } @Override public void Expire(ProjectileUser data) { - + } - + } diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/TextCreator.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/TextManager.java similarity index 95% rename from Plugins/Mineplex.Hub/src/mineplex/hub/TextCreator.java rename to Plugins/Mineplex.Hub/src/mineplex/hub/modules/TextManager.java index 7477dc9df..726b13eb2 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/TextCreator.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/TextManager.java @@ -1,16 +1,17 @@ -package mineplex.hub; +package mineplex.hub.modules; import mineplex.core.MiniPlugin; import mineplex.core.common.util.UtilText; import mineplex.core.common.util.UtilText.TextAlign; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; +import mineplex.hub.HubManager; import org.bukkit.Location; import org.bukkit.block.BlockFace; import org.bukkit.event.EventHandler; -public class TextCreator extends MiniPlugin +public class TextManager extends MiniPlugin { public HubManager Manager; @@ -29,7 +30,7 @@ public class TextCreator extends MiniPlugin int smashIndex = 0; - public TextCreator(HubManager manager) + public TextManager(HubManager manager) { super("Text Creator", manager.GetPlugin()); @@ -47,8 +48,8 @@ public class TextCreator extends MiniPlugin "DRAGON ESCAPE", "MILK THE COW", "SUPER SPLEEF", - "TURF FORTS", "DEATH TAG", + "TURF WARS", "DRAGONS", "RUNNER" }; @@ -82,8 +83,8 @@ public class TextCreator extends MiniPlugin UtilText.MakeText("THE BRIDGES", locSurvival.clone().add(-15, 14, 0), faceSurvival, 159, (byte)4, TextAlign.CENTER); UtilText.MakeText("THE BRIDGES", locSurvival.clone().add(-16, 14, 0), faceSurvival, 159, (byte)15, TextAlign.CENTER); - //UtilText.MakeText("CASTLE SIEGE", locSurvival.clone().add(-15, 21, 0), faceSurvival, 159, (byte)1, TextAlign.CENTER); - //UtilText.MakeText("CASTLE SIEGE", locSurvival.clone().add(-16, 21, 0), faceSurvival, 159, (byte)15, TextAlign.CENTER); + UtilText.MakeText("SURVIVAL GAMES", locSurvival.clone().add(-15, 21, 0), faceSurvival, 159, (byte)1, TextAlign.CENTER); + UtilText.MakeText("SURVIVAL GAMES", locSurvival.clone().add(-16, 21, 0), faceSurvival, 159, (byte)15, TextAlign.CENTER); //Other diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/modules/WorldManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/WorldManager.java new file mode 100644 index 000000000..e72d9b37e --- /dev/null +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/modules/WorldManager.java @@ -0,0 +1,166 @@ +package mineplex.hub.modules; + +import java.util.HashSet; +import java.util.Iterator; + +import mineplex.core.MiniPlugin; +import mineplex.core.common.util.UtilMath; +import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilWorld; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; +import mineplex.hub.HubManager; + +import org.bukkit.GameMode; +import org.bukkit.Location; +import org.bukkit.World; +import org.bukkit.entity.Chicken; +import org.bukkit.entity.Cow; +import org.bukkit.entity.LivingEntity; +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.BlockPlaceEvent; +import org.bukkit.event.block.BlockSpreadEvent; +import org.bukkit.event.block.LeavesDecayEvent; +import org.bukkit.event.entity.EntityExplodeEvent; +import org.bukkit.event.player.PlayerDropItemEvent; +import org.bukkit.event.player.PlayerPickupItemEvent; + +public class WorldManager extends MiniPlugin +{ + public HubManager Manager; + + private HashSet _mobs = new HashSet(); + + public WorldManager(HubManager manager) + { + super("World Manager", manager.GetPlugin()); + + Manager = manager; + } + + @EventHandler + public void SpawnAnimals(UpdateEvent event) + { + if (event.getType() != UpdateType.SLOW) + return; + + Iterator entIterator = _mobs.iterator(); + + while (entIterator.hasNext()) + { + LivingEntity ent = entIterator.next(); + + if (!ent.isValid()) + { + ent.remove(); + entIterator.remove(); + } + } + + if (_mobs.size() > 16) + return; + + //Loc + double r = Math.random(); + + Location loc = Manager.GetSpawn(); + + if (r > 0.75) loc.add(32, 0.5, 0); + else if (r > 0.5) loc.add(0, 0.5, 32); + else if (r > 0.25) loc.add(-32, 0.5, 0); + else loc.add(0, 0.5, -32); + + //Spawn + r = Math.random(); + + if (r > 0.66) _mobs.add(loc.getWorld().spawn(loc, Cow.class)); + else if (r > 0.33) _mobs.add(loc.getWorld().spawn(loc, Pig.class)); + else _mobs.add(loc.getWorld().spawn(loc, Chicken.class)); + } + + @EventHandler + public void BlockBreak(BlockBreakEvent event) + { + if (event.getPlayer().getGameMode() == GameMode.CREATIVE) + return; + + event.setCancelled(true); + } + + @EventHandler(priority = EventPriority.LOWEST) + public void Explosion(EntityExplodeEvent event) + { + event.blockList().clear(); + } + + @EventHandler + public void VineGrow(BlockSpreadEvent event) + { + event.setCancelled(true); + } + + @EventHandler + public void LeaveDecay(LeavesDecayEvent event) + { + event.setCancelled(true); + } + + @EventHandler + public void BlockPlace(BlockPlaceEvent event) + { + if (event.getPlayer().getGameMode() == GameMode.CREATIVE) + return; + + event.setCancelled(true); + } + + @EventHandler + public void BorderUpdate(UpdateEvent event) + { + if (event.getType() != UpdateType.SEC) + return; + + for (Player player : UtilServer.getPlayers()) + { + if (UtilMath.offset(player.getLocation(), Manager.GetSpawn()) > 200) + { + player.eject(); + player.leaveVehicle(); + player.teleport(Manager.GetSpawn()); + } + } + } + + @EventHandler(priority = EventPriority.LOW) + public void ItemPickup(PlayerPickupItemEvent event) + { + if (event.getPlayer().getGameMode() == GameMode.CREATIVE) + return; + + event.setCancelled(true); + } + + @EventHandler(priority = EventPriority.LOW) + public void ItemDrop(PlayerDropItemEvent event) + { + if (event.getPlayer().getGameMode() == GameMode.CREATIVE) + return; + + event.setCancelled(true); + } + + @EventHandler + public void UpdateWeather(UpdateEvent event) + { + if (event.getType() != UpdateType.SEC) + return; + + World world = UtilWorld.getWorld("world"); + world.setTime(6000); + world.setStorm(false); + } +} diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/tutorial/TutorialManager.java b/Plugins/Mineplex.Hub/src/mineplex/hub/tutorial/TutorialManager.java index 47be03097..7b3e5c82e 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/tutorial/TutorialManager.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/tutorial/TutorialManager.java @@ -22,7 +22,7 @@ import mineplex.core.task.TaskManager; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import mineplex.hub.HubManager; -import mineplex.hub.TextCreator; +import mineplex.hub.modules.TextManager; import mineplex.hub.tutorial.types.PartyTutorial; import mineplex.hub.tutorial.types.WelcomeTutorial; @@ -35,7 +35,7 @@ public class TutorialManager extends MiniPlugin protected DonationManager _donationManager; protected TaskManager _taskManager; - public TutorialManager(HubManager manager, DonationManager donation, TaskManager task, TextCreator text) + public TutorialManager(HubManager manager, DonationManager donation, TaskManager task, TextManager text) { super("Tutorial Manager", manager.GetPlugin()); diff --git a/Plugins/Mineplex.Hub/src/mineplex/hub/tutorial/types/WelcomeTutorial.java b/Plugins/Mineplex.Hub/src/mineplex/hub/tutorial/types/WelcomeTutorial.java index 30ae0d585..161106371 100644 --- a/Plugins/Mineplex.Hub/src/mineplex/hub/tutorial/types/WelcomeTutorial.java +++ b/Plugins/Mineplex.Hub/src/mineplex/hub/tutorial/types/WelcomeTutorial.java @@ -1,13 +1,13 @@ package mineplex.hub.tutorial.types; import mineplex.hub.HubManager; -import mineplex.hub.TextCreator; +import mineplex.hub.modules.TextManager; import mineplex.hub.tutorial.Tutorial; import mineplex.hub.tutorial.TutorialPhase; public class WelcomeTutorial extends Tutorial { - public WelcomeTutorial(HubManager manager, TextCreator text) + public WelcomeTutorial(HubManager manager, TextManager text) { super(manager, "Welcome Tutorial", 5000, "Hub_JoinTutorial"); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/deathtag/kits/KitAlphaChaser.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/deathtag/kits/KitAlphaChaser.java index 339c4eb3f..706707bd7 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/deathtag/kits/KitAlphaChaser.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/deathtag/kits/KitAlphaChaser.java @@ -14,6 +14,7 @@ import nautilus.game.arcade.kit.KitAvailability; import nautilus.game.arcade.kit.Perk; import nautilus.game.arcade.kit.SmashKit; import nautilus.game.arcade.kit.perks.PerkDamageSet; +import nautilus.game.arcade.kit.perks.PerkIronSkin; import nautilus.game.arcade.kit.perks.PerkKnockbackMultiplier; public class KitAlphaChaser extends SmashKit @@ -29,7 +30,8 @@ public class KitAlphaChaser extends SmashKit new Perk[] { new PerkDamageSet(6), - new PerkKnockbackMultiplier(0.5) + new PerkKnockbackMultiplier(0.5), + new PerkIronSkin(4) }, EntityType.SKELETON, new ItemStack(Material.IRON_AXE)); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/deathtag/kits/KitChaser.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/deathtag/kits/KitChaser.java index b4f4c8551..935e411bd 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/deathtag/kits/KitChaser.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/deathtag/kits/KitChaser.java @@ -13,6 +13,7 @@ import nautilus.game.arcade.kit.KitAvailability; import nautilus.game.arcade.kit.Perk; import nautilus.game.arcade.kit.SmashKit; import nautilus.game.arcade.kit.perks.PerkDamageSet; +import nautilus.game.arcade.kit.perks.PerkIronSkin; public class KitChaser extends SmashKit { @@ -26,7 +27,8 @@ public class KitChaser extends SmashKit new Perk[] { - new PerkDamageSet(4) + new PerkDamageSet(4), + new PerkIronSkin(2) }, EntityType.SKELETON, new ItemStack(Material.IRON_AXE)); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/dragonescape/DragonEscape.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/dragonescape/DragonEscape.java index 26afb99c0..06bc6396d 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/dragonescape/DragonEscape.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/dragonescape/DragonEscape.java @@ -96,6 +96,14 @@ public class DragonEscape extends SoloGame bestDist = dist; } } + + //Ignore Close + if (bestDist < 6 && WorldData.GetDataLocs("BLACK").size() > 1) + { + System.out.println("Ignoring Node"); + WorldData.GetDataLocs("BLACK").remove(best); + continue; + } _waypoints.add(best); WorldData.GetDataLocs("BLACK").remove(best); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/dragonescape/DragonEscapeData.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/dragonescape/DragonEscapeData.java index 223657ff3..11542178c 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/dragonescape/DragonEscapeData.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/dragonescape/DragonEscapeData.java @@ -1,9 +1,11 @@ package nautilus.game.arcade.game.games.dragonescape; import mineplex.core.common.util.UtilAlg; +import mineplex.core.common.util.UtilMath; import org.bukkit.Location; import org.bukkit.entity.EnderDragon; +import org.bukkit.entity.Player; import org.bukkit.util.Vector; public class DragonEscapeData @@ -38,10 +40,28 @@ public class DragonEscapeData { Turn(); - double timeSpeed = 0.16 + (System.currentTimeMillis() - Host.GetStateTime())/3000000d; - //System.out.println(timeSpeed); - Location.add(Velocity.clone().multiply(timeSpeed)); + //Distance Boost + double dist = 0; + for (Player player : Host.GetPlayers(true)) + { + double offset = UtilMath.offset(Location, player.getLocation()); + + if (offset < dist || dist == -1) + { + dist = offset; + } + } + + //Speed + double speed = 0.16; //+ (System.currentTimeMillis() - Host.GetStateTime())/2000000d; + + speed += (System.currentTimeMillis() - Host.GetStateTime())/1000d * 0.001; + + if (dist > 10) + speed += (dist-10) * 0.001; + + Location.add(Velocity.clone().multiply(speed)); Location.add(0, -Pitch, 0); Location.setPitch(-1 * Pitch); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkDisruptor.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkDisruptor.java index 488c71150..591b26382 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkDisruptor.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/kit/perks/PerkDisruptor.java @@ -123,8 +123,10 @@ public class PerkDisruptor extends Perk _tntMap.remove(event.getItem()); event.getItem().remove(); - event.getPlayer().setVelocity(new Vector(0,0.3,0)); + event.getPlayer().setVelocity(new Vector(0,0.5,0)); event.getPlayer().getWorld().playSound(event.getPlayer().getLocation(), Sound.EXPLODE, 1f, 2f); event.getPlayer().playEffect(EntityEffect.HURT); + + event.getPlayer().setSprinting(false); } }