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.Arrays;
import java.util.Random; 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.HerobrineAI;
import net.theprogrammersworld.herobrine.Util; import net.theprogrammersworld.herobrine.Util;
import net.theprogrammersworld.herobrine.AI.cores.Attack; import net.theprogrammersworld.herobrine.AI.cores.Attack;
@ -30,6 +33,7 @@ import org.bukkit.Bukkit;
import org.bukkit.Effect; import org.bukkit.Effect;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
@ -140,6 +144,7 @@ public class AICore {
if (currentCore == Core.CoreType.HAUNT) { if (currentCore == Core.CoreType.HAUNT) {
((Haunt) getCore(Core.CoreType.HAUNT)).StopHandler(); ((Haunt) getCore(Core.CoreType.HAUNT)).StopHandler();
} }
removeHero(PlayerTarget);
AICore._ticks = 0; AICore._ticks = 0;
AICore.isTarget = false; AICore.isTarget = false;
HerobrineAI.HerobrineHP = HerobrineAI.HerobrineMaxHP; HerobrineAI.HerobrineHP = HerobrineAI.HerobrineMaxHP;
@ -161,9 +166,11 @@ public class AICore {
public void startAI() { public void startAI() {
if (AICore.PlayerTarget.isOnline() && AICore.isTarget) { if (AICore.PlayerTarget.isOnline() && AICore.isTarget) {
if (!AICore.PlayerTarget.isDead()){ if (!AICore.PlayerTarget.isDead()){
final Object[] data = { AICore.PlayerTarget }; 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 (chance <= 10) {
if (HerobrineAI.getPluginCore().getConfigDB().UseGraveyardWorld) { if (HerobrineAI.getPluginCore().getConfigDB().UseGraveyardWorld) {
AICore.log.info("[Herobrine] Teleporting " + PlayerTarget.getDisplayName() + " to Herobrine's Graveyard."); AICore.log.info("[Herobrine] Teleporting " + PlayerTarget.getDisplayName() + " to Herobrine's Graveyard.");
@ -184,16 +191,19 @@ public class AICore {
public CoreResult setAttackTarget(final Player player) { public CoreResult setAttackTarget(final Player player) {
final Object[] data = { player }; final Object[] data = { player };
showHero(player);
return getCore(Core.CoreType.ATTACK).runCore(data); return getCore(Core.CoreType.ATTACK).runCore(data);
} }
public CoreResult setHauntTarget(final Player player) { public CoreResult setHauntTarget(final Player player) {
final Object[] data = { player }; final Object[] data = { player };
showHero(player);
return getCore(Core.CoreType.HAUNT).runCore(data); return getCore(Core.CoreType.HAUNT).runCore(data);
} }
public void graveyardTeleport(final Player player) { public void graveyardTeleport(final Player player) {
if (player.isOnline()) { if (player.isOnline()) {
showHero(player);
cancelTarget(Core.CoreType.ANY); cancelTarget(Core.CoreType.ANY);
Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(AICore.plugin, new Runnable() { Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(AICore.plugin, new Runnable() {
@Override @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) { public void playerCallTotem(final Player player) {
final String playername = player.getName(); final String playername = player.getName();
final Location loc = player.getLocation(); final Location loc = player.getLocation();

View File

@ -3,9 +3,6 @@ package net.theprogrammersworld.herobrine.listeners;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Random; 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.HerobrineAI;
import net.theprogrammersworld.herobrine.AI.AICore; import net.theprogrammersworld.herobrine.AI.AICore;
import net.theprogrammersworld.herobrine.AI.Core; import net.theprogrammersworld.herobrine.AI.Core;
@ -16,7 +13,6 @@ import org.bukkit.ChatColor;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.Jukebox; import org.bukkit.block.Jukebox;
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
import org.bukkit.entity.LivingEntity; import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; 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.PlayerBedEnterEvent;
import org.bukkit.event.player.PlayerCommandPreprocessEvent; import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerKickEvent; import org.bukkit.event.player.PlayerKickEvent;
import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerQuitEvent;
@ -45,9 +40,9 @@ public class PlayerListener implements Listener {
private boolean canUse = false; private boolean canUse = false;
public PlayerListener() { public PlayerListener() {
this.equalsLoreS.add("Herobrine´s artifact"); this.equalsLoreS.add("Herobrine´s artifact");
this.equalsLoreS.add("Sword of Lighting"); this.equalsLoreS.add("Sword of Lighting");
this.equalsLoreA.add("Herobrine´s artifact"); this.equalsLoreA.add("Herobrine´s artifact");
this.equalsLoreA.add("Apple of Death"); this.equalsLoreA.add("Apple of Death");
} }
@ -181,27 +176,9 @@ public class PlayerListener implements Listener {
HerobrineAI.getPluginCore().getAICore().cancelTarget(Core.CoreType.RANDOM_POSITION); HerobrineAI.getPluginCore().getAICore().cancelTarget(Core.CoreType.RANDOM_POSITION);
HerobrineAI.herobrineNPC.moveTo(new Location(Bukkit.getServer().getWorlds().get(0), 0.0D, -20.0D, 0.0D)); 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 @EventHandler
public void onPlayerCommand(final PlayerCommandPreprocessEvent event) { public void onPlayerCommand(final PlayerCommandPreprocessEvent event) {
if (event.getPlayer().getWorld() == Bukkit.getServer().getWorld(HerobrineAI.getPluginCore().getConfigDB().HerobrineWorldName) && !event.getPlayer().hasPermission("hb-ai.cmdblockbypass")) { if (event.getPlayer().getWorld() == Bukkit.getServer().getWorld(HerobrineAI.getPluginCore().getConfigDB().HerobrineWorldName) && !event.getPlayer().hasPermission("hb-ai.cmdblockbypass")) {
@ -229,16 +206,4 @@ public class PlayerListener implements Listener {
} }
} }
@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){ if (newYaw > 0.0D || newYaw < 180.0D){
((EntityPlayer) getNMSEntity()).yaw = (float) (newYaw - 90.0); ((EntityPlayer) getNMSEntity()).yaw = (float) (newYaw - 90.0);
((EntityPlayer) getNMSEntity()).pitch = (float) newPitch; ((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); ((EntityPlayer) getNMSEntity()).aI = (float) (newYaw - 90.0);
} }
} }

View File

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