From fba88ec231a1aa2a68868faa7e6436c4448da0b5 Mon Sep 17 00:00:00 2001 From: Cheese Date: Wed, 9 Dec 2015 08:19:55 +1100 Subject: [PATCH] mount stuff is fixed --- .../mineplex/core/mount/types/MountCart.java | 2 +- .../mineplex/core/mount/types/MountSlime.java | 98 ++++++++++--------- 2 files changed, 51 insertions(+), 49 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountCart.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountCart.java index 3abbf00e0..f5aa7f809 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountCart.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountCart.java @@ -75,7 +75,7 @@ public class MountCart extends Mount> if (event.getRightClicked() == null) return; - SingleEntityMountData mount = GetActive().get(event.getPlayer()); + SingleEntityMountData mount = getMountData(event.getRightClicked()); if(mount == null) return; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSlime.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSlime.java index 2a0b3831a..e8a1bd649 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSlime.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSlime.java @@ -30,11 +30,11 @@ public class MountSlime extends Mount> { super(manager, "Slime Mount", Material.SLIME_BALL, (byte)0, new String[] { - ChatColor.RESET + "Bounce around on your very", - ChatColor.RESET + "own personal slime friend!", + ChatColor.RESET + "Bounce around on your very", + ChatColor.RESET + "own personal slime friend!", }, 15000); - + KnownPackage = false; } @@ -42,153 +42,155 @@ public class MountSlime extends Mount> { player.leaveVehicle(); player.eject(); - + //Remove other mounts Manager.DeregisterAll(player); - + SingleEntityMountData mount = new SingleEntityMountData(player, player.getWorld().spawn(player.getLocation(), Slime.class)); mount.getEntity().setSize(2); - + mount.getEntity().setCustomName(player.getName() + "'s " + GetName()); //Inform UtilPlayer.message(player, F.main("Mount", "You spawned " + F.elem(GetName()) + ".")); - + //Store _active.put(player, mount); } - + public void Disable(Player player) { SingleEntityMountData mount = _active.remove(player); if (mount != null) { mount.remove(); - + //Inform UtilPlayer.message(player, F.main("Mount", "You despawned " + F.elem(GetName()) + ".")); - + Manager.removeActive(player); } } - + @EventHandler public void interactMount(PlayerInteractEntityEvent event) { if (event.getRightClicked() == null) return; - - if (!GetActive().containsKey(event.getPlayer())) - return; - - if(!GetActive().get(event.getPlayer()).ownsMount(event.getPlayer())) - return; - + + SingleEntityMountData data = GetActive().get(event.getPlayer()); + + if(data == null) return; + + if(!data.ownsMount(event.getPlayer())) return; + + if(!data.isPartOfMount(event.getRightClicked())) return; + event.getPlayer().leaveVehicle(); event.getPlayer().eject(); - + event.getRightClicked().setPassenger(event.getPlayer()); } - + @EventHandler public void target(EntityTargetEvent event) { if (!GetActive().containsKey(event.getTarget())) return; - + if (!GetActive().get(event.getTarget()).equals(event.getEntity())) event.setCancelled(true); } - + @EventHandler public void updateBounce(UpdateEvent event) { if (event.getType() != UpdateType.TICK) return; - + //Bounce for (SingleEntityMountData slimeData : GetActive().values()) { Slime slime = slimeData.getEntity(); - + if (slime.getPassenger() == null) { UtilEnt.setFakeHead(slime, false); continue; } - + if (!UtilEnt.isGrounded(slime)) continue; - + if (!(slime.getPassenger() instanceof Player)) continue; - + Player player = (Player)slime.getPassenger(); - + if (!Recharge.Instance.use(player, GetName(), 200, false, false)) continue; Vector dir = slime.getPassenger().getLocation().getDirection(); - + UtilAction.velocity(slime, dir, 1, true, 0, 0.4, 1, true); - + UtilEnt.CreatureForceLook(slime, 0, UtilAlg.GetYaw(dir)); - + slime.getWorld().playSound(slime.getLocation(), Sound.SLIME_WALK, 1f, 0.75f); } - + //Collide for (SingleEntityMountData slimeData : GetActive().values()) { Slime slime = slimeData.getEntity(); if (slime.getPassenger() == null) continue; - + if (!(slime.getPassenger() instanceof Player)) continue; - + Player player = (Player)slime.getPassenger(); - + if (!Recharge.Instance.usable(player, GetName() + " Collide")) continue; - + for (SingleEntityMountData otherSlime : GetActive().values()) { Slime other = otherSlime.getEntity(); - + if (other.equals(slime)) continue; - + if (other.getPassenger() == null) continue; - + if (!(other.getPassenger() instanceof Player)) continue; - + Player otherPlayer = (Player)other.getPassenger(); - + if (!Recharge.Instance.usable(otherPlayer, GetName() + " Collide")) continue; - + //Collide if (UtilMath.offset(slime, other) > 2) continue; - + Recharge.Instance.useForce(player, GetName() + " Collide", 500); Recharge.Instance.useForce(otherPlayer, GetName() + " Collide", 500); - + UtilAction.velocity(slime, UtilAlg.getTrajectory(other, slime), 1.2, false, 0, 0.8, 10, true); UtilAction.velocity(other, UtilAlg.getTrajectory(slime, other), 1.2, false, 0, 0.8, 10, true); - + slime.getWorld().playSound(slime.getLocation(), Sound.SLIME_ATTACK, 1f, 0.5f); slime.getWorld().playSound(slime.getLocation(), Sound.SLIME_WALK, 1f, 0.5f); other.getWorld().playSound(other.getLocation(), Sound.SLIME_WALK, 1f, 0.5f); - + slime.playEffect(EntityEffect.HURT); other.playEffect(EntityEffect.HURT); } } } - - + + }