Created
March 9, 2014 03:34
-
-
Save 97WaterPolo/9442546 to your computer and use it in GitHub Desktop.
Mage
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.AnniStuff.sigler; | |
import java.util.ArrayList; | |
import java.util.HashSet; | |
import java.util.List; | |
import java.util.UUID; | |
import org.bukkit.Bukkit; | |
import org.bukkit.ChatColor; | |
import org.bukkit.Effect; | |
import org.bukkit.Location; | |
import org.bukkit.Material; | |
import org.bukkit.Sound; | |
import org.bukkit.block.Block; | |
import org.bukkit.command.Command; | |
import org.bukkit.command.CommandExecutor; | |
import org.bukkit.command.CommandSender; | |
import org.bukkit.entity.Entity; | |
import org.bukkit.entity.FallingBlock; | |
import org.bukkit.entity.Fireball; | |
import org.bukkit.entity.HumanEntity; | |
import org.bukkit.entity.LivingEntity; | |
import org.bukkit.entity.Player; | |
import org.bukkit.entity.Snowball; | |
import org.bukkit.event.EventHandler; | |
import org.bukkit.event.Listener; | |
import org.bukkit.event.block.Action; | |
import org.bukkit.event.entity.EntityDamageByEntityEvent; | |
import org.bukkit.event.entity.EntityExplodeEvent; | |
import org.bukkit.event.inventory.InventoryClickEvent; | |
import org.bukkit.event.inventory.InventoryMoveItemEvent; | |
import org.bukkit.event.inventory.InventoryPickupItemEvent; | |
import org.bukkit.event.inventory.InventoryType; | |
import org.bukkit.event.player.PlayerInteractEvent; | |
import org.bukkit.event.player.PlayerPickupItemEvent; | |
import org.bukkit.inventory.Inventory; | |
import org.bukkit.inventory.ItemStack; | |
import org.bukkit.inventory.meta.ItemMeta; | |
import org.bukkit.metadata.FixedMetadataValue; | |
import org.bukkit.potion.PotionEffect; | |
import org.bukkit.potion.PotionEffectType; | |
import org.bukkit.scheduler.BukkitRunnable; | |
import org.bukkit.util.Vector; | |
@SuppressWarnings("unused") | |
public class Mage implements Listener, CommandExecutor | |
{ | |
public Main plugin; | |
public Mage(Main plugin) { | |
this.plugin = plugin; | |
} | |
public static Inventory spellbook = Bukkit.createInventory(null, 18, "" + ChatColor.RED + ChatColor.BOLD +"Magician's Book"); | |
static | |
{ | |
ItemStack fireball = SiglerAPI.createItem(Material.FIREBALL, "" + ChatColor.RED + ChatColor.BOLD + "Fire Ball", ChatColor.DARK_PURPLE + "Click to select the Fire Ball wand!", ""); | |
ItemStack icespike = SiglerAPI.createItem(Material.ICE, "" + ChatColor.AQUA + ChatColor.BOLD + "Ice Spike", ChatColor.DARK_PURPLE + "Click to select the Ice spike Wand!", ""); | |
ItemStack tornado = SiglerAPI.createItem(Material.WEB, "" + ChatColor.RED + ChatColor.BOLD + "Tornado", ChatColor.DARK_PURPLE + "Click to select the Tornado wand!", ""); | |
ItemStack earthquake = SiglerAPI.createItem(Material.DIRT, "" + ChatColor.RED + ChatColor.BOLD + "EarthQuake", ChatColor.DARK_PURPLE + "Click to select the EarthQuake wand!", ""); | |
spellbook.setItem(0, fireball); | |
spellbook.setItem(1, icespike); | |
spellbook.setItem(2, tornado); | |
spellbook.setItem(3, earthquake); | |
} | |
ItemStack fire = SiglerAPI.createItem(Material.STICK, "" + ChatColor.RED + ChatColor.BOLD + "Fire Wand", ChatColor.DARK_PURPLE + "Right click to send a fireball at an enemy!", "" + ChatColor.WHITE + ChatColor.ITALIC + "180 second cooldown!"); | |
ItemStack ice = SiglerAPI.createItem(Material.STICK, "" + ChatColor.AQUA + ChatColor.BOLD + "Ice Wand", ChatColor.DARK_PURPLE + "Right click to send a ice spike at an enemy!", "" + ChatColor.WHITE + ChatColor.ITALIC + "180 second cooldown!"); | |
ItemStack air = SiglerAPI.createItem(Material.STICK, "" + ChatColor.DARK_GRAY + ChatColor.BOLD + "Tornado Wand", ChatColor.DARK_PURPLE + "Right click to unleash the whirlwind!", "" + ChatColor.WHITE + ChatColor.ITALIC + "300 second cooldown!"); | |
ItemStack earth = SiglerAPI.createItem(Material.STICK, "" + ChatColor.GREEN + ChatColor.BOLD + "EarthQuake Wand", ChatColor.DARK_PURPLE + "Right click to unleash the Earth's rage!", "" + ChatColor.WHITE + ChatColor.ITALIC + "300 second cooldown!"); | |
ItemStack spellbookitem = SiglerAPI.createItem(Material.BOOK, "" + ChatColor.DARK_GREEN + ChatColor.BOLD + "Spell Book", ChatColor.DARK_PURPLE + "Right click to open the Spell Book!", ""); | |
@SuppressWarnings({ "deprecation", "static-access" }) | |
@EventHandler | |
public void useWand(PlayerInteractEvent event) | |
{ | |
Player player = event.getPlayer(); | |
if (player.getItemInHand().equals(spellbookitem) && event.getAction().equals(Action.RIGHT_CLICK_AIR)) | |
{ | |
player.openInventory(spellbook); | |
} | |
if (player.getItemInHand().equals(fire) && event.getAction().equals(Action.RIGHT_CLICK_AIR)) | |
{ | |
Fireball fireball = player.launchProjectile(Fireball.class); | |
fireball.setMetadata("FireBall", new FixedMetadataValue(plugin, player.getName())); | |
fireball.setTicksLived(100); | |
fireball.setIsIncendiary(false); | |
} | |
else if (player.getItemInHand().equals(ice) && event.getAction().equals(Action.RIGHT_CLICK_AIR)) | |
{ | |
Snowball snowball = player.launchProjectile(Snowball.class); | |
snowball.setMetadata("SnowBall", new FixedMetadataValue(plugin,player.getName())); | |
} | |
else if (player.getItemInHand().equals(air) && event.getAction().equals(Action.RIGHT_CLICK_AIR)) | |
{ | |
Block block = player.getTargetBlock(null, 25); | |
if (block.getType() == Material.DIRT || block.getType() == Material.GRASS) | |
{ | |
Location loc = block.getLocation().add(0, 1.5, 0); | |
player.sendMessage(ChatColor.DARK_PURPLE + "Tornado has suddenly occured!"); | |
TornadoResource.spawnTornado(plugin, loc, Material.WEB, (byte) 0, new Vector(1, 0, 1), 0.005, 25, (long) 7*20, false, false, player); | |
}else | |
{ | |
player.sendMessage(ChatColor.LIGHT_PURPLE + "This tornado is out of my abilities..."); | |
} | |
} | |
else if (player.getItemInHand().equals(earth) && event.getAction().equals(Action.RIGHT_CLICK_AIR)) | |
{ | |
String string = SiglerAPI.getPlayerDirection(player); | |
Location loc = player.getTargetBlock(null, 25).getLocation(); | |
if (loc.getBlock().getType().equals(Material.GRASS) || loc.getBlock().getType().equals(Material.DIRT) || loc.getBlock().getType().equals(Material.SAND)) | |
{ | |
player.sendMessage(ChatColor.DARK_PURPLE + "The ground trembles with power!"); | |
loc.setY(player.getLocation().getY() - 1.0D); | |
List<Location> list = SiglerAPI.getCone(loc, string); | |
player.getWorld().playEffect(player.getLocation(), Effect.ZOMBIE_DESTROY_DOOR, 1); | |
for (final Location l : list) { | |
if ((!l.getBlock().getType().equals(Material.AIR)) && (!l.getBlock().getType().equals(Material.BEDROCK)) && (!l.getBlock().getType().equals(Material.WATER)) && (!l.getBlock().getType().equals(Material.LAVA)) && (!l.getBlock().getType().equals(Material.CACTUS)) && (!l.getBlock().getType().equals(Material.CAKE_BLOCK)) && (!l.getBlock().getType().equals(Material.CROPS)) && (!l.getBlock().getType().equals(Material.TORCH)) && (!l.getBlock().getType().equals(Material.ENDER_PORTAL)) && (!l.getBlock().getType().equals(Material.MOB_SPAWNER)) && (!l.getBlock().getType().equals(Material.NETHER_WARTS)) && (!l.getBlock().getType().equals(Material.MELON_STEM)) && (!l.getBlock().getType().equals(Material.STATIONARY_LAVA)) && (!l.getBlock().getType().equals(Material.STATIONARY_WATER))) | |
{ | |
for (Entity nearby : SiglerAPI.getNearbyEntities(l, 5)) | |
{ | |
if (nearby instanceof Player) | |
{ | |
Player allie = (Player) nearby; | |
if (plugin.red.hasPlayer(player) && !plugin.red.hasPlayer(allie)) | |
{ | |
nearby.setVelocity(new Vector(0, 1.2, 0)); | |
} | |
else if (plugin.blue.hasPlayer(player) && !plugin.blue.hasPlayer(allie)) | |
{ | |
nearby.setVelocity(new Vector(0, 1.2, 0)); | |
} | |
else if (plugin.yellow.hasPlayer(player) && !plugin.yellow.hasPlayer(allie)) | |
{ | |
nearby.setVelocity(new Vector(0, 1.2, 0)); | |
} | |
else if (plugin.green.hasPlayer(player) && !plugin.green.hasPlayer(allie)) | |
{ | |
nearby.setVelocity(new Vector(0, 1.2, 0)); | |
} | |
} | |
} | |
final Material mat = l.getBlock().getType(); | |
final FallingBlock b = l.getWorld().spawnFallingBlock(l, l.getBlock().getTypeId(), l.getBlock().getData()); | |
b.setVelocity(new Vector(0.0D, 0.75D, 0.0D)); | |
l.getBlock().setType(Material.AIR); | |
new BukkitRunnable() { | |
public void run() { | |
if (!b.isDead()) { | |
b.remove(); | |
} | |
l.getBlock().setType(mat); | |
} | |
} | |
.runTaskLater(plugin, 40L); | |
} | |
} | |
player.sendMessage("Earth Test"); | |
}else | |
{ | |
player.sendMessage(ChatColor.LIGHT_PURPLE + "That EarthQuake is just outside of my abilities..."); | |
} | |
}else | |
{ | |
return; | |
} | |
} | |
@SuppressWarnings("static-access") | |
@EventHandler | |
public void damageHandler(EntityDamageByEntityEvent event) | |
{ | |
if (event.getEntity() instanceof Player) | |
{ | |
Player target = (Player) event.getEntity(); | |
if (event.getDamager() instanceof Snowball && event.getDamager().hasMetadata("SnowBall")) | |
{ | |
Snowball snowball = (Snowball) event.getDamager(); | |
LivingEntity shooterog = snowball.getShooter(); | |
Player shooter = (Player) shooterog; | |
if (plugin.red.hasPlayer(shooter) && plugin.red.hasPlayer(target)) | |
{ | |
event.setCancelled(true); | |
} | |
else if (plugin.blue.hasPlayer(shooter) && plugin.blue.hasPlayer(target)) | |
{ | |
event.setCancelled(true); | |
} | |
else if (plugin.yellow.hasPlayer(shooter) && plugin.yellow.hasPlayer(target)) | |
{ | |
event.setCancelled(true); | |
} | |
else if (plugin.green.hasPlayer(shooter) && plugin.green.hasPlayer(target)) | |
{ | |
event.setCancelled(true); | |
}else | |
{ | |
shooter.sendMessage(ChatColor.AQUA + "You succesfully hit " + target.getName() + " with your Ice Spike!"); | |
target.sendMessage(ChatColor.AQUA + "" + shooter.getName() + " hit you with an Ice Spike!"); | |
event.setDamage(6); | |
target.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 120, 1)); | |
target.addPotionEffect(new PotionEffect(PotionEffectType.JUMP, 120, 128)); | |
target.playSound(target.getLocation(), Sound.GLASS, 1.0F, 1.0F); | |
} | |
} | |
else if (event.getDamager() instanceof Fireball && event.getDamager().hasMetadata("FireBall")) | |
{ | |
Fireball fireball = (Fireball) event.getDamager(); | |
LivingEntity shooterog = fireball.getShooter(); | |
Player shooter = (Player) shooterog; | |
if (plugin.red.hasPlayer(shooter) && plugin.red.hasPlayer(target)) | |
{ | |
event.setCancelled(true); | |
} | |
else if (plugin.blue.hasPlayer(shooter) && plugin.blue.hasPlayer(target)) | |
{ | |
event.setCancelled(true); | |
} | |
else if (plugin.yellow.hasPlayer(shooter) && plugin.yellow.hasPlayer(target)) | |
{ | |
event.setCancelled(true); | |
} | |
else if (plugin.green.hasPlayer(shooter) && plugin.green.hasPlayer(target)) | |
{ | |
event.setCancelled(true); | |
}else | |
{ | |
shooter.sendMessage(ChatColor.RED + "You succesfully hit " + target.getName() + " with your Fire Ball!"); | |
target.sendMessage(ChatColor.RED + "" + shooter.getName() + " hit you with an Fire Ball!"); | |
event.setDamage(4); | |
target.setFireTicks(80); | |
target.playSound(target.getLocation(), Sound.FIRE, 1.0F, 1.0F); | |
} | |
} | |
} | |
if (event.getEntity() instanceof Player && event.getDamager() instanceof Player) | |
{ | |
Player player = (Player) event.getDamager(); | |
Player allie = (Player) event.getEntity(); | |
if (plugin.red.hasPlayer(player) && plugin.red.hasPlayer(allie)) | |
{ | |
event.setCancelled(true); | |
} | |
else if (plugin.blue.hasPlayer(player) && plugin.blue.hasPlayer(allie)) | |
{ | |
event.setCancelled(true); | |
} | |
else if (plugin.yellow.hasPlayer(player) && plugin.yellow.hasPlayer(allie)) | |
{ | |
event.setCancelled(true); | |
} | |
else if (plugin.green.hasPlayer(player) && plugin.green.hasPlayer(allie)) | |
{ | |
event.setCancelled(true); | |
} | |
else | |
{ | |
event.setCancelled(true); | |
} | |
} | |
} | |
@EventHandler | |
public void onentityExplode(EntityExplodeEvent event) | |
{ | |
if (event.getEntity() instanceof Fireball && event.getEntity().hasMetadata("FireBall")) | |
{ | |
event.setCancelled(true); | |
}else | |
{ | |
return; | |
} | |
} | |
@SuppressWarnings("deprecation") | |
@EventHandler | |
public void onInventoryClick(InventoryClickEvent event) | |
{ | |
final Player player = (Player) event.getWhoClicked(); // The player that clicked the item | |
ItemStack clicked = event.getCurrentItem(); // The item that was clicked | |
Inventory inventory = event.getInventory(); // The inventory that was clicked in | |
if (inventory.getName().equals(spellbook.getName())) // The inventory is our custom Inventory | |
{ | |
if (clicked.getType() == Material.FIREBALL) | |
{ | |
player.getInventory().remove(air); | |
player.getInventory().remove(earth); | |
player.getInventory().remove(ice); | |
player.getInventory().remove(fire); | |
player.getInventory().addItem(fire); | |
player.sendMessage(ChatColor.RED + "Fireball has been selected!"); | |
} | |
else if (clicked.getType() == Material.ICE) | |
{ | |
player.getInventory().remove(air); | |
player.getInventory().remove(earth); | |
player.getInventory().remove(fire); | |
player.getInventory().remove(ice); | |
player.getInventory().addItem(ice); | |
player.sendMessage(ChatColor.AQUA + "Ice Spike has been selected!"); | |
} | |
else if (clicked.getType() == Material.WEB) | |
{ | |
player.getInventory().remove(fire); | |
player.getInventory().remove(earth); | |
player.getInventory().remove(ice); | |
player.getInventory().remove(air); | |
player.getInventory().addItem(air); | |
player.sendMessage(ChatColor.DARK_GRAY + "Tornado has been selected!"); | |
} | |
else if (clicked.getType() == Material.DIRT) | |
{ | |
player.getInventory().remove(air); | |
player.getInventory().remove(fire); | |
player.getInventory().remove(ice); | |
player.getInventory().remove(earth); | |
player.getInventory().addItem(earth); | |
player.sendMessage(ChatColor.GRAY + "EarthQuake has been selected!"); | |
} | |
player.closeInventory(); | |
player.updateInventory(); | |
} | |
} | |
@EventHandler | |
public void onClick(InventoryClickEvent event) | |
{ | |
final Player player = (Player) event.getWhoClicked(); | |
InventoryType topType = event.getView().getTopInventory().getType(); | |
if(event.getCurrentItem().getType() == Material.IRON_SWORD || event.getCurrentItem().getType() == Material.DIAMOND_SWORD) | |
{ | |
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(this.plugin, new Runnable() | |
{ | |
@SuppressWarnings("deprecation") | |
@Override | |
public void run() | |
{player.updateInventory(); player.closeInventory();} | |
}, 1L); | |
event.setCancelled(true); | |
} | |
} | |
@EventHandler | |
public void swordPickup(PlayerPickupItemEvent event) | |
{ | |
if (event.getItem().getItemStack().getType() == Material.IRON_SWORD || event.getItem().getItemStack().getType() == Material.DIAMOND_SWORD) | |
{ | |
event.setCancelled(true); | |
} | |
} | |
@SuppressWarnings("static-access") | |
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) | |
{ | |
final Player player = (Player) sender; | |
if (cmd.getName().equalsIgnoreCase("mage")) | |
{ | |
player.getInventory().addItem(spellbookitem); | |
player.getInventory().addItem(fire); | |
player.getInventory().addItem(ice); | |
player.getInventory().addItem(air); | |
player.getInventory().addItem(earth); | |
player.getInventory().addItem(new ItemStack(Material.STICK, 1)); | |
} | |
if (cmd.getName().equalsIgnoreCase("team")) | |
{ | |
if (args.length == 0) | |
{ | |
player.sendMessage("Wrong Context"); | |
}else | |
{ | |
if (args[0].equalsIgnoreCase("red")) | |
{ | |
plugin.red.addPlayer(player); | |
player.sendMessage("Joined red"); | |
Bukkit.broadcastMessage("Red"); | |
} | |
else if (args[0].equalsIgnoreCase("blue")) | |
{ | |
plugin.blue.addPlayer(player); | |
player.sendMessage("Joined blue"); | |
Bukkit.broadcastMessage("Blue"); | |
} | |
else if (args[0].equalsIgnoreCase("yellow")) | |
{ | |
plugin.yellow.addPlayer(player); | |
player.sendMessage("Joined yellow"); | |
Bukkit.broadcastMessage("Yellow"); | |
} | |
else if (args[0].equalsIgnoreCase("green")) | |
{ | |
plugin.green.addPlayer(player); | |
player.sendMessage("Joined green"); | |
Bukkit.broadcastMessage("Green"); | |
} | |
} | |
} | |
return false; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment