diff --git a/src/net/theprogrammersworld/herobrine/AI/AICore.java b/src/net/theprogrammersworld/herobrine/AI/AICore.java index ad212c1..a285862 100644 --- a/src/net/theprogrammersworld/herobrine/AI/AICore.java +++ b/src/net/theprogrammersworld/herobrine/AI/AICore.java @@ -4,6 +4,9 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Random; +import net.minecraft.server.v1_8_R3.EntityPlayer; +import net.minecraft.server.v1_8_R3.PacketPlayOutPlayerInfo; +import net.minecraft.server.v1_8_R3.PacketPlayOutPlayerInfo.EnumPlayerInfoAction; import net.theprogrammersworld.herobrine.HerobrineAI; import net.theprogrammersworld.herobrine.Util; import net.theprogrammersworld.herobrine.AI.cores.Attack; @@ -30,6 +33,7 @@ import org.bukkit.Bukkit; import org.bukkit.Effect; import org.bukkit.Location; import org.bukkit.Material; +import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -121,7 +125,7 @@ public class AICore { AICore.PlayerTarget = allOnPlayers[playerRolled]; AICore.isTarget = true; setCoreTypeNow(Core.CoreType.START); - startAI(); + startAI(); } else { log.info("[HerobrineAI] Target is in the safe world! (" + allOnPlayers[playerRolled].getLocation().getWorld().getName() + ")"); findPlayer(); @@ -139,7 +143,8 @@ public class AICore { } if (currentCore == Core.CoreType.HAUNT) { ((Haunt) getCore(Core.CoreType.HAUNT)).StopHandler(); - } + } + removeHero(PlayerTarget); AICore._ticks = 0; AICore.isTarget = false; HerobrineAI.HerobrineHP = HerobrineAI.HerobrineMaxHP; @@ -161,9 +166,11 @@ public class AICore { public void startAI() { if (AICore.PlayerTarget.isOnline() && AICore.isTarget) { + if (!AICore.PlayerTarget.isDead()){ final Object[] data = { AICore.PlayerTarget }; - final int chance = new Random().nextInt(100); + final int chance = new Random().nextInt(100); + showHero(PlayerTarget); if (chance <= 10) { if (HerobrineAI.getPluginCore().getConfigDB().UseGraveyardWorld) { AICore.log.info("[Herobrine] Teleporting " + PlayerTarget.getDisplayName() + " to Herobrine's Graveyard."); @@ -183,17 +190,20 @@ public class AICore { } public CoreResult setAttackTarget(final Player player) { - final Object[] data = { player }; + final Object[] data = { player }; + showHero(player); return getCore(Core.CoreType.ATTACK).runCore(data); } - + public CoreResult setHauntTarget(final Player player) { final Object[] data = { player }; + showHero(player); return getCore(Core.CoreType.HAUNT).runCore(data); } public void graveyardTeleport(final Player player) { if (player.isOnline()) { + showHero(player); cancelTarget(Core.CoreType.ANY); Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(AICore.plugin, new Runnable() { @Override @@ -205,6 +215,18 @@ public class AICore { } } + private void removeHero(Player p){ + //make hero invisible + EntityPlayer pcon = ((CraftPlayer) p).getHandle(); + pcon.playerConnection.sendPacket(new PacketPlayOutPlayerInfo(EnumPlayerInfoAction.REMOVE_PLAYER, HerobrineAI.herobrineNPC.getNMSEntity())); + } + + private void showHero(Player p){ + //make hero visible + EntityPlayer pcon = ((CraftPlayer) p).getHandle(); + pcon.playerConnection.sendPacket(new PacketPlayOutPlayerInfo(EnumPlayerInfoAction.ADD_PLAYER, HerobrineAI.herobrineNPC.getNMSEntity())); + } + public void playerCallTotem(final Player player) { final String playername = player.getName(); final Location loc = player.getLocation(); diff --git a/src/net/theprogrammersworld/herobrine/listeners/PlayerListener.java b/src/net/theprogrammersworld/herobrine/listeners/PlayerListener.java index e9fc4ac..35310c5 100644 --- a/src/net/theprogrammersworld/herobrine/listeners/PlayerListener.java +++ b/src/net/theprogrammersworld/herobrine/listeners/PlayerListener.java @@ -3,9 +3,6 @@ package net.theprogrammersworld.herobrine.listeners; import java.util.ArrayList; import java.util.Random; -import net.minecraft.server.v1_8_R3.EntityPlayer; -import net.minecraft.server.v1_8_R3.PacketPlayOutPlayerInfo.EnumPlayerInfoAction; -import net.minecraft.server.v1_8_R3.PacketPlayOutPlayerInfo; import net.theprogrammersworld.herobrine.HerobrineAI; import net.theprogrammersworld.herobrine.AI.AICore; import net.theprogrammersworld.herobrine.AI.Core; @@ -16,7 +13,6 @@ import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Jukebox; -import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -27,7 +23,6 @@ import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.player.PlayerBedEnterEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.event.player.PlayerInteractEvent; -import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerKickEvent; import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerQuitEvent; @@ -45,9 +40,9 @@ public class PlayerListener implements Listener { private boolean canUse = false; public PlayerListener() { - this.equalsLoreS.add("Herobrine´s artifact"); + this.equalsLoreS.add("Herobrine´s artifact"); this.equalsLoreS.add("Sword of Lighting"); - this.equalsLoreA.add("Herobrine´s artifact"); + this.equalsLoreA.add("Herobrine´s artifact"); this.equalsLoreA.add("Apple of Death"); } @@ -181,27 +176,9 @@ public class PlayerListener implements Listener { HerobrineAI.getPluginCore().getAICore().cancelTarget(Core.CoreType.RANDOM_POSITION); HerobrineAI.herobrineNPC.moveTo(new Location(Bukkit.getServer().getWorlds().get(0), 0.0D, -20.0D, 0.0D)); } - } else { - if (HerobrineAI.getPluginCore().getConfigDB().useWorlds.contains(event.getTo().getWorld().getName()) || HerobrineAI.getPluginCore().getConfigDB().HerobrineWorldName.equalsIgnoreCase(event.getTo().getWorld().getName())){ - addHerobrine(event.getPlayer()); - } else { - delHerobrine(event.getPlayer()); - } - } + } } - - private void addHerobrine(Player player){ - EntityPlayer p = ((CraftPlayer) player).getHandle(); - p.playerConnection.sendPacket(new PacketPlayOutPlayerInfo(EnumPlayerInfoAction.ADD_PLAYER, HerobrineAI.herobrineNPC.getNMSEntity())); - } - - private void delHerobrine(Player player){ - EntityPlayer p = ((CraftPlayer) player).getHandle(); - p.playerConnection.sendPacket(new PacketPlayOutPlayerInfo(EnumPlayerInfoAction.REMOVE_PLAYER, HerobrineAI.herobrineNPC.getNMSEntity())); - } - - - + @EventHandler public void onPlayerCommand(final PlayerCommandPreprocessEvent event) { if (event.getPlayer().getWorld() == Bukkit.getServer().getWorld(HerobrineAI.getPluginCore().getConfigDB().HerobrineWorldName) && !event.getPlayer().hasPermission("hb-ai.cmdblockbypass")) { @@ -228,17 +205,5 @@ public class PlayerListener implements Listener { player.teleport(new Location(Bukkit.getServer().getWorld(HerobrineAI.getPluginCore().getConfigDB().HerobrineWorldName), -2.49, 4.0, 10.69, -179.85f, 0.44999f)); } } - - @EventHandler - public void onJoin(PlayerJoinEvent event) { - if (HerobrineAI.getPluginCore().getConfigDB().useWorlds.contains(event.getPlayer().getWorld().getName()) || - HerobrineAI.getPluginCore().getConfigDB().HerobrineWorldName.equalsIgnoreCase(event.getPlayer().getWorld().getName())){ - addHerobrine(event.getPlayer()); - } - /* - EntityPlayer player = ((CraftPlayer) event.getPlayer()).getHandle(); - player.playerConnection.sendPacket(new PacketPlayOutPlayerInfo(EnumPlayerInfoAction.ADD_PLAYER, HerobrineAI.herobrineNPC.getNMSEntity())); - */ - } - + } \ No newline at end of file diff --git a/src/net/theprogrammersworld/herobrine/nms/NPC/entity/HumanNPC.java b/src/net/theprogrammersworld/herobrine/nms/NPC/entity/HumanNPC.java index 945e4c7..aeba330 100644 --- a/src/net/theprogrammersworld/herobrine/nms/NPC/entity/HumanNPC.java +++ b/src/net/theprogrammersworld/herobrine/nms/NPC/entity/HumanNPC.java @@ -94,7 +94,7 @@ public class HumanNPC { if (newYaw > 0.0D || newYaw < 180.0D){ ((EntityPlayer) getNMSEntity()).yaw = (float) (newYaw - 90.0); ((EntityPlayer) getNMSEntity()).pitch = (float) newPitch; - ((EntityPlayer) getNMSEntity()).aJ = (float) (newYaw - 90.0); + ((EntityPlayer) getNMSEntity()).aK = (float) (newYaw - 90.0); ((EntityPlayer) getNMSEntity()).aI = (float) (newYaw - 90.0); } } diff --git a/src/plugin.yml b/src/plugin.yml index 79c3282..7a45ea3 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -4,4 +4,5 @@ version: 1.2.2 commands: herobrine: description: Main command. - usage: /herobrine help \ No newline at end of file + usage: /herobrine help + aliases: [hero, hb-ai] \ No newline at end of file