Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.turt2live.bukkit.testing.leashapi;
- import java.util.ArrayList;
- import java.util.List;
- import org.bukkit.Bukkit;
- import org.bukkit.ChatColor;
- import org.bukkit.Material;
- import org.bukkit.block.Block;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandSender;
- import org.bukkit.entity.Entity;
- import org.bukkit.entity.EntityType;
- import org.bukkit.entity.Leash;
- import org.bukkit.entity.LivingEntity;
- import org.bukkit.entity.Player;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.block.BlockPlaceEvent;
- import org.bukkit.event.entity.EntityLeashedEvent;
- import org.bukkit.event.entity.EntityUnleashedByPlayerEvent;
- import org.bukkit.event.entity.EntityUnleashedEvent;
- import org.bukkit.plugin.java.JavaPlugin;
- public class Main extends JavaPlugin implements Listener {
- private boolean releash = false;
- private boolean cancel = false;
- private boolean tick1 = false;
- public void onEnable() {
- this.getServer().getPluginManager().registerEvents(this, this);
- }
- @Override
- public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
- if (args.length > 0) {
- if (args[0].equalsIgnoreCase("releash")) {
- releash = !releash;
- sender.sendMessage("Releashing: " + releash);
- } else if (args[0].equalsIgnoreCase("cancel")) {
- cancel = !cancel;
- sender.sendMessage("Cancelling: " + cancel);
- } else if (args[0].equalsIgnoreCase("tick")) {
- tick1 = !tick1;
- sender.sendMessage("Releashing (next tick): " + tick1);
- } else if (args[0].equalsIgnoreCase("leashme")) {
- if (sender instanceof Player) {
- Player player = (Player) sender;
- doRevLeash(player);
- } else {
- sender.sendMessage(ChatColor.RED + "Idiot");
- }
- } else if (args[0].equalsIgnoreCase("multi")) {
- if (sender instanceof Player) {
- Player player = (Player) sender;
- sender.sendMessage("Attempting to link 5 chickens to you");
- List<Entity> chickens = new ArrayList<Entity>();
- for (int i = 0; i < 5; i++) {
- chickens.add(player.getWorld().spawnEntity(player.getLocation(), EntityType.CHICKEN));
- }
- for (Entity chicken : chickens) {
- doLeash(chicken, player);
- }
- sender.sendMessage("Leashed!");
- } else {
- sender.sendMessage(ChatColor.RED + "Idiot");
- }
- } else if (args[0].equalsIgnoreCase("double")) {
- if (sender instanceof Player) {
- Player player = (Player) sender;
- sender.sendMessage("Linking a pig to a chicken, then a chicken to a pig (same entities)");
- Entity chicken = player.getWorld().spawnEntity(player.getLocation(), EntityType.CHICKEN);
- Entity pig = player.getWorld().spawnEntity(player.getLocation(), EntityType.PIG);
- doLeash(pig, chicken);
- doLeash(chicken, pig);
- sender.sendMessage("Leashed!");
- } else {
- sender.sendMessage(ChatColor.RED + "Idiot");
- }
- } else {
- sender.sendMessage(ChatColor.RED + "Options: /lapi (releash|cancel|tick|leashme|multi|double)");
- }
- } else {
- sender.sendMessage(ChatColor.RED + "Options: /lapi (releash|cancel|tick|leashme|multi|double)");
- }
- return false;
- }
- @EventHandler
- public void onPlace(BlockPlaceEvent event) {
- if (event.getBlock().getType() == Material.FENCE) {
- // Is fence
- Block fence = event.getBlock();
- Entity leash = fence.getLocation().getWorld().spawnEntity(fence.getLocation(), EntityType.LEASH);
- if (leash instanceof Leash) {
- Leash l = (Leash) leash;
- doLeash(l);
- event.getPlayer().sendMessage("Leashing you to the fence");
- doLeash(l, event.getPlayer());
- }
- }
- }
- @EventHandler
- public void onLeash(final EntityLeashedEvent event) {
- Bukkit.broadcastMessage(ChatColor.GRAY + "LEASH EVENT");
- Bukkit.broadcastMessage("Entity: " + event.getEntity() == null ? "NULL" : event.getEntity().getType().name());
- Bukkit.broadcastMessage("Leasher: " + event.getLeasher() == null ? "NULL" : event.getLeasher().getName());
- Bukkit.broadcastMessage("Holder: " + event.getLeashHolder() == null ? "NULL" : event.getLeashHolder().getType().name());
- if (releash) {
- Bukkit.broadcastMessage("Releashing...");
- doLeash(event.getEntity());
- }
- if (cancel) {
- Bukkit.broadcastMessage("CANCELLING");
- event.setCancelled(true);
- }
- if (tick1) {
- Bukkit.broadcastMessage("Releashing on next tick...");
- getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
- public void run() {
- doLeash(event.getEntity());
- }
- });
- }
- }
- @EventHandler
- public void onLeash(final EntityUnleashedEvent event) {
- if (event instanceof EntityUnleashedByPlayerEvent) {
- byPlayer((EntityUnleashedByPlayerEvent) event);
- return;
- }
- Bukkit.broadcastMessage(ChatColor.GRAY + "UN LEASH EVENT");
- Bukkit.broadcastMessage("Entity: " + event.getEntity() == null ? "NULL" : event.getEntity().getType().name());
- Bukkit.broadcastMessage("Reason: " + event.getReason() == null ? "NULL" : event.getReason().name());
- if (releash) {
- Bukkit.broadcastMessage("Releashing...");
- doLeash(event.getEntity());
- }
- if (tick1) {
- Bukkit.broadcastMessage("Releashing on next tick...");
- getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
- public void run() {
- doLeash(event.getEntity());
- }
- });
- }
- }
- private void byPlayer(final EntityUnleashedByPlayerEvent event) {
- Bukkit.broadcastMessage(ChatColor.GRAY + "UN LEASH BY PLAYER EVENT");
- Bukkit.broadcastMessage("Entity: " + event.getEntity() == null ? "NULL" : event.getEntity().getType().name());
- Bukkit.broadcastMessage("Reason: " + event.getReason() == null ? "NULL" : event.getReason().name());
- Bukkit.broadcastMessage("Player: " + event.getPlayer() == null ? "NULL" : event.getPlayer().getName());
- if (releash) {
- Bukkit.broadcastMessage("Releashing...");
- doLeash(event.getEntity());
- }
- if (tick1) {
- Bukkit.broadcastMessage("Releashing on next tick...");
- getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
- public void run() {
- doLeash(event.getEntity());
- }
- });
- }
- }
- private void doLeash(Entity entity) {
- Bukkit.broadcastMessage(ChatColor.GRAY + "** Spawning test pig...");
- Entity pig = entity.getWorld().spawnEntity(entity.getLocation(), EntityType.PIG);
- doLeash(entity, pig);
- }
- private void doRevLeash(Entity entity) {
- Bukkit.broadcastMessage(ChatColor.GRAY + "** Spawning test pig...");
- Entity pig = entity.getWorld().spawnEntity(entity.getLocation(), EntityType.PIG);
- doLeash(pig, entity);
- }
- private void doLeash(Entity entity, Entity other) {
- Bukkit.broadcastMessage(ChatColor.GRAY + "** Leashing " + entity.getType().name() + " to " + other.getType().name());
- if (entity instanceof LivingEntity && other instanceof LivingEntity) {
- LivingEntity e1 = (LivingEntity) entity;
- LivingEntity e2 = (LivingEntity) other;
- boolean leashed = e1.leash(e2);
- Bukkit.broadcastMessage("** Leashed: " + (leashed ? ChatColor.DARK_GREEN : ChatColor.DARK_RED) + "leashed");
- } else {
- Bukkit.broadcastMessage(ChatColor.DARK_RED + "** Failed: Not living");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment