Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.NevLo.SQTurrets_M;
- import java.util.logging.Level;
- import org.bukkit.Bukkit;
- import org.bukkit.ChatColor;
- import org.bukkit.Material;
- import org.bukkit.block.Block;
- import org.bukkit.block.BlockFace;
- import org.bukkit.block.Sign;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandSender;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.block.Action;
- import org.bukkit.event.block.BlockBreakEvent;
- import org.bukkit.event.block.BlockEvent;
- import org.bukkit.event.player.PlayerInteractEvent;
- import org.bukkit.plugin.java.JavaPlugin;
- import me.NevLo.SQTurrets_M.Types.Turret;
- public class SQTurrets extends JavaPlugin implements Listener{
- @Override
- public void onEnable(){
- Bukkit.getLogger().log(Level.INFO, "[SQTurrets] Lets get some Turrets up in here!");
- Bukkit.getPluginManager().registerEvents(this, this);
- }
- @Override
- public void onDisable(){
- Bukkit.getLogger().log(Level.INFO, "[SQTurrets] Thats all folks!");
- }
- public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
- if(cmd.getName().equalsIgnoreCase("hello")){
- sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cHello " + sender.getName()));
- return true;
- }
- return false;
- }
- @EventHandler
- public void onPlayerInteract(PlayerInteractEvent e){
- //e.getPlayer().sendMessage(e.getAction() + " " + e.getClickedBlock());
- if(e.getClickedBlock().getBlockData().getMaterial() == Material.WALL_SIGN && e.getAction() == Action.RIGHT_CLICK_BLOCK){
- Sign sign = (Sign) e.getClickedBlock().getState();
- //Makes a new turret
- if(sign.getLine(0).equalsIgnoreCase("[turret]")){
- //makes sure new turret matches structure
- if(matchesStruct(sign)){
- sign.setLine(0, ChatColor.BLUE + "Turret");
- sign.setLine(1, ChatColor.GREEN + "UNOCCUPIED");
- sign.update(true);
- return;
- }
- e.getPlayer().sendMessage(ChatColor.RED + "Improperly Built Turret!");
- }
- //checks to see if the player is trying to enter an existing turret
- if(sign.getLine(0).equalsIgnoreCase(ChatColor.BLUE + "Turret") && sign.getLine(1).equalsIgnoreCase(ChatColor.GREEN + "UNOCCUPIED")){
- //checks whether the turret is still a valid turret
- if(matchesStruct(sign)){
- //checks that the player has a clock in their hand/offhand
- if(e.getPlayer().getInventory().getItemInMainHand().getType() == Material.CLOCK ||
- e.getPlayer().getInventory().getItemInOffHand().getType() == Material.CLOCK){
- Turret.enter(e.getPlayer(), sign);
- return;
- }
- e.getPlayer().sendMessage("You must be holding a clock to enter a turret!");
- return;
- }
- e.getPlayer().sendMessage(ChatColor.RED + "Improperly Built Turret!");
- return;
- }
- //e.getPlayer().sendMessage("You right clicked a sign!");
- //Bukkit.getLogger().log(Level.INFO, "[SQTurrets] " + e.getPlayer() + " has clicked a sign");
- }
- if( e.getPlayer().getInventory().getItemInMainHand().getType() == Material.CLOCK ||
- e.getPlayer().getInventory().getItemInOffHand().getType() == Material.CLOCK &&
- e.getAction() == Action.RIGHT_CLICK_BLOCK &&
- isInTurret(e.getPlayer())){
- Turret t = getTurretType(e.getPlayer());
- t.exit(e.getPlayer());
- }
- if(e.getPlayer().getInventory().getItemInMainHand().getType() == Material.CLOCK &&
- e.getAction() == Action.LEFT_CLICK_BLOCK && isInTurret(e.getPlayer())){
- Turret t = getTurretType(e.getPlayer());
- if(t == null){
- return;
- }else{
- t.fire(e.getPlayer());
- }
- return;
- }
- }
- @EventHandler
- public static void onPlayerBreakEvent(BlockBreakEvent e){
- if(isInTurret(e.getPlayer())) e.setCancelled(true);
- }
- private Turret getTurretType(Player player) {
- Block b = player.getLocation().getBlock().getRelative(BlockFace.DOWN);
- BlockFace[] sloc = { BlockFace.WEST, BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH};
- for(BlockFace bf : sloc){
- //for(Turret t : turretTypes){
- if(b.getRelative(bf).getType() == Material.WALL_SIGN &&
- ((Sign) b.getRelative(bf).getState()).getLine(0).equalsIgnoreCase(ChatColor.BLUE + /*t.getName()*/ "Turret")){
- return new Turret();
- }
- //}
- }
- return null;
- }
- protected static boolean matchesStruct(Sign s){
- Block wool = Utils.getBlockBehindSign((org.bukkit.block.Block)s.getBlock());
- Block lamp = wool.getRelative(BlockFace.UP);
- Block glass = lamp.getRelative(BlockFace.UP);
- return (Utils.isWool(wool)) && (Utils.isLamp(lamp)) && (Utils.isGlass(glass));
- }
- public static boolean isInTurret(Player p){
- Block b = p.getLocation().getBlock().getRelative(BlockFace.DOWN);
- BlockFace s = null;
- BlockFace[] sloc = { BlockFace.WEST, BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH};
- for (BlockFace sf :sloc){
- if(b.getRelative(sf).getType() == Material.WALL_SIGN){
- s = sf;
- break;
- }
- }
- if(p.getLocation().getBlock().getType() != Material.GLOWSTONE ||
- p.getLocation().getBlock().getType() != Material.REDSTONE_LAMP){
- return false;
- }
- return false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement