turt2live

Untitled

Jul 29th, 2013
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.47 KB | None | 0 0
  1. package com.turt2live.bukkit.testing.leashapi;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5.  
  6. import org.bukkit.Bukkit;
  7. import org.bukkit.ChatColor;
  8. import org.bukkit.Material;
  9. import org.bukkit.block.Block;
  10. import org.bukkit.command.Command;
  11. import org.bukkit.command.CommandSender;
  12. import org.bukkit.entity.Entity;
  13. import org.bukkit.entity.EntityType;
  14. import org.bukkit.entity.Leash;
  15. import org.bukkit.entity.LivingEntity;
  16. import org.bukkit.entity.Player;
  17. import org.bukkit.event.EventHandler;
  18. import org.bukkit.event.Listener;
  19. import org.bukkit.event.block.BlockPlaceEvent;
  20. import org.bukkit.event.entity.EntityLeashedEvent;
  21. import org.bukkit.event.entity.EntityUnleashedByPlayerEvent;
  22. import org.bukkit.event.entity.EntityUnleashedEvent;
  23. import org.bukkit.plugin.java.JavaPlugin;
  24.  
  25. public class Main extends JavaPlugin implements Listener {
  26.  
  27.     private boolean releash = false;
  28.     private boolean cancel = false;
  29.     private boolean tick1 = false;
  30.  
  31.     public void onEnable() {
  32.         this.getServer().getPluginManager().registerEvents(this, this);
  33.     }
  34.  
  35.     @Override
  36.     public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
  37.         if (args.length > 0) {
  38.             if (args[0].equalsIgnoreCase("releash")) {
  39.                 releash = !releash;
  40.                 sender.sendMessage("Releashing: " + releash);
  41.             } else if (args[0].equalsIgnoreCase("cancel")) {
  42.                 cancel = !cancel;
  43.                 sender.sendMessage("Cancelling: " + cancel);
  44.             } else if (args[0].equalsIgnoreCase("tick")) {
  45.                 tick1 = !tick1;
  46.                 sender.sendMessage("Releashing (next tick): " + tick1);
  47.             } else if (args[0].equalsIgnoreCase("leashme")) {
  48.                 if (sender instanceof Player) {
  49.                     Player player = (Player) sender;
  50.                     doRevLeash(player);
  51.                 } else {
  52.                     sender.sendMessage(ChatColor.RED + "Idiot");
  53.                 }
  54.             } else if (args[0].equalsIgnoreCase("multi")) {
  55.                 if (sender instanceof Player) {
  56.                     Player player = (Player) sender;
  57.                     sender.sendMessage("Attempting to link 5 chickens to you");
  58.                     List<Entity> chickens = new ArrayList<Entity>();
  59.                     for (int i = 0; i < 5; i++) {
  60.                         chickens.add(player.getWorld().spawnEntity(player.getLocation(), EntityType.CHICKEN));
  61.                     }
  62.                     for (Entity chicken : chickens) {
  63.                         doLeash(chicken, player);
  64.                     }
  65.                     sender.sendMessage("Leashed!");
  66.                 } else {
  67.                     sender.sendMessage(ChatColor.RED + "Idiot");
  68.                 }
  69.             } else if (args[0].equalsIgnoreCase("double")) {
  70.                 if (sender instanceof Player) {
  71.                     Player player = (Player) sender;
  72.                     sender.sendMessage("Linking a pig to a chicken, then a chicken to a pig (same entities)");
  73.                     Entity chicken = player.getWorld().spawnEntity(player.getLocation(), EntityType.CHICKEN);
  74.                     Entity pig = player.getWorld().spawnEntity(player.getLocation(), EntityType.PIG);
  75.                     doLeash(pig, chicken);
  76.                     doLeash(chicken, pig);
  77.                     sender.sendMessage("Leashed!");
  78.                 } else {
  79.                     sender.sendMessage(ChatColor.RED + "Idiot");
  80.                 }
  81.             } else {
  82.                 sender.sendMessage(ChatColor.RED + "Options: /lapi (releash|cancel|tick|leashme|multi|double)");
  83.             }
  84.         } else {
  85.             sender.sendMessage(ChatColor.RED + "Options: /lapi (releash|cancel|tick|leashme|multi|double)");
  86.         }
  87.         return false;
  88.     }
  89.  
  90.     @EventHandler
  91.     public void onPlace(BlockPlaceEvent event) {
  92.         if (event.getBlock().getType() == Material.FENCE) {
  93.             // Is fence
  94.             Block fence = event.getBlock();
  95.             Entity leash = fence.getLocation().getWorld().spawnEntity(fence.getLocation(), EntityType.LEASH);
  96.             if (leash instanceof Leash) {
  97.                 Leash l = (Leash) leash;
  98.                 doLeash(l);
  99.                 event.getPlayer().sendMessage("Leashing you to the fence");
  100.                 doLeash(l, event.getPlayer());
  101.             }
  102.         }
  103.     }
  104.  
  105.     @EventHandler
  106.     public void onLeash(final EntityLeashedEvent event) {
  107.         Bukkit.broadcastMessage(ChatColor.GRAY + "LEASH EVENT");
  108.         Bukkit.broadcastMessage("Entity: " + event.getEntity() == null ? "NULL" : event.getEntity().getType().name());
  109.         Bukkit.broadcastMessage("Leasher: " + event.getLeasher() == null ? "NULL" : event.getLeasher().getName());
  110.         Bukkit.broadcastMessage("Holder: " + event.getLeashHolder() == null ? "NULL" : event.getLeashHolder().getType().name());
  111.         if (releash) {
  112.             Bukkit.broadcastMessage("Releashing...");
  113.             doLeash(event.getEntity());
  114.         }
  115.         if (cancel) {
  116.             Bukkit.broadcastMessage("CANCELLING");
  117.             event.setCancelled(true);
  118.         }
  119.         if (tick1) {
  120.             Bukkit.broadcastMessage("Releashing on next tick...");
  121.             getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
  122.                 public void run() {
  123.                     doLeash(event.getEntity());
  124.                 }
  125.             });
  126.         }
  127.     }
  128.  
  129.     @EventHandler
  130.     public void onLeash(final EntityUnleashedEvent event) {
  131.         if (event instanceof EntityUnleashedByPlayerEvent) {
  132.             byPlayer((EntityUnleashedByPlayerEvent) event);
  133.             return;
  134.         }
  135.         Bukkit.broadcastMessage(ChatColor.GRAY + "UN LEASH EVENT");
  136.         Bukkit.broadcastMessage("Entity: " + event.getEntity() == null ? "NULL" : event.getEntity().getType().name());
  137.         Bukkit.broadcastMessage("Reason: " + event.getReason() == null ? "NULL" : event.getReason().name());
  138.         if (releash) {
  139.             Bukkit.broadcastMessage("Releashing...");
  140.             doLeash(event.getEntity());
  141.         }
  142.         if (tick1) {
  143.             Bukkit.broadcastMessage("Releashing on next tick...");
  144.             getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
  145.                 public void run() {
  146.                     doLeash(event.getEntity());
  147.                 }
  148.             });
  149.         }
  150.     }
  151.  
  152.     private void byPlayer(final EntityUnleashedByPlayerEvent event) {
  153.         Bukkit.broadcastMessage(ChatColor.GRAY + "UN LEASH BY PLAYER EVENT");
  154.         Bukkit.broadcastMessage("Entity: " + event.getEntity() == null ? "NULL" : event.getEntity().getType().name());
  155.         Bukkit.broadcastMessage("Reason: " + event.getReason() == null ? "NULL" : event.getReason().name());
  156.         Bukkit.broadcastMessage("Player: " + event.getPlayer() == null ? "NULL" : event.getPlayer().getName());
  157.         if (releash) {
  158.             Bukkit.broadcastMessage("Releashing...");
  159.             doLeash(event.getEntity());
  160.         }
  161.         if (tick1) {
  162.             Bukkit.broadcastMessage("Releashing on next tick...");
  163.             getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
  164.                 public void run() {
  165.                     doLeash(event.getEntity());
  166.                 }
  167.             });
  168.         }
  169.     }
  170.  
  171.     private void doLeash(Entity entity) {
  172.         Bukkit.broadcastMessage(ChatColor.GRAY + "** Spawning test pig...");
  173.         Entity pig = entity.getWorld().spawnEntity(entity.getLocation(), EntityType.PIG);
  174.         doLeash(entity, pig);
  175.     }
  176.  
  177.     private void doRevLeash(Entity entity) {
  178.         Bukkit.broadcastMessage(ChatColor.GRAY + "** Spawning test pig...");
  179.         Entity pig = entity.getWorld().spawnEntity(entity.getLocation(), EntityType.PIG);
  180.         doLeash(pig, entity);
  181.     }
  182.  
  183.     private void doLeash(Entity entity, Entity other) {
  184.         Bukkit.broadcastMessage(ChatColor.GRAY + "** Leashing " + entity.getType().name() + " to " + other.getType().name());
  185.         if (entity instanceof LivingEntity && other instanceof LivingEntity) {
  186.             LivingEntity e1 = (LivingEntity) entity;
  187.             LivingEntity e2 = (LivingEntity) other;
  188.             boolean leashed = e1.leash(e2);
  189.             Bukkit.broadcastMessage("** Leashed: " + (leashed ? ChatColor.DARK_GREEN : ChatColor.DARK_RED) + "leashed");
  190.         } else {
  191.             Bukkit.broadcastMessage(ChatColor.DARK_RED + "** Failed: Not living");
  192.         }
  193.     }
  194.  
  195. }
Advertisement
Add Comment
Please, Sign In to add comment