package com.github.jamesnorris.ablockalypse.queue.inherent; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.block.Block; import org.bukkit.entity.Player; import org.bukkit.event.Event.Result; import org.bukkit.event.block.Action; import org.bukkit.event.player.PlayerInteractEvent; import com.github.jamesnorris.ablockalypse.Ablockalypse; import com.github.jamesnorris.ablockalypse.DataContainer; import com.github.jamesnorris.ablockalypse.aspect.Game; import com.github.jamesnorris.ablockalypse.aspect.Teleporter; import com.github.jamesnorris.ablockalypse.queue.QueuedPlayerInteractData; public class QueuedTeleporterCreation extends QueuedPlayerInteractData { private final String gameName; private Location mLoc; private boolean mainframe = false, complete = false; private DataContainer data = Ablockalypse.getData(); public QueuedTeleporterCreation(String playerName, String gameName, boolean mainframe) { super(playerName); this.gameName = gameName; this.mainframe = mainframe; Bukkit.getPlayer(playerName).sendMessage(ChatColor.GRAY + "Right click a block to turn it into a " + (mainframe ? "mainframe" : "teleporter") + "."); } @Override public boolean isCompatible(PlayerInteractEvent event) { if (mLoc != null) { return event.getPlayer().getName().equals(key) && !data.isZAPlayer(event.getPlayer()) && (event.getAction() == Action.LEFT_CLICK_AIR || event.getAction() == Action.LEFT_CLICK_BLOCK); } return event.getClickedBlock() != null && event.getPlayer().getName().equals(key) && !data.isZAPlayer(event.getPlayer()) && event.getAction() == Action.RIGHT_CLICK_BLOCK; } @Override public boolean removeAfterRun() { return complete; } @Override public void run() { if (!hasImportedPIE()) { complete = true; return; } PlayerInteractEvent event = getPIE(); Player player = event.getPlayer(); Block block = event.getClickedBlock(); event.setUseInteractedBlock(Result.DENY); event.setUseItemInHand(Result.DENY); Game game = data.getGame(gameName, false); if (game == null) { complete = true; player.sendMessage(ChatColor.RED + "That game does not exist!"); return; } if (mainframe && mLoc != null) { complete = true; mLoc.setPitch(player.getLocation().getPitch()); mLoc.setYaw(player.getLocation().getYaw()); Teleporter tele = new Teleporter(game, mLoc); game.setMainframe(tele); tele.checkForPower(); player.sendMessage(ChatColor.GRAY + "You have set the mainframe for " + gameName); return; } if (data.isTeleporter(block.getLocation())) { complete = true; player.sendMessage(ChatColor.RED + "That is already a teleporter!"); return; } if (mainframe && mLoc == null) { mLoc = block.getLocation(); player.sendMessage(ChatColor.GRAY + "Now left click the air to set pitch and yaw."); return; } complete = true; new Teleporter(game, block.getLocation()); player.sendMessage(ChatColor.GRAY + "Teleporter created successfully!"); } }