Merged in FabioZumbi12/herobrine-for-bukkit-or-spigot (pull request #5)

Fix hero look for player and name on TabList
This commit is contained in:
David Berdik 2015-10-27 15:30:43 -04:00
commit bf9e300bb7
4 changed files with 35 additions and 47 deletions

View File

@ -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();

View File

@ -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()));
*/
}
}

View File

@ -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);
}
}

View File

@ -4,4 +4,5 @@ version: 1.2.2
commands:
herobrine:
description: Main command.
usage: /herobrine help
usage: /herobrine help
aliases: [hero, hb-ai]