package com.github.jamesnorris.ablockalypse.event.bukkit; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerToggleSneakEvent; import org.bukkit.inventory.ItemStack; import com.github.jamesnorris.ablockalypse.Ablockalypse; import com.github.jamesnorris.ablockalypse.DataContainer; import com.github.jamesnorris.ablockalypse.aspect.Barrier; import com.github.jamesnorris.ablockalypse.aspect.Claymore; import com.github.jamesnorris.ablockalypse.aspect.Grenade; import com.github.jamesnorris.ablockalypse.aspect.MysteryBox; import com.github.jamesnorris.ablockalypse.aspect.Teleporter; import com.github.jamesnorris.ablockalypse.aspect.ZAPlayer; import com.github.jamesnorris.ablockalypse.threading.inherent.LastStandPickupTask; import com.github.jamesnorris.ablockalypse.threading.inherent.TeleportTask; public class PlayerToggleSneak implements Listener { private DataContainer data = Ablockalypse.getData(); /* Called when a player changes from walking to sneaking. * Used mostly for triggering shift interact objects. */ @EventHandler(priority = EventPriority.HIGHEST) public void PTSE(PlayerToggleSneakEvent event) { Player player = event.getPlayer(); Location loc = player.getLocation(); if (data.isZAPlayer(player)) { ZAPlayer zap = data.getZAPlayer(player); { Grenade closestGrenade = data.getClosest(Grenade.class, loc, 2, 3.5, 2); if (closestGrenade != null && closestGrenade.getGrenadeEntity() != null) { zap.giveItem(new ItemStack(Material.ENDER_PEARL, 1)); closestGrenade.setLive(false); closestGrenade.remove(); return; } ZAPlayer closestPlayer = data.getClosest(ZAPlayer.class, loc, 2, 3.5, 2); if (closestPlayer != null && closestPlayer.isInLastStand()) { new LastStandPickupTask(zap, closestPlayer, 20, 5, true);// can only be done once for each downed player return; } Teleporter closestTeleporter = data.getClosest(Teleporter.class, loc, 1, 2.5, 1); if (closestTeleporter != null && closestTeleporter.isPowered() && closestTeleporter.isLinked() && !zap.isTeleporting()) { closestTeleporter.playEffects(Teleporter.TELEPORT_EFFECTS); new TeleportTask(zap, 5, true);// only alllows one teleport thread per player return; } Claymore closestClaymore = data.getClosest(Claymore.class, loc, 2, 2, 2); if (closestClaymore != null) { Ablockalypse.getExternal().getItemFileManager().giveItem(player, new ItemStack(Material.FLOWER_POT_ITEM, 1)); closestClaymore.remove(); return; } Barrier closestBarrier = data.getClosest(Barrier.class, loc, 2, 3, 2); if (closestBarrier != null && closestBarrier.getHP() < 5) { closestBarrier.fixBarrier(zap); return; } MysteryBox closestBox = data.getClosest(MysteryBox.class, loc, 2, 3.5, 2); if (closestBox != null && closestBox.isShowingItem()) { closestBox.getLastShownZAPlayer().giveItem(closestBox.getLastShownItem()); closestBox.stopShowing(); return; } } } } }