From 098ab1cd449c39f18b2d2010a5058acc1e087fc1 Mon Sep 17 00:00:00 2001 From: FabioZumbi12 Date: Fri, 6 Mar 2015 03:03:22 -0300 Subject: [PATCH] Added Artifact Apple. --- .../jakub1221/herobrineai/HerobrineAI.java | 4 +- .../herobrineai/listeners/PlayerListener.java | 103 ++++++++++++++++-- 2 files changed, 99 insertions(+), 8 deletions(-) diff --git a/src/org/jakub1221/herobrineai/HerobrineAI.java b/src/org/jakub1221/herobrineai/HerobrineAI.java index 2c6de97..ef15bd9 100644 --- a/src/org/jakub1221/herobrineai/HerobrineAI.java +++ b/src/org/jakub1221/herobrineai/HerobrineAI.java @@ -1,6 +1,8 @@ package org.jakub1221.herobrineai; import java.io.InputStream; +import java.util.HashMap; +import java.util.Map; import java.util.logging.Logger; import org.bukkit.Bukkit; @@ -43,7 +45,7 @@ public class HerobrineAI extends JavaPlugin implements Listener { private Support support; private EntityManager entMng; private NPCCore NPCCore; - + public Map PlayerApple = new HashMap(); public static HumanNPC herobrineNPC; public static long herobrineEntityID; public static int HerobrineHP = 200; diff --git a/src/org/jakub1221/herobrineai/listeners/PlayerListener.java b/src/org/jakub1221/herobrineai/listeners/PlayerListener.java index d284d19..ff9883d 100644 --- a/src/org/jakub1221/herobrineai/listeners/PlayerListener.java +++ b/src/org/jakub1221/herobrineai/listeners/PlayerListener.java @@ -1,5 +1,6 @@ package org.jakub1221.herobrineai.listeners; +import java.util.ArrayList; import java.util.Random; import net.minecraft.server.v1_8_R1.EntityPlayer; @@ -7,14 +8,17 @@ import net.minecraft.server.v1_8_R1.EnumPlayerInfoAction; import net.minecraft.server.v1_8_R1.PacketPlayOutPlayerInfo; import org.bukkit.Bukkit; +import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Jukebox; import org.bukkit.craftbukkit.v1_8_R1.entity.CraftPlayer; +import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; +import org.bukkit.event.block.Action; import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.player.PlayerBedEnterEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent; @@ -28,11 +32,88 @@ import org.bukkit.inventory.ItemStack; import org.jakub1221.herobrineai.HerobrineAI; import org.jakub1221.herobrineai.AI.AICore; import org.jakub1221.herobrineai.AI.Core; +import org.jakub1221.herobrineai.misc.ItemName; public class PlayerListener implements Listener { + private ArrayList equalsLoreS = new ArrayList(); + private ArrayList equalsLoreA = new ArrayList(); + private ArrayList LivingEntities = new ArrayList(); + private Location le_loc = null; + private Location p_loc = null; + private long timestamp = 0L; + private boolean canUse = false; + + public PlayerListener() { + this.equalsLoreS.add("Herobrine“s artifact"); + this.equalsLoreS.add("Sword of Lighting"); + this.equalsLoreA.add("Herobrine“s artifact"); + this.equalsLoreA.add("Apple of Death"); + } + @EventHandler public void onPlayerInteract(final PlayerInteractEvent event) { + if (((event.getAction() == Action.LEFT_CLICK_BLOCK) || (event.getAction() == Action.RIGHT_CLICK_BLOCK)) && + (event.getClickedBlock() != null) && (event.getPlayer().getItemInHand() != null)) + { + ItemStack itemInHand = event.getPlayer().getItemInHand(); + if ((event.getPlayer().getItemInHand().getType() != null) && + ((itemInHand.getType() == Material.DIAMOND_SWORD) || (itemInHand.getType() == Material.GOLDEN_APPLE)) && + (ItemName.getLore(itemInHand) != null)) { + if ((ItemName.getLore(itemInHand).containsAll(this.equalsLoreS)) && (HerobrineAI.getPluginCore().getConfigDB().UseArtifactSword)) + { + if (new Random().nextBoolean()) { + event.getPlayer().getLocation().getWorld().strikeLightning(event.getClickedBlock().getLocation()); + } + } + else if ((ItemName.getLore(itemInHand).containsAll(this.equalsLoreA)) && (HerobrineAI.getPluginCore().getConfigDB().UseArtifactApple)) + { + this.timestamp = (System.currentTimeMillis() / 1000L); + this.canUse = false; + if (HerobrineAI.getPluginCore().PlayerApple.containsKey(event.getPlayer())) + { + if (((Long)HerobrineAI.getPluginCore().PlayerApple.get(event.getPlayer())).longValue() < this.timestamp) + { + HerobrineAI.getPluginCore().PlayerApple.remove(event.getPlayer()); + this.canUse = true; + } + else + { + this.canUse = false; + } + } + else { + this.canUse = true; + } + if (this.canUse) + { + event.getPlayer().getWorld().createExplosion(event.getPlayer().getLocation(), 0.0F); + this.LivingEntities = ((ArrayList)event.getPlayer().getLocation().getWorld().getLivingEntities()); + HerobrineAI.getPluginCore().PlayerApple.put(event.getPlayer(), Long.valueOf(this.timestamp + 60L)); + for (int i = 0; i <= this.LivingEntities.size() - 1; i++) { + if ((!(this.LivingEntities.get(i) instanceof Player)) && (this.LivingEntities.get(i).getEntityId() != HerobrineAI.herobrineEntityID)) + { + this.le_loc = this.LivingEntities.get(i).getLocation(); + this.p_loc = event.getPlayer().getLocation(); + if ((this.le_loc.getBlockX() < this.p_loc.getBlockX() + 20) && (this.le_loc.getBlockX() > this.p_loc.getBlockX() - 20) && + (this.le_loc.getBlockY() < this.p_loc.getBlockY() + 10) && (this.le_loc.getBlockY() > this.p_loc.getBlockY() - 10) && + (this.le_loc.getBlockZ() < this.p_loc.getBlockZ() + 20) && (this.le_loc.getBlockZ() > this.p_loc.getBlockZ() - 20)) + { + event.getPlayer().getWorld().createExplosion(this.LivingEntities.get(i).getLocation(), 0.0F); + this.LivingEntities.get(i).damage(10000); + } + } + } + } + else + { + event.getPlayer().sendMessage(ChatColor.RED + "Apple of Death is recharging!"); + } + } + } + } + + if ((event.getClickedBlock() != null) && (event.getPlayer().getItemInHand() != null) && (event.getClickedBlock().getType() == Material.JUKEBOX)) { final ItemStack item = event.getPlayer().getItemInHand(); final Jukebox block = (Jukebox) event.getClickedBlock().getState(); @@ -86,13 +167,21 @@ public class PlayerListener implements Listener { @EventHandler(priority = EventPriority.HIGHEST) public void onPlayerTeleport(final PlayerTeleportEvent event) { if (event.getPlayer().getEntityId() == HerobrineAI.herobrineEntityID) { - if (event.getFrom().getWorld() != event.getTo().getWorld()) { - HerobrineAI.getPluginCore().removeHerobrine(); - HerobrineAI.getPluginCore().spawnHerobrine(event.getTo()); - event.setCancelled(true); - return; - } - } + if (event.getFrom().getWorld() != event.getTo().getWorld()) { + HerobrineAI.getPluginCore().removeHerobrine(); + HerobrineAI.getPluginCore().spawnHerobrine(event.getTo()); + event.setCancelled(true); + return; + } + if ((HerobrineAI.getPluginCore().getAICore().getCoreTypeNow() == Core.CoreType.RANDOM_POSITION) && + (HerobrineAI.herobrineNPC.getNMSEntity().getBukkitEntity().getLocation().getBlockX() > HerobrineAI.getPluginCore().getConfigDB().WalkingModeXRadius) && + (HerobrineAI.herobrineNPC.getNMSEntity().getBukkitEntity().getLocation().getBlockX() < -HerobrineAI.getPluginCore().getConfigDB().WalkingModeXRadius) && + (HerobrineAI.herobrineNPC.getNMSEntity().getBukkitEntity().getLocation().getBlockZ() > HerobrineAI.getPluginCore().getConfigDB().WalkingModeZRadius) && + (HerobrineAI.herobrineNPC.getNMSEntity().getBukkitEntity().getLocation().getBlockZ() < -HerobrineAI.getPluginCore().getConfigDB().WalkingModeZRadius)) { + HerobrineAI.getPluginCore().getAICore().cancelTarget(Core.CoreType.RANDOM_POSITION); + HerobrineAI.herobrineNPC.moveTo(new Location(Bukkit.getServer().getWorlds().get(0), 0.0D, -20.0D, 0.0D)); + } + } } @EventHandler