mount stuff is fixed
This commit is contained in:
parent
2decc049c5
commit
fba88ec231
|
@ -75,7 +75,7 @@ public class MountCart extends Mount<SingleEntityMountData<Minecart>>
|
||||||
if (event.getRightClicked() == null)
|
if (event.getRightClicked() == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
SingleEntityMountData<Minecart> mount = GetActive().get(event.getPlayer());
|
SingleEntityMountData<Minecart> mount = getMountData(event.getRightClicked());
|
||||||
|
|
||||||
if(mount == null) return;
|
if(mount == null) return;
|
||||||
|
|
||||||
|
|
|
@ -30,11 +30,11 @@ public class MountSlime extends Mount<SingleEntityMountData<Slime>>
|
||||||
{
|
{
|
||||||
super(manager, "Slime Mount", Material.SLIME_BALL, (byte)0, new String[]
|
super(manager, "Slime Mount", Material.SLIME_BALL, (byte)0, new String[]
|
||||||
{
|
{
|
||||||
ChatColor.RESET + "Bounce around on your very",
|
ChatColor.RESET + "Bounce around on your very",
|
||||||
ChatColor.RESET + "own personal slime friend!",
|
ChatColor.RESET + "own personal slime friend!",
|
||||||
},
|
},
|
||||||
15000);
|
15000);
|
||||||
|
|
||||||
KnownPackage = false;
|
KnownPackage = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,153 +42,155 @@ public class MountSlime extends Mount<SingleEntityMountData<Slime>>
|
||||||
{
|
{
|
||||||
player.leaveVehicle();
|
player.leaveVehicle();
|
||||||
player.eject();
|
player.eject();
|
||||||
|
|
||||||
//Remove other mounts
|
//Remove other mounts
|
||||||
Manager.DeregisterAll(player);
|
Manager.DeregisterAll(player);
|
||||||
|
|
||||||
SingleEntityMountData<Slime> mount = new SingleEntityMountData<Slime>(player, player.getWorld().spawn(player.getLocation(), Slime.class));
|
SingleEntityMountData<Slime> mount = new SingleEntityMountData<Slime>(player, player.getWorld().spawn(player.getLocation(), Slime.class));
|
||||||
mount.getEntity().setSize(2);
|
mount.getEntity().setSize(2);
|
||||||
|
|
||||||
mount.getEntity().setCustomName(player.getName() + "'s " + GetName());
|
mount.getEntity().setCustomName(player.getName() + "'s " + GetName());
|
||||||
|
|
||||||
//Inform
|
//Inform
|
||||||
UtilPlayer.message(player, F.main("Mount", "You spawned " + F.elem(GetName()) + "."));
|
UtilPlayer.message(player, F.main("Mount", "You spawned " + F.elem(GetName()) + "."));
|
||||||
|
|
||||||
//Store
|
//Store
|
||||||
_active.put(player, mount);
|
_active.put(player, mount);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Disable(Player player)
|
public void Disable(Player player)
|
||||||
{
|
{
|
||||||
SingleEntityMountData<Slime> mount = _active.remove(player);
|
SingleEntityMountData<Slime> mount = _active.remove(player);
|
||||||
if (mount != null)
|
if (mount != null)
|
||||||
{
|
{
|
||||||
mount.remove();
|
mount.remove();
|
||||||
|
|
||||||
//Inform
|
//Inform
|
||||||
UtilPlayer.message(player, F.main("Mount", "You despawned " + F.elem(GetName()) + "."));
|
UtilPlayer.message(player, F.main("Mount", "You despawned " + F.elem(GetName()) + "."));
|
||||||
|
|
||||||
Manager.removeActive(player);
|
Manager.removeActive(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void interactMount(PlayerInteractEntityEvent event)
|
public void interactMount(PlayerInteractEntityEvent event)
|
||||||
{
|
{
|
||||||
if (event.getRightClicked() == null)
|
if (event.getRightClicked() == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!GetActive().containsKey(event.getPlayer()))
|
SingleEntityMountData<Slime> data = GetActive().get(event.getPlayer());
|
||||||
return;
|
|
||||||
|
if(data == null) return;
|
||||||
if(!GetActive().get(event.getPlayer()).ownsMount(event.getPlayer()))
|
|
||||||
return;
|
if(!data.ownsMount(event.getPlayer())) return;
|
||||||
|
|
||||||
|
if(!data.isPartOfMount(event.getRightClicked())) return;
|
||||||
|
|
||||||
event.getPlayer().leaveVehicle();
|
event.getPlayer().leaveVehicle();
|
||||||
event.getPlayer().eject();
|
event.getPlayer().eject();
|
||||||
|
|
||||||
event.getRightClicked().setPassenger(event.getPlayer());
|
event.getRightClicked().setPassenger(event.getPlayer());
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void target(EntityTargetEvent event)
|
public void target(EntityTargetEvent event)
|
||||||
{
|
{
|
||||||
if (!GetActive().containsKey(event.getTarget()))
|
if (!GetActive().containsKey(event.getTarget()))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!GetActive().get(event.getTarget()).equals(event.getEntity()))
|
if (!GetActive().get(event.getTarget()).equals(event.getEntity()))
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void updateBounce(UpdateEvent event)
|
public void updateBounce(UpdateEvent event)
|
||||||
{
|
{
|
||||||
if (event.getType() != UpdateType.TICK)
|
if (event.getType() != UpdateType.TICK)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//Bounce
|
//Bounce
|
||||||
for (SingleEntityMountData<Slime> slimeData : GetActive().values())
|
for (SingleEntityMountData<Slime> slimeData : GetActive().values())
|
||||||
{
|
{
|
||||||
Slime slime = slimeData.getEntity();
|
Slime slime = slimeData.getEntity();
|
||||||
|
|
||||||
if (slime.getPassenger() == null)
|
if (slime.getPassenger() == null)
|
||||||
{
|
{
|
||||||
UtilEnt.setFakeHead(slime, false);
|
UtilEnt.setFakeHead(slime, false);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!UtilEnt.isGrounded(slime))
|
if (!UtilEnt.isGrounded(slime))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!(slime.getPassenger() instanceof Player))
|
if (!(slime.getPassenger() instanceof Player))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
Player player = (Player)slime.getPassenger();
|
Player player = (Player)slime.getPassenger();
|
||||||
|
|
||||||
if (!Recharge.Instance.use(player, GetName(), 200, false, false))
|
if (!Recharge.Instance.use(player, GetName(), 200, false, false))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
Vector dir = slime.getPassenger().getLocation().getDirection();
|
Vector dir = slime.getPassenger().getLocation().getDirection();
|
||||||
|
|
||||||
UtilAction.velocity(slime, dir, 1, true, 0, 0.4, 1, true);
|
UtilAction.velocity(slime, dir, 1, true, 0, 0.4, 1, true);
|
||||||
|
|
||||||
UtilEnt.CreatureForceLook(slime, 0, UtilAlg.GetYaw(dir));
|
UtilEnt.CreatureForceLook(slime, 0, UtilAlg.GetYaw(dir));
|
||||||
|
|
||||||
slime.getWorld().playSound(slime.getLocation(), Sound.SLIME_WALK, 1f, 0.75f);
|
slime.getWorld().playSound(slime.getLocation(), Sound.SLIME_WALK, 1f, 0.75f);
|
||||||
}
|
}
|
||||||
|
|
||||||
//Collide
|
//Collide
|
||||||
for (SingleEntityMountData<Slime> slimeData : GetActive().values())
|
for (SingleEntityMountData<Slime> slimeData : GetActive().values())
|
||||||
{
|
{
|
||||||
Slime slime = slimeData.getEntity();
|
Slime slime = slimeData.getEntity();
|
||||||
if (slime.getPassenger() == null)
|
if (slime.getPassenger() == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!(slime.getPassenger() instanceof Player))
|
if (!(slime.getPassenger() instanceof Player))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
Player player = (Player)slime.getPassenger();
|
Player player = (Player)slime.getPassenger();
|
||||||
|
|
||||||
if (!Recharge.Instance.usable(player, GetName() + " Collide"))
|
if (!Recharge.Instance.usable(player, GetName() + " Collide"))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
for (SingleEntityMountData<Slime> otherSlime : GetActive().values())
|
for (SingleEntityMountData<Slime> otherSlime : GetActive().values())
|
||||||
{
|
{
|
||||||
Slime other = otherSlime.getEntity();
|
Slime other = otherSlime.getEntity();
|
||||||
|
|
||||||
if (other.equals(slime))
|
if (other.equals(slime))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (other.getPassenger() == null)
|
if (other.getPassenger() == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (!(other.getPassenger() instanceof Player))
|
if (!(other.getPassenger() instanceof Player))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
Player otherPlayer = (Player)other.getPassenger();
|
Player otherPlayer = (Player)other.getPassenger();
|
||||||
|
|
||||||
if (!Recharge.Instance.usable(otherPlayer, GetName() + " Collide"))
|
if (!Recharge.Instance.usable(otherPlayer, GetName() + " Collide"))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
//Collide
|
//Collide
|
||||||
if (UtilMath.offset(slime, other) > 2)
|
if (UtilMath.offset(slime, other) > 2)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
Recharge.Instance.useForce(player, GetName() + " Collide", 500);
|
Recharge.Instance.useForce(player, GetName() + " Collide", 500);
|
||||||
Recharge.Instance.useForce(otherPlayer, 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(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);
|
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_ATTACK, 1f, 0.5f);
|
||||||
slime.getWorld().playSound(slime.getLocation(), Sound.SLIME_WALK, 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);
|
other.getWorld().playSound(other.getLocation(), Sound.SLIME_WALK, 1f, 0.5f);
|
||||||
|
|
||||||
slime.playEffect(EntityEffect.HURT);
|
slime.playEffect(EntityEffect.HURT);
|
||||||
other.playEffect(EntityEffect.HURT);
|
other.playEffect(EntityEffect.HURT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue