Now the Herobine tablistname will only show for attacked players. Fix
herobrine look direct to Player. Added aliases to command on plugin.yml
This commit is contained in:
parent
86765860ec
commit
6c2e7bde7b
@ -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;
|
||||
|
||||
@ -140,6 +144,7 @@ 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);
|
||||
showHero(PlayerTarget);
|
||||
if (chance <= 10) {
|
||||
if (HerobrineAI.getPluginCore().getConfigDB().UseGraveyardWorld) {
|
||||
AICore.log.info("[Herobrine] Teleporting " + PlayerTarget.getDisplayName() + " to Herobrine's Graveyard.");
|
||||
@ -184,16 +191,19 @@ public class AICore {
|
||||
|
||||
public CoreResult setAttackTarget(final Player 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();
|
||||
|
@ -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,26 +176,8 @@ 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) {
|
||||
@ -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()));
|
||||
*/
|
||||
}
|
||||
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -5,3 +5,4 @@ commands:
|
||||
herobrine:
|
||||
description: Main command.
|
||||
usage: /herobrine help
|
||||
aliases: [hero, hb-ai]
|
Reference in New Issue
Block a user