Advertisement
NevLo

SQTNL

Aug 18th, 2018
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.19 KB | None | 0 0
  1. package me.NevLo.SQTurrets_M;
  2.  
  3. import java.util.logging.Level;
  4.  
  5. import org.bukkit.Bukkit;
  6. import org.bukkit.ChatColor;
  7. import org.bukkit.Material;
  8. import org.bukkit.block.Block;
  9. import org.bukkit.block.BlockFace;
  10. import org.bukkit.block.Sign;
  11. import org.bukkit.command.Command;
  12. import org.bukkit.command.CommandSender;
  13. import org.bukkit.entity.Player;
  14. import org.bukkit.event.EventHandler;
  15. import org.bukkit.event.Listener;
  16. import org.bukkit.event.block.Action;
  17. import org.bukkit.event.block.BlockBreakEvent;
  18. import org.bukkit.event.block.BlockEvent;
  19. import org.bukkit.event.player.PlayerInteractEvent;
  20. import org.bukkit.plugin.java.JavaPlugin;
  21.  
  22. import me.NevLo.SQTurrets_M.Types.Turret;
  23.  
  24. public class SQTurrets extends JavaPlugin implements Listener{
  25.     @Override
  26.     public void onEnable(){
  27.         Bukkit.getLogger().log(Level.INFO, "[SQTurrets] Lets get some Turrets up in here!");
  28.         Bukkit.getPluginManager().registerEvents(this, this);
  29.     }
  30.     @Override
  31.     public void onDisable(){
  32.         Bukkit.getLogger().log(Level.INFO, "[SQTurrets] Thats all folks!");
  33.     }
  34.    
  35.     public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
  36.         if(cmd.getName().equalsIgnoreCase("hello")){
  37.             sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&cHello " + sender.getName()));
  38.             return true;
  39.         }
  40.         return false;
  41.     }
  42.     @EventHandler
  43.     public void onPlayerInteract(PlayerInteractEvent e){
  44.         //e.getPlayer().sendMessage(e.getAction() + " " + e.getClickedBlock());
  45.         if(e.getClickedBlock().getBlockData().getMaterial() == Material.WALL_SIGN && e.getAction() == Action.RIGHT_CLICK_BLOCK){
  46.             Sign sign = (Sign) e.getClickedBlock().getState();
  47.             //Makes a new turret
  48.             if(sign.getLine(0).equalsIgnoreCase("[turret]")){
  49.                 //makes sure new turret matches structure
  50.                 if(matchesStruct(sign)){
  51.                     sign.setLine(0, ChatColor.BLUE + "Turret");
  52.                     sign.setLine(1, ChatColor.GREEN + "UNOCCUPIED");
  53.                     sign.update(true);
  54.                     return;
  55.                 }
  56.                 e.getPlayer().sendMessage(ChatColor.RED + "Improperly Built Turret!");
  57.                
  58.             }
  59.             //checks to see if the player is trying to enter an existing turret
  60.             if(sign.getLine(0).equalsIgnoreCase(ChatColor.BLUE + "Turret") && sign.getLine(1).equalsIgnoreCase(ChatColor.GREEN + "UNOCCUPIED")){
  61.                 //checks whether the turret is still a valid turret
  62.                 if(matchesStruct(sign)){
  63.                     //checks that the player has a clock in their hand/offhand
  64.                     if(e.getPlayer().getInventory().getItemInMainHand().getType() == Material.CLOCK ||
  65.                         e.getPlayer().getInventory().getItemInOffHand().getType() == Material.CLOCK){
  66.                         Turret.enter(e.getPlayer(), sign);
  67.                         return;
  68.                     }
  69.                     e.getPlayer().sendMessage("You must be holding a clock to enter a turret!");
  70.                     return;
  71.                    
  72.                 }
  73.                 e.getPlayer().sendMessage(ChatColor.RED + "Improperly Built Turret!");
  74.                 return;
  75.             }
  76.                
  77.             //e.getPlayer().sendMessage("You right clicked a sign!");
  78.             //Bukkit.getLogger().log(Level.INFO, "[SQTurrets] " + e.getPlayer() + " has clicked a sign");
  79.         }
  80.         if( e.getPlayer().getInventory().getItemInMainHand().getType() == Material.CLOCK    ||
  81.             e.getPlayer().getInventory().getItemInOffHand().getType() == Material.CLOCK     &&
  82.             e.getAction() == Action.RIGHT_CLICK_BLOCK                                       &&
  83.             isInTurret(e.getPlayer())){
  84.             Turret t = getTurretType(e.getPlayer());
  85.             t.exit(e.getPlayer());
  86.            
  87.            
  88.         }
  89.         if(e.getPlayer().getInventory().getItemInMainHand().getType() == Material.CLOCK &&
  90.                 e.getAction() == Action.LEFT_CLICK_BLOCK && isInTurret(e.getPlayer())){
  91.             Turret t = getTurretType(e.getPlayer());
  92.             if(t == null){
  93.                 return;
  94.             }else{
  95.             t.fire(e.getPlayer());
  96.             }
  97.             return;
  98.         }
  99.        
  100.        
  101.        
  102.        
  103.     }
  104.     @EventHandler
  105.     public static void onPlayerBreakEvent(BlockBreakEvent e){
  106.         if(isInTurret(e.getPlayer())) e.setCancelled(true);
  107.        
  108.        
  109.        
  110.     }
  111.    
  112.     private Turret getTurretType(Player player) {
  113.         Block b = player.getLocation().getBlock().getRelative(BlockFace.DOWN);
  114.         BlockFace[] sloc = { BlockFace.WEST, BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH};
  115.         for(BlockFace bf : sloc){
  116.             //for(Turret t : turretTypes){
  117.                 if(b.getRelative(bf).getType() == Material.WALL_SIGN &&
  118.                         ((Sign) b.getRelative(bf).getState()).getLine(0).equalsIgnoreCase(ChatColor.BLUE + /*t.getName()*/ "Turret")){
  119.                         return new Turret();
  120.                 }
  121.            
  122.            
  123.            
  124.             //}
  125.         }
  126.        
  127.        
  128.         return null;
  129.     }
  130.     protected static boolean matchesStruct(Sign s){
  131.         Block wool = Utils.getBlockBehindSign((org.bukkit.block.Block)s.getBlock());
  132.         Block lamp = wool.getRelative(BlockFace.UP);
  133.         Block glass = lamp.getRelative(BlockFace.UP);
  134.         return (Utils.isWool(wool)) && (Utils.isLamp(lamp)) && (Utils.isGlass(glass));
  135.     }
  136.     public static boolean isInTurret(Player p){
  137.        
  138.         Block b = p.getLocation().getBlock().getRelative(BlockFace.DOWN);
  139.         BlockFace s = null;
  140.         BlockFace[] sloc = { BlockFace.WEST, BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH};
  141.         for (BlockFace sf :sloc){
  142.             if(b.getRelative(sf).getType() == Material.WALL_SIGN){
  143.                 s = sf;
  144.                 break;
  145.             }
  146.         }
  147.         if(p.getLocation().getBlock().getType() != Material.GLOWSTONE ||
  148.                 p.getLocation().getBlock().getType() != Material.REDSTONE_LAMP){
  149.             return false;
  150.         }
  151.        
  152.        
  153.        
  154.        
  155.        
  156.         return false;
  157.     }
  158.    
  159.        
  160. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement