From f2485854ef57d5ed3a100e453696f9b1aa179bb3 Mon Sep 17 00:00:00 2001 From: Mysticate Date: Wed, 7 Oct 2015 22:06:57 -0400 Subject: [PATCH] Improved spider. --- .../core/mount/types/MountSpider.java | 33 ++++++++++++++++--- 1 file changed, 28 insertions(+), 5 deletions(-) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSpider.java b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSpider.java index 6c8a22ef7..0bc73caea 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSpider.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/mount/types/MountSpider.java @@ -2,7 +2,9 @@ package mineplex.core.mount.types; import java.lang.reflect.Field; import java.util.ArrayList; +import java.util.HashSet; import java.util.Map.Entry; +import java.util.Set; import mineplex.core.common.util.C; import mineplex.core.common.util.F; @@ -24,6 +26,7 @@ import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import net.minecraft.server.v1_7_R4.EntityLiving; +import org.bukkit.Bukkit; import org.bukkit.GameMode; import org.bukkit.Material; import org.bukkit.Sound; @@ -150,6 +153,8 @@ public class MountSpider extends HorseMount } } + private Set _jumpCancel = new HashSet(); + @EventHandler(priority = EventPriority.LOW) public void doubleJump(PlayerToggleFlightEvent event) { @@ -168,6 +173,10 @@ public class MountSpider extends HorseMount DisguiseBase disguise = Manager.getDisguiseManager().getDisguise(player); if (disguise != null && ((disguise instanceof DisguiseChicken && !((DisguiseChicken)disguise).isBaby()) || disguise instanceof DisguiseBat || disguise instanceof DisguiseEnderman || disguise instanceof DisguiseWither)) return; + + Horse horse = GetActive().get(event.getPlayer()); + + _jumpCancel.remove(horse); event.setCancelled(true); player.setFlying(false); @@ -176,10 +185,10 @@ public class MountSpider extends HorseMount player.setAllowFlight(false); //Velocity - UtilAction.velocity(GetActive().get(event.getPlayer()), 1.4, 0.2, 1, true); + UtilAction.velocity(horse, 1.4, 0.38, 1, true); //Sound - player.playSound(player.getLocation(), Sound.SPIDER_IDLE, .4F, 1.0F); + player.playSound(horse.getLocation(), Sound.SPIDER_IDLE, .4F, 1.0F); } @EventHandler @@ -187,7 +196,7 @@ public class MountSpider extends HorseMount { for (Player player : GetActive().keySet()) { - Horse horse = GetActive().get(player); + final Horse horse = GetActive().get(player); if (!UtilEnt.isGrounded(horse)) continue; @@ -198,7 +207,7 @@ public class MountSpider extends HorseMount final boolean accessable = jump.isAccessible(); jump.setAccessible(true); - boolean isJumping = jump.getBoolean(player); + boolean isJumping = jump.getBoolean(((CraftPlayer) player).getHandle()); jump.setAccessible(accessable); @@ -211,7 +220,21 @@ public class MountSpider extends HorseMount //Not jumping anymore ((CraftPlayer) player).getHandle().f(false); - UtilAction.velocity(horse, new Vector(horse.getVelocity().getX(), 0.3, horse.getVelocity().getZ())); + _jumpCancel.add(horse); + + //Prevent jump effect when the mount double jumps + Bukkit.getScheduler().scheduleSyncDelayedTask(Manager.getPlugin(), new Runnable() + { + @Override + public void run() + { + if (!_jumpCancel.contains(horse)) + return; + + _jumpCancel.remove(horse); + UtilAction.velocity(horse, new Vector(horse.getVelocity().getX(), 0.5, horse.getVelocity().getZ()).multiply(horse.getVelocity().length())); + } + }, 5); } catch (Exception ex) {