diff --git a/lib/Factions.jar b/lib/Factions.jar new file mode 100644 index 0000000..1a47400 Binary files /dev/null and b/lib/Factions.jar differ diff --git a/lib/WorldGuard.jar b/lib/WorldGuard.jar index ac694df..d585c14 100644 Binary files a/lib/WorldGuard.jar and b/lib/WorldGuard.jar differ diff --git a/plugin.yml b/plugin.yml index 91c4b0e..d77a823 100644 --- a/plugin.yml +++ b/plugin.yml @@ -1,6 +1,6 @@ name: HerobrineAI main: org.jakub1221.herobrineai.HerobrineAI -version: 3.1.0 +version: 3.2.2 commands: hb-ai: description: Main command. diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..bdb3e98 --- /dev/null +++ b/pom.xml @@ -0,0 +1,91 @@ + + 4.0.0 + org.jakub1221.herobrineai + HerobrineAI + 3.5.0 + HerobrineAI + http://dev.bukkit.org/projects/herobrine-ai + + + UTF-8 + 1.11-R0.1-SNAPSHOT + + + + https://github.com/jakub1221/HerobrineAI + scm:git:git://github.com:jakub1221/HerobrineAI.git + scm:git:git@github.com:jakub1221/HerobrineAI.git + + + + GitHub + https://github.com/jakub1221/HerobrineAI/issues + + + + + spigot-repo + https://hub.spigotmc.org/nexus/content/groups/public/ + + + + + + org.bukkit + bukkit + ${bukkitVersion} + jar + + + + junit + junit + 4.12 + jar + test + true + + + + + clean install + src/ + + + ${project.basedir} + true + + plugin.yml + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 2.0.2 + + 1.6 + 1.6 + + + + org.apache.maven.plugins + maven-shade-plugin + 2.3 + + + package + + shade + + + + + + + + HerobrineAI is Minecraft server plugin for bukkit/spigot that brings Herobrine to life. + + \ No newline at end of file diff --git a/src/org/jakub1221/herobrineai/AI/AICore.java b/src/org/jakub1221/herobrineai/AI/AICore.java index d8f3aca..d836dea 100644 --- a/src/org/jakub1221/herobrineai/AI/AICore.java +++ b/src/org/jakub1221/herobrineai/AI/AICore.java @@ -12,6 +12,7 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.jakub1221.herobrineai.HerobrineAI; +import org.jakub1221.herobrineai.Utils; import org.jakub1221.herobrineai.AI.Core.CoreType; import org.jakub1221.herobrineai.AI.cores.Attack; import org.jakub1221.herobrineai.AI.cores.Book; @@ -35,46 +36,45 @@ import org.jakub1221.herobrineai.entity.MobType; import org.jakub1221.herobrineai.misc.ItemName; public class AICore { - + public static ConsoleLogger log = new ConsoleLogger(); - + private ArrayList AllCores = new ArrayList(); private CoreType CoreNow = CoreType.ANY; public static HerobrineAI plugin; public static Player PlayerTarget; - public static boolean isTarget=false; - public static int ticksToEnd=0; - public static boolean isDiscCalled=false; - public static boolean isTotemCalled=false; - public static int _ticks=0; - private boolean BuildINT=false; - private boolean MainINT=false; - private boolean RandomPositionINT=false; - private boolean RandomMoveINT=false; - private boolean RandomSeeINT=false; - private boolean CheckGravityINT=false; - private boolean RandomCoreINT=false; - private int RP_INT=0; - private int RM_INT=0; - private int RS_INT=0; - private int CG_INT=0; - private int MAIN_INT=0; - private int BD_INT=0; - private int RC_INT=0; - - public Core getCore(CoreType type){ - for (Core c : AllCores){ - if (c.getCoreType()==type){ + public static boolean isTarget = false; + public static int ticksToEnd = 0; + public static boolean isDiscCalled = false; + public static boolean isTotemCalled = false; + public static int _ticks = 0; + private ResetLimits resetLimits = null; + private boolean BuildINT = false; + private boolean MainINT = false; + private boolean RandomPositionINT = false; + private boolean RandomMoveINT = false; + private boolean RandomSeeINT = false; + private boolean CheckGravityINT = false; + private boolean RandomCoreINT = false; + private int RP_INT = 0; + private int RM_INT = 0; + private int RS_INT = 0; + private int CG_INT = 0; + private int MAIN_INT = 0; + private int BD_INT = 0; + private int RC_INT = 0; + + public Core getCore(CoreType type) { + for (Core c : AllCores) { + if (c.getCoreType() == type) { return c; } } return null; } - - - public AICore (){ - + public AICore() { + /* Cores init */ AllCores.add(new Attack()); AllCores.add(new Book()); @@ -94,565 +94,577 @@ public class AICore { AllCores.add(new RandomExplosion()); AllCores.add(new Burn()); AllCores.add(new Curse()); - + + resetLimits = new ResetLimits(); + plugin = HerobrineAI.getPluginCore(); log.info("[HerobrineAI] Debug mode enabled!"); FindPlayer(); StartIntervals(); - - + } -public Graveyard getGraveyard(){return ((Graveyard)getCore(CoreType.GRAVEYARD));} -public RandomPosition getRandomPosition(){return ((RandomPosition)getCore(CoreType.RANDOM_POSITION));} -public void setCoreTypeNow(CoreType c){CoreNow=c;} -public CoreType getCoreTypeNow(){return CoreNow;} + public Graveyard getGraveyard() { + return ((Graveyard) getCore(CoreType.GRAVEYARD)); + } + + public RandomPosition getRandomPosition() { + return ((RandomPosition) getCore(CoreType.RANDOM_POSITION)); + } + + public void setCoreTypeNow(CoreType c) { + CoreNow = c; + } + + public CoreType getCoreTypeNow() { + return CoreNow; + } + + public ResetLimits getResetLimits() { + return resetLimits; + } + + public void disableAll() { + + resetLimits.disable(); + + } + + public static String getStringWalkingMode() { + + String result = ""; + + if (HerobrineAI.getPluginCore().getAICore().getCoreTypeNow() == CoreType.RANDOM_POSITION) { + result = "Yes"; + } else { + result = "No"; + } - public static String getStringWalkingMode(){ - - String result=""; - - if (HerobrineAI.getPluginCore().getAICore().getCoreTypeNow() == CoreType.RANDOM_POSITION){result="Yes";}else{result="No";} - return result; - + } - - public void playerBedEnter(Player player){ + + public void playerBedEnter(Player player) { int chance = new Random().nextInt(100); - if (chance<25){ + if (chance < 25) { GraveyardTeleport(player); - }else if (chance<50){ + } else if (chance < 50) { setHauntTarget(player); - }else{ - if (HerobrineAI.getPluginCore().getConfigDB().UseNPC_Demon){ - HerobrineAI.getPluginCore().getEntityManager().spawnCustomSkeleton(player.getLocation(), MobType.DEMON); + } else { + if (HerobrineAI.getPluginCore().getConfigDB().UseNPC_Demon && !HerobrineAI.isNPCDisabled) { + HerobrineAI.getPluginCore().getEntityManager().spawnCustomSkeleton(player.getLocation(), MobType.DEMON); } } } - - public void FindPlayer(){ - if (HerobrineAI.getPluginCore().getConfigDB().OnlyWalkingMode==false){ - - if (isTarget==false){ - - int att_chance= new Random().nextInt(100); - log.info("[HerobrineAI] Generating find chance..."); - - if (att_chance-(HerobrineAI.getPluginCore().getConfigDB().ShowRate*4)<55){ - - if (Bukkit.getServer().getOnlinePlayers().length>0){ - - log.info("[HerobrineAI] Finding target..."); - Player [] AllOnPlayers = Bukkit.getServer().getOnlinePlayers(); - int player_rolled= new Random().nextInt(Bukkit.getServer().getOnlinePlayers().length-1); - - if (AllOnPlayers[player_rolled].getEntityId()!=HerobrineAI.HerobrineEntityID){ - - if (HerobrineAI.getPluginCore().getConfigDB().useWorlds.contains(AllOnPlayers[player_rolled].getLocation().getWorld().getName()) && HerobrineAI.getPluginCore().canAttackPlayerNoMSG(AllOnPlayers[player_rolled])){ - - CancelTarget(CoreType.ANY); - PlayerTarget=AllOnPlayers[player_rolled]; - isTarget=true; - log.info("[HerobrineAI] Target founded, starting AI now! ("+PlayerTarget.getName()+")"); - setCoreTypeNow(CoreType.START); - StartAI(); - - }else{ log.info("[HerobrineAI] Target is in the safe world! ("+AllOnPlayers[player_rolled].getLocation().getWorld().getName()+")");FindPlayer();} - - + + public void FindPlayer() { + if (HerobrineAI.getPluginCore().getConfigDB().OnlyWalkingMode == false) { + + if (isTarget == false) { + + int att_chance = new Random().nextInt(100); + log.info("[HerobrineAI] Generating find chance..."); + + if (att_chance - (HerobrineAI.getPluginCore().getConfigDB().ShowRate * 4) < 55) { + + if (Bukkit.getServer().getOnlinePlayers().size() > 0) { + + log.info("[HerobrineAI] Finding target..."); + Player targetPlayer = Utils.getRandomPlayer(); + + if (targetPlayer.getEntityId() != HerobrineAI.HerobrineEntityID) { + + if (HerobrineAI.getPluginCore().getConfigDB().useWorlds + .contains(targetPlayer.getLocation().getWorld().getName()) + && HerobrineAI.getPluginCore().canAttackPlayerNoMSG(targetPlayer)) { + + CancelTarget(CoreType.ANY); + isTarget = true; + log.info("[HerobrineAI] Target founded, starting AI now! (" + targetPlayer.getName()+ ")"); + setCoreTypeNow(CoreType.START); + StartAI(); + + } else { + log.info("[HerobrineAI] Target is in the safe world! ("+ targetPlayer.getLocation().getWorld().getName() + ")"); + FindPlayer(); + } + + } + + } + } - - - } - + } - - } } } - - public void CancelTarget(CoreType coreType){ - - if (coreType == CoreNow || coreType == CoreType.ANY){ - - if (CoreNow == CoreType.RANDOM_POSITION){ + + public void CancelTarget(CoreType coreType) { + + if (coreType == CoreNow || coreType == CoreType.ANY) { + + if (CoreNow == CoreType.RANDOM_POSITION) { Stop_RM(); Stop_RS(); Stop_CG(); - Location nowloc = new Location((World) Bukkit.getServer().getWorlds().get(0),(float) 0,(float) -20,(float) 0); - nowloc.setYaw((float) 1); - nowloc.setPitch((float) 1); + Location nowloc = new Location((World) Bukkit.getServer().getWorlds().get(0), 0, -20.f, 0); + + nowloc.setYaw(1.f); + nowloc.setPitch(1.f); + HerobrineAI.HerobrineNPC.moveTo(nowloc); - CoreNow=CoreType.ANY; + CoreNow = CoreType.ANY; HerobrineAI.getPluginCore().getPathManager().setPath(null); + } + + if (isTarget == true) { + if (CoreNow == CoreType.ATTACK) { + ((Attack) getCore(CoreType.ATTACK)).StopHandler(); } - - if (isTarget==true){ - if (CoreNow == CoreType.ATTACK){ - ((Attack) getCore(CoreType.ATTACK)).StopHandler(); + if (CoreNow == CoreType.HAUNT) { + ((Haunt) getCore(CoreType.HAUNT)).StopHandler(); + } + + _ticks = 0; + isTarget = false; + HerobrineAI.HerobrineHP = HerobrineAI.HerobrineMaxHP; + + log.info("[HerobrineAI] Target cancelled."); + Location nowloc = new Location((World) Bukkit.getServer().getWorlds().get(0), 0, -20.f, 0); + + nowloc.setYaw(1.f); + nowloc.setPitch(1.f); + + HerobrineAI.HerobrineNPC.moveTo(nowloc); + CoreNow = CoreType.ANY; + Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(AICore.plugin, new Runnable() { + public void run() { + FindPlayer(); + } + }, (6 / HerobrineAI.getPluginCore().getConfigDB().ShowRate) * (HerobrineAI.getPluginCore().getConfigDB().ShowInterval * 1L)); + } - if (CoreNow == CoreType.HAUNT){ - ((Haunt) getCore(CoreType.HAUNT)).StopHandler(); - } - - - _ticks=0; - isTarget=false; - HerobrineAI.HerobrineHP=HerobrineAI.HerobrineMaxHP; - log.info("[HerobrineAI] Target cancelled."); - Location nowloc = new Location((World) Bukkit.getServer().getWorlds().get(0),(float) 0,(float) -20,(float) 0); - nowloc.setYaw((float) 1); - nowloc.setPitch((float) 1); - HerobrineAI.HerobrineNPC.moveTo(nowloc); - CoreNow=CoreType.ANY; - Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(AICore.plugin, new Runnable() { - public void run() { - FindPlayer(); - } - }, (6/HerobrineAI.getPluginCore().getConfigDB().ShowRate) * (HerobrineAI.getPluginCore().getConfigDB().ShowInterval * 1L)); - } } + + public void StartAI() { + if (PlayerTarget.isOnline() && isTarget) { + if (PlayerTarget.isDead() == false) { + Object[] data = { PlayerTarget }; + int chance = new Random().nextInt(100); + if (chance <= 10) { + if (HerobrineAI.getPluginCore().getConfigDB().UseGraveyardWorld == true) { + log.info("[HerobrineAI] Teleporting target to Graveyard world."); + + getCore(CoreType.GRAVEYARD).RunCore(data); + + } + } else if (chance <= 25) { + + getCore(CoreType.ATTACK).RunCore(data); + } else { + getCore(CoreType.HAUNT).RunCore(data); + } + } else { + CancelTarget(CoreType.START); + } + } else { + CancelTarget(CoreType.START); + } } - - public void StartAI(){ - if (PlayerTarget.isOnline() && isTarget){ - if (PlayerTarget.isDead()==false){ - Object[] data = {PlayerTarget}; - int chance= new Random().nextInt(100); - if (chance<=10){ - if(HerobrineAI.getPluginCore().getConfigDB().UseGraveyardWorld==true){ - log.info("[HerobrineAI] Teleporting target to Graveyard world."); - - getCore(CoreType.GRAVEYARD).RunCore(data); - - } - }else if (chance<=25){ - - getCore(CoreType.ATTACK).RunCore(data); - }else{ - getCore(CoreType.HAUNT).RunCore(data); - } - }else{CancelTarget(CoreType.START);} - }else{CancelTarget(CoreType.START);} - } - - public CoreResult setAttackTarget(Player player){ - Object[] data = {player}; + + public CoreResult setAttackTarget(Player player) { + Object[] data = { player }; return getCore(CoreType.ATTACK).RunCore(data); } - - public CoreResult setHauntTarget(Player player){ - Object[] data = {player}; + + public CoreResult setHauntTarget(Player player) { + Object[] data = { player }; return getCore(CoreType.HAUNT).RunCore(data); } - - - - - - public void GraveyardTeleport(final Player player){ - - if (player.isOnline()){ - CancelTarget(CoreType.ANY); - - Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(AICore.plugin, new Runnable() { - public void run() { - Object[] data = {player}; - getCore(CoreType.GRAVEYARD).RunCore(data); - } - }, 1 * 10L); - - - } - - + public void GraveyardTeleport(final Player player) { + + if (player.isOnline()) { + CancelTarget(CoreType.ANY); + + Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(AICore.plugin, new Runnable() { + public void run() { + Object[] data = { player }; + getCore(CoreType.GRAVEYARD).RunCore(data); + } + }, 1 * 10L); + + } + } - - - - - public void PlayerCallTotem(Player player){ - final String playername=player.getName(); - final Location loc = (Location) player.getLocation(); - isTotemCalled=true; - CancelTarget(CoreType.ANY); - Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(AICore.plugin, new Runnable() { - public void run() { - CancelTarget(CoreType.ANY); - Object[] data = {loc, playername}; - getCore(CoreType.TOTEM).RunCore(data); - } - }, 1 * 40L); - } - -private void RandomPositionInterval(){ -if (CoreNow==CoreType.ANY){ - ((RandomPosition)getCore(CoreType.RANDOM_POSITION)).setRandomTicks(0); - int count = HerobrineAI.getPluginCore().getConfigDB().useWorlds.size(); - int chance=new Random().nextInt(count); - Object[] data = {Bukkit.getServer().getWorld(HerobrineAI.getPluginCore().getConfigDB().useWorlds.get(chance))}; - getCore(CoreType.RANDOM_POSITION).RunCore(data); - -} -} - - private void CheckGravityInterval(){ - if (this.CoreNow==CoreType.RANDOM_POSITION){ - ((RandomPosition)getCore(CoreType.RANDOM_POSITION)).CheckGravity(); - } - } - private void RandomMoveInterval(){ - ((RandomPosition)getCore(CoreType.RANDOM_POSITION)).RandomMove(); + public void PlayerCallTotem(Player player) { + final String playername = player.getName(); + final Location loc = (Location) player.getLocation(); + isTotemCalled = true; + CancelTarget(CoreType.ANY); + Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(AICore.plugin, new Runnable() { + public void run() { + CancelTarget(CoreType.ANY); + Object[] data = { loc, playername }; + getCore(CoreType.TOTEM).RunCore(data); + } + }, 1 * 40L); + } - } - - private void RandomSeeInterval(){ - if (CoreNow == CoreType.RANDOM_POSITION){ - ((RandomPosition)getCore(CoreType.RANDOM_POSITION)).CheckPlayerPosition(); - } - - } - private void PyramidInterval(){ + private void RandomPositionInterval() { + if (CoreNow == CoreType.ANY) { + ((RandomPosition) getCore(CoreType.RANDOM_POSITION)).setRandomTicks(0); + int count = HerobrineAI.getPluginCore().getConfigDB().useWorlds.size(); + int chance = new Random().nextInt(count); + Object[] data = { + Bukkit.getServer().getWorld(HerobrineAI.getPluginCore().getConfigDB().useWorlds.get(chance)) }; + getCore(CoreType.RANDOM_POSITION).RunCore(data); - if (new Random().nextBoolean()){ - if (Bukkit.getServer().getOnlinePlayers().length>0){ - log.info("[HerobrineAI] Finding pyramid target..."); - Player [] AllOnPlayers = Bukkit.getServer().getOnlinePlayers(); + } + } - int player_rolled= new Random().nextInt(Bukkit.getServer().getOnlinePlayers().length-1); - if (HerobrineAI.getPluginCore().getConfigDB().useWorlds.contains(AllOnPlayers[player_rolled].getLocation().getWorld().getName())){ - - int chance2=new Random().nextInt(100); - if (chance2<30){ - if (HerobrineAI.getPluginCore().getConfigDB().BuildPyramids==true){ - Object[] data = {AllOnPlayers[player_rolled]}; + private void CheckGravityInterval() { + if (this.CoreNow == CoreType.RANDOM_POSITION) { + ((RandomPosition) getCore(CoreType.RANDOM_POSITION)).CheckGravity(); + } + + } + + private void RandomMoveInterval() { + ((RandomPosition) getCore(CoreType.RANDOM_POSITION)).RandomMove(); + + } + + private void RandomSeeInterval() { + if (CoreNow == CoreType.RANDOM_POSITION) { + ((RandomPosition) getCore(CoreType.RANDOM_POSITION)).CheckPlayerPosition(); + } + + } + + private void PyramidInterval() { + + if (new Random().nextBoolean()) { + if (Bukkit.getServer().getOnlinePlayers().size() > 0) { + log.info("[HerobrineAI] Finding pyramid target..."); + + Player player = Utils.getRandomPlayer(); + if (HerobrineAI.getPluginCore().getConfigDB().useWorlds.contains(player.getLocation().getWorld().getName())) { + + int chance2 = new Random().nextInt(100); + if (chance2 < 30) { + if (HerobrineAI.getPluginCore().getConfigDB().BuildPyramids == true) { + Object[] data = { player }; getCore(CoreType.PYRAMID).RunCore(data); - } - }else if(chance2<70){ - if (HerobrineAI.getPluginCore().getConfigDB().BuryPlayers){ - Object[] data = {AllOnPlayers[player_rolled]}; - getCore(CoreType.BURY_PLAYER).RunCore(data); } - }else{ - if (HerobrineAI.getPluginCore().getConfigDB().UseHeads){ - Object[] data = {AllOnPlayers[player_rolled].getName()}; - getCore(CoreType.HEADS).RunCore(data); - } + } else if (chance2 < 70) { + if (HerobrineAI.getPluginCore().getConfigDB().BuryPlayers) { + Object[] data = { player }; + getCore(CoreType.BURY_PLAYER).RunCore(data); + } + } else { + if (HerobrineAI.getPluginCore().getConfigDB().UseHeads) { + Object[] data = { player.getName() }; + getCore(CoreType.HEADS).RunCore(data); + } } } - } - - } - - } - + } -private void TempleInterval(){ - if (HerobrineAI.getPluginCore().getConfigDB().BuildTemples==true){ - if (new Random().nextBoolean()){ - if (Bukkit.getServer().getOnlinePlayers().length>0){ - log.info("[HerobrineAI] Finding temple target..."); - Player [] AllOnPlayers = Bukkit.getServer().getOnlinePlayers(); - int player_rolled= new Random().nextInt(Bukkit.getServer().getOnlinePlayers().length-1); - if (HerobrineAI.getPluginCore().getConfigDB().useWorlds.contains(AllOnPlayers[player_rolled].getLocation().getWorld().getName())){ - if (new Random().nextBoolean()){ - Object[] data = {AllOnPlayers[player_rolled]}; + } + + } + + private void TempleInterval() { + if (HerobrineAI.getPluginCore().getConfigDB().BuildTemples == true) { + if (new Random().nextBoolean()) { + if (Bukkit.getServer().getOnlinePlayers().size() > 0) { + log.info("[HerobrineAI] Finding temple target..."); + + Player player = Utils.getRandomPlayer(); + + if (HerobrineAI.getPluginCore().getConfigDB().useWorlds.contains(player.getLocation().getWorld().getName())) { + if (new Random().nextBoolean()) { + Object[] data = { player }; getCore(CoreType.TEMPLE).RunCore(data); - + + } } } } - } - } - + } - -} + } -private void BuildCave(){ - if (HerobrineAI.getPluginCore().getConfigDB().BuildStuff==true){ - if (new Random().nextBoolean()){ - if (Bukkit.getServer().getOnlinePlayers().length>0){ - Player [] AllOnPlayers = Bukkit.getServer().getOnlinePlayers(); - int player_rolled= new Random().nextInt(Bukkit.getServer().getOnlinePlayers().length-1); - if (HerobrineAI.getPluginCore().getConfigDB().useWorlds.contains(AllOnPlayers[player_rolled].getLocation().getWorld().getName())){ + private void BuildCave() { + if (HerobrineAI.getPluginCore().getConfigDB().BuildStuff == true) { + if (new Random().nextBoolean()) { + if (Bukkit.getServer().getOnlinePlayers().size() > 0) { - if (new Random().nextBoolean()){ - Object[] data = {AllOnPlayers[player_rolled].getLocation()}; + Player player = Utils.getRandomPlayer(); + + if (HerobrineAI.getPluginCore().getConfigDB().useWorlds + .contains(player.getLocation().getWorld().getName())) { + + if (new Random().nextBoolean()) { + Object[] data = { player.getLocation() }; getCore(CoreType.BUILD_STUFF).RunCore(data); - - } - } - } - } -} -} - - - public void callByDisc(Player player){ - isDiscCalled=false; - if (player.isOnline()){ - CancelTarget(CoreType.ANY); - setHauntTarget(player); - } - } - public void RandomCoreINT(){ - - if (new Random().nextBoolean()){ - if (Bukkit.getServer().getOnlinePlayers().length>0){ - Player [] AllOnPlayers = Bukkit.getServer().getOnlinePlayers(); - int player_rolled= new Random().nextInt(Bukkit.getServer().getOnlinePlayers().length-1); - - if (AllOnPlayers[player_rolled].getEntityId()!=HerobrineAI.HerobrineEntityID){ - if (HerobrineAI.getPluginCore().getConfigDB().useWorlds.contains(AllOnPlayers[player_rolled].getLocation().getWorld().getName())){ - Object[] data = {AllOnPlayers[player_rolled]}; - - if (new Random().nextInt(100)<30){ - - getCore(CoreType.RANDOM_SOUND).RunCore(data); - }else if (new Random().nextInt(100)<60){ - if (HerobrineAI.getPluginCore().getConfigDB().Burn){ - getCore(CoreType.BURN).RunCore(data); - } - }else if (new Random().nextInt(100)<80){ - if (HerobrineAI.getPluginCore().getConfigDB().Curse){ - getCore(CoreType.CURSE).RunCore(data); - } - }else{ - - getCore(CoreType.RANDOM_EXPLOSION).RunCore(data); + } } } } - } - } - } - - - public void DisappearEffect(){ - - Location ploc = (Location) PlayerTarget.getLocation(); - - Location hbloc1 = (Location) HerobrineAI.HerobrineNPC.getBukkitEntity().getLocation(); - hbloc1.setY(hbloc1.getY()+1); - Location hbloc2 = (Location) HerobrineAI.HerobrineNPC.getBukkitEntity().getLocation(); - hbloc2.setY(hbloc2.getY()+0); - Location hbloc3 = (Location) HerobrineAI.HerobrineNPC.getBukkitEntity().getLocation(); - hbloc3.setY(hbloc3.getY()+0.5); - Location hbloc4 = (Location) HerobrineAI.HerobrineNPC.getBukkitEntity().getLocation(); - hbloc4.setY(hbloc4.getY()+1.5); + } + } - - ploc.getWorld().playEffect(hbloc1, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc2, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc3, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc4, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc1, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc2, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc3, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc4, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc1, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc2, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc3, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc4, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc1, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc2, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc3, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc4, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc1, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc2, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc3, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc4, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc1, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc2, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc3, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc4, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc1, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc2, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc3, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc4, Effect.SMOKE, 80); - - ploc.setY(-20); - HerobrineAI.HerobrineNPC.moveTo(ploc); + public void callByDisc(Player player) { + isDiscCalled = false; + if (player.isOnline()) { + CancelTarget(CoreType.ANY); + setHauntTarget(player); + } + } - } - - private void BuildInterval(){ - if(new Random().nextInt(100)<75){ - PyramidInterval(); - }else{ - TempleInterval(); - } - - if (new Random().nextBoolean()){ - BuildCave(); - } - } - - private void StartIntervals(){ - Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(AICore.plugin, new Runnable() { - public void run() { - Start_RP(); - Start_MAIN(); - Start_BD(); - Start_RC(); - } - }, 1 * 5L); + public void RandomCoreINT() { - } - public void Start_RP(){ - RandomPositionINT=true; - RP_INT=Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(AICore.plugin, new Runnable() { - public void run() { - RandomPositionInterval(); - } - },1 * 300L, 1 * 300L); - } - public void Start_BD(){ - BuildINT=true; - BD_INT=Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(AICore.plugin, new Runnable() { - public void run() { - BuildInterval(); - } - }, 1 * 1L * HerobrineAI.getPluginCore().getConfigDB().BuildInterval, 1 * 1L * HerobrineAI.getPluginCore().getConfigDB().BuildInterval); - } - public void Start_MAIN(){ - MainINT=true; - MAIN_INT=Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(AICore.plugin, new Runnable() { - public void run() { - FindPlayer(); + if (new Random().nextBoolean()) { + if (Bukkit.getServer().getOnlinePlayers().size() > 0) { + + Player player = Utils.getRandomPlayer(); + + if (player.getEntityId() != HerobrineAI.HerobrineEntityID) { + if (HerobrineAI.getPluginCore().getConfigDB().useWorlds + .contains(player.getLocation().getWorld().getName())) { + Object[] data = { player }; + if (HerobrineAI.getPluginCore().canAttackPlayerNoMSG(player)) { + if (new Random().nextInt(100) < 30) { + + getCore(CoreType.RANDOM_SOUND).RunCore(data); + } else if (new Random().nextInt(100) < 60) { + if (HerobrineAI.getPluginCore().getConfigDB().Burn) { + getCore(CoreType.BURN).RunCore(data); + } + } else if (new Random().nextInt(100) < 80) { + if (HerobrineAI.getPluginCore().getConfigDB().Curse) { + getCore(CoreType.CURSE).RunCore(data); + } + } else { + + getCore(CoreType.RANDOM_EXPLOSION).RunCore(data); + } + } + } + } + } + } + } + + public void DisappearEffect() { + + Location ploc = (Location) PlayerTarget.getLocation(); + + for(int i=0; i < 5; i++){ + for(float j=0; j < 2; j+= 0.5f){ + Location hbloc = (Location) HerobrineAI.HerobrineNPC.getBukkitEntity().getLocation(); + hbloc.setY(hbloc.getY() + j); + hbloc.getWorld().playEffect(hbloc, Effect.SMOKE, 80); + } + } + + ploc.setY(-20); + HerobrineAI.HerobrineNPC.moveTo(ploc); + + } + + private void BuildInterval() { + if (new Random().nextInt(100) < 75) { + PyramidInterval(); + } else { + TempleInterval(); + } + + if (new Random().nextBoolean()) { + BuildCave(); + } + } + + private void StartIntervals() { + Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(AICore.plugin, new Runnable() { + public void run() { + Start_RP(); + Start_MAIN(); + Start_BD(); + Start_RC(); + } + }, 1 * 5L); + + } + + public void Start_RP() { + RandomPositionINT = true; + RP_INT = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(AICore.plugin, new Runnable() { + public void run() { + RandomPositionInterval(); + } + }, 1 * 300L, 1 * 300L); + } + + public void Start_BD() { + BuildINT = true; + BD_INT = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(AICore.plugin, new Runnable() { + public void run() { + BuildInterval(); + } + }, 1 * 1L * HerobrineAI.getPluginCore().getConfigDB().BuildInterval, + 1 * 1L * HerobrineAI.getPluginCore().getConfigDB().BuildInterval); + } + + public void Start_MAIN() { + MainINT = true; + MAIN_INT = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(AICore.plugin, new Runnable() { + public void run() { + FindPlayer(); + + } + }, (6 / HerobrineAI.getPluginCore().getConfigDB().ShowRate) + * (HerobrineAI.getPluginCore().getConfigDB().ShowInterval * 1L), + (6 / HerobrineAI.getPluginCore().getConfigDB().ShowRate) + * (HerobrineAI.getPluginCore().getConfigDB().ShowInterval * 1L)); + } + + public void Start_RM() { + RandomMoveINT = true; + + RM_INT = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(AICore.plugin, new Runnable() { + public void run() { + RandomMoveInterval(); + } + }, 1 * 50L, 1 * 50L); + + } + + public void Start_RS() { + RandomSeeINT = true; + RS_INT = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(AICore.plugin, new Runnable() { + public void run() { + RandomSeeInterval(); + } + }, 1 * 15L, 1 * 15L); + } + + public void Start_RC() { + RandomCoreINT = true; + RC_INT = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(AICore.plugin, new Runnable() { + public void run() { + RandomCoreINT(); + } + }, (long) (HerobrineAI.getPluginCore().getConfigDB().ShowInterval / 1.5), + (long) (HerobrineAI.getPluginCore().getConfigDB().ShowInterval / 1.5)); + } + + public void Start_CG() { + CheckGravityINT = true; + CG_INT = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(AICore.plugin, new Runnable() { + public void run() { + CheckGravityInterval(); + } + }, 1 * 10L, 1 * 10L); + } + + public void Stop_RP() { + if (RandomPositionINT) { + RandomPositionINT = false; + Bukkit.getServer().getScheduler().cancelTask(RP_INT); + } + } + + public void Stop_BD() { + if (BuildINT) { + BuildINT = false; + Bukkit.getServer().getScheduler().cancelTask(BD_INT); + } + } + + public void Stop_RS() { + if (RandomSeeINT) { + RandomSeeINT = false; + Bukkit.getServer().getScheduler().cancelTask(RS_INT); + } + } + + public void Stop_RM() { + if (RandomMoveINT) { + RandomMoveINT = false; + Bukkit.getServer().getScheduler().cancelTask(RM_INT); + } + } + + public void Stop_RC() { + if (RandomCoreINT) { + RandomCoreINT = false; + Bukkit.getServer().getScheduler().cancelTask(RC_INT); + } + } + + public void Stop_CG() { + if (CheckGravityINT) { + CheckGravityINT = false; + Bukkit.getServer().getScheduler().cancelTask(CG_INT); + } + } + + public void Stop_MAIN() { + if (MainINT) { + MainINT = false; + Bukkit.getServer().getScheduler().cancelTask(MAIN_INT); + } + } + + public ItemStack createAncientSword() { + ItemStack item = new ItemStack(Material.GOLD_SWORD); + String name = "Ancient Sword"; + ArrayList lore = new ArrayList(); + lore.add("AncientSword"); + lore.add("Very old and mysterious sword."); + lore.add("It protects you aganist Herobrine."); + item = ItemName.setNameAndLore(item, name, lore); + return item; + } + + public boolean isAncientSword(ItemStack item) { + ArrayList lore = new ArrayList(); + lore.add("AncientSword"); + lore.add("Very old and mysterious sword."); + lore.add("It protects you aganist Herobrine."); + if (item != null) { + if (item.getItemMeta() != null) { + if (item.getItemMeta().getLore() != null) { + ArrayList ilore = (ArrayList) item.getItemMeta().getLore(); + if (ilore.containsAll(lore)) { + return true; + + } + } + } + } + + return false; + } + + public boolean checkAncientSword(Inventory inv) { + ItemStack[] itemlist = inv.getContents(); + ItemStack item = null; + int i = 0; + for (i = 0; i <= itemlist.length - 1; i++) { + item = itemlist[i]; + if (isAncientSword(item)) { + return true; + } + } + + return false; + } - } - },(6/HerobrineAI.getPluginCore().getConfigDB().ShowRate) * (HerobrineAI.getPluginCore().getConfigDB().ShowInterval * 1L),(6/HerobrineAI.getPluginCore().getConfigDB().ShowRate) * (HerobrineAI.getPluginCore().getConfigDB().ShowInterval * 1L)); - } - public void Start_RM(){ - RandomMoveINT=true; - - RM_INT=Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(AICore.plugin, new Runnable() { - public void run() { - RandomMoveInterval(); - } - },1 * 50L ,1 * 50L); - - } - public void Start_RS(){ - RandomSeeINT=true; - RS_INT=Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(AICore.plugin, new Runnable() { - public void run() { - RandomSeeInterval(); - } - }, 1 * 15L,1 * 15L); - } - - public void Start_RC(){ - RandomCoreINT=true; - RC_INT=Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(AICore.plugin, new Runnable() { - public void run() { - RandomCoreINT(); - } - }, (long)(HerobrineAI.getPluginCore().getConfigDB().ShowInterval/1.5),(long)(HerobrineAI.getPluginCore().getConfigDB().ShowInterval/1.5)); - } - - public void Start_CG(){ - CheckGravityINT=true; - CG_INT=Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(AICore.plugin, new Runnable() { - public void run() { - CheckGravityInterval(); - } - }, 1 * 10L,1 * 10L); - } - - public void Stop_RP(){ - if (RandomPositionINT){ - RandomPositionINT=false; - Bukkit.getServer().getScheduler().cancelTask(RP_INT); - } - } - public void Stop_BD(){ - if (BuildINT){ - BuildINT=false; - Bukkit.getServer().getScheduler().cancelTask(BD_INT); - } - } - public void Stop_RS(){ - if (RandomSeeINT){ - RandomSeeINT=false; - Bukkit.getServer().getScheduler().cancelTask(RS_INT); - } - } - public void Stop_RM(){ - if (RandomMoveINT){ - RandomMoveINT=false; - Bukkit.getServer().getScheduler().cancelTask(RM_INT); - } - } - public void Stop_RC(){ - if (RandomCoreINT){ - RandomCoreINT=false; - Bukkit.getServer().getScheduler().cancelTask(RC_INT); - } - } - public void Stop_CG(){ - if (CheckGravityINT){ - CheckGravityINT=false; - Bukkit.getServer().getScheduler().cancelTask(CG_INT); - } - } - public void Stop_MAIN(){ - if (MainINT){ - MainINT=false; - Bukkit.getServer().getScheduler().cancelTask(MAIN_INT); - } - } - - public ItemStack createAncientSword(){ - ItemStack item = new ItemStack(Material.GOLD_SWORD); - String name = "Ancient Sword"; - ArrayList lore = new ArrayList(); - lore.add("AncientSword"); - lore.add("Very old and mysterious sword."); - lore.add("This will protect you aganist Herobrine."); - item = ItemName.setNameAndLore(item, name, lore); - return item; - } - - public boolean isAncientSword(ItemStack item){ - ArrayList lore = new ArrayList(); - lore.add("AncientSword"); - lore.add("Very old and mysterious sword."); - lore.add("This will protect you aganist Herobrine."); - if (item!=null){ - if (item.getItemMeta()!=null){ - if (item.getItemMeta().getLore()!=null){ - ArrayList ilore = (ArrayList) item.getItemMeta().getLore(); - if (ilore.containsAll(lore)){ - return true; - - } - } - } - } - - return false; - } - - public boolean checkAncientSword(Inventory inv){ - ItemStack[] itemlist = inv.getContents(); - ItemStack item = null; - int i=0; - for (i=0;i<=itemlist.length-1;i++){ - item=itemlist[i]; - if (isAncientSword(item)){ - return true; - } - } - - return false; - } - } diff --git a/src/org/jakub1221/herobrineai/AI/Core.java b/src/org/jakub1221/herobrineai/AI/Core.java index 18cbd4f..73b6bf6 100644 --- a/src/org/jakub1221/herobrineai/AI/Core.java +++ b/src/org/jakub1221/herobrineai/AI/Core.java @@ -6,11 +6,13 @@ public abstract class Core { private final AppearType Appear; private final CoreType coreType; - private CoreResult nowData=null; + private CoreResult nowData = null; + protected HerobrineAI PluginCore = null; - public Core(CoreType cp,AppearType ap){ + public Core(CoreType cp,AppearType ap, HerobrineAI hb){ this.coreType=cp; this.Appear=ap; + this.PluginCore = hb; } public AppearType getAppear(){ @@ -21,7 +23,7 @@ public abstract class Core { return coreType; } - public abstract CoreResult CallCore(Object[] data); + protected abstract CoreResult CallCore(Object[] data); public CoreResult RunCore(Object[] data){ @@ -53,7 +55,8 @@ public abstract class Core { RANDOM_SOUND, RANDOM_EXPLOSION, BURN, - CURSE; + CURSE, + STARE; } public enum AppearType{ diff --git a/src/org/jakub1221/herobrineai/AI/CoreResult.java b/src/org/jakub1221/herobrineai/AI/CoreResult.java index 4cd9ec9..3aed17f 100644 --- a/src/org/jakub1221/herobrineai/AI/CoreResult.java +++ b/src/org/jakub1221/herobrineai/AI/CoreResult.java @@ -4,15 +4,17 @@ public class CoreResult { private final boolean bo; private final String text; - - public CoreResult(boolean b,String t){ - this.bo=b; - this.text=t; + + public CoreResult(boolean b, String t) { + this.bo = b; + this.text = t; } - public boolean getResult(){ + + public boolean getResult() { return this.bo; } - public String getResultString(){ + + public String getResultString() { return this.text; } } diff --git a/src/org/jakub1221/herobrineai/AI/Message.java b/src/org/jakub1221/herobrineai/AI/Message.java index d6b68c1..c035e8c 100644 --- a/src/org/jakub1221/herobrineai/AI/Message.java +++ b/src/org/jakub1221/herobrineai/AI/Message.java @@ -6,19 +6,18 @@ import org.bukkit.entity.Player; import org.jakub1221.herobrineai.HerobrineAI; public class Message { - - public static void SendMessage(Player player){ - if (HerobrineAI.getPluginCore().getConfigDB().SendMessages==true){ - + + public static void SendMessage(Player player) { + if (HerobrineAI.getPluginCore().getConfigDB().SendMessages == true) { + int count = HerobrineAI.getPluginCore().getConfigDB().useMessages.size(); - - Random randgen = new Random(); - int randmsg=randgen.nextInt(count); - - player.sendMessage(" "+HerobrineAI.getPluginCore().getConfigDB().useMessages.get(randmsg)); - - + + Random randgen = new Random(); + int randmsg = randgen.nextInt(count); + + player.sendMessage(" " + HerobrineAI.getPluginCore().getConfigDB().useMessages.get(randmsg)); + + } } - } - + } diff --git a/src/org/jakub1221/herobrineai/AI/ResetLimits.java b/src/org/jakub1221/herobrineai/AI/ResetLimits.java new file mode 100644 index 0000000..8ccc9b7 --- /dev/null +++ b/src/org/jakub1221/herobrineai/AI/ResetLimits.java @@ -0,0 +1,72 @@ +package org.jakub1221.herobrineai.AI; + +import org.bukkit.Bukkit; +import org.jakub1221.herobrineai.HerobrineAI; + +public class ResetLimits { + + private int taskID = 0; + private int books = 0; + private int signs = 0; + private int heads = 0; + public int maxBooks = 1; + public int maxSigns = 1; + public int maxHeads = 1; + + public ResetLimits() { + + taskID = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(HerobrineAI.getPluginCore(), + new Runnable() { + public void run() { + resetAll(); + } + }, 1 * 72000L, 1 * 72000L); + } + + public void disable() { + Bukkit.getServer().getScheduler().cancelTask(taskID); + } + + public boolean isBook() { + + if (books < maxBooks) { + books++; + return true; + } + + return false; + } + + public boolean isSign() { + + if (signs < maxSigns) { + signs++; + return true; + } + + return false; + } + + public boolean isHead() { + + if (heads < maxHeads) { + heads++; + return true; + } + + return false; + } + + public void resetAll() { + books = 0; + signs = 0; + heads = 0; + } + + public void updateFromConfig() { + maxBooks = HerobrineAI.getPluginCore().getConfigDB().maxBooks; + maxSigns = HerobrineAI.getPluginCore().getConfigDB().maxSigns; + maxHeads = HerobrineAI.getPluginCore().getConfigDB().maxHeads; + } + +} diff --git a/src/org/jakub1221/herobrineai/AI/cores/Attack.java b/src/org/jakub1221/herobrineai/AI/cores/Attack.java index 8462f25..2b27b66 100644 --- a/src/org/jakub1221/herobrineai/AI/cores/Attack.java +++ b/src/org/jakub1221/herobrineai/AI/cores/Attack.java @@ -11,230 +11,223 @@ import org.bukkit.entity.Player; import org.bukkit.potion.PotionEffect; import org.bukkit.potion.PotionEffectType; import org.jakub1221.herobrineai.HerobrineAI; +import org.jakub1221.herobrineai.Utils; import org.jakub1221.herobrineai.AI.AICore; import org.jakub1221.herobrineai.AI.Core; import org.jakub1221.herobrineai.AI.CoreResult; import org.jakub1221.herobrineai.AI.Message; import org.jakub1221.herobrineai.AI.extensions.Position; -public class Attack extends Core{ - +public class Attack extends Core { + private int ticksToEnd = 0; - private int HandlerINT=0; - private boolean isHandler=false; - - public Attack(){ - super(CoreType.ATTACK,AppearType.APPEAR); - } - - public CoreResult CallCore(Object[] data){ - return setAttackTarget((Player)data[0]); + private int HandlerINT = 0; + private boolean isHandler = false; + + public Attack() { + super(CoreType.ATTACK, AppearType.APPEAR, HerobrineAI.getPluginCore()); } - public CoreResult setAttackTarget(Player player){ - if (!HerobrineAI.getPluginCore().getAICore().checkAncientSword(player.getInventory())){ - if (HerobrineAI.getPluginCore().getSupport().checkAttack(player.getLocation())){ - - HerobrineAI.HerobrineHP=HerobrineAI.HerobrineMaxHP; - ticksToEnd=0; - AICore.PlayerTarget=player; - AICore.isTarget=true; - AICore.log.info("[HerobrineAI] Teleporting to target. ("+ AICore.PlayerTarget.getName()+")"); - Location ploc = (Location) AICore.PlayerTarget.getLocation(); - Object[] data = {ploc}; - HerobrineAI.getPluginCore().getAICore().getCore(CoreType.DESTROY_TORCHES).RunCore(data); - if (HerobrineAI.getPluginCore().getConfigDB().UsePotionEffects){ - AICore.PlayerTarget.addPotionEffect(new PotionEffect(PotionEffectType.CONFUSION, 1000, 1)); - AICore.PlayerTarget.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 1000, 1)); - AICore.PlayerTarget.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 1000, 1)); - } - Location tploc = (Location) Position.getTeleportPosition(ploc); - - HerobrineAI.HerobrineNPC.moveTo(tploc); - - Message.SendMessage(AICore.PlayerTarget); - - StartHandler(); - - return new CoreResult(true,"Herobrine attacks "+player.getName()+"!"); - }else{ - return new CoreResult(false,"Player is in secure area."); + public CoreResult CallCore(Object[] data) { + return setAttackTarget((Player) data[0]); } - }else{ - return new CoreResult(false,"Player has Ancient Sword."); - } - } - - public void StopHandler(){ - if (isHandler){ - Bukkit.getScheduler().cancelTask(HandlerINT); - isHandler=false; + + public CoreResult setAttackTarget(Player player) { + if (!PluginCore.getAICore().checkAncientSword(player.getInventory())) { + if (PluginCore.getSupport().checkAttack(player.getLocation())) { + if (!PluginCore.canAttackPlayerNoMSG(player)) { + return new CoreResult(false, "This player is protected."); + } + + HerobrineAI.HerobrineHP = HerobrineAI.HerobrineMaxHP; + ticksToEnd = 0; + AICore.PlayerTarget = player; + AICore.isTarget = true; + AICore.log.info("[HerobrineAI] Teleporting to target. (" + AICore.PlayerTarget.getName() + ")"); + Location ploc = (Location) AICore.PlayerTarget.getLocation(); + Object[] data = { ploc }; + PluginCore.getAICore().getCore(CoreType.DESTROY_TORCHES).RunCore(data); + if (PluginCore.getConfigDB().UsePotionEffects) { + AICore.PlayerTarget.addPotionEffect(new PotionEffect(PotionEffectType.CONFUSION, 1000, 1)); + AICore.PlayerTarget.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 1000, 1)); + AICore.PlayerTarget.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 1000, 1)); + } + Location tploc = (Location) Position.getTeleportPosition(ploc); + + HerobrineAI.HerobrineNPC.moveTo(tploc); + + Message.SendMessage(AICore.PlayerTarget); + + StartHandler(); + + return new CoreResult(true, "Herobrine attacks " + player.getName() + "!"); + } else { + return new CoreResult(false, "Player is in secure area."); + } + } else { + return new CoreResult(false, "Player has Ancient Sword."); } } - - public void StartHandler(){ + + public void StopHandler() { + if (isHandler) { + Bukkit.getScheduler().cancelTask(HandlerINT); + isHandler = false; + } + } + + public void StartHandler() { KeepLooking(); FollowHideRepeat(); - isHandler=true; - HandlerINT=Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(AICore.plugin, new Runnable() { - public void run() { - Handler(); - } - }, 1 * 5L,1 * 5L); + isHandler = true; + HandlerINT = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(AICore.plugin, new Runnable() { + public void run() { + Handler(); + } + }, 1 * 5L, 1 * 5L); } - - private void Handler(){ + + private void Handler() { KeepLooking(); - if (ticksToEnd==1 || ticksToEnd==16 || ticksToEnd==32 || ticksToEnd==48 || ticksToEnd==64 || ticksToEnd==80 || ticksToEnd==96 || ticksToEnd==112 || ticksToEnd==128 || ticksToEnd==144){ + if (ticksToEnd == 1 || ticksToEnd % 16 == 0) FollowHideRepeat(); + + } + + public void KeepLooking() { + if (AICore.PlayerTarget.isOnline() && AICore.isTarget + && PluginCore.getAICore().getCoreTypeNow() == CoreType.ATTACK) { + if (AICore.PlayerTarget.isDead() == false) { + if (ticksToEnd == 160) { + PluginCore.getAICore().CancelTarget(CoreType.ATTACK); + } else { + ticksToEnd++; + + Location ploc = (Location) AICore.PlayerTarget.getLocation(); + ploc.setY(ploc.getY() + 1.5); + HerobrineAI.HerobrineNPC.lookAtPoint(ploc); + if (PluginCore.getConfigDB().Lighting == true) { + int lchance = Utils.getRandomGen().nextInt(100); + + if (lchance > 75) { + Location newloc = (Location) ploc; + int randx = Utils.getRandomGen().nextInt(50); + int randz = Utils.getRandomGen().nextInt(50); + if (Utils.getRandomGen().nextBoolean()) { + newloc.setX(newloc.getX() + randx); + } else { + newloc.setX(newloc.getX() - randx); + } + if (Utils.getRandomGen().nextBoolean()) { + newloc.setZ(newloc.getZ() + randz); + } else { + newloc.setZ(newloc.getZ() - randz); + } + newloc.setY(250); + newloc.getWorld().strikeLightning(newloc); + + } + + } + + } + } else { + PluginCore.getAICore().CancelTarget(CoreType.ATTACK); + } + } else { + PluginCore.getAICore().CancelTarget(CoreType.ATTACK); } } - - public void KeepLooking(){ - if (AICore.PlayerTarget.isOnline() && AICore.isTarget && HerobrineAI.getPluginCore().getAICore().getCoreTypeNow()==CoreType.ATTACK){ - if (AICore.PlayerTarget.isDead()==false){ - if (ticksToEnd==160){HerobrineAI.getPluginCore().getAICore().CancelTarget(CoreType.ATTACK);}else{ - ticksToEnd++; - - Location ploc = (Location) AICore.PlayerTarget.getLocation(); - ploc.setY(ploc.getY()+1.5); - HerobrineAI.HerobrineNPC.lookAtPoint(ploc); - if (HerobrineAI.getPluginCore().getConfigDB().Lighting==true){ - int lchance= new Random().nextInt(100); - - if (lchance>75){ - Location newloc = (Location) ploc; - int randx= new Random().nextInt(50); - int randz= new Random().nextInt(50); - if (new Random().nextBoolean()){ - newloc.setX(newloc.getX()+randx); - }else{ - newloc.setX(newloc.getX()-randx); - } - if (new Random().nextBoolean()){ - newloc.setZ(newloc.getZ()+randz); - }else{ - newloc.setZ(newloc.getZ()-randz); + + public void Follow() { + if (AICore.PlayerTarget.isOnline() + && AICore.isTarget + && PluginCore.getAICore().getCoreTypeNow() == CoreType.ATTACK) { + + if (AICore.PlayerTarget.isDead() == false) { + + if (PluginCore.getConfigDB().useWorlds.contains(AICore.PlayerTarget.getWorld().getName()) + && PluginCore.getSupport().checkAttack(AICore.PlayerTarget.getLocation())) { + + HerobrineAI.HerobrineNPC.moveTo(Position.getTeleportPosition(AICore.PlayerTarget.getLocation())); + Location ploc = (Location) AICore.PlayerTarget.getLocation(); + ploc.setY(ploc.getY() + 1.5); + HerobrineAI.HerobrineNPC.lookAtPoint(ploc); + AICore.PlayerTarget.playSound(AICore.PlayerTarget.getLocation(), Sound.ENTITY_PLAYER_BREATH, 0.75f, 0.75f); + if (PluginCore.getConfigDB().HitPlayer == true) { + int hitchance = Utils.getRandomGen().nextInt(100); + if (hitchance < 55) { + AICore.PlayerTarget.playSound(AICore.PlayerTarget.getLocation(), Sound.ENTITY_PLAYER_HURT, 0.75f, 0.75f); + + AICore.PlayerTarget.damage(4); + + } + } + } else { + PluginCore.getAICore().CancelTarget(CoreType.ATTACK); } - newloc.setY(250); - newloc.getWorld().strikeLightning(newloc); - - } - - - } - - - } - }else{HerobrineAI.getPluginCore().getAICore().CancelTarget(CoreType.ATTACK);} - }else{HerobrineAI.getPluginCore().getAICore().CancelTarget(CoreType.ATTACK);} + } else { + PluginCore.getAICore().CancelTarget(CoreType.ATTACK); + } + } else { + PluginCore.getAICore().CancelTarget(CoreType.ATTACK); + } + } - - public void Follow(){ - if (AICore.PlayerTarget.isOnline() && AICore.isTarget && HerobrineAI.getPluginCore().getAICore().getCoreTypeNow()==CoreType.ATTACK){ - if (AICore.PlayerTarget.isDead()==false){ - if (HerobrineAI.getPluginCore().getConfigDB().useWorlds.contains(AICore.PlayerTarget.getWorld().getName()) && HerobrineAI.getPluginCore().getSupport().checkAttack(AICore.PlayerTarget.getLocation())){ - HerobrineAI.HerobrineNPC.moveTo(Position.getTeleportPosition(AICore.PlayerTarget.getLocation())); - Location ploc = (Location) AICore.PlayerTarget.getLocation(); - ploc.setY(ploc.getY()+1.5); - HerobrineAI.HerobrineNPC.lookAtPoint(ploc); - AICore.PlayerTarget.playSound(AICore.PlayerTarget.getLocation(),Sound.BREATH,(float) 0.75,(float) 0.75); - if (HerobrineAI.getPluginCore().getConfigDB().HitPlayer==true){ - int hitchance= new Random().nextInt(100); - if (hitchance<55){ - AICore.PlayerTarget.playSound(AICore.PlayerTarget.getLocation(), Sound.HURT,(float) 0.75,(float) 0.75); - if (AICore.PlayerTarget.getHealth()>=4){ - AICore.PlayerTarget.setHealth(AICore.PlayerTarget.getHealth()-4); - }else{AICore.PlayerTarget.setHealth(0);} - - - } - } - }else{HerobrineAI.getPluginCore().getAICore().CancelTarget(CoreType.ATTACK);} - }else{HerobrineAI.getPluginCore().getAICore().CancelTarget(CoreType.ATTACK);} - }else{HerobrineAI.getPluginCore().getAICore().CancelTarget(CoreType.ATTACK);} - + + public void Hide() { + if (AICore.PlayerTarget.isOnline() && AICore.isTarget + && PluginCore.getAICore().getCoreTypeNow() == CoreType.ATTACK) { + if (AICore.PlayerTarget.isDead() == false) { + + Location ploc = (Location) AICore.PlayerTarget.getLocation(); + + ploc.setY(-20); + + for(int i=0; i < 5; i++){ + for(float j=0; j < 2; j+= 0.5f){ + Location hbloc = (Location) HerobrineAI.HerobrineNPC.getBukkitEntity().getLocation(); + hbloc.setY(hbloc.getY() + j); + hbloc.getWorld().playEffect(hbloc, Effect.SMOKE, 80); + } + } + + if (PluginCore.getConfigDB().SpawnBats) { + Location hbloc = (Location) HerobrineAI.HerobrineNPC.getBukkitEntity().getLocation(); + ploc.getWorld().spawnEntity(hbloc, EntityType.BAT); + ploc.getWorld().spawnEntity(hbloc, EntityType.BAT); + } + + HerobrineAI.HerobrineNPC.moveTo(ploc); + + } else { + PluginCore.getAICore().CancelTarget(CoreType.ATTACK); + } + } else { + PluginCore.getAICore().CancelTarget(CoreType.ATTACK); + } + } - - public void Hide(){ - if (AICore.PlayerTarget.isOnline() && AICore.isTarget && HerobrineAI.getPluginCore().getAICore().getCoreTypeNow()==CoreType.ATTACK){ - if (AICore.PlayerTarget.isDead()==false){ - - Location ploc = (Location) AICore.PlayerTarget.getLocation(); - - ploc.setY(-20); - - Location hbloc1 = (Location) HerobrineAI.HerobrineNPC.getBukkitEntity().getLocation(); - hbloc1.setY(hbloc1.getY()+1); - Location hbloc2 = (Location) HerobrineAI.HerobrineNPC.getBukkitEntity().getLocation(); - hbloc2.setY(hbloc2.getY()+0); - Location hbloc3 = (Location) HerobrineAI.HerobrineNPC.getBukkitEntity().getLocation(); - hbloc3.setY(hbloc3.getY()+0.5); - Location hbloc4 = (Location) HerobrineAI.HerobrineNPC.getBukkitEntity().getLocation(); - hbloc4.setY(hbloc4.getY()+1.5); - - - ploc.getWorld().playEffect(hbloc1, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc2, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc3, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc4, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc1, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc2, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc3, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc4, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc1, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc2, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc3, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc4, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc1, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc2, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc3, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc4, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc1, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc2, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc3, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc4, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc1, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc2, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc3, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc4, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc1, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc2, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc3, Effect.SMOKE, 80); - ploc.getWorld().playEffect(hbloc4, Effect.SMOKE, 80); - - if (HerobrineAI.getPluginCore().getConfigDB().SpawnBats){ - int cc = new Random().nextInt(3); - if (cc==0){ - ploc.getWorld().spawnEntity(hbloc1, EntityType.BAT); - ploc.getWorld().spawnEntity(hbloc1, EntityType.BAT); - }else if (cc==1){ - ploc.getWorld().spawnEntity(hbloc1, EntityType.BAT); - } - - } - - HerobrineAI.HerobrineNPC.moveTo(ploc); - - }else{HerobrineAI.getPluginCore().getAICore().CancelTarget(CoreType.ATTACK);} - }else{HerobrineAI.getPluginCore().getAICore().CancelTarget(CoreType.ATTACK);} - - } - - public void FollowHideRepeat(){ - if (AICore.PlayerTarget.isOnline() && AICore.isTarget && HerobrineAI.getPluginCore().getAICore().getCoreTypeNow()==CoreType.ATTACK){ - if (AICore.PlayerTarget.isDead()==false){ - Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(AICore.plugin, new Runnable() { - public void run() { - Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(AICore.plugin, new Runnable() { - public void run() { - Hide(); - } - }, 1 * 30L); - Follow(); - } - }, 1 * 45L); - }else{HerobrineAI.getPluginCore().getAICore().CancelTarget(CoreType.ATTACK);} - }else{HerobrineAI.getPluginCore().getAICore().CancelTarget(CoreType.ATTACK);} + + public void FollowHideRepeat() { + if (AICore.PlayerTarget.isOnline() && AICore.isTarget + && PluginCore.getAICore().getCoreTypeNow() == CoreType.ATTACK) { + if (AICore.PlayerTarget.isDead() == false) { + Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(AICore.plugin, new Runnable() { + public void run() { + Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(AICore.plugin, new Runnable() { + public void run() { + Hide(); + } + }, 1 * 30L); + Follow(); + } + }, 1 * 45L); + } else { + PluginCore.getAICore().CancelTarget(CoreType.ATTACK); + } + } else { + PluginCore.getAICore().CancelTarget(CoreType.ATTACK); + } } } diff --git a/src/org/jakub1221/herobrineai/AI/cores/Book.java b/src/org/jakub1221/herobrineai/AI/cores/Book.java index e903e22..dbbb8a9 100644 --- a/src/org/jakub1221/herobrineai/AI/cores/Book.java +++ b/src/org/jakub1221/herobrineai/AI/cores/Book.java @@ -9,61 +9,66 @@ import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.BookMeta; import org.jakub1221.herobrineai.HerobrineAI; +import org.jakub1221.herobrineai.Utils; import org.jakub1221.herobrineai.AI.Core; import org.jakub1221.herobrineai.AI.CoreResult; -public class Book extends Core{ - - public Book(){ - super(CoreType.BOOK,AppearType.NORMAL); +public class Book extends Core { + + public Book() { + super(CoreType.BOOK, AppearType.NORMAL, HerobrineAI.getPluginCore()); } - - public CoreResult CallCore(Object[] data){ + + public CoreResult CallCore(Object[] data) { Player player = (Player) data[0]; - - if (HerobrineAI.getPluginCore().getConfigDB().useWorlds.contains(player.getLocation().getWorld().getName())){ - if (HerobrineAI.getPluginCore().getConfigDB().WriteBooks==true && HerobrineAI.getPluginCore().getSupport().checkBooks(player.getLocation())){ - int chance=new Random().nextInt(100); - if (chance>(100-HerobrineAI.getPluginCore().getConfigDB().BookChance)){ - Inventory chest = (Inventory) data[1]; - if (chest.firstEmpty()!=-1){ - chest.setItem(chest.firstEmpty(),newBook()); - return new CoreResult(true,"Book created!"); - }else{ - return new CoreResult(false,"Book create failed!"); - } - }else{ - return new CoreResult(false,"Books are not allowed!"); - } - }else{ - return new CoreResult(false,"Player is not in allowed world!"); + + if (HerobrineAI.getPluginCore().getConfigDB().useWorlds.contains(player.getLocation().getWorld().getName())) { + + if (HerobrineAI.getPluginCore().getConfigDB().WriteBooks == true + && HerobrineAI.getPluginCore().getSupport().checkBooks(player.getLocation())) { + + int chance = Utils.getRandomGen().nextInt(100); + if (chance > (100 - HerobrineAI.getPluginCore().getConfigDB().BookChance)) { + Inventory chest = (Inventory) data[1]; + if (chest.firstEmpty() != -1) { + if (HerobrineAI.getPluginCore().getAICore().getResetLimits().isBook()) { + chest.setItem(chest.firstEmpty(), newBook()); + return new CoreResult(true, "Book created!"); + } + } else { + return new CoreResult(false, "Book create failed!"); + } + } else { + return new CoreResult(false, "Books are not allowed!"); + } + } else { + return new CoreResult(false, "Player is not in allowed world!"); } } - return new CoreResult(false,"Book create failed!"); + return new CoreResult(false, "Book create failed!"); } - public ItemStack newBook(){ - + + public ItemStack newBook() { + int count = HerobrineAI.getPluginCore().getConfigDB().useBookMessages.size(); - - int chance=new Random().nextInt(count); - + + int chance = Utils.getRandomGen().nextInt(count); + ItemStack book = new ItemStack(Material.WRITTEN_BOOK); BookMeta meta = (BookMeta) book.getItemMeta(); - - + ArrayList list = new ArrayList(); meta.setTitle(""); meta.setAuthor(""); - list.add(0, (String) HerobrineAI.getPluginCore().getConfigDB().useBookMessages.get(chance)); - + meta.setPages(list); book.setItemMeta(meta); - return (ItemStack) book; + return (ItemStack) book; } - + } diff --git a/src/org/jakub1221/herobrineai/AI/cores/BuildStuff.java b/src/org/jakub1221/herobrineai/AI/cores/BuildStuff.java index f47fba7..2740dee 100644 --- a/src/org/jakub1221/herobrineai/AI/cores/BuildStuff.java +++ b/src/org/jakub1221/herobrineai/AI/cores/BuildStuff.java @@ -7,141 +7,144 @@ import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.World; import org.jakub1221.herobrineai.HerobrineAI; +import org.jakub1221.herobrineai.Utils; import org.jakub1221.herobrineai.AI.*; +public class BuildStuff extends Core { -public class BuildStuff extends Core{ - - public BuildStuff(){ - super(CoreType.BUILD_STUFF,AppearType.NORMAL); + public BuildStuff() { + super(CoreType.BUILD_STUFF, AppearType.NORMAL, HerobrineAI.getPluginCore()); } - public CoreResult CallCore(Object[] data){ - if (data.length==2){ - return BuildCave((Location) data[0],true); + + public CoreResult CallCore(Object[] data) { + if (data.length == 2) { + return BuildCave((Location) data[0], true); } return BuildCave((Location) data[0]); } - - public CoreResult BuildCave(Location loc){ - - if (HerobrineAI.getPluginCore().getConfigDB().BuildStuff==true){ - if (HerobrineAI.getPluginCore().getSupport().checkBuild(loc)){ - if (loc.getBlockY()<60){ - - int chance=new Random().nextInt(100); - if (chance>(100-HerobrineAI.getPluginCore().getConfigDB().CaveChance)){ - AICore.log.info("Creating cave..."); - - GenerateCave(loc); - - return new CoreResult(false,"Cave created!"); - - }else{ - return new CoreResult(false,"Roll failed!"); - } - }else{ - return new CoreResult(false,"Location must be under 60 of Y."); - } - }else{ - return new CoreResult(false,"Cannot build stuff."); - } - }else{ - return new CoreResult(false,"Player is in secure location."); - } - - - } - - public CoreResult BuildCave(Location loc,boolean cmd){ - - if (HerobrineAI.getPluginCore().getSupport().checkBuild(loc)){ - if (loc.getBlockY()<60){ - - - AICore.log.info("Creating cave..."); - - GenerateCave(loc); - - return new CoreResult(false,"Cave created!"); - - - }else{ - return new CoreResult(false,"Location must be under 60 of Y."); - } - }else{ - return new CoreResult(false,"Player is in secure location."); + public CoreResult BuildCave(Location loc) { + + if (HerobrineAI.getPluginCore().getConfigDB().BuildStuff == true) { + if (HerobrineAI.getPluginCore().getSupport().checkBuild(loc)) { + if (loc.getBlockY() < 60) { + + int chance = Utils.getRandomGen().nextInt(100); + if (chance > (100 - HerobrineAI.getPluginCore().getConfigDB().CaveChance)) { + AICore.log.info("Creating cave..."); + + GenerateCave(loc); + + return new CoreResult(false, "Cave created!"); + + } else { + return new CoreResult(false, "Roll failed!"); + } + } else { + return new CoreResult(false, "Location must be under 60 of Y."); + } + } else { + return new CoreResult(false, "Cannot build stuff."); } + } else { + return new CoreResult(false, "Player is in secure location."); + } } - - public void GenerateCave(Location loc){ - - if (HerobrineAI.getPluginCore().getSupport().checkBuild(loc)){ - - ArrayList redstoneTorchList = new ArrayList(); - boolean goByX=new Random().nextBoolean(); - boolean goNegative=new Random().nextBoolean(); - - int baseX=loc.getBlockX(); - int baseZ=loc.getBlockZ(); - int baseY=loc.getBlockY(); - - int finalX=0; - int finalZ=0; - - int maxL=new Random().nextInt(10)+4; - int iR=new Random().nextInt(3)+4; - int iNow=0; - while(iNow!=iR){ - iNow++; - goByX=new Random().nextBoolean(); - goNegative=new Random().nextBoolean(); - int i=0; - for (i=0;i<=maxL;i++){ - finalX=0; - finalZ=0; - if (goNegative){ - if (goByX){ - finalX=-1; - }else{ - finalZ=-1; - } - }else{ - if (goByX){ - finalX=1; - }else{ - finalZ=1; + + public CoreResult BuildCave(Location loc, boolean cmd) { + + if (HerobrineAI.getPluginCore().getSupport().checkBuild(loc)) { + if (loc.getBlockY() < 60) { + + AICore.log.info("Creating cave..."); + + GenerateCave(loc); + + return new CoreResult(false, "Cave created!"); + + } else { + return new CoreResult(false, "Location must be under 60 of Y."); + } + } else { + return new CoreResult(false, "Player is in secure location."); + } + + } + + public void GenerateCave(Location loc) { + + if (HerobrineAI.getPluginCore().getSupport().checkBuild(loc)) { + + ArrayList redstoneTorchList = new ArrayList(); + + Random rand = Utils.getRandomGen(); + + boolean goByX = rand.nextBoolean(); + boolean goNegative = rand.nextBoolean(); + + int baseX = loc.getBlockX(); + int baseZ = loc.getBlockZ(); + int baseY = loc.getBlockY(); + + int finalX = 0; + int finalZ = 0; + + int maxL = rand.nextInt(10) + 4; + int iR = rand.nextInt(3) + 4; + int iNow = 0; + + while (iNow != iR) { + + iNow++; + goByX = rand.nextBoolean(); + goNegative = rand.nextBoolean(); + int i = 0; + + for (i = 0; i <= maxL; i++) { + finalX = 0; + finalZ = 0; + if (goNegative) { + if (goByX) { + finalX = -1; + } else { + finalZ = -1; + } + } else { + if (goByX) { + finalX = 1; + } else { + finalZ = 1; + } + } + + baseX = baseX + finalX; + baseZ = baseZ + finalZ; + + loc.getWorld().getBlockAt(baseX, baseY, baseZ).breakNaturally(null); + loc.getWorld().getBlockAt(baseX, baseY + 1, baseZ).breakNaturally(null); + + if (rand.nextBoolean()) { + redstoneTorchList.add(new Location(loc.getWorld(), baseX, baseY + 1, baseZ)); + } } } - - baseX=baseX+finalX; - baseZ=baseZ+finalZ; - - loc.getWorld().getBlockAt(baseX,baseY,baseZ).breakNaturally(null); - loc.getWorld().getBlockAt(baseX,baseY+1,baseZ).breakNaturally(null); - if (new Random().nextBoolean()){ - redstoneTorchList.add(new Location(loc.getWorld(),baseX,baseY+1,baseZ)); + + for (Location _loc : redstoneTorchList) { + PlaceRedstoneTorch(_loc.getWorld(), _loc.getBlockX(), _loc.getBlockY(), _loc.getBlockZ()); } - } - } - - for (Location _loc : redstoneTorchList){ - PlaceRedstoneTorch(_loc.getWorld(),_loc.getBlockX(),_loc.getBlockY(),_loc.getBlockZ()); - } - - AICore.log.info("Cave created!"); - - } - } - - public void PlaceRedstoneTorch(World world,int x,int y,int z){ - Random randgen = new Random(); - int chance=randgen.nextInt(100); - if (chance>70){ - world.getBlockAt(x, y, z).setType(Material.REDSTONE_TORCH_ON); + + AICore.log.info("Cave created!"); + } } - - + + public void PlaceRedstoneTorch(World world, int x, int y, int z) { + Random randgen = Utils.getRandomGen(); + int chance = randgen.nextInt(100); + if (chance > 70) { + world.getBlockAt(x, y, z).setType(Material.REDSTONE_TORCH_ON); + } + } + } diff --git a/src/org/jakub1221/herobrineai/AI/cores/Burn.java b/src/org/jakub1221/herobrineai/AI/cores/Burn.java index a0daea4..5de38ee 100644 --- a/src/org/jakub1221/herobrineai/AI/cores/Burn.java +++ b/src/org/jakub1221/herobrineai/AI/cores/Burn.java @@ -1,13 +1,14 @@ package org.jakub1221.herobrineai.AI.cores; import org.bukkit.entity.Player; +import org.jakub1221.herobrineai.HerobrineAI; import org.jakub1221.herobrineai.AI.Core; import org.jakub1221.herobrineai.AI.CoreResult; public class Burn extends Core { public Burn() { - super(CoreType.BURN, AppearType.NORMAL); + super(CoreType.BURN, AppearType.NORMAL, HerobrineAI.getPluginCore()); } @Override diff --git a/src/org/jakub1221/herobrineai/AI/cores/BuryPlayer.java b/src/org/jakub1221/herobrineai/AI/cores/BuryPlayer.java index 1344ed6..e926c81 100644 --- a/src/org/jakub1221/herobrineai/AI/cores/BuryPlayer.java +++ b/src/org/jakub1221/herobrineai/AI/cores/BuryPlayer.java @@ -10,77 +10,83 @@ import org.jakub1221.herobrineai.HerobrineAI; import org.jakub1221.herobrineai.AI.Core; import org.jakub1221.herobrineai.AI.CoreResult; -public class BuryPlayer extends Core{ +public class BuryPlayer extends Core { - public Block savedBlock1=null; - public Block savedBlock2=null; - - public BuryPlayer(){ - super(CoreType.BURY_PLAYER,AppearType.NORMAL); + public Block savedBlock1 = null; + public Block savedBlock2 = null; + + public BuryPlayer() { + super(CoreType.BURY_PLAYER, AppearType.NORMAL, HerobrineAI.getPluginCore()); } - - public CoreResult CallCore(Object[] data){ - return FindPlace((Player)data[0]); + + public CoreResult CallCore(Object[] data) { + return FindPlace((Player) data[0]); } - + public CoreResult FindPlace(Player player){ - if(HerobrineAI.getPluginCore().getSupport().checkBuild(player.getLocation())){ - - - Location loc = (Location) player.getLocation(); - - if (HerobrineAI.StandBlocks.contains(loc.getWorld().getBlockAt(loc.getBlockX(), loc.getBlockY()-1, loc.getBlockZ()).getType())){ - if (HerobrineAI.StandBlocks.contains(loc.getWorld().getBlockAt(loc.getBlockX(), loc.getBlockY()-2, loc.getBlockZ()).getType())){ - if (HerobrineAI.StandBlocks.contains(loc.getWorld().getBlockAt(loc.getBlockX(), loc.getBlockY()-1, loc.getBlockZ()-1).getType())){ - if (HerobrineAI.StandBlocks.contains(loc.getWorld().getBlockAt(loc.getBlockX(), loc.getBlockY()-2, loc.getBlockZ()-1).getType())){ - if (HerobrineAI.StandBlocks.contains(loc.getWorld().getBlockAt(loc.getBlockX(), loc.getBlockY()-3, loc.getBlockZ()).getType())){ - if (HerobrineAI.StandBlocks.contains(loc.getWorld().getBlockAt(loc.getBlockX(), loc.getBlockY()-3, loc.getBlockZ()-1).getType())){ - if (HerobrineAI.StandBlocks.contains(loc.getWorld().getBlockAt(loc.getBlockX(), loc.getBlockY()-1, loc.getBlockZ()-1).getType())){ - if (HerobrineAI.StandBlocks.contains(loc.getWorld().getBlockAt(loc.getBlockX(), loc.getBlockY()-2, loc.getBlockZ()-1).getType())){ - if (HerobrineAI.StandBlocks.contains(loc.getWorld().getBlockAt(loc.getBlockX(), loc.getBlockY()-1, loc.getBlockZ()-2).getType())){ - if (HerobrineAI.NonStandBlocks.contains(loc.getWorld().getBlockAt(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()-2).getType())){ - Bury(loc.getWorld(),loc.getBlockX(),loc.getBlockY(),loc.getBlockZ(),player); - return new CoreResult(true,"Player buried!"); - } - } - } - } - } - } - } - } - } - } + if(HerobrineAI.getPluginCore().getSupport().checkBuild(player.getLocation())){ + Location loc = (Location) player.getLocation(); + + int[][] blocks = { + {-1, 0}, + {-2, 0}, + {-1,-1}, + {-2,-1}, + {-3, 0}, + {-3,-1}, + {-1,-1}, + {-2,-1}, + {-1,-2}, + { 0,-2}, + + }; + + for (int i = 0; i < blocks.length; i++){ + + Material mat = loc.getWorld().getBlockAt( + loc.getBlockX(), + loc.getBlockY() + blocks[i][0], + loc.getBlockZ() + blocks[i][1] + ).getType(); + + if(!HerobrineAI.StandBlocks.contains(mat)) + return new CoreResult(false,"Cannot find suitable location!"); + + } + + + Bury(loc.getWorld(),loc.getBlockX(),loc.getBlockY(),loc.getBlockZ(),player); + return new CoreResult(true,"Player buried!"); } - - return new CoreResult(false,"Cannot find a good location!"); + + return new CoreResult(false,"Cannot find suitable location!"); } - - public void Bury(World world,int X,int Y,int Z,Player player){ - - Location loc = new Location(world,X,Y,Z); - - loc.getWorld().getBlockAt(X, Y-1, Z).breakNaturally(); - loc.getWorld().getBlockAt(X, Y-2, Z).breakNaturally(); - loc.getWorld().getBlockAt(X, Y-3, Z).breakNaturally(); - loc.getWorld().getBlockAt(X, Y-1, Z-1).breakNaturally(); - loc.getWorld().getBlockAt(X, Y-2, Z-1).breakNaturally(); - loc.getWorld().getBlockAt(X, Y-3, Z-1).breakNaturally(); - player.teleport(new Location(world,X,Y-3,Z)); - RegenBlocks(world,X,Y,Z,player.getName()); - + + public void Bury(World world, int X, int Y, int Z, Player player) { + + Location loc = new Location(world, X, Y, Z); + + loc.getWorld().getBlockAt(X, Y - 1, Z).breakNaturally(); + loc.getWorld().getBlockAt(X, Y - 2, Z).breakNaturally(); + loc.getWorld().getBlockAt(X, Y - 3, Z).breakNaturally(); + loc.getWorld().getBlockAt(X, Y - 1, Z - 1).breakNaturally(); + loc.getWorld().getBlockAt(X, Y - 2, Z - 1).breakNaturally(); + loc.getWorld().getBlockAt(X, Y - 3, Z - 1).breakNaturally(); + player.teleport(new Location(world, X, Y - 3, Z)); + RegenBlocks(world, X, Y, Z, player.getName()); + } - - public void RegenBlocks(World world,int X,int Y,int Z,String playername){ - Location loc = new Location(world,X,Y,Z); - Location signloc = new Location(world,X,Y,Z-2); - Block signblock = signloc.add(0, 0D ,0).getBlock(); + + public void RegenBlocks(World world, int X, int Y, int Z, String playername) { + Location loc = new Location(world, X, Y, Z); + Location signloc = new Location(world, X, Y, Z - 2); + Block signblock = signloc.add(0, 0D, 0).getBlock(); signblock.setType(Material.SIGN_POST); Sign sign = (Sign) signblock.getState(); sign.setLine(1, playername); sign.update(); - loc.getWorld().getBlockAt(X, Y-1, Z).setTypeIdAndData(98,(byte)2,false); - loc.getWorld().getBlockAt(X, Y-1, Z-1).setTypeIdAndData(98,(byte)2,false); + loc.getWorld().getBlockAt(X, Y - 1, Z).setTypeIdAndData(98, (byte) 2, false); + loc.getWorld().getBlockAt(X, Y - 1, Z - 1).setTypeIdAndData(98, (byte) 2, false); } - + } diff --git a/src/org/jakub1221/herobrineai/AI/cores/Curse.java b/src/org/jakub1221/herobrineai/AI/cores/Curse.java index c594bcf..88dc0a6 100644 --- a/src/org/jakub1221/herobrineai/AI/cores/Curse.java +++ b/src/org/jakub1221/herobrineai/AI/cores/Curse.java @@ -12,36 +12,34 @@ import org.jakub1221.herobrineai.AI.CoreResult; public class Curse extends Core { public Curse() { - super(CoreType.CURSE, AppearType.NORMAL); + super(CoreType.CURSE, AppearType.NORMAL, HerobrineAI.getPluginCore()); } @Override public CoreResult CallCore(Object[] data) { - - final Player player = (Player) data[0]; - - player.addPotionEffect(new PotionEffect(PotionEffectType.CONFUSION, 1000, 1)); - player.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 1000, 1)); - player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 1000, 1)); - player.addPotionEffect(new PotionEffect(PotionEffectType.POISON, 50, 1)); - player.addPotionEffect(new PotionEffect(PotionEffectType.WEAKNESS, 1000, 1)); - - int i = 0; - while(i!=3){ - i++; - Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(HerobrineAI.getPluginCore(), new Runnable(){ - @Override - public void run() { - player.getLocation().getWorld().strikeLightning(new Location(player.getLocation().getWorld(),player.getLocation().getX(),player.getLocation().getY()+1,player.getLocation().getZ())); - player.addPotionEffect(new PotionEffect(PotionEffectType.POISON, 50, 1)); - } - - }, i*150L); - } - - - return new CoreResult(true,"Player cursed!"); + final Player player = (Player) data[0]; + + player.addPotionEffect(new PotionEffect(PotionEffectType.CONFUSION, 1000, 1)); + player.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 1000, 1)); + player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 1000, 1)); + player.addPotionEffect(new PotionEffect(PotionEffectType.POISON, 50, 1)); + player.addPotionEffect(new PotionEffect(PotionEffectType.WEAKNESS, 1000, 1)); + + for (int i=0; i< 3 ; i++) { + Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(HerobrineAI.getPluginCore(), new Runnable() { + + @Override + public void run() { + player.getLocation().getWorld().strikeLightning(new Location(player.getLocation().getWorld(), + player.getLocation().getX(), player.getLocation().getY() + 1, player.getLocation().getZ())); + player.addPotionEffect(new PotionEffect(PotionEffectType.POISON, 50, 1)); + } + + }, i * 150L); + } + + return new CoreResult(true, "Player cursed!"); } } diff --git a/src/org/jakub1221/herobrineai/AI/cores/DestroyTorches.java b/src/org/jakub1221/herobrineai/AI/cores/DestroyTorches.java index 401fb6d..b1e7aa0 100644 --- a/src/org/jakub1221/herobrineai/AI/cores/DestroyTorches.java +++ b/src/org/jakub1221/herobrineai/AI/cores/DestroyTorches.java @@ -8,43 +8,44 @@ import org.jakub1221.herobrineai.HerobrineAI; import org.jakub1221.herobrineai.AI.Core; import org.jakub1221.herobrineai.AI.CoreResult; -public class DestroyTorches extends Core{ +public class DestroyTorches extends Core { - public DestroyTorches(){ - super(CoreType.DESTROY_TORCHES,AppearType.NORMAL); + public DestroyTorches() { + super(CoreType.DESTROY_TORCHES, AppearType.NORMAL, HerobrineAI.getPluginCore()); } - - public CoreResult CallCore(Object[] data){ + + public CoreResult CallCore(Object[] data) { return destroyTorches((Location) data[0]); } - - public CoreResult destroyTorches(Location loc){ - if (HerobrineAI.getPluginCore().getConfigDB().DestroyTorches==true){ - - - int x=loc.getBlockX(); - int y=loc.getBlockY(); - int z=loc.getBlockZ(); - World world=loc.getWorld(); - - int i=-(HerobrineAI.getPluginCore().getConfigDB().DestroyTorchesRadius); // Y - int ii=-(HerobrineAI.getPluginCore().getConfigDB().DestroyTorchesRadius); // X - int iii=-(HerobrineAI.getPluginCore().getConfigDB().DestroyTorchesRadius); // Z - - for(i=-(HerobrineAI.getPluginCore().getConfigDB().DestroyTorchesRadius);i<=HerobrineAI.getPluginCore().getConfigDB().DestroyTorchesRadius;i++){ - for(ii=-(HerobrineAI.getPluginCore().getConfigDB().DestroyTorchesRadius);ii<=HerobrineAI.getPluginCore().getConfigDB().DestroyTorchesRadius;ii++){ - for(iii=-(HerobrineAI.getPluginCore().getConfigDB().DestroyTorchesRadius);iii<=HerobrineAI.getPluginCore().getConfigDB().DestroyTorchesRadius;iii++){ - if(world.getBlockAt(x+ii, y+i, z+iii).getType() == Material.TORCH){ - world.getBlockAt(x+ii, y+i, z+iii).breakNaturally(); - return new CoreResult(true,"Torches destroyed!"); + + public CoreResult destroyTorches(Location loc) { + if (HerobrineAI.getPluginCore().getConfigDB().DestroyTorches == true) { + + int x = loc.getBlockX(); + int y = loc.getBlockY(); + int z = loc.getBlockZ(); + World world = loc.getWorld(); + + int i = -(HerobrineAI.getPluginCore().getConfigDB().DestroyTorchesRadius); // Y + int ii = -(HerobrineAI.getPluginCore().getConfigDB().DestroyTorchesRadius); // X + int iii = -(HerobrineAI.getPluginCore().getConfigDB().DestroyTorchesRadius); // Z + + for (i = -(HerobrineAI.getPluginCore().getConfigDB().DestroyTorchesRadius); i <= HerobrineAI.getPluginCore() + .getConfigDB().DestroyTorchesRadius; i++) { + for (ii = -(HerobrineAI.getPluginCore().getConfigDB().DestroyTorchesRadius); ii <= HerobrineAI + .getPluginCore().getConfigDB().DestroyTorchesRadius; ii++) { + for (iii = -(HerobrineAI.getPluginCore().getConfigDB().DestroyTorchesRadius); iii <= HerobrineAI + .getPluginCore().getConfigDB().DestroyTorchesRadius; iii++) { + if (world.getBlockAt(x + ii, y + i, z + iii).getType() == Material.TORCH) { + world.getBlockAt(x + ii, y + i, z + iii).breakNaturally(); + return new CoreResult(true, "Torches destroyed!"); } } - } + } } - + } - return new CoreResult(false,"Cannot destroy torches."); + return new CoreResult(false, "Cannot destroy torches."); } - } diff --git a/src/org/jakub1221/herobrineai/AI/cores/Graveyard.java b/src/org/jakub1221/herobrineai/AI/cores/Graveyard.java index 0b17e9d..8598510 100644 --- a/src/org/jakub1221/herobrineai/AI/cores/Graveyard.java +++ b/src/org/jakub1221/herobrineai/AI/cores/Graveyard.java @@ -9,134 +9,155 @@ import org.bukkit.World; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.jakub1221.herobrineai.HerobrineAI; +import org.jakub1221.herobrineai.Utils; import org.jakub1221.herobrineai.AI.AICore; import org.jakub1221.herobrineai.AI.Core; import org.jakub1221.herobrineai.AI.CoreResult; -public class Graveyard extends Core{ - +public class Graveyard extends Core { private List LivingEntities; - private int ticks=0; - private double savedX=0; - private double savedY=0; - private double savedZ=0; - private World savedWorld=null; - private Player savedPlayer=null; - - public Graveyard(){ - super(CoreType.GRAVEYARD,AppearType.APPEAR); + private int ticks = 0; + private double savedX = 0; + private double savedY = 0; + private double savedZ = 0; + private World savedWorld = null; + private Player savedPlayer = null; + + public Graveyard() { + super(CoreType.GRAVEYARD, AppearType.APPEAR, HerobrineAI.getPluginCore()); } - - public CoreResult CallCore(Object[] data){ + + public CoreResult CallCore(Object[] data) { return Teleport((Player) data[0]); } - - public CoreResult Teleport(Player player){ - if (HerobrineAI.getPluginCore().getConfigDB().UseGraveyardWorld==true){ - if (!HerobrineAI.getPluginCore().getAICore().checkAncientSword(player.getInventory())){ - LivingEntities = Bukkit.getServer().getWorld("world_herobrineai_graveyard").getLivingEntities(); - for (int i=0;i<=LivingEntities.size()-1;i++){ - - if (LivingEntities.get(i) instanceof Player || LivingEntities.get(i).getEntityId() == HerobrineAI.HerobrineEntityID){}else{ + public CoreResult Teleport(Player player) { + if (HerobrineAI.getPluginCore().getConfigDB().UseGraveyardWorld == true) { + if (!HerobrineAI.getPluginCore().getAICore().checkAncientSword(player.getInventory())) { + LivingEntities = Bukkit.getServer().getWorld("world_herobrineai_graveyard").getLivingEntities(); + for (int i = 0; i <= LivingEntities.size() - 1; i++) { + + if (LivingEntities.get(i) instanceof Player + || LivingEntities.get(i).getEntityId() == HerobrineAI.HerobrineEntityID) { + } else { + + LivingEntities.get(i).remove(); + + } + + } + + Bukkit.getServer().getWorld("world_herobrineai_graveyard").setTime(15000); + HerobrineAI.getPluginCore().getAICore().PlayerTarget = player; + Location loc = (Location) player.getLocation(); + savedX = loc.getX(); + savedY = loc.getY(); + savedZ = loc.getZ(); + savedWorld = loc.getWorld(); + savedPlayer = player; + loc.setWorld(Bukkit.getServer().getWorld("world_herobrineai_graveyard")); + loc.setX(-2.49); + loc.setY(4); + loc.setZ(10.69); + loc.setYaw(-179.85f); + loc.setPitch(0.44999f); + player.teleport(loc); - LivingEntities.get(i).remove(); + Start(); + HerobrineAI.getPluginCore().getAICore().isTarget = true; + Bukkit.getServer().getWorld("world_herobrineai_graveyard").setStorm(false); + + return new CoreResult(true, "Player successfully teleported!"); + } else { + return new CoreResult(false, "Player has Ancient Sword."); } - } - - Bukkit.getServer().getWorld("world_herobrineai_graveyard").setTime(15000); - HerobrineAI.getPluginCore().getAICore().PlayerTarget=player; - Location loc = (Location) player.getLocation(); - savedX=loc.getX(); - savedY=loc.getY(); - savedZ=loc.getZ(); - savedWorld=loc.getWorld(); - savedPlayer=player; - loc.setWorld(Bukkit.getServer().getWorld("world_herobrineai_graveyard")); - loc.setX(-2.49); - loc.setY(4); - loc.setZ(10.69); - loc.setYaw((float)-179.85); - loc.setPitch((float) 0.44999); - player.teleport(loc); - Start(); - HerobrineAI.getPluginCore().getAICore().isTarget=true; - Bukkit.getServer().getWorld("world_herobrineai_graveyard").setStorm(false); - return new CoreResult(true,"Player successfully teleported!"); - }else{return new CoreResult(false,"Player has Ancient Sword.");} + return new CoreResult(false, "Graveyard world is not allowed!"); } - return new CoreResult(false,"Graveyard world is not allowed!"); - } - public void Start(){ - - - ticks=0; - HerobrineAI.HerobrineNPC.moveTo(new Location(Bukkit.getServer().getWorld("world_herobrineai_graveyard"),-2.49,4,-4.12)); + + public void Start() { + + ticks = 0; + HerobrineAI.HerobrineNPC + .moveTo(new Location(Bukkit.getServer().getWorld("world_herobrineai_graveyard"), -2.49, 4, -4.12)); HandlerInterval(); - + } - - public void HandlerInterval(){ - - Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(AICore.plugin, new Runnable() { - public void run() { - Handler(); - } - }, 1 * 5L); - } - - public void Handler(){ - - LivingEntities = Bukkit.getServer().getWorld("world_herobrineai_graveyard").getLivingEntities(); - for (int i=0;i<=LivingEntities.size()-1;i++){ - - if (LivingEntities.get(i) instanceof Player || LivingEntities.get(i).getEntityId() == HerobrineAI.HerobrineEntityID){}else{ - - LivingEntities.get(i).remove(); - + + public void HandlerInterval() { + + Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(AICore.plugin, new Runnable() { + public void run() { + Handler(); } - + }, 1 * 5L); + } + + public void Handler() { + + LivingEntities = Bukkit.getServer().getWorld("world_herobrineai_graveyard").getLivingEntities(); + for (int i = 0; i <= LivingEntities.size() - 1; i++) { + + if (LivingEntities.get(i) instanceof Player + || LivingEntities.get(i).getEntityId() == HerobrineAI.HerobrineEntityID) { + } else { + + LivingEntities.get(i).remove(); + + } + } - - if (savedPlayer.isDead()==true || savedPlayer.isOnline()==false || savedPlayer.getLocation().getWorld()!=Bukkit.getServer().getWorld("world_herobrineai_graveyard") || this.ticks==90 || HerobrineAI.getPluginCore().getAICore().isTarget==false){ - if ( HerobrineAI.getPluginCore().getAICore().PlayerTarget==savedPlayer){ + + if (savedPlayer.isDead() == true + || savedPlayer.isOnline() == false + || savedPlayer.getLocation().getWorld() != Bukkit.getServer().getWorld("world_herobrineai_graveyard") + || this.ticks == 90 || HerobrineAI.getPluginCore().getAICore().isTarget == false) { + + if (HerobrineAI.getPluginCore().getAICore().PlayerTarget == savedPlayer) { HerobrineAI.getPluginCore().getAICore().CancelTarget(CoreType.GRAVEYARD); } - savedPlayer.teleport(new Location(savedWorld,savedX,savedY,savedZ)); - }else{ + savedPlayer.teleport(new Location(savedWorld, savedX, savedY, savedZ)); + + } else { Location ploc = (Location) savedPlayer.getLocation(); - ploc.setY(ploc.getY()+1.5); - HerobrineAI.HerobrineNPC.lookAtPoint(ploc); - if (ticks==1){ - HerobrineAI.HerobrineNPC.moveTo(new Location(Bukkit.getServer().getWorld("world_herobrineai_graveyard"),-2.49,4,-4.12)); - } - else if (ticks==40){ - HerobrineAI.HerobrineNPC.moveTo(new Location(Bukkit.getServer().getWorld("world_herobrineai_graveyard"),-2.49,4,-0.5)); - }else if (ticks==60){ - HerobrineAI.HerobrineNPC.moveTo(new Location(Bukkit.getServer().getWorld("world_herobrineai_graveyard"),-2.49,4,5.1)); - - }else if (ticks==84){ - HerobrineAI.HerobrineNPC.moveTo(new Location(Bukkit.getServer().getWorld("world_herobrineai_graveyard"),-2.49,4,7.5)); - + ploc.setY(ploc.getY() + 1.5); + HerobrineAI.HerobrineNPC.lookAtPoint(ploc); + if (ticks == 1) { + HerobrineAI.HerobrineNPC.moveTo( + new Location(Bukkit.getServer().getWorld("world_herobrineai_graveyard"), -2.49, 4, -4.12)); + } else if (ticks == 40) { + HerobrineAI.HerobrineNPC.moveTo( + new Location(Bukkit.getServer().getWorld("world_herobrineai_graveyard"), -2.49, 4, -0.5)); + } else if (ticks == 60) { + HerobrineAI.HerobrineNPC.moveTo( + new Location(Bukkit.getServer().getWorld("world_herobrineai_graveyard"), -2.49, 4, 5.1)); + + } else if (ticks == 84) { + HerobrineAI.HerobrineNPC.moveTo( + new Location(Bukkit.getServer().getWorld("world_herobrineai_graveyard"), -2.49, 4, 7.5)); + + } + + Random randomGen = Utils.getRandomGen(); + + if (randomGen.nextInt(4) == 1) { + Location newloc = new Location(Bukkit.getServer().getWorld("world_herobrineai_graveyard"), + (double) randomGen.nextInt(400), (double) Utils.getRandomGen().nextInt(20) + 20, + (double) randomGen.nextInt(400)); + Bukkit.getServer().getWorld("world_herobrineai_graveyard").strikeLightning(newloc); } - - if (new Random().nextInt(4)==1){ - Location newloc = new Location(Bukkit.getServer().getWorld("world_herobrineai_graveyard"),(double)new Random().nextInt(400),(double)new Random().nextInt(20)+20,(double)new Random().nextInt(400)); - Bukkit.getServer().getWorld("world_herobrineai_graveyard").strikeLightning(newloc); - } ticks++; HandlerInterval(); - + } - + } - - public Location getSavedLocation(){ - return new Location(savedWorld,savedX,savedY,savedZ); + + public Location getSavedLocation() { + return new Location(savedWorld, savedX, savedY, savedZ); } - + } diff --git a/src/org/jakub1221/herobrineai/AI/cores/Haunt.java b/src/org/jakub1221/herobrineai/AI/cores/Haunt.java index de07b28..a5c372f 100644 --- a/src/org/jakub1221/herobrineai/AI/cores/Haunt.java +++ b/src/org/jakub1221/herobrineai/AI/cores/Haunt.java @@ -1,254 +1,305 @@ package org.jakub1221.herobrineai.AI.cores; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; import java.util.Random; +import java.util.Set; import org.bukkit.Bukkit; import org.bukkit.Location; +import org.bukkit.Material; import org.bukkit.World; -import org.bukkit.entity.CreatureType; +import org.bukkit.block.Block; import org.bukkit.entity.EntityType; import org.bukkit.entity.Player; import org.bukkit.entity.Wolf; import org.jakub1221.herobrineai.HerobrineAI; +import org.jakub1221.herobrineai.Utils; import org.jakub1221.herobrineai.AI.AICore; import org.jakub1221.herobrineai.AI.Core; import org.jakub1221.herobrineai.AI.CoreResult; -public class Haunt extends Core{ +import com.google.common.collect.Sets; + +public class Haunt extends Core { private int _ticks = 0; - private int ticksToEnd = 0; private int spawnedWolves = 0; private int spawnedBats = 0; - private int KL_INT=0; - private int PS_INT=0; - private boolean isHandler=false; - - public Haunt(){ - super(CoreType.HAUNT,AppearType.APPEAR); + private int KL_INT = 0; + private int PS_INT = 0; + private boolean isHandler = false; + private boolean isFirst = true; + + public Haunt() { + super(CoreType.HAUNT, AppearType.APPEAR, HerobrineAI.getPluginCore()); } - - public CoreResult CallCore(Object[] data){ + + public CoreResult CallCore(Object[] data) { return setHauntTarget((Player) data[0]); } - - public CoreResult setHauntTarget(Player player){ - if (HerobrineAI.getPluginCore().getSupport().checkHaunt(player.getLocation())){ - - spawnedWolves=0; - spawnedBats=0; - _ticks=0; - ticksToEnd=0; - AICore.isTarget=true; - AICore.PlayerTarget=player; - AICore.log.info("[HerobrineAI] Hauntig player!"); - Location loc = (Location) HerobrineAI.HerobrineNPC.getBukkitEntity().getLocation(); - loc.setY(-20); - HerobrineAI.HerobrineNPC.moveTo(loc); - - StartHandler(); - return new CoreResult(true,"Herobrine haunts "+player.getName()+"!"); + + public CoreResult setHauntTarget(Player player) { + if (PluginCore.getSupport().checkHaunt(player.getLocation())) { + if (!PluginCore.canAttackPlayerNoMSG(player)) { + return new CoreResult(false, "This player is protected."); + } + spawnedWolves = 0; + spawnedBats = 0; + _ticks = 0; + isFirst = true; + AICore.isTarget = true; + AICore.PlayerTarget = player; + AICore.log.info("[HerobrineAI] Hauntig player!"); + Location loc = (Location) HerobrineAI.HerobrineNPC.getBukkitEntity().getLocation(); + loc.setY(-20); + HerobrineAI.HerobrineNPC.moveTo(loc); + + StartHandler(); + return new CoreResult(true, "Herobrine haunts " + player.getName() + "!"); + } + return new CoreResult(false, "Player is in secure area!"); } - return new CoreResult(false,"Player is in secure area!"); + + public void StartHandler() { + isHandler = true; + KL_INT = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(AICore.plugin, new Runnable() { + public void run() { + KeepLookingHaunt(); + } + }, 1 * 5L, 1 * 5L); + PS_INT = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(AICore.plugin, new Runnable() { + public void run() { + PlaySounds(); + } + }, 1 * 35L, 1 * 35L); } - - public void StartHandler(){ - isHandler=true; - KL_INT=Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(AICore.plugin, new Runnable() { - public void run() { - KeepLookingHaunt(); - } - }, 1 * 5L, 1 * 5L); - PS_INT=Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(AICore.plugin, new Runnable() { - public void run() { - PlaySounds(); - } - }, 1 * 35L, 1 * 35L); - } - - public void StopHandler(){ - if(isHandler){ - isHandler=false; + + public void StopHandler() { + if (isHandler) { + isHandler = false; Bukkit.getScheduler().cancelTask(KL_INT); Bukkit.getScheduler().cancelTask(PS_INT); } } - - public void PlaySounds(){ - if (AICore.PlayerTarget.isOnline() && AICore.isTarget && HerobrineAI.getPluginCore().getAICore().getCoreTypeNow()==CoreType.HAUNT){ - if (AICore.PlayerTarget.isDead()==false){ - if (ticksToEnd==35){HerobrineAI.getPluginCore().getAICore().CancelTarget(CoreType.HAUNT);}else{ - ticksToEnd++; - Object[] data = {AICore.PlayerTarget}; - HerobrineAI.getPluginCore().getAICore().getCore(CoreType.SOUNDF).RunCore(data); - - Location ploc = (Location) AICore.PlayerTarget.getLocation(); - - Random randxgen = new Random(); - int randx= randxgen.nextInt(100); - if (randx<70){} - else if (randx<80 && spawnedBats<=3){ - if (HerobrineAI.getPluginCore().getConfigDB().SpawnBats){ - ploc.getWorld().spawnEntity(ploc, EntityType.BAT); - spawnedBats++; - } - }else if (randx<90 && spawnedWolves<=2){ - if (HerobrineAI.getPluginCore().getConfigDB().SpawnWolves){ - Wolf wolf = (Wolf) ploc.getWorld().spawnCreature(ploc, CreatureType.WOLF); - wolf.setAdult(); - wolf.setAngry(true); - spawnedWolves++; - } - } - - if (HerobrineAI.getPluginCore().getConfigDB().Lighting==true){ - - int lchance= new Random().nextInt(100); - - if (lchance>75){ - Location newloc = (Location) ploc; - - int randz= new Random().nextInt(50); - int randxp= new Random().nextInt(1); - int randzp= new Random().nextInt(1); - - if (randxp==1){ - newloc.setX(newloc.getX()+randx); - }else{ - newloc.setX(newloc.getX()-randx); - } - if (randzp==1){ - newloc.setZ(newloc.getZ()+randz); - }else{ - newloc.setZ(newloc.getZ()-randz); - } - - newloc.setY(250); - newloc.getWorld().strikeLightning(newloc); - - } - - - } - - - if (ticksToEnd==1){ - Object[] data2 = {AICore.PlayerTarget.getLocation()}; - HerobrineAI.getPluginCore().getAICore().getCore(CoreType.BUILD_STUFF).RunCore(data2);} - - - } - }else{HerobrineAI.getPluginCore().getAICore().CancelTarget(CoreType.HAUNT);} - }else{HerobrineAI.getPluginCore().getAICore().CancelTarget(CoreType.HAUNT);} - } - - public void KeepLookingHaunt(){ - if (AICore.PlayerTarget.isOnline() && AICore.isTarget && HerobrineAI.getPluginCore().getAICore().getCoreTypeNow()==CoreType.HAUNT){ - if (AICore.PlayerTarget.isDead()==false){ - - Location loc = (Location) HerobrineAI.HerobrineNPC.getBukkitEntity().getLocation(); - - Player [] AllOnPlayers = Bukkit.getServer().getOnlinePlayers(); - if (Bukkit.getServer().getOnlinePlayers().length>0){ - int i = 0; - for (i=0;i<=Bukkit.getServer().getOnlinePlayers().length-1;i++){ - if (AllOnPlayers[i].getEntityId()!=HerobrineAI.HerobrineEntityID){ - Location ploc = (Location) AllOnPlayers[i].getLocation(); - - if (ploc.getWorld() == loc.getWorld() && ploc.getX()+5>loc.getX() && ploc.getX()-5loc.getZ() && ploc.getZ()-5loc.getY() && ploc.getY()-5 290) { + PluginCore.getAICore().CancelTarget(CoreType.HAUNT); + } else { + + Object[] data = { AICore.PlayerTarget }; + PluginCore.getAICore().getCore(CoreType.SOUNDF).RunCore(data); + + Location ploc = (Location) AICore.PlayerTarget.getLocation(); + + Random randxgen = Utils.getRandomGen(); + int randx = randxgen.nextInt(100); + if (randx < 70) { + } else if (randx < 80 && spawnedBats < 2) { + if (PluginCore.getConfigDB().SpawnBats) { + ploc.getWorld().spawnEntity(ploc, EntityType.BAT); + spawnedBats++; } - + } else if (randx < 90 && spawnedWolves < 1) { + if (PluginCore.getConfigDB().SpawnWolves) { + Wolf wolf = (Wolf) ploc.getWorld().spawnEntity(ploc, EntityType.WOLF); + wolf.setAdult(); + wolf.setAngry(true); + spawnedWolves++; + } + } + + if (PluginCore.getConfigDB().Lighting == true) { + + int lchance = randxgen.nextInt(100); + + if (lchance > 75) { + Location newloc = (Location) ploc; + + int randz = randxgen.nextInt(50); + int randxp = randxgen.nextInt(1); + int randzp = randxgen.nextInt(1); + + if (randxp == 1) { + newloc.setX(newloc.getX() + randx); + } else { + newloc.setX(newloc.getX() - randx); + } + if (randzp == 1) { + newloc.setZ(newloc.getZ() + randz); + } else { + newloc.setZ(newloc.getZ() - randz); + } + + newloc.setY(250); + newloc.getWorld().strikeLightning(newloc); + + } + + } + + if (isFirst) { + Object[] data2 = { AICore.PlayerTarget.getLocation() }; + PluginCore.getAICore().getCore(CoreType.BUILD_STUFF).RunCore(data2); + } + isFirst = false; + } + } else { + PluginCore.getAICore().CancelTarget(CoreType.HAUNT); + } + } else { + PluginCore.getAICore().CancelTarget(CoreType.HAUNT); + } + } + + public void KeepLookingHaunt() { + if (AICore.PlayerTarget.isOnline() && AICore.isTarget + && PluginCore.getAICore().getCoreTypeNow() == CoreType.HAUNT) { + if (AICore.PlayerTarget.isDead() == false) { + + Location loc = (Location) HerobrineAI.HerobrineNPC.getBukkitEntity().getLocation(); + + if (Bukkit.getServer().getOnlinePlayers().size() > 0) { + + + Player player = Utils.getRandomPlayer(); + + if(player == null) + return; + + Location ploc = (Location) player.getLocation(); + + if (ploc.getWorld() == loc.getWorld() + && ploc.getX() + 5 > loc.getX() + && ploc.getX() - 5 < loc.getX() + && ploc.getZ() + 5 > loc.getZ() + && ploc.getZ() - 5 < loc.getZ() + && ploc.getY() + 5 > loc.getY() + && ploc.getY() - 5 < loc.getY()) { + + PluginCore.getAICore().DisappearEffect(); + } } - - } - - - - - return false; - + HerobrineAI.HerobrineHP = HerobrineAI.HerobrineMaxHP; + loc = AICore.PlayerTarget.getLocation(); + loc.setY(loc.getY() + 1.5); + HerobrineAI.HerobrineNPC.lookAtPoint(loc); + + _ticks++; + + AICore _aicore = PluginCore.getAICore(); + + if(_ticks % 30 == 0) + HauntTP(); + else if(_ticks % 20 == 0) + _aicore.DisappearEffect(); + + + } else { + PluginCore.getAICore().CancelTarget(CoreType.HAUNT); + } + } else { + PluginCore.getAICore().CancelTarget(CoreType.HAUNT); + } } - - public void Teleport(World world,int X,int Y,int Z){ + + public void HauntTP() { + if (AICore.PlayerTarget.isOnline() && AICore.isTarget + && PluginCore.getAICore().getCoreTypeNow() == CoreType.HAUNT) { + if (AICore.PlayerTarget.isDead() == false) { + if (PluginCore.getConfigDB().useWorlds + .contains(AICore.PlayerTarget.getWorld().getName())) { + + FindAndTeleport(AICore.PlayerTarget); + Location ploc = (Location) AICore.PlayerTarget.getLocation(); + ploc.setY(ploc.getY() + 1.5); + HerobrineAI.HerobrineNPC.lookAtPoint(ploc); + + } else { + PluginCore.getAICore().CancelTarget(CoreType.HAUNT); + } + } else { + PluginCore.getAICore().CancelTarget(CoreType.HAUNT); + } + } else { + PluginCore.getAICore().CancelTarget(CoreType.HAUNT); + } + + } + + public boolean FindAndTeleport(Player player) { + + Location loc = (Location) player.getLocation(); + + int x = 0; + int z = 0; + int y = 0; + + Random randGen = Utils.getRandomGen(); + int xMax = randGen.nextInt(10) + 10; + int zMax = randGen.nextInt(10) + 10; + int randY = randGen.nextInt(5) + 5; + xMax = randGen.nextBoolean() ? -xMax : xMax; + zMax = randGen.nextBoolean() ? -zMax : zMax; + + for (y = -randY; y <= randY; y++) { + + for (x = -xMax; xMax > 0 ? x <= xMax : x >= xMax; x += xMax > 0 ? 1 : -1) { + for (z = -zMax; zMax > 0 ? z <= zMax : z >= zMax; z += zMax > 0 ? 1 : -1) { + if (!(x >= -4 && x <= 4 && z >= -4 && z <= 4)) { + + Material blockBottom = loc.getWorld().getBlockAt( + x + loc.getBlockX(), + y + loc.getBlockY() - 1, + z + loc.getBlockZ()).getType(); + Material blockMiddle = loc.getWorld().getBlockAt( + x + loc.getBlockX(), + y + loc.getBlockY(), + z + loc.getBlockZ()).getType(); + + Material blockTop = loc.getWorld().getBlockAt( + x + loc.getBlockX(), + y + loc.getBlockY() + 1, + z + loc.getBlockZ()).getType(); + + List mats = new ArrayList(); + mats.add(blockBottom); + mats.add(blockMiddle); + mats.add(blockTop); + + if (HerobrineAI.StandBlocks.containsAll(mats)){ + Teleport(loc.getWorld(), x + loc.getBlockX(), y + loc.getBlockY(), z + loc.getBlockZ()); + return true; + } + } + } + + } + + } + + return false; + + } + + public void Teleport(World world, int X, int Y, int Z) { + Location loc = (Location) HerobrineAI.HerobrineNPC.getBukkitEntity().getLocation(); loc.setWorld(world); loc.setX((double) X); loc.setY((double) Y); loc.setZ((double) Z); HerobrineAI.HerobrineNPC.moveTo(loc); - + } - + } - - - diff --git a/src/org/jakub1221/herobrineai/AI/cores/Heads.java b/src/org/jakub1221/herobrineai/AI/cores/Heads.java index 6016032..02a8dd2 100644 --- a/src/org/jakub1221/herobrineai/AI/cores/Heads.java +++ b/src/org/jakub1221/herobrineai/AI/cores/Heads.java @@ -10,77 +10,88 @@ import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.entity.Player; import org.jakub1221.herobrineai.HerobrineAI; +import org.jakub1221.herobrineai.Utils; import org.jakub1221.herobrineai.AI.AICore; import org.jakub1221.herobrineai.AI.Core; import org.jakub1221.herobrineai.AI.CoreResult; import org.jakub1221.herobrineai.misc.BlockChanger; -public class Heads extends Core{ +public class Heads extends Core { - private boolean isCalled=false; + private boolean isCalled = false; private List headList = new ArrayList(); - - public Heads(){ - super(CoreType.HEADS,AppearType.NORMAL); + + public Heads() { + super(CoreType.HEADS, AppearType.NORMAL, HerobrineAI.getPluginCore()); } - - public CoreResult CallCore(Object[] data){ - if (isCalled==false){ - if (Bukkit.getPlayer((String) data[0]).isOnline()){ - Player player = (Player) Bukkit.getServer().getPlayer((String) data[0]); - if(HerobrineAI.getPluginCore().getSupport().checkBuild(player.getLocation())){ - if (HerobrineAI.getPluginCore().getConfigDB().UseHeads){ - - Location loc = player.getLocation(); - int px=loc.getBlockX(); - int pz=loc.getBlockZ(); - int y=0; - int x=-7; - int z=-7; - for (x=-7;x<=7;x++){ - for (z=-7;z<=7;z++){ - if(new Random().nextInt(7) == new Random().nextInt(7)){ - - if (HerobrineAI.NonStandBlocks.contains(loc.getWorld().getHighestBlockAt(px+x, pz+z).getType())){ - y=loc.getWorld().getHighestBlockYAt(px+x, pz+z); - }else{ - y=loc.getWorld().getHighestBlockYAt(px+x, pz+z)+1; + + public CoreResult CallCore(Object[] data) { + if (isCalled == false) { + if (Bukkit.getPlayer((String) data[0]).isOnline()) { + Player player = (Player) Bukkit.getServer().getPlayer((String) data[0]); + if (PluginCore.getSupport().checkBuild(player.getLocation())) { + if (PluginCore.getConfigDB().UseHeads) { + + Location loc = player.getLocation(); + int px = loc.getBlockX(); + int pz = loc.getBlockZ(); + int y = 0; + int x = -7; + int z = -7; + + Random randomGen = Utils.getRandomGen(); + + for (x = -7; x <= 7; x++) { + for (z = -7; z <= 7; z++) { + if (randomGen.nextInt(7) == randomGen.nextInt(7)) { + + if (HerobrineAI.NonStandBlocks.contains(loc.getWorld().getHighestBlockAt(px + x, pz + z).getType())) { + y = loc.getWorld().getHighestBlockYAt(px + x, pz + z); + } else { + y = loc.getWorld().getHighestBlockYAt(px + x, pz + z) + 1; + } + + Block block = loc.getWorld().getBlockAt(px + x, y, pz + z); + BlockChanger.PlaceSkull(block.getLocation(), "Herobrine"); + + headList.add(block); + + } } - - Block block = loc.getWorld().getBlockAt(px+x, y, pz+z); - BlockChanger.PlaceSkull(block.getLocation(),"Herobrine"); - - headList.add(block); - } + + isCalled = true; + Bukkit.getScheduler().scheduleSyncDelayedTask(AICore.plugin, new Runnable() { + public void run() { + RemoveHeads(); + } + }, 1 * 100L); + + return new CoreResult(true, "Spawned some heads near " + player.getName() + "!"); + + } else { + return new CoreResult(false, "Heads are disabled!"); } + } else { + return new CoreResult(false, "Player is in secure area!"); } - - isCalled=true; - Bukkit.getScheduler().scheduleSyncDelayedTask(AICore.plugin, new Runnable() { - public void run() { - RemoveHeads(); - } - }, 1 * 100L); - - return new CoreResult(true,"Spawned some heads near "+player.getName()+"!"); - - }else{return new CoreResult(false,"Heads are disabled!");} - }else{return new CoreResult(false,"Player is in secure area!");} - }else{return new CoreResult(false,"Player is offline.");} - }else{ - return new CoreResult(false,"There are already heads! Wait until they disappear."); + } else { + return new CoreResult(false, "Player is offline."); + } + } else { + return new CoreResult(false, "There are already heads! Wait until they disappear."); + } } - } - - public void RemoveHeads(){ - for (Block h : headList){ + + public void RemoveHeads() { + for (Block h : headList) { h.setType(Material.AIR); } headList.clear(); - isCalled=false; + isCalled = false; } - public ArrayList getHeadList(){ + + public ArrayList getHeadList() { return (ArrayList) headList; } } diff --git a/src/org/jakub1221/herobrineai/AI/cores/Pyramid.java b/src/org/jakub1221/herobrineai/AI/cores/Pyramid.java index aeb588e..9f04ffe 100644 --- a/src/org/jakub1221/herobrineai/AI/cores/Pyramid.java +++ b/src/org/jakub1221/herobrineai/AI/cores/Pyramid.java @@ -8,191 +8,228 @@ import org.bukkit.Material; import org.bukkit.World; import org.bukkit.entity.Player; import org.jakub1221.herobrineai.HerobrineAI; +import org.jakub1221.herobrineai.Utils; import org.jakub1221.herobrineai.AI.AICore; import org.jakub1221.herobrineai.AI.Core; import org.jakub1221.herobrineai.AI.CoreResult; -public class Pyramid extends Core{ +public class Pyramid extends Core { - public Pyramid(){ - super(CoreType.PYRAMID,AppearType.NORMAL); + public Pyramid() { + super(CoreType.PYRAMID, AppearType.NORMAL, HerobrineAI.getPluginCore()); } - public CoreResult CallCore(Object[] data){ - if (data[0] instanceof Player){ - return FindPlace((Player) data[0]); - }else{ - return FindPlace((Chunk) data[0]); + public CoreResult CallCore(Object[] data) { + if (data[0] instanceof Player) { + return FindPlace((Player) data[0]); + } else { + return FindPlace((Chunk) data[0]); } } - - public CoreResult FindPlace(Chunk chunk){ - if (HerobrineAI.getPluginCore().getConfigDB().BuildPyramids){ - + + public CoreResult FindPlace(Chunk chunk) { + if (PluginCore.getConfigDB().BuildPyramids) { + Location loc = chunk.getBlock(2, 0, 2).getLocation(); - loc=loc.getWorld().getHighestBlockAt(loc).getLocation(); - - boolean canBuild=true; - int i1=0; - int i2=5; - int i3=5; - int i4=0; - int i5=0; - int i6=0; - - for (i1=-5;i1<=5;i1++){//Y - - canBuild=true; - - - for (i4=-1;i4<=3;i4++){//Y - for(i5=-2;i5<=2;i5++){//X - for(i6=-2;i6<=2;i6++){//Z - - if (loc.getBlockX()==i2+i5+loc.getBlockX() && loc.getBlockY()==i1+i4+loc.getBlockY() && loc.getBlockZ()==i3+i6+loc.getBlockZ()){canBuild=false;} - if (i4==-1){ - if (canBuild==true){ - if (HerobrineAI.StandBlocks.contains(loc.getWorld().getBlockAt(i2+i5+loc.getBlockX(), i1+i4+loc.getBlockY(), i3+i6+loc.getBlockZ()).getType())){canBuild=true;}else{canBuild=false;} + loc = loc.getWorld().getHighestBlockAt(loc).getLocation(); + + boolean canBuild = true; + int i1 = 0; + int i2 = 5; + int i3 = 5; + int i4 = 0; + int i5 = 0; + int i6 = 0; + + for (i1 = -5; i1 <= 5; i1++) {// Y + + canBuild = true; + + for (i4 = -1; i4 <= 3; i4++) {// Y + for (i5 = -2; i5 <= 2; i5++) {// X + for (i6 = -2; i6 <= 2; i6++) {// Z + + if (loc.getBlockX() == i2 + i5 + loc.getBlockX() + && loc.getBlockY() == i1 + i4 + loc.getBlockY() + && loc.getBlockZ() == i3 + i6 + loc.getBlockZ()) { + canBuild = false; + } + if (i4 == -1) { + if (canBuild == true) { + if (HerobrineAI.StandBlocks + .contains(loc + .getWorld().getBlockAt(i2 + i5 + loc.getBlockX(), + i1 + i4 + loc.getBlockY(), i3 + i6 + loc.getBlockZ()) + .getType())) { + canBuild = true; + } else { + canBuild = false; + } + } + } else { + if (canBuild == true) { + if (HerobrineAI.NonStandBlocks + .contains(loc + .getWorld().getBlockAt(i2 + i5 + loc.getBlockX(), + i1 + i4 + loc.getBlockY(), i3 + i6 + loc.getBlockZ()) + .getType())) { + canBuild = true; + } else { + canBuild = false; + } + } + + } + + } + + } + } + if (canBuild == true) { + BuildPyramid(loc.getWorld(), i2 + loc.getBlockX(), i1 + loc.getBlockY(), i3 + loc.getBlockZ()); + return new CoreResult(true, "Creating a pyramid!"); + + } + + } + } + return new CoreResult(false, "Cannot create a pyramid!"); + + } + + public CoreResult FindPlace(Player player) { + if (PluginCore.getConfigDB().BuildPyramids) { + + Location loc = (Location) player.getLocation(); + + boolean canBuild = true; + int i1 = 0; + int i2 = 0; + int i3 = 0; + int i4 = 0; + int i5 = 0; + int i6 = 0; + + int xMax = Utils.getRandomGen().nextInt(15) - 10; + int zMax = Utils.getRandomGen().nextInt(15) - 10; + + for (i1 = -5; i1 <= 5; i1++) {// Y + for (i2 = xMax; i2 <= 15; i2++) {// X + for (i3 = zMax; i3 <= 15; i3++) {// Z + canBuild = true; + + for (i4 = -1; i4 <= 3; i4++) {// Y + for (i5 = -2; i5 <= 2; i5++) {// X + for (i6 = -2; i6 <= 2; i6++) {// Z + + if (player.getLocation().getBlockX() == i2 + i5 + loc.getBlockX() + && player.getLocation().getBlockY() == i1 + i4 + loc.getBlockY() + && player.getLocation().getBlockZ() == i3 + i6 + loc.getBlockZ()) { + canBuild = false; + } + if (i4 == -1) { + if (canBuild == true) { + if (HerobrineAI.StandBlocks.contains(loc + .getWorld().getBlockAt(i2 + i5 + loc.getBlockX(), + i1 + i4 + loc.getBlockY(), i3 + i6 + loc.getBlockZ()) + .getType())) { + canBuild = true; + } else { + canBuild = false; } - }else{ - if (canBuild==true){ - if (HerobrineAI.NonStandBlocks.contains(loc.getWorld().getBlockAt(i2+i5+loc.getBlockX(), i1+i4+loc.getBlockY(), i3+i6+loc.getBlockZ()).getType())){canBuild=true;}else{canBuild=false;} } - + } else { + if (canBuild == true) { + if (HerobrineAI.NonStandBlocks.contains(loc + .getWorld().getBlockAt(i2 + i5 + loc.getBlockX(), + i1 + i4 + loc.getBlockY(), i3 + i6 + loc.getBlockZ()) + .getType())) { + canBuild = true; + } else { + canBuild = false; + } + } + } - - } - + + } + } } - if (canBuild==true){ - BuildPyramid(loc.getWorld(),i2+loc.getBlockX(),i1+loc.getBlockY(),i3+loc.getBlockZ()); - return new CoreResult(true,"Creating a pyramid!"); - - - - } - - - - - - } - } - return new CoreResult(false,"Cannot create a pyramid!"); - - } - -public CoreResult FindPlace(Player player){ -if (HerobrineAI.getPluginCore().getConfigDB().BuildPyramids){ - - - Location loc = (Location) player.getLocation(); - - boolean canBuild=true; - int i1=0; - int i2=0; - int i3=0; - int i4=0; - int i5=0; - int i6=0; - - int xMax=new Random().nextInt(15)-10; - int zMax=new Random().nextInt(15)-10; - - for (i1=-5;i1<=5;i1++){//Y - for(i2=xMax;i2<=15;i2++){//X - for(i3=zMax;i3<=15;i3++){//Z - canBuild=true; - - - for (i4=-1;i4<=3;i4++){//Y - for(i5=-2;i5<=2;i5++){//X - for(i6=-2;i6<=2;i6++){//Z + if (canBuild == true) { + BuildPyramid( + loc.getWorld(), + i2 + loc.getBlockX(), + i1 + loc.getBlockY(), + i3 + loc.getBlockZ() + ); - if (player.getLocation().getBlockX()==i2+i5+loc.getBlockX() && player.getLocation().getBlockY()==i1+i4+loc.getBlockY() && player.getLocation().getBlockZ()==i3+i6+loc.getBlockZ()){canBuild=false;} - if (i4==-1){ - if (canBuild==true){ - if (HerobrineAI.StandBlocks.contains(loc.getWorld().getBlockAt(i2+i5+loc.getBlockX(), i1+i4+loc.getBlockY(), i3+i6+loc.getBlockZ()).getType())){canBuild=true;}else{canBuild=false;} - } - }else{ - if (canBuild==true){ - if (HerobrineAI.NonStandBlocks.contains(loc.getWorld().getBlockAt(i2+i5+loc.getBlockX(), i1+i4+loc.getBlockY(), i3+i6+loc.getBlockZ()).getType())){canBuild=true;}else{canBuild=false;} - } - - } - - } - + return new CoreResult(true, "Creating a pyramid!"); + } } + } - if (canBuild==true){ - BuildPyramid(loc.getWorld(),i2+loc.getBlockX(),i1+loc.getBlockY(),i3+loc.getBlockZ()); - return new CoreResult(true,"Creating a pyramid!"); - } - } - + } - + } - - -} -return new CoreResult(false,"Cannot create a pyramid!"); - + return new CoreResult(false, "Cannot create a pyramid!"); + } - - public void BuildPyramid(World world,int X,int Y,int Z){ - - if (HerobrineAI.getPluginCore().getSupport().checkBuild(new Location(world,X,Y,Z))){ - - AICore.log.info("Creating pyramid at "+X+","+Y+","+Z); - - Material mainMat = (Material) Material.SANDSTONE; - - // Level 1 - world.getBlockAt(X,Y,Z).setType(mainMat); - world.getBlockAt(X-2,Y,Z).setType(mainMat); - world.getBlockAt(X-1,Y,Z).setType(mainMat); - world.getBlockAt(X+1,Y,Z).setType(mainMat); - world.getBlockAt(X+2,Y,Z).setType(mainMat); - world.getBlockAt(X-2,Y,Z-1).setType(mainMat); - world.getBlockAt(X-2,Y,Z+1).setType(mainMat); - world.getBlockAt(X-1,Y,Z-1).setType(mainMat); - world.getBlockAt(X-1,Y,Z+1).setType(mainMat); - world.getBlockAt(X,Y,Z-1).setType(mainMat); - world.getBlockAt(X,Y,Z+1).setType(mainMat); - world.getBlockAt(X,Y,Z-2).setType(mainMat); - world.getBlockAt(X,Y,Z+2).setType(mainMat); - world.getBlockAt(X-1,Y,Z-2).setType(mainMat); - world.getBlockAt(X-1,Y,Z+2).setType(mainMat); - world.getBlockAt(X+1,Y,Z-2).setType(mainMat); - world.getBlockAt(X+1,Y,Z+2).setType(mainMat); - world.getBlockAt(X+1,Y,Z-1).setType(mainMat); - world.getBlockAt(X+1,Y,Z+1).setType(mainMat); - world.getBlockAt(X+2,Y,Z-1).setType(mainMat); - world.getBlockAt(X+2,Y,Z+1).setType(mainMat); - world.getBlockAt(X+1,Y,Z-2).setType(mainMat); - world.getBlockAt(X+1,Y,Z+2).setType(mainMat); - // Level 2 - world.getBlockAt(X,Y+1,Z).setType(mainMat); - world.getBlockAt(X-1,Y+1,Z).setType(mainMat); - world.getBlockAt(X+1,Y+1,Z).setType(mainMat); - world.getBlockAt(X-1,Y+1,Z-1).setType(mainMat); - world.getBlockAt(X+1,Y+1,Z-1).setType(mainMat); - world.getBlockAt(X-1,Y+1,Z+1).setType(mainMat); - world.getBlockAt(X+1,Y+1,Z+1).setType(mainMat); - world.getBlockAt(X,Y+1,Z+1).setType(mainMat); - world.getBlockAt(X,Y+1,Z+1).setType(mainMat); - world.getBlockAt(X,Y+1,Z-1).setType(mainMat); - world.getBlockAt(X,Y+1,Z-1).setType(mainMat); - // Level 3 - world.getBlockAt(X,Y+2,Z).setType(mainMat); - // Level 4 - world.getBlockAt(X,Y+3,Z).setType(Material.REDSTONE_TORCH_ON); - + + public void BuildPyramid(World world, int X, int Y, int Z) { + + if (HerobrineAI.getPluginCore().getSupport().checkBuild(new Location(world, X, Y, Z))) { + + AICore.log.info("Creating pyramid at " + X + "," + Y + "," + Z); + + Material mainMat = (Material) Material.SANDSTONE; + + + // TODO CHANGE THIS + // Level 1 + world.getBlockAt(X, Y, Z).setType(mainMat); + world.getBlockAt(X - 2, Y, Z).setType(mainMat); + world.getBlockAt(X - 1, Y, Z).setType(mainMat); + world.getBlockAt(X + 1, Y, Z).setType(mainMat); + world.getBlockAt(X + 2, Y, Z).setType(mainMat); + world.getBlockAt(X - 2, Y, Z - 1).setType(mainMat); + world.getBlockAt(X - 2, Y, Z + 1).setType(mainMat); + world.getBlockAt(X - 1, Y, Z - 1).setType(mainMat); + world.getBlockAt(X - 1, Y, Z + 1).setType(mainMat); + world.getBlockAt(X, Y, Z - 1).setType(mainMat); + world.getBlockAt(X, Y, Z + 1).setType(mainMat); + world.getBlockAt(X, Y, Z - 2).setType(mainMat); + world.getBlockAt(X, Y, Z + 2).setType(mainMat); + world.getBlockAt(X - 1, Y, Z - 2).setType(mainMat); + world.getBlockAt(X - 1, Y, Z + 2).setType(mainMat); + world.getBlockAt(X + 1, Y, Z - 2).setType(mainMat); + world.getBlockAt(X + 1, Y, Z + 2).setType(mainMat); + world.getBlockAt(X + 1, Y, Z - 1).setType(mainMat); + world.getBlockAt(X + 1, Y, Z + 1).setType(mainMat); + world.getBlockAt(X + 2, Y, Z - 1).setType(mainMat); + world.getBlockAt(X + 2, Y, Z + 1).setType(mainMat); + world.getBlockAt(X + 1, Y, Z - 2).setType(mainMat); + world.getBlockAt(X + 1, Y, Z + 2).setType(mainMat); + // Level 2 + world.getBlockAt(X, Y + 1, Z).setType(mainMat); + world.getBlockAt(X - 1, Y + 1, Z).setType(mainMat); + world.getBlockAt(X + 1, Y + 1, Z).setType(mainMat); + world.getBlockAt(X - 1, Y + 1, Z - 1).setType(mainMat); + world.getBlockAt(X + 1, Y + 1, Z - 1).setType(mainMat); + world.getBlockAt(X - 1, Y + 1, Z + 1).setType(mainMat); + world.getBlockAt(X + 1, Y + 1, Z + 1).setType(mainMat); + world.getBlockAt(X, Y + 1, Z + 1).setType(mainMat); + world.getBlockAt(X, Y + 1, Z + 1).setType(mainMat); + world.getBlockAt(X, Y + 1, Z - 1).setType(mainMat); + world.getBlockAt(X, Y + 1, Z - 1).setType(mainMat); + // Level 3 + world.getBlockAt(X, Y + 2, Z).setType(mainMat); + // Level 4 + world.getBlockAt(X, Y + 3, Z).setType(Material.REDSTONE_TORCH_ON); + } - + } - + } diff --git a/src/org/jakub1221/herobrineai/AI/cores/RandomExplosion.java b/src/org/jakub1221/herobrineai/AI/cores/RandomExplosion.java index f705385..b0215c4 100644 --- a/src/org/jakub1221/herobrineai/AI/cores/RandomExplosion.java +++ b/src/org/jakub1221/herobrineai/AI/cores/RandomExplosion.java @@ -5,35 +5,36 @@ import java.util.Random; import org.bukkit.Location; import org.bukkit.entity.Player; import org.jakub1221.herobrineai.HerobrineAI; +import org.jakub1221.herobrineai.Utils; import org.jakub1221.herobrineai.AI.Core; import org.jakub1221.herobrineai.AI.CoreResult; public class RandomExplosion extends Core { public RandomExplosion() { - super(CoreType.RANDOM_EXPLOSION,AppearType.NORMAL); + super(CoreType.RANDOM_EXPLOSION, AppearType.NORMAL, HerobrineAI.getPluginCore()); } @Override public CoreResult CallCore(Object[] data) { - + Player player = (Player) data[0]; - if (HerobrineAI.getPluginCore().getConfigDB().Explosions){ - if (HerobrineAI.getPluginCore().getSupport().checkBuild(player.getLocation())){ - - Location loc = player.getLocation(); - int x=loc.getBlockX()+(new Random().nextInt(16)-8); - int y=loc.getBlockY(); - int z=loc.getBlockZ()+(new Random().nextInt(16)-8); - loc.getWorld().createExplosion(new Location(loc.getWorld(),x,y,z), 1.0f); - - }else{ - return new CoreResult(true,"Player is in secure area!"); + if (PluginCore.getConfigDB().Explosions) { + if (PluginCore.getSupport().checkBuild(player.getLocation())) { + + Location loc = player.getLocation(); + int x = loc.getBlockX() + (Utils.getRandomGen().nextInt(16) - 8); + int y = loc.getBlockY(); + int z = loc.getBlockZ() + (Utils.getRandomGen().nextInt(16) - 8); + loc.getWorld().createExplosion(new Location(loc.getWorld(), x, y, z), 1.0f); + + } else { + return new CoreResult(true, "Player is in secure area!"); + } + } else { + return new CoreResult(true, "Explosions are not allowed!"); } - }else{ - return new CoreResult(true,"Explosions are not allowed!"); - } - return new CoreResult(true,"Explosion near the player!"); + return new CoreResult(true, "Explosion near the player!"); } } diff --git a/src/org/jakub1221/herobrineai/AI/cores/RandomPosition.java b/src/org/jakub1221/herobrineai/AI/cores/RandomPosition.java index 7bc272c..cd04a54 100644 --- a/src/org/jakub1221/herobrineai/AI/cores/RandomPosition.java +++ b/src/org/jakub1221/herobrineai/AI/cores/RandomPosition.java @@ -1,5 +1,6 @@ package org.jakub1221.herobrineai.AI.cores; +import java.util.Collection; import java.util.Random; import org.bukkit.Bukkit; @@ -9,192 +10,233 @@ import org.bukkit.World; import org.bukkit.entity.Player; import org.jakub1221.herobrineai.ConfigDB; import org.jakub1221.herobrineai.HerobrineAI; +import org.jakub1221.herobrineai.Utils; import org.jakub1221.herobrineai.AI.AICore; import org.jakub1221.herobrineai.AI.Core; import org.jakub1221.herobrineai.AI.CoreResult; import org.jakub1221.herobrineai.NPC.AI.Path; -public class RandomPosition extends Core{ +public class RandomPosition extends Core { - private int randomTicks=0; - private int randomMoveTicks=0; - private boolean RandomMoveIsPlayer=false; - - public RandomPosition(){ - super(CoreType.RANDOM_POSITION,AppearType.APPEAR); + private int randomTicks = 0; + private int randomMoveTicks = 0; + private boolean RandomMoveIsPlayer = false; + + public RandomPosition() { + super(CoreType.RANDOM_POSITION, AppearType.APPEAR, HerobrineAI.getPluginCore()); } - - public int getRandomTicks(){return this.randomTicks;} - public int getRandomMoveTicks(){return this.randomMoveTicks;} - public void setRandomTicks(int i){this.randomTicks=i;}; - public void setRandomMoveTicks(int i){this.randomMoveTicks=i;}; - - public CoreResult CallCore(Object[] data){ - return setRandomPosition((World)data[0]); + + public int getRandomTicks() { + return this.randomTicks; } - - public CoreResult setRandomPosition(World world){ - if (HerobrineAI.getPluginCore().getConfigDB().UseWalkingMode){ - if (randomTicks!=3){ - randomTicks++; - if (HerobrineAI.getPluginCore().getAICore().getCoreTypeNow() != CoreType.RANDOM_POSITION && AICore.isTarget==false){ - Location newloc = (Location) getRandomLocation(world); - if (newloc!=null){ - - HerobrineAI.HerobrineNPC.moveTo(newloc); - newloc.setX(newloc.getX()+2); - newloc.setY(newloc.getY()+1.5); - HerobrineAI.HerobrineNPC.lookAtPoint(newloc); - randomTicks=0; - AICore.log.info("[HerobrineAI] Herobrine is now in RandomLocation mode."); - HerobrineAI.getPluginCore().getAICore().Start_RM(); - HerobrineAI.getPluginCore().getAICore().Start_RS(); - HerobrineAI.getPluginCore().getAICore().Start_CG(); - RandomMoveIsPlayer=false; - return new CoreResult(true,"Herobrine is now in WalkingMode."); - }else{AICore.log.info("[HerobrineAI] RandomPosition Failed!");return setRandomPosition(world);} - } - }else{ - return new CoreResult(false,"WalkingMode - Find location failed!"); - } - }else{ - return new CoreResult(false,"WalkingMode is disabled!"); - } - return new CoreResult(false,"WalkingMode failed!"); + + public int getRandomMoveTicks() { + return this.randomMoveTicks; } - - public Location getRandomLocation(World world){ - + + public void setRandomTicks(int i) { + this.randomTicks = i; + }; + + public void setRandomMoveTicks(int i) { + this.randomMoveTicks = i; + }; + + public CoreResult CallCore(Object[] data) { + return setRandomPosition((World) data[0]); + } + + public CoreResult setRandomPosition(World world) { + if (PluginCore.getConfigDB().UseWalkingMode) { + if (randomTicks != 3) { + randomTicks++; + if (PluginCore.getAICore().getCoreTypeNow() != CoreType.RANDOM_POSITION && AICore.isTarget == false) { + Location newloc = (Location) getRandomLocation(world); + if (newloc != null) { + + HerobrineAI.HerobrineNPC.moveTo(newloc); + newloc.setX(newloc.getX() + 2); + newloc.setY(newloc.getY() + 1.5); + HerobrineAI.HerobrineNPC.lookAtPoint(newloc); + randomTicks = 0; + AICore.log.info("[HerobrineAI] Herobrine is now in RandomLocation mode."); + PluginCore.getAICore().Start_RM(); + PluginCore.getAICore().Start_RS(); + PluginCore.getAICore().Start_CG(); + RandomMoveIsPlayer = false; + return new CoreResult(true, "Herobrine is now in WalkingMode."); + } else { + AICore.log.info("[HerobrineAI] RandomPosition Failed!"); + return setRandomPosition(world); + } + } + } else { + return new CoreResult(false, "WalkingMode - Find location failed!"); + } + } else { + return new CoreResult(false, "WalkingMode is disabled!"); + } + return new CoreResult(false, "WalkingMode failed!"); + } + + public Location getRandomLocation(World world) { + int i = 0; - for (i=0;i<=300;i++){ - - int r_nxtX=HerobrineAI.getPluginCore().getConfigDB().WalkingModeXRadius; - int nxtX=r_nxtX; - if (nxtX<0){ - nxtX=-nxtX; + for (i = 0; i <= 100; i++) { + + int r_nxtX = PluginCore.getConfigDB().WalkingModeXRadius; + int nxtX = r_nxtX; + if (nxtX < 0) { + nxtX = -nxtX; } - int r_nxtZ=HerobrineAI.getPluginCore().getConfigDB().WalkingModeZRadius; - int nxtZ=r_nxtZ; - if (nxtZ<0){ - nxtZ=-nxtZ; + int r_nxtZ = PluginCore.getConfigDB().WalkingModeZRadius; + int nxtZ = r_nxtZ; + if (nxtZ < 0) { + nxtZ = -nxtZ; } - int randx= new Random().nextInt(nxtX); - - int randy=0; - - int randz= new Random().nextInt(nxtZ); - - int randxp= new Random().nextInt(1); - - int randzp= new Random().nextInt(1); - - if (randxp==0 && randx!=0){randx=-(randx);} - if (randzp==0 && randz!=0){randz=-(randz);} - - randx=randx+HerobrineAI.getPluginCore().getConfigDB().WalkingModeFromXRadius; - randz=randz+HerobrineAI.getPluginCore().getConfigDB().WalkingModeFromZRadius; - - if (world != null){ - randy=world.getHighestBlockYAt(randx,randz); - }else{ + int randx = Utils.getRandomGen().nextInt(nxtX); + + int randy = 0; + + int randz = Utils.getRandomGen().nextInt(nxtZ); + + int randxp = Utils.getRandomGen().nextInt(1); + + int randzp = Utils.getRandomGen().nextInt(1); + + if (randxp == 0 && randx != 0) { + randx = -(randx); + } + if (randzp == 0 && randz != 0) { + randz = -(randz); + } + + randx = randx + PluginCore.getConfigDB().WalkingModeFromXRadius; + randz = randz + PluginCore.getConfigDB().WalkingModeFromZRadius; + + if (world != null) { + randy = world.getHighestBlockYAt(randx, randz); + } else { return null; } - - if (world.getBlockAt(randx, randy, randz).getType() == Material.AIR && world.getBlockAt(randx, randy+1, randz).getType() == Material.AIR){ - if (world.getBlockAt(randx, randy-1, randz).getType() != Material.AIR && - world.getBlockAt(randx, randy-1, randz).getType() != Material.WATER && - world.getBlockAt(randx, randy-1, randz).getType() != Material.LAVA && - world.getBlockAt(randx, randy-1, randz).getType() != Material.GRASS && - world.getBlockAt(randx, randy-1, randz).getType() != Material.SNOW && - world.getBlockAt(randx, randy-1, randz).getType() != Material.LEAVES && - world.getBlockAt(randx, randy-1, randz).getType() != Material.WHEAT && - world.getBlockAt(randx, randy-1, randz).getType() != Material.TORCH && - world.getBlockAt(randx, randy-1, randz).getType() != Material.REDSTONE_TORCH_OFF && - world.getBlockAt(randx, randy-1, randz).getType() != Material.REDSTONE_TORCH_ON && - world.getBlockAt(randx, randy-1, randz).getType() != Material.REDSTONE && - world.getBlockAt(randx, randy-1, randz).getType() != Material.STATIONARY_WATER && - world.getBlockAt(randx, randy-1, randz).getType() != Material.STATIONARY_LAVA){ - AICore.log.info("[HerobrineAI] RandomLocation "+world.getBlockAt(randx, randy-1, randz).getType().toString()+" is X:"+randx+" Y:"+randy+" Z:"+randz); - return new Location(world,(float) randx + 0.5,(float) randy,(float) randz); - - - } + if (world.getBlockAt(randx, randy, randz).getType() == Material.AIR + && world.getBlockAt(randx, randy + 1, randz).getType() == Material.AIR) { + if (world.getBlockAt(randx, randy - 1, randz).getType() != Material.AIR + && world.getBlockAt(randx, randy - 1, randz).getType() != Material.WATER + && world.getBlockAt(randx, randy - 1, randz).getType() != Material.LAVA + && world.getBlockAt(randx, randy - 1, randz).getType() != Material.GRASS + && world.getBlockAt(randx, randy - 1, randz).getType() != Material.SNOW + && world.getBlockAt(randx, randy - 1, randz).getType() != Material.LEAVES + && world.getBlockAt(randx, randy - 1, randz).getType() != Material.WHEAT + && world.getBlockAt(randx, randy - 1, randz).getType() != Material.TORCH + && world.getBlockAt(randx, randy - 1, randz).getType() != Material.REDSTONE_TORCH_OFF + && world.getBlockAt(randx, randy - 1, randz).getType() != Material.REDSTONE_TORCH_ON + && world.getBlockAt(randx, randy - 1, randz).getType() != Material.REDSTONE + && world.getBlockAt(randx, randy - 1, randz).getType() != Material.STATIONARY_WATER + && world.getBlockAt(randx, randy - 1, randz).getType() != Material.STATIONARY_LAVA) { + + AICore.log.info("[HerobrineAI] RandomLocation " + + world.getBlockAt(randx, randy - 1, randz).getType().toString() + " is X:" + randx + " Y:" + + randy + " Z:" + randz); + return new Location(world, (float) randx + 0.5, (float) randy, (float) randz); + + } } } - + return null; - + } - - public void RandomMove(){ - if (HerobrineAI.getPluginCore().getAICore().getCoreTypeNow()==CoreType.RANDOM_POSITION && AICore.isTarget==false && RandomMoveIsPlayer==false){ - HerobrineAI.HerobrineHP=HerobrineAI.HerobrineMaxHP; - - if (new Random().nextInt(4)==1){ + + public void RandomMove() { + if (PluginCore.getAICore().getCoreTypeNow() == CoreType.RANDOM_POSITION && AICore.isTarget == false + && RandomMoveIsPlayer == false) { + HerobrineAI.HerobrineHP = HerobrineAI.HerobrineMaxHP; + + if (Utils.getRandomGen().nextInt(5) == 3) { Location loc = HerobrineAI.HerobrineNPC.getBukkitEntity().getLocation(); - Path path = new Path((float)loc.getX()+new Random().nextInt(12)-6,(float)loc.getZ()+new Random().nextInt(12)-6); - HerobrineAI.getPluginCore().getPathManager().setPath(path); - } - + Path path = new Path((float) loc.getX() + Utils.getRandomGen().nextInt(30) - 15, + (float) loc.getZ() + Utils.getRandomGen().nextInt(30) - 15); + PluginCore.getPathManager().setPath(path); + } + } - + } - - public void CheckGravity(){ - - if (HerobrineAI.getPluginCore().getAICore().getCoreTypeNow()==CoreType.RANDOM_POSITION && AICore.isTarget==false){ - + + public void CheckGravity() { + + if (PluginCore.getAICore().getCoreTypeNow() == CoreType.RANDOM_POSITION && AICore.isTarget == false) { + Location hbloc = (Location) HerobrineAI.HerobrineNPC.getBukkitEntity().getLocation(); World w = (World) hbloc.getWorld(); - ConfigDB config = HerobrineAI.getPluginCore().getConfigDB(); - if (hbloc.getBlockX()(-config.WalkingModeXRadius)+config.WalkingModeFromXRadius && hbloc.getBlockZ()(-config.WalkingModeZRadius)+config.WalkingModeFromZRadius){ - if (HerobrineAI.NonStandBlocks.contains(w.getBlockAt(hbloc.getBlockX(), hbloc.getBlockY()-1, hbloc.getBlockZ()).getType())){ - - hbloc.setY(hbloc.getY()-1); - - HerobrineAI.HerobrineNPC.moveTo(hbloc); - - } - }else{ - HerobrineAI.getPluginCore().getAICore().CancelTarget(CoreType.RANDOM_POSITION); + ConfigDB config = PluginCore.getConfigDB(); + if (hbloc.getBlockX() < config.WalkingModeXRadius + config.WalkingModeFromXRadius + && hbloc.getBlockX() > (-config.WalkingModeXRadius) + config.WalkingModeFromXRadius + && hbloc.getBlockZ() < config.WalkingModeZRadius + config.WalkingModeFromZRadius + && hbloc.getBlockZ() > (-config.WalkingModeZRadius) + config.WalkingModeFromZRadius) { + if (HerobrineAI.NonStandBlocks.contains( + w.getBlockAt(hbloc.getBlockX(), hbloc.getBlockY() - 1, hbloc.getBlockZ()).getType())) { + + hbloc.setY(hbloc.getY() - 1); + + HerobrineAI.HerobrineNPC.moveTo(hbloc); + + } + } else { + PluginCore.getAICore().CancelTarget(CoreType.RANDOM_POSITION); } } } - - public void CheckPlayerPosition(){ - boolean isThere=false; - Location loc = (Location) HerobrineAI.HerobrineNPC.getBukkitEntity().getLocation(); - Player [] AllOnPlayers = Bukkit.getServer().getOnlinePlayers(); - if (Bukkit.getServer().getOnlinePlayers().length>0){ - int i = 0; - for (i=0;i<=Bukkit.getServer().getOnlinePlayers().length-1;i++){ - if (HerobrineAI.HerobrineEntityID!=AllOnPlayers[i].getEntityId()){ - Location ploc = (Location) AllOnPlayers[i].getLocation(); - if (ploc.getWorld() == loc.getWorld() && ploc.getX()+7>loc.getX() && ploc.getX()-7loc.getZ() && ploc.getZ()-7loc.getY() && ploc.getY()-7loc.getX() && ploc.getX()-15loc.getZ() && ploc.getZ()-15loc.getY() && ploc.getY()-15 onlinePlayers = Bukkit.getServer().getOnlinePlayers(); + if (Bukkit.getServer().getOnlinePlayers().size() > 0) { + + for (Player player : onlinePlayers) { + + if (HerobrineAI.HerobrineEntityID != player.getEntityId()) { + Location ploc = (Location) player.getLocation(); + + if (ploc.getWorld() == loc.getWorld() && ploc.getX() + 7 > loc.getX() + && ploc.getX() - 7 < loc.getX() && ploc.getZ() + 7 > loc.getZ() + && ploc.getZ() - 7 < loc.getZ() && ploc.getY() + 7 > loc.getY() + && ploc.getY() - 7 < loc.getY()) { + + loc.setY(-20); + HerobrineAI.HerobrineNPC.moveTo(loc); + PluginCore.getAICore().CancelTarget(CoreType.RANDOM_POSITION); + RandomMoveIsPlayer = false; + PluginCore.getAICore().setAttackTarget(player); + break; + } else { + + if (ploc.getWorld() == loc.getWorld() && ploc.getX() + 15 > loc.getX() + && ploc.getX() - 15 < loc.getX() && ploc.getZ() + 15 > loc.getZ() + && ploc.getZ() - 15 < loc.getZ() && ploc.getY() + 15 > loc.getY() + && ploc.getY() - 15 < loc.getY()) { + + ploc.setY(ploc.getY() + 1.5); + HerobrineAI.HerobrineNPC.lookAtPoint(ploc); + PluginCore.getPathManager().setPath(null); + isThere = true; + break; + } + } + } + } + } + + if (isThere) { + RandomMoveIsPlayer = true; + } else { + RandomMoveIsPlayer = false; + } + } - + } diff --git a/src/org/jakub1221/herobrineai/AI/cores/RandomSound.java b/src/org/jakub1221/herobrineai/AI/cores/RandomSound.java index 28a66b7..c5061ed 100644 --- a/src/org/jakub1221/herobrineai/AI/cores/RandomSound.java +++ b/src/org/jakub1221/herobrineai/AI/cores/RandomSound.java @@ -8,29 +8,29 @@ import org.jakub1221.herobrineai.AI.CoreResult; public class RandomSound extends Core { public RandomSound() { - super(CoreType.RANDOM_SOUND, AppearType.NORMAL); + super(CoreType.RANDOM_SOUND, AppearType.NORMAL, HerobrineAI.getPluginCore()); } @Override public CoreResult CallCore(final Object[] data) { - - int multip=1; - while(multip!=7){ - Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(HerobrineAI.getPluginCore(), new Runnable(){ + int multip = 1; - @Override - public void run() { - - HerobrineAI.getPluginCore().getAICore().getCore(CoreType.SOUNDF).RunCore(data); - - } - - },multip*30L); - multip++; + while (multip != 7) { + Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(HerobrineAI.getPluginCore(), new Runnable() { + + @Override + public void run() { + + HerobrineAI.getPluginCore().getAICore().getCore(CoreType.SOUNDF).RunCore(data); + + } + + }, multip * 30L); + multip++; } - - return new CoreResult(true,"Starting sound play to target!"); + + return new CoreResult(true, "Starting sound play to target!"); } } diff --git a/src/org/jakub1221/herobrineai/AI/cores/Signs.java b/src/org/jakub1221/herobrineai/AI/cores/Signs.java index e6c5bd4..5682c30 100644 --- a/src/org/jakub1221/herobrineai/AI/cores/Signs.java +++ b/src/org/jakub1221/herobrineai/AI/cores/Signs.java @@ -7,74 +7,84 @@ import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.block.Sign; import org.jakub1221.herobrineai.HerobrineAI; +import org.jakub1221.herobrineai.Utils; import org.jakub1221.herobrineai.AI.ConsoleLogger; import org.jakub1221.herobrineai.AI.Core; import org.jakub1221.herobrineai.AI.CoreResult; import org.jakub1221.herobrineai.misc.BlockChanger; -public class Signs extends Core{ - - public Signs(){ - super(CoreType.SIGNS,AppearType.NORMAL); +public class Signs extends Core { + + public Signs() { + super(CoreType.SIGNS, AppearType.NORMAL, HerobrineAI.getPluginCore()); } - public CoreResult CallCore(Object[] data){ - return placeSign((Location) data[0],(Location) data[1]); + public CoreResult CallCore(Object[] data) { + return placeSign((Location) data[0], (Location) data[1]); } - + static ConsoleLogger log = new ConsoleLogger(); - - public CoreResult placeSign(Location loc,Location ploc){ - boolean status=false; + + public CoreResult placeSign(Location loc, Location ploc) { + boolean status = false; log.info("Generating sign location..."); - - - if (loc.getWorld().getBlockAt(loc.getBlockX()+2, loc.getBlockY(), loc.getBlockZ()).getType() == Material.AIR && loc.getWorld().getBlockAt(loc.getBlockX()+2, loc.getBlockY()-1, loc.getBlockZ()).getType()!= Material.AIR){ - loc.setX(loc.getBlockX()+2); - createSign(loc,ploc); - status=true; - }else if (loc.getWorld().getBlockAt(loc.getBlockX()-2, loc.getBlockY(), loc.getBlockZ()).getType() == Material.AIR && loc.getWorld().getBlockAt(loc.getBlockX()-2, loc.getBlockY()-1, loc.getBlockZ()).getType()!= Material.AIR){ - loc.setX(loc.getBlockX()-2); - createSign(loc,ploc); - status=true; - }else if (loc.getWorld().getBlockAt(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()+2).getType() == Material.AIR && loc.getWorld().getBlockAt(loc.getBlockX(), loc.getBlockY()-1, loc.getBlockZ()+2).getType()!= Material.AIR){ - loc.setZ(loc.getBlockZ()+2); - createSign(loc,ploc); - status=true; - }else if (loc.getWorld().getBlockAt(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()-2).getType() == Material.AIR && loc.getWorld().getBlockAt(loc.getBlockX(), loc.getBlockY()-1, loc.getBlockZ()-2).getType()!= Material.AIR){ - loc.setZ(loc.getBlockZ()-2); - createSign(loc,ploc); - status=true; + if (loc.getWorld().getBlockAt(loc.getBlockX() + 2, loc.getBlockY(), loc.getBlockZ()).getType() == Material.AIR + && loc.getWorld().getBlockAt(loc.getBlockX() + 2, loc.getBlockY() - 1, loc.getBlockZ()) + .getType() != Material.AIR) { + loc.setX(loc.getBlockX() + 2); + createSign(loc, ploc); + status = true; + } else if (loc.getWorld().getBlockAt(loc.getBlockX() - 2, loc.getBlockY(), loc.getBlockZ()) + .getType() == Material.AIR + && loc.getWorld().getBlockAt(loc.getBlockX() - 2, loc.getBlockY() - 1, loc.getBlockZ()) + .getType() != Material.AIR) { + loc.setX(loc.getBlockX() - 2); + createSign(loc, ploc); + status = true; + } else if (loc.getWorld().getBlockAt(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ() + 2) + .getType() == Material.AIR + && loc.getWorld().getBlockAt(loc.getBlockX(), loc.getBlockY() - 1, loc.getBlockZ() + 2) + .getType() != Material.AIR) { + loc.setZ(loc.getBlockZ() + 2); + createSign(loc, ploc); + status = true; + } else if (loc.getWorld().getBlockAt(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ() - 2) + .getType() == Material.AIR + && loc.getWorld().getBlockAt(loc.getBlockX(), loc.getBlockY() - 1, loc.getBlockZ() - 2) + .getType() != Material.AIR) { + loc.setZ(loc.getBlockZ() - 2); + createSign(loc, ploc); + status = true; } - - if (status){ - return new CoreResult(true,"Sign placed!"); - }else{ - return new CoreResult(false,"Cannot place a sign!"); + + if (status) { + return new CoreResult(true, "Sign placed!"); + } else { + return new CoreResult(false, "Cannot place a sign!"); } } - - - public void createSign(Location loc,Location ploc){ - - Random randcgen = new Random(); - int chance=randcgen.nextInt(100); - if (chance>(100-HerobrineAI.getPluginCore().getConfigDB().SignChance)){ - Random randgen = new Random(); - int count = HerobrineAI.getPluginCore().getConfigDB().useSignMessages.size(); - int randmsg=randgen.nextInt(count); - - Block signblock = loc.add(0, 0D ,0).getBlock(); - Block undersignblock = signblock.getLocation().subtract(0D, 1D, 0D).getBlock(); - if (HerobrineAI.NonStandBlocks.contains(signblock.getType()) && !HerobrineAI.NonStandBlocks.contains(undersignblock.getType())){ - signblock.setType(Material.SIGN_POST); - Sign sign = (Sign) signblock.getState(); - sign.setLine(1, HerobrineAI.getPluginCore().getConfigDB().useSignMessages.get(randmsg)); - - sign.setRawData((byte) BlockChanger.getPlayerBlockFace(ploc).ordinal()); - sign.update(); + + public void createSign(Location loc, Location ploc) { + + Random randcgen = Utils.getRandomGen(); + int chance = randcgen.nextInt(100); + if (chance > (100 - HerobrineAI.getPluginCore().getConfigDB().SignChance)) { + Random randgen = Utils.getRandomGen(); + int count = HerobrineAI.getPluginCore().getConfigDB().useSignMessages.size(); + int randmsg = randgen.nextInt(count); + + Block signblock = loc.add(0, 0D, 0).getBlock(); + Block undersignblock = signblock.getLocation().subtract(0D, 1D, 0D).getBlock(); + if (HerobrineAI.NonStandBlocks.contains(signblock.getType()) + && !HerobrineAI.NonStandBlocks.contains(undersignblock.getType())) { + signblock.setType(Material.SIGN_POST); + Sign sign = (Sign) signblock.getState(); + sign.setLine(1, HerobrineAI.getPluginCore().getConfigDB().useSignMessages.get(randmsg)); + + sign.setRawData((byte) BlockChanger.getPlayerBlockFace(ploc).ordinal()); + sign.update(); + } } } - } } diff --git a/src/org/jakub1221/herobrineai/AI/cores/SoundF.java b/src/org/jakub1221/herobrineai/AI/cores/SoundF.java index fc23ed7..73ae9b5 100644 --- a/src/org/jakub1221/herobrineai/AI/cores/SoundF.java +++ b/src/org/jakub1221/herobrineai/AI/cores/SoundF.java @@ -4,13 +4,15 @@ import java.util.Random; import org.bukkit.Sound; import org.bukkit.entity.Player; +import org.jakub1221.herobrineai.HerobrineAI; +import org.jakub1221.herobrineai.Utils; import org.jakub1221.herobrineai.AI.Core; import org.jakub1221.herobrineai.AI.CoreResult; public class SoundF extends Core{ public SoundF(){ - super(CoreType.SOUNDF,AppearType.NORMAL); + super(CoreType.SOUNDF,AppearType.NORMAL, HerobrineAI.getPluginCore()); } public CoreResult CallCore(Object[] data){ @@ -19,32 +21,19 @@ public class SoundF extends Core{ public CoreResult playRandom(Player player){ - Sound[] sounds = new Sound[15]; - sounds[0]=Sound.STEP_STONE; - sounds[1]=Sound.STEP_WOOD; - sounds[2]=Sound.STEP_GRASS; - sounds[3]=Sound.STEP_SAND; - sounds[4]=Sound.STEP_GRAVEL; - sounds[5]=Sound.BREATH; - sounds[6]=Sound.BREATH; - sounds[7]=Sound.BREATH; - sounds[8]=Sound.BREATH; - sounds[9]=Sound.DOOR_OPEN; - sounds[10]=Sound.DOOR_CLOSE; - sounds[11]=Sound.GHAST_SCREAM; - sounds[12]=Sound.GHAST_SCREAM2; - sounds[13]=Sound.WITHER_DEATH; - sounds[14]=Sound.WITHER_HURT; + Sound[] sounds = { + Sound.ENTITY_GHAST_SCREAM, + Sound.ENTITY_WITHER_DEATH, + Sound.ENTITY_WITHER_HURT, + Sound.ENTITY_BAT_HURT, + Sound.ENTITY_PLAYER_BREATH, + Sound.ENTITY_PLAYER_HURT, + Sound.BLOCK_IRON_DOOR_OPEN, + Sound.BLOCK_IRON_DOOR_CLOSE + }; - int chance=new Random().nextInt(14); - int randx=new Random().nextInt(3); - int randz=new Random().nextInt(3); - int randxp=new Random().nextInt(1); - int randzp=new Random().nextInt(1); - if (randxp==0 && randx!=0){randx=(-(randx));} - if (randzp==0 && randz!=0){randz=(-(randz));} - player.playSound(player.getLocation(),sounds[chance],(float) 0.75,(float) 0.75); + player.playSound(player.getLocation(),sounds[Utils.getRandomGen().nextInt(sounds.length)],(float) 0.75,(float) 0.75); return new CoreResult(true,"SoundF is starting!"); } diff --git a/src/org/jakub1221/herobrineai/AI/cores/Temple.java b/src/org/jakub1221/herobrineai/AI/cores/Temple.java index 5ec44e1..2869f8e 100644 --- a/src/org/jakub1221/herobrineai/AI/cores/Temple.java +++ b/src/org/jakub1221/herobrineai/AI/cores/Temple.java @@ -12,216 +12,260 @@ import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.jakub1221.herobrineai.HerobrineAI; +import org.jakub1221.herobrineai.Utils; import org.jakub1221.herobrineai.AI.Core; import org.jakub1221.herobrineai.AI.CoreResult; import org.jakub1221.herobrineai.entity.MobType; import org.jakub1221.herobrineai.misc.ItemName; import org.jakub1221.herobrineai.misc.StructureLoader; -public class Temple extends Core{ +public class Temple extends Core { - public Temple(){ - super(CoreType.TEMPLE,AppearType.NORMAL); + public Temple() { + super(CoreType.TEMPLE, AppearType.NORMAL, HerobrineAI.getPluginCore()); } - - public CoreResult CallCore(Object[] data){ - if (data[0] instanceof Player){ - return FindPlacePlayer((Player)data[0]); - }else{ - return FindPlacePlayer((Chunk)data[0]); + + public CoreResult CallCore(Object[] data) { + if (data[0] instanceof Player) { + return FindPlacePlayer((Player) data[0]); + } else { + return FindPlacePlayer((Chunk) data[0]); } } - - public CoreResult FindPlacePlayer(Player player){ - + + public CoreResult FindPlacePlayer(Player player) { + Location loc = player.getLocation(); - - boolean canBuild=true; - int i1=0; - int i2=0; - int i3=0; - int i4=0; - int i5=0; - int i6=0; - - for (i1=-5;i1<=5;i1++){//Y - for(i2=-20;i2<=20;i2++){//X - for(i3=-20;i3<=20;i3++){//Z - canBuild=true; - - - for (i4=-1;i4<=12;i4++){//Y - for(i5=0;i5<=11;i5++){//X - for(i6=0;i6<=10;i6++){//Z - - if (player.getLocation().getBlockX()==i2+i5+loc.getBlockX() && player.getLocation().getBlockY()==i1+i4+loc.getBlockY() && player.getLocation().getBlockZ()==i3+i6+loc.getBlockZ()){canBuild=false;} - if (i4==-1){ - if (canBuild==true){ - if (HerobrineAI.StandBlocks.contains(loc.getWorld().getBlockAt(i2+i5+loc.getBlockX(), i1+i4+loc.getBlockY(), i3+i6+loc.getBlockZ()).getType())){canBuild=true;}else{canBuild=false;} - } - }else{ - if (canBuild==true){ - if (HerobrineAI.NonStandBlocks.contains(loc.getWorld().getBlockAt(i2+i5+loc.getBlockX(), i1+i4+loc.getBlockY(), i3+i6+loc.getBlockZ()).getType())){canBuild=true;}else{canBuild=false;} + + boolean canBuild = true; + int i1 = 0; + int i2 = 0; + int i3 = 0; + int i4 = 0; + int i5 = 0; + int i6 = 0; + + for (i1 = -5; i1 <= 5; i1++) {// Y + for (i2 = -20; i2 <= 20; i2++) {// X + for (i3 = -20; i3 <= 20; i3++) {// Z + canBuild = true; + + for (i4 = -1; i4 <= 12; i4++) {// Y + for (i5 = 0; i5 <= 11; i5++) {// X + for (i6 = 0; i6 <= 10; i6++) {// Z + + if (player.getLocation().getBlockX() == i2 + i5 + loc.getBlockX() + && player.getLocation().getBlockY() == i1 + i4 + loc.getBlockY() + && player.getLocation().getBlockZ() == i3 + i6 + loc.getBlockZ()) { + canBuild = false; } - + if (i4 == -1) { + if (canBuild == true) { + if (HerobrineAI.StandBlocks.contains(loc + .getWorld().getBlockAt(i2 + i5 + loc.getBlockX(), + i1 + i4 + loc.getBlockY(), i3 + i6 + loc.getBlockZ()) + .getType())) { + canBuild = true; + } else { + canBuild = false; + } + } + } else { + if (canBuild == true) { + if (HerobrineAI.NonStandBlocks.contains(loc + .getWorld().getBlockAt(i2 + i5 + loc.getBlockX(), + i1 + i4 + loc.getBlockY(), i3 + i6 + loc.getBlockZ()) + .getType())) { + canBuild = true; + } else { + canBuild = false; + } + } + + } + } - - } - + + } + } + if (canBuild == true) { + Create(loc.getWorld(), i2 + loc.getBlockX(), i1 + loc.getBlockY(), i3 + loc.getBlockZ()); + return new CoreResult(true, "Creating temple near " + player.getName() + "!"); } } - if (canBuild==true){ - Create(loc.getWorld(),i2+loc.getBlockX(),i1+loc.getBlockY(),i3+loc.getBlockZ()); - return new CoreResult(true,"Creating temple near "+player.getName()+"!"); - } - } - + } - + } - - return new CoreResult(false,"Cannot find a good place for Temple."); - + return new CoreResult(false, "Cannot find a good place for Temple."); + } - - public CoreResult FindPlacePlayer(Chunk chunk){ - + + public CoreResult FindPlacePlayer(Chunk chunk) { + Location loc = chunk.getBlock(2, 0, 2).getLocation(); - loc=loc.getWorld().getHighestBlockAt(loc).getLocation(); - - boolean canBuild=true; - int i1=0; - int i2=0; - int i3=0; - int i4=0; - int i5=0; - int i6=0; - - i1=0; - i2=0; - i3=0; - i4=0; - i5=0; - i6=0; + loc = loc.getWorld().getHighestBlockAt(loc).getLocation(); - - for (i1=-5;i1<=5;i1++){//Y - - canBuild=true; - - - for (i4=-1;i4<=12;i4++){//Y - for(i5=0;i5<=11;i5++){//X - for(i6=0;i6<=10;i6++){//Z - - if (loc.getBlockX()==i2+i5+loc.getBlockX() && loc.getBlockY()==i1+i4+loc.getBlockY() && loc.getBlockZ()==i3+i6+loc.getBlockZ()){canBuild=false;} - if (i4==-1){ - if (canBuild==true){ - if (HerobrineAI.StandBlocks.contains(loc.getWorld().getBlockAt(i2+i5+loc.getBlockX(), i1+i4+loc.getBlockY(), i3+i6+loc.getBlockZ()).getType())){canBuild=true;}else{canBuild=false;} - } - }else{ - if (canBuild==true){ - if (HerobrineAI.NonStandBlocks.contains(loc.getWorld().getBlockAt(i2+i5+loc.getBlockX(), i1+i4+loc.getBlockY(), i3+i6+loc.getBlockZ()).getType())){canBuild=true;}else{canBuild=false;} + boolean canBuild = true; + int i1 = 0; + int i2 = 0; + int i3 = 0; + int i4 = 0; + int i5 = 0; + int i6 = 0; + + i1 = 0; + i2 = 0; + i3 = 0; + i4 = 0; + i5 = 0; + i6 = 0; + + for (i1 = -5; i1 <= 5; i1++) {// Y + + canBuild = true; + + for (i4 = -1; i4 <= 12; i4++) {// Y + for (i5 = 0; i5 <= 11; i5++) {// X + for (i6 = 0; i6 <= 10; i6++) {// Z + + if (loc.getBlockX() == i2 + i5 + loc.getBlockX() && loc.getBlockY() == i1 + i4 + loc.getBlockY() + && loc.getBlockZ() == i3 + i6 + loc.getBlockZ()) { + canBuild = false; + } + if (i4 == -1) { + if (canBuild == true) { + if (HerobrineAI.StandBlocks + .contains(loc + .getWorld().getBlockAt(i2 + i5 + loc.getBlockX(), + i1 + i4 + loc.getBlockY(), i3 + i6 + loc.getBlockZ()) + .getType())) { + canBuild = true; + } else { + canBuild = false; } - } - + } else { + if (canBuild == true) { + if (HerobrineAI.NonStandBlocks + .contains(loc + .getWorld().getBlockAt(i2 + i5 + loc.getBlockX(), + i1 + i4 + loc.getBlockY(), i3 + i6 + loc.getBlockZ()) + .getType())) { + canBuild = true; + } else { + canBuild = false; + } } - + + } + + } + + } + } + if (canBuild == true) { + Create(loc.getWorld(), i2 + loc.getBlockX(), i1 + loc.getBlockY(), i3 + loc.getBlockZ()); + return new CoreResult(true, "Creating temple!"); + } + + } + + return new CoreResult(false, "Cannot find a good place for Temple."); + + } + + public void Create(World world, int X, int Y, int Z) { + + Location loc = new Location(world, X, Y, Z); + + if (HerobrineAI.getPluginCore().getSupport().checkBuild(new Location(world, X, Y, Z))) { + + int MainX = loc.getBlockX(); + int MainY = loc.getBlockY(); + int MainZ = loc.getBlockZ(); + + // Main blocks + + new StructureLoader(HerobrineAI.getPluginCore().getInputStreamData("/res/temple.yml")).Build(loc.getWorld(), + MainX, MainY, MainZ); + loc.getWorld().getBlockAt(MainX + 6, MainY + 0, MainZ + 2).setType(Material.CHEST); + // Mob spawn + if (!HerobrineAI.isNPCDisabled) { + if (HerobrineAI.getPluginCore().getConfigDB().UseNPC_Guardian) { + Location mobloc = new Location(loc.getWorld(), MainX + 6, MainY + 0, MainZ + 4); + for (int i = 1; i <= HerobrineAI.getPluginCore().getConfigDB().npc + .getInt("npc.Guardian.SpawnCount"); i++) { + HerobrineAI.getPluginCore().getEntityManager().spawnCustomZombie(mobloc, + MobType.ARTIFACT_GUARDIAN); } } - if (canBuild==true){ - Create(loc.getWorld(),i2+loc.getBlockX(),i1+loc.getBlockY(),i3+loc.getBlockZ()); - return new CoreResult(true,"Creating temple!"); + } + // Chest + ItemStack ciItem = null; + if (HerobrineAI.getPluginCore().getConfigDB().UseCustomItems) { + if (HerobrineAI.getPluginCore().getConfigDB().UseCustomItemsList.size() > 0) { + Random generator = new Random(); + int chance = generator.nextInt(HerobrineAI.getPluginCore().getConfigDB().UseCustomItemsList.size()); + if (HerobrineAI.getPluginCore().getSupport().isCustomItems()) { + if (HerobrineAI.getPluginCore().getSupport().getCustomItems() + .checkItem(HerobrineAI.getPluginCore().getConfigDB().UseCustomItemsList.get(chance))) { + ciItem = HerobrineAI.getPluginCore().getSupport().getCustomItems() + .getItem(HerobrineAI.getPluginCore().getConfigDB().UseCustomItemsList.get(chance)); + } + } } - - - - - } - - - return new CoreResult(false,"Cannot find a good place for Temple."); - - } - - public void Create(World world,int X,int Y,int Z){ - - Location loc = new Location(world,X,Y,Z); - - if (HerobrineAI.getPluginCore().getSupport().checkBuild(new Location(world,X,Y,Z))){ - - int MainX=loc.getBlockX(); - int MainY=loc.getBlockY(); - int MainZ=loc.getBlockZ(); - - //Main blocks - - new StructureLoader(HerobrineAI.getPluginCore().data_temple).Build(loc.getWorld(), MainX, MainY, MainZ); - loc.getWorld().getBlockAt(MainX+6, MainY+0, MainZ+2).setType(Material.CHEST); - //Mob spawn - if (HerobrineAI.getPluginCore().getConfigDB().UseNPC_Guardian){ - Location mobloc = new Location(loc.getWorld(),MainX+6, MainY+0, MainZ+4); - for (int i=1;i<=HerobrineAI.getPluginCore().getConfigDB().npc.getInt("npc.Guardian.SpawnCount");i++){ - HerobrineAI.getPluginCore().getEntityManager().spawnCustomZombie(mobloc, MobType.ARTIFACT_GUARDIAN); - } - } - //Chest - ItemStack ciItem=null; - if (HerobrineAI.getPluginCore().getConfigDB().UseCustomItems){ - if (HerobrineAI.getPluginCore().getConfigDB().UseCustomItemsList.size()>0){ - Random generator = new Random(); - int chance = generator.nextInt(HerobrineAI.getPluginCore().getConfigDB().UseCustomItemsList.size()); - if (HerobrineAI.getPluginCore().getSupport().isCustomItems()){ - if (HerobrineAI.getPluginCore().getSupport().getCustomItems().checkItem(HerobrineAI.getPluginCore().getConfigDB().UseCustomItemsList.get(chance))){ - ciItem=HerobrineAI.getPluginCore().getSupport().getCustomItems().getItem(HerobrineAI.getPluginCore().getConfigDB().UseCustomItemsList.get(chance)); + + if (ciItem != null) { + Chest chest = (Chest) loc.getWorld().getBlockAt(MainX + 6, MainY + 0, MainZ + 2).getState(); + chest.getBlockInventory().setItem(chest.getInventory().firstEmpty(), ciItem); } + } else { + + Random generator = Utils.getRandomGen(); + int chance = generator.nextInt(15); + ItemStack item = null; + ArrayList newLore = new ArrayList(); + + if (chance < 4 && HerobrineAI.getPluginCore().getConfigDB().UseArtifactBow) { + + item = new ItemStack(Material.BOW); + newLore.add("Herobrine�s artifact"); + newLore.add("Bow of Teleporting"); + item = ItemName.setNameAndLore(item, "Bow of Teleporting", newLore); + item.addEnchantment(Enchantment.ARROW_FIRE, 1); + item.addEnchantment(Enchantment.ARROW_KNOCKBACK, 1); + + } else if (chance < 8 && HerobrineAI.getPluginCore().getConfigDB().UseArtifactSword) { + + item = new ItemStack(Material.DIAMOND_SWORD); + newLore.add("Herobrine�s artifact"); + newLore.add("Sword of Lighting"); + item = ItemName.setNameAndLore(item, "Sword of Lighting", newLore); + item.addEnchantment(Enchantment.KNOCKBACK, 2); + item.addEnchantment(Enchantment.DAMAGE_ALL, 2); + item.addEnchantment(Enchantment.DURABILITY, 3); + + } else if (chance < 12 && HerobrineAI.getPluginCore().getConfigDB().UseArtifactApple) { + + item = new ItemStack(Material.GOLDEN_APPLE); + newLore.add("Herobrine�s artifact"); + newLore.add("Apple of Death"); + item = ItemName.setNameAndLore(item, "Apple of Death", newLore); + + } else { + if (HerobrineAI.getPluginCore().getConfigDB().UseAncientSword) { + item = HerobrineAI.getPluginCore().getAICore().createAncientSword(); + item.addEnchantment(Enchantment.KNOCKBACK, 2); + item.addEnchantment(Enchantment.DAMAGE_ALL, 2); + } + } + + Chest chest = (Chest) loc.getWorld().getBlockAt(MainX + 6, MainY + 0, MainZ + 2).getState(); + chest.getBlockInventory().setItem(chest.getInventory().firstEmpty(), item); } - } - - if (ciItem!=null){ - Chest chest = (Chest) loc.getWorld().getBlockAt(MainX+6, MainY+0, MainZ+2).getState(); - chest.getBlockInventory().setItem(chest.getInventory().firstEmpty(), ciItem); - } - }else{ - Random generator = new Random(); - int chance = generator.nextInt(15); - ItemStack item = null; - ArrayList newLore = new ArrayList(); - if (chance<4 && HerobrineAI.getPluginCore().getConfigDB().UseArtifactBow){ - item = new ItemStack(Material.BOW); - newLore.add("Herobrine´s artifact"); - newLore.add("Bow of Teleporting"); - item = ItemName.setNameAndLore(item, "Bow of Teleporting", newLore); - item.addEnchantment(Enchantment.ARROW_FIRE, 1); - item.addEnchantment(Enchantment.ARROW_KNOCKBACK, 1); - }else if (chance<8 && HerobrineAI.getPluginCore().getConfigDB().UseArtifactSword){ - item = new ItemStack(Material.DIAMOND_SWORD); - newLore.add("Herobrine´s artifact"); - newLore.add("Sword of Lighting"); - item = ItemName.setNameAndLore(item, "Sword of Lighting", newLore); - item.addEnchantment(Enchantment.KNOCKBACK, 2); - item.addEnchantment(Enchantment.DAMAGE_ALL, 2); - item.addEnchantment(Enchantment.DURABILITY, 3); - }else if (chance<12 && HerobrineAI.getPluginCore().getConfigDB().UseArtifactApple){ - item = new ItemStack(Material.GOLDEN_APPLE); - newLore.add("Herobrine´s artifact"); - newLore.add("Apple of Death"); - item = ItemName.setNameAndLore(item, "Apple of Death", newLore); - - }else{ - if (HerobrineAI.getPluginCore().getConfigDB().UseAncientSword){ - item=HerobrineAI.getPluginCore().getAICore().createAncientSword(); - item.addEnchantment(Enchantment.KNOCKBACK, 2); - item.addEnchantment(Enchantment.DAMAGE_ALL, 2); - } - } - - Chest chest = (Chest) loc.getWorld().getBlockAt(MainX+6, MainY+0, MainZ+2).getState(); - chest.getBlockInventory().setItem(chest.getInventory().firstEmpty(), item); - } } } - + } diff --git a/src/org/jakub1221/herobrineai/AI/cores/Totem.java b/src/org/jakub1221/herobrineai/AI/cores/Totem.java index fc972f5..93cc5dd 100644 --- a/src/org/jakub1221/herobrineai/AI/cores/Totem.java +++ b/src/org/jakub1221/herobrineai/AI/cores/Totem.java @@ -1,5 +1,7 @@ package org.jakub1221.herobrineai.AI.cores; +import java.util.Collection; + import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.entity.Player; @@ -11,139 +13,105 @@ import org.jakub1221.herobrineai.AI.Core; import org.jakub1221.herobrineai.AI.CoreResult; import org.jakub1221.herobrineai.AI.Message; -public class Totem extends Core{ - - public Totem(){ - super(CoreType.TOTEM,AppearType.APPEAR); +public class Totem extends Core { + + public Totem() { + super(CoreType.TOTEM, AppearType.APPEAR, HerobrineAI.getPluginCore()); } - public CoreResult CallCore(Object[] data){ - return TotemCall((Location)data[0],(String)data[1]); + public CoreResult CallCore(Object[] data) { + return TotemCall((Location) data[0], (String) data[1]); } - - public CoreResult TotemCall(Location loc,String caller){ - - AICore.isTotemCalled=false; + + public CoreResult TotemCall(Location loc, String caller) { + + AICore.isTotemCalled = false; loc.getWorld().strikeLightning(loc); - if (HerobrineAI.getPluginCore().getConfigDB().TotemExplodes==true){ - loc.getWorld().createExplosion(loc, 5); + + if (PluginCore.getConfigDB().TotemExplodes == true) { + loc.getWorld().createExplosion(loc, 5); } - if (Bukkit.getServer().getPlayer(caller) != null){ - if (Bukkit.getServer().getPlayer(caller).isOnline()){ - HerobrineAI.getPluginCore().getAICore().setCoreTypeNow(CoreType.TOTEM); - HerobrineAI.getPluginCore().getAICore().setAttackTarget(Bukkit.getServer().getPlayer(caller)); + + if (Bukkit.getServer().getPlayer(caller) != null) { + + if (Bukkit.getServer().getPlayer(caller).isOnline()) { + PluginCore.getAICore().setCoreTypeNow(CoreType.TOTEM); + PluginCore.getAICore().setAttackTarget(Bukkit.getServer().getPlayer(caller)); Player player = (Player) Bukkit.getServer().getPlayer(caller); + + Collection onlinePlayers = Bukkit.getServer().getOnlinePlayers(); - Player [] AllOnPlayers = Bukkit.getServer().getOnlinePlayers(); - if (Bukkit.getServer().getOnlinePlayers().length>0){ - int i = 0; - for (i=0;i<=Bukkit.getServer().getOnlinePlayers().length-1;i++){ - Location ploc = (Location) AllOnPlayers[i].getLocation(); - if (AllOnPlayers[i].getName() != player.getName() && ploc.getX()+10>loc.getX() && ploc.getX()-10loc.getZ() && ploc.getZ()-10 0) { + for(Player onlinePlayer : onlinePlayers) { + Location ploc = (Location) onlinePlayer.getLocation(); + if (onlinePlayer.getName() != player.getName() && ploc.getX() + 10 > loc.getX() + && ploc.getX() - 10 < loc.getX() && ploc.getZ() + 10 > loc.getZ() + && ploc.getZ() - 10 < loc.getZ()) { + + Message.SendMessage(onlinePlayer); + if (PluginCore.getConfigDB().UsePotionEffects) { + onlinePlayer.addPotionEffect(new PotionEffect(PotionEffectType.CONFUSION, 1000, 1)); + onlinePlayer.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 1000, 1)); + onlinePlayer.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 1000, 1)); + } + } + } + + } + } else { Player target = null; + + Collection onlinePlayers = Bukkit.getServer().getOnlinePlayers(); - Player [] AllOnPlayers = Bukkit.getServer().getOnlinePlayers(); - if (Bukkit.getServer().getOnlinePlayers().length>0){ - int i = 0; - for (i=0;i<=Bukkit.getServer().getOnlinePlayers().length-1;i++){ - if (hasTarget==false){ - Location ploc = (Location) AllOnPlayers[i].getLocation(); - if (ploc.getX()+10>loc.getX() && ploc.getX()-10loc.getZ() && ploc.getZ()-10 0) { + for(Player onlinePlayer : onlinePlayers) { + + Location ploc = (Location) onlinePlayer.getLocation(); + + if (ploc.getX() + 10 > loc.getX() && ploc.getX() - 10 < loc.getX() + && ploc.getZ() + 10 > loc.getZ() && ploc.getZ() - 10 < loc.getZ()) { + + target = onlinePlayer; + break; + + } + + } + + } - } - if (hasTarget==true){ - - HerobrineAI.getPluginCore().getAICore().CancelTarget(CoreType.TOTEM); - HerobrineAI.getPluginCore().getAICore().setAttackTarget(target); - Player player = (Player) target; - if (Bukkit.getServer().getOnlinePlayers().length>0){ - int i = 0; - for (i=0;i<=Bukkit.getServer().getOnlinePlayers().length-1;i++){ - Location ploc = (Location) AllOnPlayers[i].getLocation(); - if (AllOnPlayers[i].getName() != player.getName() && ploc.getX()+20>loc.getX() && ploc.getX()-20loc.getZ() && ploc.getZ()-20 0) { + for(Player onlinePlayer : onlinePlayers) { - Message.SendMessage(AllOnPlayers[i]); - AllOnPlayers[i].addPotionEffect(new PotionEffect(PotionEffectType.CONFUSION, 1000, 1)); - AllOnPlayers[i].addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 1000, 1)); - AllOnPlayers[i].addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 1000, 1)); - - } - } - - } - - - } - - + Location ploc = (Location) onlinePlayer.getLocation(); + if (onlinePlayer.getName() != player.getName() + && ploc.getX() + 20 > loc.getX() + && ploc.getX() - 20 < loc.getX() + && ploc.getZ() + 20 > loc.getZ() + && ploc.getZ() - 20 < loc.getZ() + ) { + + Message.SendMessage(onlinePlayer); + onlinePlayer.addPotionEffect(new PotionEffect(PotionEffectType.CONFUSION, 1000, 1)); + onlinePlayer.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 1000, 1)); + onlinePlayer.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 1000, 1)); + + } + } + + } + + } + } - - - }else{ - boolean hasTarget=false; - Player target = null; - - Player [] AllOnPlayers = Bukkit.getServer().getOnlinePlayers(); - if (Bukkit.getServer().getOnlinePlayers().length>0){ - int i = 0; - for (i=0;i<=Bukkit.getServer().getOnlinePlayers().length-1;i++){ - if (hasTarget==false){ - Location ploc = (Location) AllOnPlayers[i].getLocation(); - if (ploc.getX()+20>loc.getX() && ploc.getX()-20loc.getZ() && ploc.getZ()-200){ - int i = 0; - for (i=0;i<=Bukkit.getServer().getOnlinePlayers().length-1;i++){ - if (AllOnPlayers[i].getEntityId()!=HerobrineAI.HerobrineEntityID){ - Location ploc = (Location) AllOnPlayers[i].getLocation(); - if (AllOnPlayers[i].getName() != player.getName() && ploc.getX()+20>loc.getX() && ploc.getX()-20loc.getZ() && ploc.getZ()-20 allWorlds = new ArrayList(); + List worlds_ = Bukkit.getWorlds(); + for(int i=0;i<=worlds_.size()-1;i++){ + if(!worlds_.get(i).getName().equalsIgnoreCase("world_herobrineai_graveyard")){ + allWorlds.add(worlds_.get(i).getName()); + } + } + + try { + config.load(configF); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } catch (InvalidConfigurationException e) { + e.printStackTrace(); + } + + config.set("config.Worlds", allWorlds); + + try { + config.save(configF); + } catch (IOException e) { + e.printStackTrace(); + } + + Reload(); + + } } diff --git a/src/org/jakub1221/herobrineai/HerobrineAI.java b/src/org/jakub1221/herobrineai/HerobrineAI.java index 2f69dc1..d524304 100644 --- a/src/org/jakub1221/herobrineai/HerobrineAI.java +++ b/src/org/jakub1221/herobrineai/HerobrineAI.java @@ -6,10 +6,12 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Random; import java.util.logging.Logger; import org.bukkit.Bukkit; import org.bukkit.ChatColor; +import org.bukkit.Color; import org.bukkit.GameMode; import org.bukkit.Location; import org.bukkit.Material; @@ -18,8 +20,9 @@ import org.bukkit.WorldCreator; import org.bukkit.command.CommandExecutor; import org.bukkit.entity.Player; import org.bukkit.event.Listener; +import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.plugin.java.JavaPlugin; - +import org.jakub1221.herobrineai.NPC.AI.Path; import org.jakub1221.herobrineai.NPC.AI.PathManager; import org.jakub1221.herobrineai.NPC.Entity.HumanNPC; import org.jakub1221.herobrineai.NPC.NPCCore; @@ -36,9 +39,7 @@ import org.jakub1221.herobrineai.listeners.InventoryListener; import org.jakub1221.herobrineai.listeners.PlayerListener; import org.jakub1221.herobrineai.listeners.WorldListener; - - -public class HerobrineAI extends JavaPlugin implements Listener{ +public class HerobrineAI extends JavaPlugin implements Listener { private static HerobrineAI pluginCore; private AICore aicore; @@ -46,94 +47,108 @@ public class HerobrineAI extends JavaPlugin implements Listener{ private Support support; private EntityManager entMng; private PathManager pathMng; - public static final int build=3127; - public static final String versionStr="3.1.0"; - public java.io.InputStream data_temple=HerobrineAI.class.getResourceAsStream("/res/temple.yml"); - public java.io.InputStream data_graveyard_world=HerobrineAI.class.getResourceAsStream("/res/graveyard_world.yml"); - - public static int HerobrineHP=200; - public static int HerobrineMaxHP=200; - public static final boolean isDebugging=false; - + public static final int build = 3219; + public static final String versionStr = "3.2.2"; + public static boolean isNPCDisabled = false; + private static int pathUpdateINT = 0; + + public static String bukkit_ver_string = "1.6.4 R0.1"; + public static int HerobrineHP = 200; + public static int HerobrineMaxHP = 200; + public static final boolean isDebugging = false; + public static boolean isInitDone = false; + public static NPCCore NPCman; public static HumanNPC HerobrineNPC; public static long HerobrineEntityID; - + public static boolean AvailableWorld = false; - + public static List AllowedBlocks = new ArrayList(); public static List StandBlocks = new ArrayList(); public static List NonStandBlocks = new ArrayList(); - public Map PlayerApple = new HashMap(); - + public Map PlayerApple = new HashMap(); + public static Logger log = Logger.getLogger("Minecraft"); - - public void onEnable(){ - - NPCman = new NPCCore(this); - HerobrineAI.pluginCore = this; - this.configdb = new ConfigDB(log); - - - getServer().getPluginManager().registerEvents(new EntityListener(), this); - getServer().getPluginManager().registerEvents(new BlockListener(), this); - getServer().getPluginManager().registerEvents(new InventoryListener(), this); - getServer().getPluginManager().registerEvents(new PlayerListener(), this); - getServer().getPluginManager().registerEvents(new WorldListener(), this); - - // Metrics - + + public void onEnable() { + + boolean errorCheck = true; + try { - Metrics metrics = new Metrics(this); - metrics.start(); - } catch (IOException e) { - + Class.forName("net.minecraft.server.v1_6_R3.Entity"); + } catch (ClassNotFoundException e) { + errorCheck = false; + isInitDone = false; } - - // Initialize PathManager - - this.pathMng = new PathManager(); - - // Initialize AICore - - this.aicore = new AICore(); - - // Initialize EntityManager - - this.entMng = new EntityManager(); - - // Config loading - - configdb.Startup(); - configdb.Reload(); - - // Spawn Herobrine - - Location nowloc = new Location((World) Bukkit.getServer().getWorlds().get(0),(float) 0,(float) -20,(float) 0); - nowloc.setYaw((float) 1); - nowloc.setPitch((float) 1); - HerobrineSpawn(nowloc); - - HerobrineNPC.setItemInHand(configdb.ItemInHand.getItemStack()); - - //Graveyard World - - if (this.configdb.UseGraveyardWorld==true){ - if (Bukkit.getServer().getWorld("world_herobrineai_graveyard")==null){ - log.info("[HerobrineAI] Creating Graveyard world..."); - WorldCreator wc = new WorldCreator("world_herobrineai_graveyard"); - wc.generateStructures(false); - org.bukkit.WorldType type = org.bukkit.WorldType.FLAT; - wc.type(type); - wc.createWorld(); - GraveyardWorld.Create(); - } - + if (errorCheck) { + isInitDone = true; + HerobrineAI.pluginCore = this; + + NPCman = new NPCCore(this); + + this.configdb = new ConfigDB(log); + + getServer().getPluginManager().registerEvents(new EntityListener(), this); + getServer().getPluginManager().registerEvents(new BlockListener(), this); + getServer().getPluginManager().registerEvents(new InventoryListener(), this); + getServer().getPluginManager().registerEvents(new PlayerListener(), this); + getServer().getPluginManager().registerEvents(new WorldListener(), this); + + // Metrics + + try { + Metrics metrics = new Metrics(this); + metrics.start(); + } catch (IOException e) { + } - log.info("[HerobrineAI] Plugin loaded! Version: "+versionStr+" / Build: "+build); - + + // Initialize PathManager + + this.pathMng = new PathManager(); + + // Initialize AICore + + this.aicore = new AICore(); + + // Initialize EntityManager + + this.entMng = new EntityManager(); + + // Config loading + + configdb.Startup(); + configdb.Reload(); + + // Spawn Herobrine + + Location nowloc = new Location((World) Bukkit.getServer().getWorlds().get(0), (float) 0, (float) -20, + (float) 0); + nowloc.setYaw((float) 1); + nowloc.setPitch((float) 1); + HerobrineSpawn(nowloc); + + HerobrineNPC.setItemInHand(configdb.ItemInHand.getItemStack()); + + // Graveyard World + + if (this.configdb.UseGraveyardWorld == true) { + if (Bukkit.getServer().getWorld("world_herobrineai_graveyard") == null) { + log.info("[HerobrineAI] Creating Graveyard world..."); + WorldCreator wc = new WorldCreator("world_herobrineai_graveyard"); + wc.generateStructures(false); + org.bukkit.WorldType type = org.bukkit.WorldType.FLAT; + wc.type(type); + wc.createWorld(); + GraveyardWorld.Create(); + } + + } + log.info("[HerobrineAI] Plugin loaded! Version: " + versionStr + " / Build: " + build); + // Init Block Types - + StandBlocks.add(Material.STONE); StandBlocks.add(Material.getMaterial(2)); StandBlocks.add(Material.GRAVEL); @@ -150,11 +165,11 @@ public class HerobrineAI extends JavaPlugin implements Listener{ StandBlocks.add(Material.getMaterial(57)); StandBlocks.add(Material.getMaterial(41)); StandBlocks.add(Material.getMaterial(42)); - + NonStandBlocks.add(Material.AIR); NonStandBlocks.add(Material.GRASS); NonStandBlocks.add(Material.SNOW); - + AllowedBlocks.add(Material.AIR); AllowedBlocks.add(Material.SNOW); AllowedBlocks.add(Material.getMaterial(31)); @@ -173,179 +188,267 @@ public class HerobrineAI extends JavaPlugin implements Listener{ AllowedBlocks.add(Material.getMaterial(77)); AllowedBlocks.add(Material.LADDER); - for (int i = 0;i<=configdb.useWorlds.size()-1;i++){ - if (Bukkit.getServer().getWorlds().contains(Bukkit.getServer().getWorld(configdb.useWorlds.get(i)))){AvailableWorld=true;} - } - if (AvailableWorld==false){ - log.info("**********************************************************"); - log.info("[HerobrineAI] There are no available worlds for Herobrine!"); - log.info("**********************************************************"); + /* + * Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(this, + * new Runnable() { public void run() { + * + * for (int i = 0;i<=configdb.useWorlds.size()-1;i++){ if + * (Bukkit.getServer().getWorlds().contains(Bukkit.getServer(). + * getWorld(configdb.useWorlds.get(i)))){AvailableWorld=true;} } if + * (AvailableWorld==false){ log.warning( + * "**********************************************************"); + * log. + * warning("[HerobrineAI] There are no available worlds for Herobrine!" + * ); log.warning( + * "**********************************************************"); + * }else{ log.info( + * "**********************************************************"); + * log.info("[HerobrineAI] No problems detected."); log.info( + * "**********************************************************"); } + * + * + * } }, 1 * 1L); + */ + + pathUpdateINT = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(this, new Runnable() { + public void run() { + if (new Random().nextInt(4) == 2 && HerobrineAI.getPluginCore().getAICore().getCoreTypeNow() + .equals(CoreType.RANDOM_POSITION)) { + pathMng.setPath(new Path(new Random().nextInt(15) - 7f, new Random().nextInt(15) - 7f)); + } } - - - - Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(AICore.plugin, new Runnable() { - public void run() { - - } - }, 1 * 35L, 1 * 35L); - + }, 1 * 200L, 1 * 200L); + Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(this, new Runnable() { - public void run() { - pathMng.update(); - } - }, 1 * 5L, 1 * 5L); - - - //Command Executors + public void run() { + pathMng.update(); + } + }, 1 * 5L, 1 * 5L); + + // Command Executors this.getCommand("hb").setExecutor((CommandExecutor) new CmdExecutor(this)); this.getCommand("hb-ai").setExecutor((CommandExecutor) new CmdExecutor(this)); - - //Support initialize + + // Support initialize this.support = new Support(); - - - //Register mobs - try{ - @SuppressWarnings("rawtypes") - Class[] args = new Class[3]; - args[0] = Class.class; - args[1] = String.class; - args[2] = int.class; - Method a = net.minecraft.server.v1_5_R2.EntityTypes.class.getDeclaredMethod("a", args); - a.setAccessible(true); + Class[] argst = new Class[3]; + argst[0] = Class.class; + argst[1] = String.class; + argst[2] = int.class; + try { + Method ab = net.minecraft.server.v1_11_R1.EntityTypes.class.getDeclaredMethod("a", argst); + } catch (NoSuchMethodException e1) { + isNPCDisabled = true; + } catch (SecurityException e1) { + isNPCDisabled = true; + } - a.invoke(a, CustomZombie.class, "Zombie", 54); - a.invoke(a, CustomSkeleton.class, "Skeleton", 51); - }catch (Exception e){ - e.printStackTrace(); - this.setEnabled(false); - } - + if (!isNPCDisabled) { + try { + @SuppressWarnings("rawtypes") + Class[] args = new Class[3]; + args[0] = Class.class; + args[1] = String.class; + args[2] = int.class; - - } - - - public void onDisable(){ - this.entMng.killAllMobs(); - NPCman.DisableTask(); - aicore.CancelTarget(CoreType.ANY); - log.info("[HerobrineAI] Plugin disabled!"); - - + Method a = net.minecraft.server.v1_11_R1.EntityTypes.class.getDeclaredMethod("a", args); + a.setAccessible(true); + + a.invoke(a, CustomZombie.class, "Zombie", 54); + a.invoke(a, CustomSkeleton.class, "Skeleton", 51); + } catch (Exception e) { + e.printStackTrace(); + this.setEnabled(false); + } + } else { + log.warning("[HerobrineAI] Custom NPCs have been disabled. (Incompatibility error!)"); + } + } else { + log.warning("[HerobrineAI] ******************ERROR******************"); + log.warning("[HerobrineAI] This version is only compatible with bukkit version " + bukkit_ver_string); + log.warning("[HerobrineAI] *****************************************"); + this.setEnabled(false); + } } - - public AICore getAICore(){ - + + public void onDisable() { + + if (isInitDone) { + this.entMng.killAllMobs(); + Bukkit.getServer().getScheduler().cancelTask(pathUpdateINT); + NPCman.DisableTask(); + aicore.CancelTarget(CoreType.ANY); + aicore.Stop_BD(); + aicore.Stop_CG(); + aicore.Stop_MAIN(); + aicore.Stop_RC(); + aicore.Stop_RM(); + aicore.Stop_RP(); + aicore.Stop_RS(); + aicore.disableAll(); + log.info("[HerobrineAI] Plugin disabled!"); + } + + } + + public java.io.InputStream getInputStreamData(String src) { + return HerobrineAI.class.getResourceAsStream(src); + } + + public AICore getAICore() { + return this.aicore; - + } - - public EntityManager getEntityManager(){ + + public EntityManager getEntityManager() { return this.entMng; } - - public static HerobrineAI getPluginCore(){ - + + public static HerobrineAI getPluginCore() { + return HerobrineAI.pluginCore; - + } - - public void HerobrineSpawn(Location loc){ - HerobrineNPC = (HumanNPC) NPCman.spawnHumanNPC(ChatColor.WHITE+"Herobrine", loc); - HerobrineEntityID=HerobrineNPC.getBukkitEntity().getEntityId(); - + + public void HerobrineSpawn(Location loc) { + HerobrineNPC = (HumanNPC) NPCman.spawnHumanNPC(ChatColor.WHITE + "Herobrine", loc); + HerobrineNPC.getBukkitEntity().setMetadata("NPC", new FixedMetadataValue(this, true)); + HerobrineEntityID = HerobrineNPC.getBukkitEntity().getEntityId(); + } - public void HerobrineRemove(){ - - HerobrineEntityID=0; - HerobrineNPC=null; + + public void HerobrineRemove() { + + HerobrineEntityID = 0; + HerobrineNPC = null; NPCman.removeAll(); - + } - public ConfigDB getConfigDB(){ - return this.configdb; - } - public String getVersionStr(){ - return versionStr; - } - public Support getSupport(){ - return this.support; - } - public PathManager getPathManager(){ + + public ConfigDB getConfigDB() { + return this.configdb; + } + + public String getVersionStr() { + return versionStr; + } + + public Support getSupport() { + return this.support; + } + + public PathManager getPathManager() { return this.pathMng; } - public boolean canAttackPlayer(Player player,Player sender){ - - if (player.isOp()){ - if (configdb.AttackOP){ - if (player.getGameMode()==GameMode.CREATIVE){ - if (configdb.AttackCreative){ - return true; - }else{sender.sendMessage(ChatColor.RED+"[HerobrineAI] Player is in Creative mode.");return false;} - } - return true; - }else{sender.sendMessage(ChatColor.RED+"[HerobrineAI] Player is OP.");return false;} - }else if (player.hasPermission("hb-ai.ignore")){ - sender.sendMessage(ChatColor.RED+"[HerobrineAI] Player has ignore permission."); - return false; - }else if (player.getGameMode()==GameMode.CREATIVE){ - if (configdb.AttackCreative){ - return true; - }else{sender.sendMessage(ChatColor.RED+"[HerobrineAI] Player is in Creative mode.");return false;} - }else{return true;} - - } - public boolean canAttackPlayerConsole(Player player){ - - if (player.isOp()){ - if (configdb.AttackOP){ - if (player.getGameMode()==GameMode.CREATIVE){ - if (configdb.AttackCreative){ - return true; - }else{log.info("[HerobrineAI] Player is in Creative mode.");return false;} - } - return true; - }else{log.info("[HerobrineAI] Player is OP.");return false;} - }else if (player.hasPermission("hb-ai.ignore")){ - log.info("[HerobrineAI] Player has ignore permission."); - return false; - }else if (player.getGameMode()==GameMode.CREATIVE){ - if (configdb.AttackCreative){ - return true; - }else{log.info("[HerobrineAI] Player is in Creative mode.");return false;} - }else{return true;} - - } - - public boolean canAttackPlayerNoMSG(Player player){ - if (player.isOp()){ - if (configdb.AttackOP){ - if (player.getGameMode()==GameMode.CREATIVE){ - if (configdb.AttackCreative){ - return true; - }else{return false;} - } - return true; - }else{return false;} - }else if (player.hasPermission("hb-ai.ignore")){ - return false; - }else if (player.getGameMode()==GameMode.CREATIVE){ - if (configdb.AttackCreative){ - return true; - }else{return false;} - }else{return true;} - - } - public String getAvailableWorldString(){ - if (AvailableWorld){ - return "Yes"; - }else{ - return "No"; - } - } + + public boolean canAttackPlayer(Player player, Player sender) { + + boolean opCheck = true; + boolean creativeCheck = true; + boolean ignoreCheck = true; + + if (!configdb.AttackOP) { + if (player.isOp()) { + opCheck = false; + } + } + if (!configdb.AttackCreative) { + if (player.getGameMode() == GameMode.CREATIVE) { + creativeCheck = false; + } + } + ; + if (configdb.UseIgnorePermission && player.hasPermission("hb-ai.ignore")) { + ignoreCheck = false; + } + + if (opCheck && creativeCheck && ignoreCheck) { + return true; + } else { + if (!opCheck) { + sender.sendMessage(ChatColor.RED + "[HerobrineAI] Player is OP."); + } else if (!creativeCheck) { + sender.sendMessage(ChatColor.RED + "[HerobrineAI] Player is in Creative mode."); + } else if (!ignoreCheck) { + sender.sendMessage(ChatColor.RED + "[HerobrineAI] Player has ignore permission."); + } + return false; + } + + } + + public boolean canAttackPlayerConsole(Player player) { + + boolean opCheck = true; + boolean creativeCheck = true; + boolean ignoreCheck = true; + + if (!configdb.AttackOP) { + if (player.isOp()) { + opCheck = false; + } + } + if (!configdb.AttackCreative) { + if (player.getGameMode() == GameMode.CREATIVE) { + creativeCheck = false; + } + } + ; + if (configdb.UseIgnorePermission && player.hasPermission("hb-ai.ignore")) { + ignoreCheck = false; + } + + if (opCheck && creativeCheck && ignoreCheck) { + return true; + } else { + if (!opCheck) { + log.info("[HerobrineAI] Player is OP."); + } else if (!creativeCheck) { + log.info("[HerobrineAI] Player is in Creative mode."); + } else if (!ignoreCheck) { + log.info("[HerobrineAI] Player has ignore permission."); + } + return false; + } + + } + + public boolean canAttackPlayerNoMSG(Player player) { + boolean opCheck = true; + boolean creativeCheck = true; + boolean ignoreCheck = true; + + if (!configdb.AttackOP) { + if (player.isOp()) { + opCheck = false; + } + } + if (!configdb.AttackCreative) { + if (player.getGameMode() == GameMode.CREATIVE) { + creativeCheck = false; + } + } + ; + if (configdb.UseIgnorePermission && player.hasPermission("hb-ai.ignore")) { + ignoreCheck = false; + } + + if (opCheck && creativeCheck && ignoreCheck) { + return true; + } else { + + return false; + } + } + + public String getAvailableWorldString() { + if (AvailableWorld) { + return "Yes"; + } else { + return "No"; + } + } } - diff --git a/src/org/jakub1221/herobrineai/Metrics.java b/src/org/jakub1221/herobrineai/Metrics.java index 0dc8763..0eab10b 100644 --- a/src/org/jakub1221/herobrineai/Metrics.java +++ b/src/org/jakub1221/herobrineai/Metrics.java @@ -360,7 +360,7 @@ public class Metrics { data.append(encode("guid")).append('=').append(encode(guid)); encodeDataPair(data, "version", description.getVersion()); encodeDataPair(data, "server", Bukkit.getVersion()); - encodeDataPair(data, "players", Integer.toString(Bukkit.getServer().getOnlinePlayers().length)); + encodeDataPair(data, "players", Integer.toString(Bukkit.getServer().getOnlinePlayers().size())); encodeDataPair(data, "revision", String.valueOf(REVISION)); // If we're pinging, append it diff --git a/src/org/jakub1221/herobrineai/NPC/AI/Path.java b/src/org/jakub1221/herobrineai/NPC/AI/Path.java index 45ff7b0..b76ee23 100644 --- a/src/org/jakub1221/herobrineai/NPC/AI/Path.java +++ b/src/org/jakub1221/herobrineai/NPC/AI/Path.java @@ -97,9 +97,12 @@ public class Path { } }else{ - if (new Random().nextInt(4)==0){ + if (new Random().nextInt(7)==3){ - HerobrineAI.HerobrineNPC.setYaw(new Random().nextInt(360)); + int yaw=new Random().nextInt(360); + + HerobrineAI.HerobrineNPC.setYaw(yaw); + HerobrineAI.HerobrineNPC.setYawA(yaw); HerobrineAI.HerobrineNPC.setPitch(0); } diff --git a/src/org/jakub1221/herobrineai/NPC/AI/PathManager.java b/src/org/jakub1221/herobrineai/NPC/AI/PathManager.java index 86795b6..47edf4e 100644 --- a/src/org/jakub1221/herobrineai/NPC/AI/PathManager.java +++ b/src/org/jakub1221/herobrineai/NPC/AI/PathManager.java @@ -1,21 +1,24 @@ package org.jakub1221.herobrineai.NPC.AI; +import org.jakub1221.herobrineai.HerobrineAI; +import org.jakub1221.herobrineai.AI.Core.CoreType; + public class PathManager { Path pathNow = null; - - public void setPath(Path path){ - pathNow=path; + + public void setPath(Path path) { + pathNow = path; } - - public void update(){ - if (pathNow!=null){ - pathNow.update(); + + public void update() { + if (pathNow != null && HerobrineAI.getPluginCore().getAICore().getCoreTypeNow().equals(CoreType.RANDOM_POSITION)) { + pathNow.update(); } } - - public Path getPath(){ + + public Path getPath() { return pathNow; } - + } diff --git a/src/org/jakub1221/herobrineai/NPC/Entity/HumanEntity.java b/src/org/jakub1221/herobrineai/NPC/Entity/HumanEntity.java index bdcf5d5..dea4afa 100644 --- a/src/org/jakub1221/herobrineai/NPC/Entity/HumanEntity.java +++ b/src/org/jakub1221/herobrineai/NPC/Entity/HumanEntity.java @@ -1,12 +1,12 @@ package org.jakub1221.herobrineai.NPC.Entity; -import net.minecraft.server.v1_5_R2.Entity; -import net.minecraft.server.v1_5_R2.EntityHuman; -import net.minecraft.server.v1_5_R2.EntityPlayer; -import net.minecraft.server.v1_5_R2.EnumGamemode; -import net.minecraft.server.v1_5_R2.PlayerInteractManager; +import net.minecraft.server.v1_11_R1.Entity; +import net.minecraft.server.v1_11_R1.EntityHuman; +import net.minecraft.server.v1_11_R1.EntityPlayer; +import net.minecraft.server.v1_11_R1.EnumGamemode; +import net.minecraft.server.v1_11_R1.PlayerInteractManager; -import org.bukkit.craftbukkit.v1_5_R2.entity.CraftEntity; +import org.bukkit.craftbukkit.v1_11_R1.entity.CraftEntity; import org.jakub1221.herobrineai.NPC.NPCCore; import org.jakub1221.herobrineai.NPC.NMS.BWorld; import org.jakub1221.herobrineai.NPC.Network.NetworkHandler; diff --git a/src/org/jakub1221/herobrineai/NPC/Entity/HumanNPC.java b/src/org/jakub1221/herobrineai/NPC/Entity/HumanNPC.java index 010436a..135903b 100644 --- a/src/org/jakub1221/herobrineai/NPC/Entity/HumanNPC.java +++ b/src/org/jakub1221/herobrineai/NPC/Entity/HumanNPC.java @@ -1,9 +1,9 @@ package org.jakub1221.herobrineai.NPC.Entity; -import net.minecraft.server.v1_5_R2.EntityPlayer; -import net.minecraft.server.v1_5_R2.Packet18ArmAnimation; -import net.minecraft.server.v1_5_R2.WorldServer; -import net.minecraft.server.v1_5_R2.Entity; +import net.minecraft.server.v1_11_R1.EntityPlayer; +import net.minecraft.server.v1_11_R1.Packet18ArmAnimation; +import net.minecraft.server.v1_11_R1.WorldServer; +import net.minecraft.server.v1_11_R1.Entity; import org.bukkit.Location; import org.bukkit.entity.LivingEntity; @@ -43,7 +43,7 @@ public class HumanNPC { } public String getName() { - return ((HumanEntity) getEntity()).name; + return ((HumanEntity) getEntity()).getName(); } public void setPitch(float pitch){ @@ -96,10 +96,14 @@ public class HumanNPC { ((EntityPlayer) getEntity()).yaw = (float) (newYaw - 90); ((EntityPlayer) getEntity()).pitch = (float) newPitch; - ((EntityPlayer) getEntity()).aA = (float) (newYaw - 90); + ((EntityPlayer) getEntity()).aP = (float) (newYaw - 90); } + + public void setYawA(float yaw){ + ((EntityPlayer) getEntity()).aP=yaw; + } public org.bukkit.entity.Entity getBukkitEntity() { return entity.getBukkitEntity(); diff --git a/src/org/jakub1221/herobrineai/NPC/NMS/BServer.java b/src/org/jakub1221/herobrineai/NPC/NMS/BServer.java index 2d8aad7..be37688 100644 --- a/src/org/jakub1221/herobrineai/NPC/NMS/BServer.java +++ b/src/org/jakub1221/herobrineai/NPC/NMS/BServer.java @@ -5,13 +5,13 @@ import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; -import net.minecraft.server.v1_5_R2.DedicatedServer; -import net.minecraft.server.v1_5_R2.MinecraftServer; -import net.minecraft.server.v1_5_R2.WorldServer; +import net.minecraft.server.v1_6_R3.DedicatedServer; +import net.minecraft.server.v1_6_R3.MinecraftServer; +import net.minecraft.server.v1_6_R3.WorldServer; import org.bukkit.Bukkit; import org.bukkit.Server; -import org.bukkit.craftbukkit.v1_5_R2.CraftServer; +import org.bukkit.craftbukkit.v1_6_R3.CraftServer; public class BServer { private static BServer ins; diff --git a/src/org/jakub1221/herobrineai/NPC/NMS/BWorld.java b/src/org/jakub1221/herobrineai/NPC/NMS/BWorld.java index 4848729..b8f8f1e 100644 --- a/src/org/jakub1221/herobrineai/NPC/NMS/BWorld.java +++ b/src/org/jakub1221/herobrineai/NPC/NMS/BWorld.java @@ -6,17 +6,17 @@ import java.util.concurrent.Callable; import java.util.logging.Level; import java.util.logging.Logger; -import net.minecraft.server.v1_5_R2.AxisAlignedBB; -import net.minecraft.server.v1_5_R2.Entity; -import net.minecraft.server.v1_5_R2.EntityPlayer; -import net.minecraft.server.v1_5_R2.PlayerChunkMap; -import net.minecraft.server.v1_5_R2.WorldProvider; -import net.minecraft.server.v1_5_R2.WorldServer; +import net.minecraft.server.v1_11_R1.AxisAlignedBB; +import net.minecraft.server.v1_11_R1.Entity; +import net.minecraft.server.v1_11_R1.EntityPlayer; +import net.minecraft.server.v1_11_R1.PlayerChunkMap; +import net.minecraft.server.v1_11_R1.WorldProvider; +import net.minecraft.server.v1_11_R1.WorldServer; import org.bukkit.Location; import org.bukkit.World; -import org.bukkit.craftbukkit.v1_5_R2.CraftWorld; -import org.bukkit.craftbukkit.v1_5_R2.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_11_R1.CraftWorld; +import org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; diff --git a/src/org/jakub1221/herobrineai/NPC/NPCCore.java b/src/org/jakub1221/herobrineai/NPC/NPCCore.java index e75ca55..f9aad32 100644 --- a/src/org/jakub1221/herobrineai/NPC/NPCCore.java +++ b/src/org/jakub1221/herobrineai/NPC/NPCCore.java @@ -6,8 +6,8 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Map; -import net.minecraft.server.v1_5_R2.Entity; -import net.minecraft.server.v1_5_R2.PlayerInteractManager; +import net.minecraft.server.v1_11_R1.Entity; +import net.minecraft.server.v1_11_R1.PlayerInteractManager; import org.bukkit.Bukkit; import org.bukkit.Location; @@ -25,15 +25,15 @@ import org.jakub1221.herobrineai.NPC.NMS.BWorld; import org.jakub1221.herobrineai.NPC.Network.NetworkCore; public class NPCCore { - + private ArrayList npcs = new ArrayList(); private BServer server; private int taskid; private Map bworlds = new HashMap(); private NetworkCore networkCore; public static JavaPlugin plugin; - public boolean isInLoaded=false; - private int lastID=0; + public boolean isInLoaded = false; + private int lastID = 0; public NPCCore(JavaPlugin plugin) { server = BServer.getInstance(); @@ -43,15 +43,14 @@ public class NPCCore { } catch (IOException e) { e.printStackTrace(); } - - + taskid = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() { @Override public void run() { ArrayList toRemove = new ArrayList(); for (HumanNPC i : npcs) { Entity j = i.getEntity(); - + if (j.dead) { toRemove.add(i); } @@ -72,7 +71,7 @@ public class NPCCore { } npcs.clear(); } - + public BWorld getBWorld(World world) { BWorld bworld = bworlds.get(world); if (bworld != null) { @@ -83,63 +82,64 @@ public class NPCCore { return bworld; } - public void DisableTask(){ - Bukkit.getServer().getScheduler().cancelTask(taskid); - } + public void DisableTask() { + Bukkit.getServer().getScheduler().cancelTask(taskid); + } private class WorldL implements Listener { @SuppressWarnings("unused") @EventHandler public void onChunkLoad(ChunkLoadEvent event) throws EventException { for (HumanNPC humannpc : npcs) { - if (humannpc != null && event.getChunk() == humannpc.getBukkitEntity().getLocation().getBlock().getChunk()) { - - if (isInLoaded==false){ - BWorld world = getBWorld(event.getWorld()); - - isInLoaded=true; - }} + if (humannpc != null + && event.getChunk() == humannpc.getBukkitEntity().getLocation().getBlock().getChunk()) { + + if (isInLoaded == false) { + BWorld world = getBWorld(event.getWorld()); + + isInLoaded = true; + } + } } } - + @EventHandler - public void onChunkUnload(ChunkUnloadEvent event){ + public void onChunkUnload(ChunkUnloadEvent event) { for (HumanNPC humannpc : npcs) { - if (humannpc != null && event.getChunk() == humannpc.getBukkitEntity().getLocation().getBlock().getChunk()) { - - } + if (humannpc != null + && event.getChunk() == humannpc.getBukkitEntity().getLocation().getBlock().getChunk()) { + } + } } } public HumanNPC spawnHumanNPC(String name, Location l) { lastID++; - int id = lastID; + int id = lastID; return spawnHumanNPC(name, l, id); } public HumanNPC spawnHumanNPC(String name, Location l, int id) { - - BWorld world = getBWorld(l.getWorld()); - HumanEntity humanEntity = new HumanEntity(this, world, name, new PlayerInteractManager(world.getWorldServer())); - ((Entity) humanEntity).setLocation(l.getX(), l.getY(), l.getZ(),l.getYaw(),l.getPitch()); - world.getWorldServer().addEntity(humanEntity); - HumanNPC humannpc = new HumanNPC(humanEntity,id); - npcs.add(humannpc); - return humannpc; - } - + BWorld world = getBWorld(l.getWorld()); + HumanEntity humanEntity = new HumanEntity(this, world, name, new PlayerInteractManager(world.getWorldServer())); + ((Entity) humanEntity).setLocation(l.getX(), l.getY(), l.getZ(), l.getYaw(), l.getPitch()); + world.getWorldServer().addEntity(humanEntity); + HumanNPC humannpc = new HumanNPC(humanEntity, id); + npcs.add(humannpc); + return humannpc; + } public HumanNPC getHumanNPC(int id) { - - for(HumanNPC n : npcs){ - if (n.getID()==id){ + + for (HumanNPC n : npcs) { + if (n.getID() == id) { return n; } } - + return null; } diff --git a/src/org/jakub1221/herobrineai/NPC/Network/NetworkCore.java b/src/org/jakub1221/herobrineai/NPC/Network/NetworkCore.java index 2239bef..1062eb3 100644 --- a/src/org/jakub1221/herobrineai/NPC/Network/NetworkCore.java +++ b/src/org/jakub1221/herobrineai/NPC/Network/NetworkCore.java @@ -2,9 +2,9 @@ package org.jakub1221.herobrineai.NPC.Network; import java.io.IOException; -import net.minecraft.server.v1_5_R2.Connection; -import net.minecraft.server.v1_5_R2.NetworkManager; -import net.minecraft.server.v1_5_R2.Packet; +import net.minecraft.server.v1_11_R1.Connection; +import net.minecraft.server.v1_11_R1.NetworkManager; +import net.minecraft.server.v1_11_R1.Packet; public class NetworkCore extends NetworkManager{ diff --git a/src/org/jakub1221/herobrineai/NPC/Network/NetworkHandler.java b/src/org/jakub1221/herobrineai/NPC/Network/NetworkHandler.java index 266b2c3..8bfd86d 100644 --- a/src/org/jakub1221/herobrineai/NPC/Network/NetworkHandler.java +++ b/src/org/jakub1221/herobrineai/NPC/Network/NetworkHandler.java @@ -1,26 +1,26 @@ package org.jakub1221.herobrineai.NPC.Network; -import net.minecraft.server.v1_5_R2.EntityPlayer; -import net.minecraft.server.v1_5_R2.Packet; -import net.minecraft.server.v1_5_R2.Packet101CloseWindow; -import net.minecraft.server.v1_5_R2.Packet102WindowClick; -import net.minecraft.server.v1_5_R2.Packet106Transaction; -import net.minecraft.server.v1_5_R2.Packet10Flying; -import net.minecraft.server.v1_5_R2.Packet130UpdateSign; -import net.minecraft.server.v1_5_R2.Packet14BlockDig; -import net.minecraft.server.v1_5_R2.Packet15Place; -import net.minecraft.server.v1_5_R2.Packet16BlockItemSwitch; -import net.minecraft.server.v1_5_R2.Packet18ArmAnimation; -import net.minecraft.server.v1_5_R2.Packet19EntityAction; -import net.minecraft.server.v1_5_R2.Packet255KickDisconnect; -import net.minecraft.server.v1_5_R2.Packet3Chat; -import net.minecraft.server.v1_5_R2.Packet7UseEntity; -import net.minecraft.server.v1_5_R2.Packet9Respawn; -import net.minecraft.server.v1_5_R2.PlayerConnection; +import net.minecraft.server.v1_11_R1.EntityPlayer; +import net.minecraft.server.v1_11_R1.Packet; +import net.minecraft.server.v1_11_R1.Packet101CloseWindow; +import net.minecraft.server.v1_11_R1.Packet102WindowClick; +import net.minecraft.server.v1_11_R1.Packet106Transaction; +import net.minecraft.server.v1_11_R1.Packet10Flying; +import net.minecraft.server.v1_11_R1.Packet130UpdateSign; +import net.minecraft.server.v1_11_R1.Packet14BlockDig; +import net.minecraft.server.v1_11_R1.Packet15Place; +import net.minecraft.server.v1_11_R1.Packet16BlockItemSwitch; +import net.minecraft.server.v1_11_R1.Packet18ArmAnimation; +import net.minecraft.server.v1_11_R1.Packet19EntityAction; +import net.minecraft.server.v1_11_R1.Packet255KickDisconnect; +import net.minecraft.server.v1_11_R1.Packet3Chat; +import net.minecraft.server.v1_11_R1.Packet7UseEntity; +import net.minecraft.server.v1_11_R1.Packet9Respawn; +import net.minecraft.server.v1_11_R1.PlayerConnection; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_5_R2.CraftServer; -import org.bukkit.craftbukkit.v1_5_R2.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_11_R1.CraftServer; +import org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer; import org.jakub1221.herobrineai.NPC.NPCCore; public class NetworkHandler extends PlayerConnection { @@ -34,10 +34,6 @@ public class NetworkHandler extends PlayerConnection { return new CraftPlayer((CraftServer) Bukkit.getServer(), player); } - @Override - public void d() { - }; - @Override public void a(Packet10Flying packet10flying) { }; diff --git a/src/org/jakub1221/herobrineai/NPC/Network/NetworkUtils.java b/src/org/jakub1221/herobrineai/NPC/Network/NetworkUtils.java index b9d6607..a9b2a10 100644 --- a/src/org/jakub1221/herobrineai/NPC/Network/NetworkUtils.java +++ b/src/org/jakub1221/herobrineai/NPC/Network/NetworkUtils.java @@ -1,11 +1,11 @@ package org.jakub1221.herobrineai.NPC.Network; -import net.minecraft.server.v1_5_R2.Packet; +import net.minecraft.server.v1_11_R1.Packet; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.World; -import org.bukkit.craftbukkit.v1_5_R2.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; diff --git a/src/org/jakub1221/herobrineai/Support.java b/src/org/jakub1221/herobrineai/Support.java index 3fed16c..1cfc036 100644 --- a/src/org/jakub1221/herobrineai/Support.java +++ b/src/org/jakub1221/herobrineai/Support.java @@ -3,6 +3,7 @@ package org.jakub1221.herobrineai; import org.bukkit.Bukkit; import org.bukkit.Location; import org.jakub1221.herobrineai.support._CustomItems; +import org.jakub1221.herobrineai.support._Factions; import org.jakub1221.herobrineai.support._GriefPrevention; import org.jakub1221.herobrineai.support._PreciousStones; import org.jakub1221.herobrineai.support._Residence; @@ -17,12 +18,14 @@ public class Support { private boolean B_CustomItems=false; private boolean B_WorldGuard=false; private boolean B_PreciousStones=false; + private boolean B_Factions=false; private _Residence ResidenceCore=null; private _GriefPrevention GriefPreventionCore=null; private _Towny TownyCore=null; private _CustomItems CustomItems=null; private _WorldGuard WorldGuard=null; private _PreciousStones PreciousStones=null; + private _Factions Factions=null; public Support(){ ResidenceCore=new _Residence(); @@ -31,11 +34,12 @@ public class Support { CustomItems=new _CustomItems(); WorldGuard=new _WorldGuard(); PreciousStones=new _PreciousStones(); + Factions=new _Factions(); Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(HerobrineAI.getPluginCore(), new Runnable() { public void run() { CheckForPlugins(); } - }, 1 * 10L); + }, 1 * 2L); } public boolean isPreciousStones(){ @@ -53,6 +57,9 @@ public class Support { public boolean isTowny(){ return B_Towny; } + public boolean isFactions(){ + return B_Factions; + } public void CheckForPlugins(){ if (ResidenceCore.Check()){ B_Residence=true; @@ -79,6 +86,10 @@ public class Support { B_PreciousStones=true; HerobrineAI.log.info("[HerobrineAI] PreciousStones plugin detected!"); } + if (Factions.Check()){ + B_Factions=true; + HerobrineAI.log.info("[HerobrineAI] Factions plugin detected!"); + } } public boolean isSecuredArea(Location loc){ if (B_Residence){ @@ -101,6 +112,10 @@ public class Support { if (PreciousStones.isSecuredArea(loc)){ return true; }else{return false;} + }else if (B_Factions){ + if (Factions.isSecuredArea(loc)){ + return true; + }else{return false;} } return false; } diff --git a/src/org/jakub1221/herobrineai/Utils.java b/src/org/jakub1221/herobrineai/Utils.java new file mode 100644 index 0000000..f41cffd --- /dev/null +++ b/src/org/jakub1221/herobrineai/Utils.java @@ -0,0 +1,40 @@ +package org.jakub1221.herobrineai; + +import java.util.Collection; +import java.util.Random; + +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; + +public class Utils { + + private static Random randomGen = new Random(); + + public static Random getRandomGen(){ + return randomGen; + } + + public static Player getRandomPlayer() { + Collection playersOnline = Bukkit.getServer().getOnlinePlayers(); + + if(playersOnline.size() == 1 && ((Player)playersOnline.toArray()[0]).getEntityId() == HerobrineAI.getPluginCore().HerobrineEntityID) + return null; + + int player_rolled = new Random().nextInt(playersOnline.size()); + + Player p = (Player) playersOnline.toArray()[player_rolled]; + + if (p.getEntityId() == HerobrineAI.getPluginCore().HerobrineEntityID) + return getRandomPlayer(); + + return p; + + } + + public static int getRandomPlayerNum() { + Collection playersOnline = Bukkit.getServer().getOnlinePlayers(); + + return new Random().nextInt(playersOnline.size()); + } + +} diff --git a/src/org/jakub1221/herobrineai/commands/CmdExecutor.java b/src/org/jakub1221/herobrineai/commands/CmdExecutor.java index 409ad54..36704ce 100644 --- a/src/org/jakub1221/herobrineai/commands/CmdExecutor.java +++ b/src/org/jakub1221/herobrineai/commands/CmdExecutor.java @@ -12,539 +12,932 @@ import org.jakub1221.herobrineai.HerobrineAI; import org.jakub1221.herobrineai.AI.AICore; import org.jakub1221.herobrineai.AI.Core.CoreType; -public class CmdExecutor implements CommandExecutor{ +public class CmdExecutor implements CommandExecutor { private HerobrineAI P_Core = null; private Logger log = null; - - public CmdExecutor(HerobrineAI i){ - P_Core=i; - log=i.log; + + public CmdExecutor(HerobrineAI i) { + P_Core = i; + log = i.log; } - + @Override - public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){ - - if (sender instanceof Player){ + public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { + + if (sender instanceof Player) { Player player = (Player) sender; - if (player.isOp()){ - if (args.length>0){ - if (args[0].equalsIgnoreCase("attack")){ - if (args.length>1){ - if (Bukkit.getServer().getPlayer(args[1])!=null){ - if (Bukkit.getServer().getPlayer(args[1]).isOnline()){ - if (P_Core.getSupport().checkAttack(Bukkit.getServer().getPlayer(args[1]).getLocation())){ - if (P_Core.canAttackPlayer(Bukkit.getServer().getPlayer(args[1]), player)){ - if (AICore.isTarget==false){ - P_Core.getAICore().setAttackTarget(Bukkit.getServer().getPlayer(args[1])); - player.sendMessage(ChatColor.RED+"[HerobrineAI] Herobrine is now attacking the "+args[1]+"!"); - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Herobrine already has target! Use "+ChatColor.GREEN+"/hb-ai cancel"+ChatColor.RED+" to cancel actual target");} + if (player.isOp()) { + if (args.length > 0) { + if (args[0].equalsIgnoreCase("attack")) { + if (args.length > 1) { + if (Bukkit.getServer().getPlayer(args[1]) != null) { + if (Bukkit.getServer().getPlayer(args[1]).isOnline()) { + if (P_Core.getSupport() + .checkAttack(Bukkit.getServer().getPlayer(args[1]).getLocation())) { + if (P_Core.canAttackPlayer(Bukkit.getServer().getPlayer(args[1]), player)) { + if (AICore.isTarget == false) { + P_Core.getAICore() + .setAttackTarget(Bukkit.getServer().getPlayer(args[1])); + player.sendMessage( + ChatColor.RED + "[HerobrineAI] Herobrine is now attacking the " + + args[1] + "!"); + } else { + player.sendMessage(ChatColor.RED + + "[HerobrineAI] Herobrine already has target! Use " + + ChatColor.GREEN + "/hb-ai cancel" + ChatColor.RED + + " to cancel actual target"); + } + } + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is in secure area."); + } + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is offline."); } - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is in secure area.");} - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is offline.");} - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is offline.");} - }else{player.sendMessage(ChatColor.RED+"Usage: "+ChatColor.GREEN+"/hb-ai attack ");} - }else if (args[0].equalsIgnoreCase("pyramid")){ - if (args.length>1){ - if (Bukkit.getServer().getPlayer(args[1])!=null){ - if (Bukkit.getServer().getPlayer(args[1]).isOnline()){ - if (P_Core.getSupport().checkBuild(Bukkit.getServer().getPlayer(args[1]).getLocation())){ - Object[] data = {Bukkit.getServer().getPlayer(args[1])}; - if(P_Core.getAICore().getCore(CoreType.PYRAMID).RunCore(data).getResult()){ - player.sendMessage(ChatColor.RED+"[HerobrineAI] Creating pyramind near "+args[1]+"!"); - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Cannot find good place for pyramid!");} - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is in secure area.");} - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is offline.");} - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is offline.");} - }else{player.sendMessage(ChatColor.RED+"Usage: "+ChatColor.GREEN+"/hb-ai pyramid ");} - } - else if (args[0].equalsIgnoreCase("bury")){ - if (args.length>1){ - if (Bukkit.getServer().getPlayer(args[1])!=null){ - if (Bukkit.getServer().getPlayer(args[1]).isOnline()){ - if (P_Core.getSupport().checkHaunt(Bukkit.getServer().getPlayer(args[1]).getLocation())){ - Object[] data = {Bukkit.getServer().getPlayer(args[1])}; - if(P_Core.getAICore().getCore(CoreType.BURY_PLAYER).RunCore(data).getResult()){ - player.sendMessage(ChatColor.RED+"[HerobrineAI] Buried "+args[1]+"!"); - - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Cannot find good place!");} - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is in secure area.");} - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is offline.");} - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is offline.");} - }else{player.sendMessage(ChatColor.RED+"Usage: "+ChatColor.GREEN+"/hb-ai bury ");} - }else if (args[0].equalsIgnoreCase("temple")){ - if (args.length>1){ - - if (Bukkit.getServer().getPlayer(args[1])!=null){ - if (Bukkit.getServer().getPlayer(args[1]).isOnline()){ - if (P_Core.getSupport().checkBuild(Bukkit.getServer().getPlayer(args[1]).getLocation())){ - Object[] data = {Bukkit.getServer().getPlayer(args[1])}; - if(P_Core.getAICore().getCore(CoreType.TEMPLE).RunCore(data).getResult()){ - player.sendMessage(ChatColor.RED+"[HerobrineAI] Creating temple near "+args[1]+"!"); - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Cannot find good place for temple!");} - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is in secure area.");} - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is offline.");} - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is offline.");} - - }else{player.sendMessage(ChatColor.RED+"Usage: "+ChatColor.GREEN+"/hb-ai temple ");} - }else if (args[0].equalsIgnoreCase("heads")){ - if (args.length>1){ - - if (Bukkit.getServer().getPlayer(args[1])!=null){ - Object[] data = {args[1]}; - player.sendMessage(ChatColor.RED+"[HerobrineAI] "+P_Core.getAICore().getCore(CoreType.HEADS).RunCore(data).getResultString()); - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is offline.");} - - }else{player.sendMessage(ChatColor.RED+"Usage: "+ChatColor.GREEN+"/hb-ai heads ");} - }else if (args[0].equalsIgnoreCase("cave")){ - if (args.length>1){ - - if (Bukkit.getServer().getPlayer(args[1])!=null){ - Object[] data = {Bukkit.getServer().getPlayer(args[1]).getLocation(),true}; - player.sendMessage(ChatColor.RED+"[HerobrineAI] "+P_Core.getAICore().getCore(CoreType.BUILD_STUFF).RunCore(data).getResultString()); - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is offline.");} - - }else{player.sendMessage(ChatColor.RED+"Usage: "+ChatColor.GREEN+"/hb-ai cave ");} - }else if (args[0].equalsIgnoreCase("burn")){ - if (args.length>1){ - - if (Bukkit.getServer().getPlayer(args[1])!=null){ - Object[] data = {Bukkit.getServer().getPlayer(args[1])}; - player.sendMessage(ChatColor.RED+"[HerobrineAI] "+P_Core.getAICore().getCore(CoreType.BURN).RunCore(data).getResultString()); - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is offline.");} - - }else{player.sendMessage(ChatColor.RED+"Usage: "+ChatColor.GREEN+"/hb-ai burn ");} - }else if (args[0].equalsIgnoreCase("curse")){ - if (args.length>1){ - - if (Bukkit.getServer().getPlayer(args[1])!=null){ - Object[] data = {Bukkit.getServer().getPlayer(args[1])}; - player.sendMessage(ChatColor.RED+"[HerobrineAI] "+P_Core.getAICore().getCore(CoreType.CURSE).RunCore(data).getResultString()); - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is offline.");} - - }else{player.sendMessage(ChatColor.RED+"Usage: "+ChatColor.GREEN+"/hb-ai curse ");} - } - else if (args[0].equalsIgnoreCase("graveyard")){ - if (args.length>1){ - if (Bukkit.getServer().getPlayer(args[1])!=null){ - if (Bukkit.getServer().getPlayer(args[1]).isOnline()){ - if (AICore.isTarget==false){ - P_Core.getAICore().GraveyardTeleport(Bukkit.getServer().getPlayer(args[1])); - player.sendMessage(ChatColor.RED+"[HerobrineAI] "+args[1]+" is now in the Graveyard world!"); - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Herobrine already has target! Use "+ChatColor.GREEN+"/hb-ai cancel"+ChatColor.RED+" to cancel actual target");} - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is offline.");} - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is offline.");} - }else{player.sendMessage(ChatColor.RED+"Usage: "+ChatColor.GREEN+"/hb-ai graveyard ");} - }else if (args[0].equalsIgnoreCase("haunt")){ - - if (args.length>1){ - if (Bukkit.getServer().getPlayer(args[1])!=null){ - if (Bukkit.getServer().getPlayer(args[1]).isOnline()){ - if (P_Core.canAttackPlayer(Bukkit.getServer().getPlayer(args[1]), player)){ - if (AICore.isTarget==false){ - P_Core.getAICore().setHauntTarget(Bukkit.getServer().getPlayer(args[1])); - player.sendMessage(ChatColor.RED+"[HerobrineAI] Herobrine now haunts the "+args[1]+"!"); - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Herobrine already has target! Use "+ChatColor.GREEN+"/hb-ai cancel"+ChatColor.RED+" to cancel actual target.");} + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is offline."); } - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is offline.");} - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is offline.");} - }else{player.sendMessage(ChatColor.RED+"Usage: "+ChatColor.GREEN+"/hb-ai haunt ");} - - }else if (args[0].equalsIgnoreCase("cancel")){ - - P_Core.getAICore().CancelTarget(CoreType.ANY); - player.sendMessage(ChatColor.RED+"[HerobrineAI] Target cancelled!"); - - }else if (args[0].equalsIgnoreCase("reload")){ - - - - P_Core.getConfigDB().Reload(); - - player.sendMessage(ChatColor.RED+"[HerobrineAI] Config reloaded!"); - - }else if (args[0].equalsIgnoreCase("help")){ - - player.sendMessage(ChatColor.RED+"[HerobrineAI] Command list"); - player.sendMessage(ChatColor.GREEN+"/hb-ai help - shows all commands"); - player.sendMessage(ChatColor.GREEN+"/hb-ai attack - herobrine attacks the player"); - player.sendMessage(ChatColor.GREEN+"/hb-ai haunt - herobrine haunts the player"); - player.sendMessage(ChatColor.GREEN+"/hb-ai cancel - cancel herobrine´s actual target"); - player.sendMessage(ChatColor.GREEN+"/hb-ai reload - reload config"); - player.sendMessage(ChatColor.GREEN+"/hb-ai position - gets actual position of Herobrine"); - player.sendMessage(ChatColor.GREEN+"/hb-ai pyramid - build pyramid near the player"); - player.sendMessage(ChatColor.GREEN+"/hb-ai bury - bury player"); - player.sendMessage(ChatColor.GREEN+"/hb-ai graveyard - teleport player to the Graveyard world"); - player.sendMessage(ChatColor.GREEN+"/hb-ai temple - build temple near the player"); - player.sendMessage(ChatColor.GREEN+"/hb-ai heads - place heads near the player"); - player.sendMessage(ChatColor.GREEN+"/hb-ai cave - create cave near the player"); - player.sendMessage(ChatColor.GREEN+"/hb-ai burn - burn player"); - player.sendMessage(ChatColor.GREEN+"/hb-ai curse - curse player"); - - }else if (args[0].equalsIgnoreCase("position")){ - - player.sendMessage(ChatColor.RED+"[HerobrineAI] Position"); - player.sendMessage(ChatColor.RED+"World: "+P_Core.HerobrineNPC.getBukkitEntity().getLocation().getWorld().getName()+" X: "+((int)P_Core.HerobrineNPC.getBukkitEntity().getLocation().getX())+ - " Y: "+((int)P_Core.HerobrineNPC.getBukkitEntity().getLocation().getY())+" Z: "+((int)P_Core.HerobrineNPC.getBukkitEntity().getLocation().getZ())); - player.sendMessage(ChatColor.RED+"InWalkingMode: "+AICore.getStringWalkingMode()); - player.sendMessage(ChatColor.RED+"Available World: "+HerobrineAI.getPluginCore().getAvailableWorldString()); - }else{player.sendMessage(ChatColor.RED+"Usage: /hb-ai help");} - }else{player.sendMessage(ChatColor.RED+"Usage: /hb-ai help");} - }else{ + } else { + player.sendMessage( + ChatColor.RED + "Usage: " + ChatColor.GREEN + "/hb-ai attack "); + } + } else if (args[0].equalsIgnoreCase("pyramid")) { + if (args.length > 1) { + if (Bukkit.getServer().getPlayer(args[1]) != null) { + if (Bukkit.getServer().getPlayer(args[1]).isOnline()) { + if (P_Core.getSupport() + .checkBuild(Bukkit.getServer().getPlayer(args[1]).getLocation())) { + Object[] data = { Bukkit.getServer().getPlayer(args[1]) }; + if (P_Core.getAICore().getCore(CoreType.PYRAMID).RunCore(data).getResult()) { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Creating pyramind near " + + args[1] + "!"); + } else { + player.sendMessage(ChatColor.RED + + "[HerobrineAI] Cannot find good place for pyramid!"); + } + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is in secure area."); + } + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is offline."); + } + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is offline."); + } + } else { + player.sendMessage( + ChatColor.RED + "Usage: " + ChatColor.GREEN + "/hb-ai pyramid "); + } + } else if (args[0].equalsIgnoreCase("bury")) { + if (args.length > 1) { + if (Bukkit.getServer().getPlayer(args[1]) != null) { + if (Bukkit.getServer().getPlayer(args[1]).isOnline()) { + if (P_Core.getSupport() + .checkHaunt(Bukkit.getServer().getPlayer(args[1]).getLocation())) { + Object[] data = { Bukkit.getServer().getPlayer(args[1]) }; + if (P_Core.getAICore().getCore(CoreType.BURY_PLAYER).RunCore(data) + .getResult()) { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Buried " + args[1] + "!"); + + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Cannot find good place!"); + } + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is in secure area."); + } + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is offline."); + } + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is offline."); + } + } else { + player.sendMessage( + ChatColor.RED + "Usage: " + ChatColor.GREEN + "/hb-ai bury "); + } + } else if (args[0].equalsIgnoreCase("temple")) { + if (args.length > 1) { + + if (Bukkit.getServer().getPlayer(args[1]) != null) { + if (Bukkit.getServer().getPlayer(args[1]).isOnline()) { + if (P_Core.getSupport() + .checkBuild(Bukkit.getServer().getPlayer(args[1]).getLocation())) { + Object[] data = { Bukkit.getServer().getPlayer(args[1]) }; + if (P_Core.getAICore().getCore(CoreType.TEMPLE).RunCore(data).getResult()) { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Creating temple near " + + args[1] + "!"); + } else { + player.sendMessage( + ChatColor.RED + "[HerobrineAI] Cannot find good place for temple!"); + } + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is in secure area."); + } + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is offline."); + } + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is offline."); + } + + } else { + player.sendMessage( + ChatColor.RED + "Usage: " + ChatColor.GREEN + "/hb-ai temple "); + } + } else if (args[0].equalsIgnoreCase("heads")) { + if (args.length > 1) { + + if (Bukkit.getServer().getPlayer(args[1]) != null) { + Object[] data = { args[1] }; + player.sendMessage(ChatColor.RED + "[HerobrineAI] " + + P_Core.getAICore().getCore(CoreType.HEADS).RunCore(data).getResultString()); + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is offline."); + } + + } else { + player.sendMessage( + ChatColor.RED + "Usage: " + ChatColor.GREEN + "/hb-ai heads "); + } + } else if (args[0].equalsIgnoreCase("cave")) { + if (args.length > 1) { + + if (Bukkit.getServer().getPlayer(args[1]) != null) { + Object[] data = { Bukkit.getServer().getPlayer(args[1]).getLocation(), true }; + player.sendMessage(ChatColor.RED + "[HerobrineAI] " + P_Core.getAICore() + .getCore(CoreType.BUILD_STUFF).RunCore(data).getResultString()); + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is offline."); + } + + } else { + player.sendMessage( + ChatColor.RED + "Usage: " + ChatColor.GREEN + "/hb-ai cave "); + } + } else if (args[0].equalsIgnoreCase("burn")) { + if (args.length > 1) { + + if (Bukkit.getServer().getPlayer(args[1]) != null) { + Object[] data = { Bukkit.getServer().getPlayer(args[1]) }; + player.sendMessage(ChatColor.RED + "[HerobrineAI] " + + P_Core.getAICore().getCore(CoreType.BURN).RunCore(data).getResultString()); + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is offline."); + } + + } else { + player.sendMessage( + ChatColor.RED + "Usage: " + ChatColor.GREEN + "/hb-ai burn "); + } + } else if (args[0].equalsIgnoreCase("curse")) { + if (args.length > 1) { + + if (Bukkit.getServer().getPlayer(args[1]) != null) { + Object[] data = { Bukkit.getServer().getPlayer(args[1]) }; + player.sendMessage(ChatColor.RED + "[HerobrineAI] " + + P_Core.getAICore().getCore(CoreType.CURSE).RunCore(data).getResultString()); + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is offline."); + } + + } else { + player.sendMessage( + ChatColor.RED + "Usage: " + ChatColor.GREEN + "/hb-ai curse "); + } + } else if (args[0].equalsIgnoreCase("graveyard")) { + if (args.length > 1) { + if (Bukkit.getServer().getPlayer(args[1]) != null) { + if (Bukkit.getServer().getPlayer(args[1]).isOnline()) { + if (AICore.isTarget == false) { + P_Core.getAICore().GraveyardTeleport(Bukkit.getServer().getPlayer(args[1])); + player.sendMessage(ChatColor.RED + "[HerobrineAI] " + args[1] + + " is now in the Graveyard world!"); + } else { + player.sendMessage(ChatColor.RED + + "[HerobrineAI] Herobrine already has target! Use " + ChatColor.GREEN + + "/hb-ai cancel" + ChatColor.RED + " to cancel actual target"); + } + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is offline."); + } + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is offline."); + } + } else { + player.sendMessage( + ChatColor.RED + "Usage: " + ChatColor.GREEN + "/hb-ai graveyard "); + } + } else if (args[0].equalsIgnoreCase("haunt")) { + + if (args.length > 1) { + if (Bukkit.getServer().getPlayer(args[1]) != null) { + if (Bukkit.getServer().getPlayer(args[1]).isOnline()) { + if (P_Core.canAttackPlayer(Bukkit.getServer().getPlayer(args[1]), player)) { + if (AICore.isTarget == false) { + P_Core.getAICore().setHauntTarget(Bukkit.getServer().getPlayer(args[1])); + player.sendMessage(ChatColor.RED + "[HerobrineAI] Herobrine now haunts the " + + args[1] + "!"); + } else { + player.sendMessage( + ChatColor.RED + "[HerobrineAI] Herobrine already has target! Use " + + ChatColor.GREEN + "/hb-ai cancel" + ChatColor.RED + + " to cancel actual target."); + } + } + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is offline."); + } + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is offline."); + } + } else { + player.sendMessage( + ChatColor.RED + "Usage: " + ChatColor.GREEN + "/hb-ai haunt "); + } + + } else if (args[0].equalsIgnoreCase("cancel")) { + + P_Core.getAICore().CancelTarget(CoreType.ANY); + player.sendMessage(ChatColor.RED + "[HerobrineAI] Target cancelled!"); + + } else if (args[0].equalsIgnoreCase("reload")) { + + P_Core.getConfigDB().Reload(); + + player.sendMessage(ChatColor.RED + "[HerobrineAI] Config reloaded!"); + + } else if (args[0].equalsIgnoreCase("help")) { + + player.sendMessage(ChatColor.RED + "[HerobrineAI] Command list"); + player.sendMessage(ChatColor.GREEN + "/hb-ai help - shows all commands"); + player.sendMessage( + ChatColor.GREEN + "/hb-ai attack - herobrine attacks the player"); + player.sendMessage( + ChatColor.GREEN + "/hb-ai haunt - herobrine haunts the player"); + player.sendMessage(ChatColor.GREEN + "/hb-ai cancel - cancel herobrine�s actual target"); + player.sendMessage(ChatColor.GREEN + "/hb-ai reload - reload config"); + player.sendMessage(ChatColor.GREEN + "/hb-ai position - gets actual position of Herobrine"); + player.sendMessage( + ChatColor.GREEN + "/hb-ai pyramid - build pyramid near the player"); + player.sendMessage(ChatColor.GREEN + "/hb-ai bury - bury player"); + player.sendMessage(ChatColor.GREEN + + "/hb-ai graveyard - teleport player to the Graveyard world"); + player.sendMessage( + ChatColor.GREEN + "/hb-ai temple - build temple near the player"); + player.sendMessage( + ChatColor.GREEN + "/hb-ai heads - place heads near the player"); + player.sendMessage(ChatColor.GREEN + "/hb-ai cave - create cave near the player"); + player.sendMessage(ChatColor.GREEN + "/hb-ai burn - burn player"); + player.sendMessage(ChatColor.GREEN + "/hb-ai curse - curse player"); + player.sendMessage(ChatColor.GREEN + "/hb-ai allworlds - add all worlds to config"); + + } else if (args[0].equalsIgnoreCase("position")) { + + player.sendMessage(ChatColor.RED + "[HerobrineAI] Position"); + player.sendMessage(ChatColor.RED + "World: " + + P_Core.HerobrineNPC.getBukkitEntity().getLocation().getWorld().getName() + " X: " + + ((int) P_Core.HerobrineNPC.getBukkitEntity().getLocation().getX()) + " Y: " + + ((int) P_Core.HerobrineNPC.getBukkitEntity().getLocation().getY()) + " Z: " + + ((int) P_Core.HerobrineNPC.getBukkitEntity().getLocation().getZ())); + player.sendMessage(ChatColor.RED + "InWalkingMode: " + AICore.getStringWalkingMode()); + player.sendMessage(ChatColor.RED + "Available World: " + + HerobrineAI.getPluginCore().getAvailableWorldString()); + } else if (args[0].equalsIgnoreCase("allworlds")) { + + HerobrineAI.getPluginCore().getConfigDB().addAllWorlds(); + player.sendMessage(ChatColor.GREEN + "[HerobrineAI] All worlds have been added to config."); + player.sendMessage( + ChatColor.YELLOW + "[HerobrineAI] Note: Worlds with blank spaces can cause problems!"); + + } else { + player.sendMessage(ChatColor.RED + "Usage: /hb-ai help"); + } + } else { + player.sendMessage(ChatColor.RED + "Usage: /hb-ai help"); + } + } else { /* PERMISSION NODE */ - - if (args.length>0){ - if (args[0].equalsIgnoreCase("attack")){ - if (args.length>1){ - if (player.hasPermission("hb-ai.attack")){ - if (Bukkit.getServer().getPlayer(args[1])!=null){ - if (Bukkit.getServer().getPlayer(args[1]).isOnline()){ - if (P_Core.getSupport().checkAttack(Bukkit.getServer().getPlayer(args[1]).getLocation())){ - if (P_Core.canAttackPlayer(Bukkit.getServer().getPlayer(args[1]), player)){ - if (AICore.isTarget==false){ - P_Core.getAICore().setAttackTarget(Bukkit.getServer().getPlayer(args[1])); - player.sendMessage(ChatColor.RED+"[HerobrineAI] Herobrine is now attacking the "+args[1]+"!"); - - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Herobrine already has target! Use "+ChatColor.GREEN+"/hb-ai cancel"+ChatColor.RED+" to cancel actual target");} - + + if (args.length > 0) { + if (args[0].equalsIgnoreCase("attack")) { + if (args.length > 1) { + if (player.hasPermission("hb-ai.attack")) { + if (Bukkit.getServer().getPlayer(args[1]) != null) { + if (Bukkit.getServer().getPlayer(args[1]).isOnline()) { + if (P_Core.getSupport() + .checkAttack(Bukkit.getServer().getPlayer(args[1]).getLocation())) { + if (P_Core.canAttackPlayer(Bukkit.getServer().getPlayer(args[1]), player)) { + if (AICore.isTarget == false) { + P_Core.getAICore() + .setAttackTarget(Bukkit.getServer().getPlayer(args[1])); + player.sendMessage(ChatColor.RED + + "[HerobrineAI] Herobrine is now attacking the " + args[1] + + "!"); + + } else { + player.sendMessage(ChatColor.RED + + "[HerobrineAI] Herobrine already has target! Use " + + ChatColor.GREEN + "/hb-ai cancel" + ChatColor.RED + + " to cancel actual target"); + } + + } + } else { + player.sendMessage( + ChatColor.RED + "[HerobrineAI] Player is in secure area."); + } + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is offline."); } - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is in secure area.");} - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is offline.");} - - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is offline.");} - }else{player.sendMessage(ChatColor.RED+"You don´t have permissions to do that.");} - }else{player.sendMessage(ChatColor.RED+"Usage: "+ChatColor.GREEN+"/hb-ai attack ");} - }else if (args[0].equalsIgnoreCase("pyramid")){ - if (args.length>1){ - if(player.hasPermission("hb-ai.pyramid")){ - if (Bukkit.getServer().getPlayer(args[1])!=null){ - if (Bukkit.getServer().getPlayer(args[1]).isOnline()){ - if (P_Core.getSupport().checkBuild(Bukkit.getServer().getPlayer(args[1]).getLocation())){ - Object[] data = {Bukkit.getServer().getPlayer(args[1])}; - if(P_Core.getAICore().getCore(CoreType.PYRAMID).RunCore(data).getResult()){ - player.sendMessage(ChatColor.RED+"[HerobrineAI] Creating pyramind near "+args[1]+"!"); - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Cannot find good place for pyramid!");} - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is in secure area.");} - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is offline.");} - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is offline.");} - }else{player.sendMessage(ChatColor.RED+"You don´t have permissions to do that.");} - }else{player.sendMessage(ChatColor.RED+"Usage: "+ChatColor.GREEN+"/hb-ai pyramid ");} - }else if (args[0].equalsIgnoreCase("temple")){ - if (args.length>1){ - if(player.hasPermission("hb-ai.temple")){ - if (Bukkit.getServer().getPlayer(args[1])!=null){ - if (Bukkit.getServer().getPlayer(args[1]).isOnline()){ - if (P_Core.getSupport().checkBuild(Bukkit.getServer().getPlayer(args[1]).getLocation())){ - Object[] data = {Bukkit.getServer().getPlayer(args[1])}; - if(P_Core.getAICore().getCore(CoreType.TEMPLE).RunCore(data).getResult()){ - player.sendMessage(ChatColor.RED+"[HerobrineAI] Creating temple near "+args[1]+"!"); - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Cannot find good place for temple!");} - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is in secure area.");} - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is offline.");} - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is offline.");} - }else{player.sendMessage(ChatColor.RED+"You don´t have permissions to do that.");} - }else{player.sendMessage(ChatColor.RED+"Usage: "+ChatColor.GREEN+"/hb-ai temple ");} - }else if (args[0].equalsIgnoreCase("bury")){ - - if (args.length>1){ - if (player.hasPermission("hb-ai.bury")){ - if (Bukkit.getServer().getPlayer(args[1])!=null){ - if (Bukkit.getServer().getPlayer(args[1]).isOnline()){ - if (P_Core.getSupport().checkBuild(Bukkit.getServer().getPlayer(args[1]).getLocation())){ - Object[] data = {Bukkit.getServer().getPlayer(args[1])}; - if(P_Core.getAICore().getCore(CoreType.BURY_PLAYER).RunCore(data).getResult()){ - player.sendMessage(ChatColor.RED+"[HerobrineAI] Buried "+args[1]+"!"); - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Cannot find good place!");} - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is in secure area.");} - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is offline.");} - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is offline.");} - }else{player.sendMessage(ChatColor.RED+"You don´t have permissions to do that.");} - }else{player.sendMessage(ChatColor.RED+"Usage: "+ChatColor.GREEN+"/hb-ai bury ");} + + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is offline."); + } + } else { + player.sendMessage(ChatColor.RED + "You don�t have permissions to do that."); + } + } else { + player.sendMessage( + ChatColor.RED + "Usage: " + ChatColor.GREEN + "/hb-ai attack "); } - else if (args[0].equalsIgnoreCase("cave")){ - if (args.length>1){ - if (player.hasPermission("hb-ai.cave")){ - - if (Bukkit.getServer().getPlayer(args[1])!=null){ - Object[] data = {Bukkit.getServer().getPlayer(args[1]).getLocation(),true}; - player.sendMessage(ChatColor.RED+"[HerobrineAI] "+P_Core.getAICore().getCore(CoreType.BUILD_STUFF).RunCore(data).getResultString()); - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is offline.");} - }else{player.sendMessage(ChatColor.RED+"You don´t have permissions to do that.");} - }else{player.sendMessage(ChatColor.RED+"Usage: "+ChatColor.GREEN+"/hb-ai cave ");} - }else if (args[0].equalsIgnoreCase("burn")){ - if (args.length>1){ - if (player.hasPermission("hb-ai.burn")){ - - if (Bukkit.getServer().getPlayer(args[1])!=null){ - Object[] data = {Bukkit.getServer().getPlayer(args[1])}; - player.sendMessage(ChatColor.RED+"[HerobrineAI] "+P_Core.getAICore().getCore(CoreType.BURN).RunCore(data).getResultString()); - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is offline.");} - }else{player.sendMessage(ChatColor.RED+"You don´t have permissions to do that.");} - }else{player.sendMessage(ChatColor.RED+"Usage: "+ChatColor.GREEN+"/hb-ai burn ");} - }else if (args[0].equalsIgnoreCase("curse")){ - if (args.length>1){ - if (player.hasPermission("hb-ai.curse")){ - - if (Bukkit.getServer().getPlayer(args[1])!=null){ - Object[] data = {Bukkit.getServer().getPlayer(args[1])}; - player.sendMessage(ChatColor.RED+"[HerobrineAI] "+P_Core.getAICore().getCore(CoreType.CURSE).RunCore(data).getResultString()); - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is offline.");} - }else{player.sendMessage(ChatColor.RED+"You don´t have permissions to do that.");} - }else{player.sendMessage(ChatColor.RED+"Usage: "+ChatColor.GREEN+"/hb-ai curse ");} - }else if (args[0].equalsIgnoreCase("heads")){ - if (args.length>1){ - if (player.hasPermission("hb-ai.heads")){ - if (Bukkit.getServer().getPlayer(args[1])!=null){ - Object[] data = {args[1]}; - player.sendMessage(ChatColor.RED+"[HerobrineAI] "+P_Core.getAICore().getCore(CoreType.HEADS).RunCore(data).getResultString()); - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is offline.");} - }else{player.sendMessage(ChatColor.RED+"You don´t have permissions to do that.");} - }else{player.sendMessage(ChatColor.RED+"Usage: "+ChatColor.GREEN+"/hb-ai heads ");} - } - else if (args[0].equalsIgnoreCase("graveyard")){ - if (args.length>1){ - if (player.hasPermission("hb-ai.graveyard")){ - if (Bukkit.getServer().getPlayer(args[1])!=null){ - if (Bukkit.getServer().getPlayer(args[1]).isOnline()){ - if (AICore.isTarget==false){ - P_Core.getAICore().GraveyardTeleport(Bukkit.getServer().getPlayer(args[1])); - player.sendMessage(ChatColor.RED+"[HerobrineAI] "+args[1]+" is now in the Graveyard world!"); - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Herobrine already has target! Use "+ChatColor.GREEN+"/hb-ai cancel"+ChatColor.RED+" to cancel actual target");} - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is offline.");} - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is offline.");} - }else{player.sendMessage(ChatColor.RED+"You don´t have permissions to do that.");} - }else{player.sendMessage(ChatColor.RED+"Usage: "+ChatColor.GREEN+"/hb-ai graveyard ");} - }else if (args[0].equalsIgnoreCase("haunt")){ - - if (args.length>1){ - if (player.hasPermission("hb-ai.haunt")){ - if (Bukkit.getServer().getPlayer(args[1])!=null){ - if (Bukkit.getServer().getPlayer(args[1]).isOnline()){ - if (P_Core.getSupport().checkHaunt(Bukkit.getServer().getPlayer(args[1]).getLocation())){ - if (P_Core.canAttackPlayer(Bukkit.getServer().getPlayer(args[1]), player)){ - if (AICore.isTarget==false){ - P_Core.getAICore().setHauntTarget(Bukkit.getServer().getPlayer(args[1])); - player.sendMessage(ChatColor.RED+"[HerobrineAI] Herobrine now haunts the "+args[1]+"!"); - - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Herobrine already has target! Use "+ChatColor.GREEN+"/hb-ai cancel"+ChatColor.RED+" to cancel actual target.");} + } else if (args[0].equalsIgnoreCase("pyramid")) { + if (args.length > 1) { + if (player.hasPermission("hb-ai.pyramid")) { + if (Bukkit.getServer().getPlayer(args[1]) != null) { + if (Bukkit.getServer().getPlayer(args[1]).isOnline()) { + if (P_Core.getSupport() + .checkBuild(Bukkit.getServer().getPlayer(args[1]).getLocation())) { + Object[] data = { Bukkit.getServer().getPlayer(args[1]) }; + if (P_Core.getAICore().getCore(CoreType.PYRAMID).RunCore(data) + .getResult()) { + player.sendMessage(ChatColor.RED + + "[HerobrineAI] Creating pyramind near " + args[1] + "!"); + } else { + player.sendMessage(ChatColor.RED + + "[HerobrineAI] Cannot find good place for pyramid!"); + } + } else { + player.sendMessage( + ChatColor.RED + "[HerobrineAI] Player is in secure area."); + } + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is offline."); } - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is in secure area.");} - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is offline.");} - }else{player.sendMessage(ChatColor.RED+"[HerobrineAI] Player is offline.");} - }else{player.sendMessage(ChatColor.RED+"You don´t have permissions to do that.");} - }else{player.sendMessage(ChatColor.RED+"Usage: "+ChatColor.GREEN+"/hb-ai haunt ");} - - }else if (args[0].equalsIgnoreCase("cancel")){ - if (player.hasPermission("hb-ai.cancel")){ - P_Core.getAICore().CancelTarget(CoreType.ANY); - player.sendMessage(ChatColor.RED+"[HerobrineAI] Target cancelled!"); - }else{player.sendMessage(ChatColor.RED+"You don´t have permissions to do that.");} - }else if (args[0].equalsIgnoreCase("reload")){ - if (player.hasPermission("hb-ai.reload")){ - - P_Core.getConfigDB().Reload(); - - player.sendMessage(ChatColor.RED+"[HerobrineAI] Config reloaded!"); - }else{player.sendMessage(ChatColor.RED+"You don´t have permissions to do that.");} - }else if (args[0].equalsIgnoreCase("help")){ - if (player.hasPermission("hb-ai.help")){ - player.sendMessage(ChatColor.RED+"[HerobrineAI] Command list"); - player.sendMessage(ChatColor.GREEN+"/hb-ai help - shows all commands"); - player.sendMessage(ChatColor.GREEN+"/hb-ai attack - herobrine attacks the player"); - player.sendMessage(ChatColor.GREEN+"/hb-ai haunt - herobrine haunts the player"); - player.sendMessage(ChatColor.GREEN+"/hb-ai cancel - cancel herobrine´s actual target"); - player.sendMessage(ChatColor.GREEN+"/hb-ai reload - reload config"); - player.sendMessage(ChatColor.GREEN+"/hb-ai position - gets actual position of Herobrine"); - player.sendMessage(ChatColor.GREEN+"/hb-ai pyramid - build pyramid near the player"); - player.sendMessage(ChatColor.GREEN+"/hb-ai bury - bury player"); - player.sendMessage(ChatColor.GREEN+"/hb-ai graveyard - teleport player to the Graveyard world"); - player.sendMessage(ChatColor.GREEN+"/hb-ai temple - build temple near the player"); - player.sendMessage(ChatColor.GREEN+"/hb-ai heads - place heads near the player"); - player.sendMessage(ChatColor.GREEN+"/hb-ai cave - create cave near the player"); - player.sendMessage(ChatColor.GREEN+"/hb-ai burn - burn player"); - player.sendMessage(ChatColor.GREEN+"/hb-ai curse - curse player"); - - }else{player.sendMessage(ChatColor.RED+"You don´t have permissions to do that.");} - }else if (args[0].equalsIgnoreCase("position")){ - if (player.hasPermission("hb-ai.position")){ - player.sendMessage(ChatColor.RED+"[HerobrineAI] Position"); - player.sendMessage(ChatColor.RED+"World: "+P_Core.HerobrineNPC.getBukkitEntity().getLocation().getWorld().getName()+" X: "+((int)P_Core.HerobrineNPC.getBukkitEntity().getLocation().getX())+ - " Y: "+((int)P_Core.HerobrineNPC.getBukkitEntity().getLocation().getY())+" Z: "+((int)P_Core.HerobrineNPC.getBukkitEntity().getLocation().getZ())); - player.sendMessage(ChatColor.RED+"InWalkingMode: "+AICore.getStringWalkingMode()); - player.sendMessage(ChatColor.RED+"Available World: "+HerobrineAI.getPluginCore().getAvailableWorldString()); - }else{player.sendMessage(ChatColor.RED+"You don´t have permissions to do that.");} - }else{player.sendMessage(ChatColor.RED+"Usage: /hb-ai help");} - }else{player.sendMessage(ChatColor.RED+"Usage: /hb-ai help");} - - - + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is offline."); + } + } else { + player.sendMessage(ChatColor.RED + "You don�t have permissions to do that."); + } + } else { + player.sendMessage( + ChatColor.RED + "Usage: " + ChatColor.GREEN + "/hb-ai pyramid "); + } + } else if (args[0].equalsIgnoreCase("temple")) { + if (args.length > 1) { + if (player.hasPermission("hb-ai.temple")) { + if (Bukkit.getServer().getPlayer(args[1]) != null) { + if (Bukkit.getServer().getPlayer(args[1]).isOnline()) { + if (P_Core.getSupport() + .checkBuild(Bukkit.getServer().getPlayer(args[1]).getLocation())) { + Object[] data = { Bukkit.getServer().getPlayer(args[1]) }; + if (P_Core.getAICore().getCore(CoreType.TEMPLE).RunCore(data).getResult()) { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Creating temple near " + + args[1] + "!"); + } else { + player.sendMessage(ChatColor.RED + + "[HerobrineAI] Cannot find good place for temple!"); + } + } else { + player.sendMessage( + ChatColor.RED + "[HerobrineAI] Player is in secure area."); + } + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is offline."); + } + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is offline."); + } + } else { + player.sendMessage(ChatColor.RED + "You don�t have permissions to do that."); + } + } else { + player.sendMessage( + ChatColor.RED + "Usage: " + ChatColor.GREEN + "/hb-ai temple "); + } + } else if (args[0].equalsIgnoreCase("bury")) { + + if (args.length > 1) { + if (player.hasPermission("hb-ai.bury")) { + if (Bukkit.getServer().getPlayer(args[1]) != null) { + if (Bukkit.getServer().getPlayer(args[1]).isOnline()) { + if (P_Core.getSupport() + .checkBuild(Bukkit.getServer().getPlayer(args[1]).getLocation())) { + Object[] data = { Bukkit.getServer().getPlayer(args[1]) }; + if (P_Core.getAICore().getCore(CoreType.BURY_PLAYER).RunCore(data) + .getResult()) { + player.sendMessage( + ChatColor.RED + "[HerobrineAI] Buried " + args[1] + "!"); + } else { + player.sendMessage( + ChatColor.RED + "[HerobrineAI] Cannot find good place!"); + } + } else { + player.sendMessage( + ChatColor.RED + "[HerobrineAI] Player is in secure area."); + } + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is offline."); + } + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is offline."); + } + } else { + player.sendMessage(ChatColor.RED + "You don�t have permissions to do that."); + } + } else { + player.sendMessage( + ChatColor.RED + "Usage: " + ChatColor.GREEN + "/hb-ai bury "); + } + } else if (args[0].equalsIgnoreCase("cave")) { + if (args.length > 1) { + if (player.hasPermission("hb-ai.cave")) { + + if (Bukkit.getServer().getPlayer(args[1]) != null) { + Object[] data = { Bukkit.getServer().getPlayer(args[1]).getLocation(), true }; + player.sendMessage(ChatColor.RED + "[HerobrineAI] " + P_Core.getAICore() + .getCore(CoreType.BUILD_STUFF).RunCore(data).getResultString()); + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is offline."); + } + } else { + player.sendMessage(ChatColor.RED + "You don�t have permissions to do that."); + } + } else { + player.sendMessage( + ChatColor.RED + "Usage: " + ChatColor.GREEN + "/hb-ai cave "); + } + } else if (args[0].equalsIgnoreCase("burn")) { + if (args.length > 1) { + if (player.hasPermission("hb-ai.burn")) { + + if (Bukkit.getServer().getPlayer(args[1]) != null) { + Object[] data = { Bukkit.getServer().getPlayer(args[1]) }; + player.sendMessage(ChatColor.RED + "[HerobrineAI] " + P_Core.getAICore() + .getCore(CoreType.BURN).RunCore(data).getResultString()); + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is offline."); + } + } else { + player.sendMessage(ChatColor.RED + "You don�t have permissions to do that."); + } + } else { + player.sendMessage( + ChatColor.RED + "Usage: " + ChatColor.GREEN + "/hb-ai burn "); + } + } else if (args[0].equalsIgnoreCase("curse")) { + if (args.length > 1) { + if (player.hasPermission("hb-ai.curse")) { + + if (Bukkit.getServer().getPlayer(args[1]) != null) { + Object[] data = { Bukkit.getServer().getPlayer(args[1]) }; + player.sendMessage(ChatColor.RED + "[HerobrineAI] " + P_Core.getAICore() + .getCore(CoreType.CURSE).RunCore(data).getResultString()); + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is offline."); + } + } else { + player.sendMessage(ChatColor.RED + "You don�t have permissions to do that."); + } + } else { + player.sendMessage( + ChatColor.RED + "Usage: " + ChatColor.GREEN + "/hb-ai curse "); + } + } else if (args[0].equalsIgnoreCase("heads")) { + if (args.length > 1) { + if (player.hasPermission("hb-ai.heads")) { + if (Bukkit.getServer().getPlayer(args[1]) != null) { + Object[] data = { args[1] }; + player.sendMessage(ChatColor.RED + "[HerobrineAI] " + P_Core.getAICore() + .getCore(CoreType.HEADS).RunCore(data).getResultString()); + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is offline."); + } + } else { + player.sendMessage(ChatColor.RED + "You don�t have permissions to do that."); + } + } else { + player.sendMessage( + ChatColor.RED + "Usage: " + ChatColor.GREEN + "/hb-ai heads "); + } + } else if (args[0].equalsIgnoreCase("graveyard")) { + if (args.length > 1) { + if (player.hasPermission("hb-ai.graveyard")) { + if (Bukkit.getServer().getPlayer(args[1]) != null) { + if (Bukkit.getServer().getPlayer(args[1]).isOnline()) { + if (AICore.isTarget == false) { + P_Core.getAICore().GraveyardTeleport(Bukkit.getServer().getPlayer(args[1])); + player.sendMessage(ChatColor.RED + "[HerobrineAI] " + args[1] + + " is now in the Graveyard world!"); + } else { + player.sendMessage( + ChatColor.RED + "[HerobrineAI] Herobrine already has target! Use " + + ChatColor.GREEN + "/hb-ai cancel" + ChatColor.RED + + " to cancel actual target"); + } + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is offline."); + } + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is offline."); + } + } else { + player.sendMessage(ChatColor.RED + "You don�t have permissions to do that."); + } + } else { + player.sendMessage( + ChatColor.RED + "Usage: " + ChatColor.GREEN + "/hb-ai graveyard "); + } + } else if (args[0].equalsIgnoreCase("haunt")) { + + if (args.length > 1) { + if (player.hasPermission("hb-ai.haunt")) { + if (Bukkit.getServer().getPlayer(args[1]) != null) { + if (Bukkit.getServer().getPlayer(args[1]).isOnline()) { + if (P_Core.getSupport() + .checkHaunt(Bukkit.getServer().getPlayer(args[1]).getLocation())) { + if (P_Core.canAttackPlayer(Bukkit.getServer().getPlayer(args[1]), player)) { + if (AICore.isTarget == false) { + P_Core.getAICore() + .setHauntTarget(Bukkit.getServer().getPlayer(args[1])); + player.sendMessage( + ChatColor.RED + "[HerobrineAI] Herobrine now haunts the " + + args[1] + "!"); + + } else { + player.sendMessage(ChatColor.RED + + "[HerobrineAI] Herobrine already has target! Use " + + ChatColor.GREEN + "/hb-ai cancel" + ChatColor.RED + + " to cancel actual target."); + } + } + } else { + player.sendMessage( + ChatColor.RED + "[HerobrineAI] Player is in secure area."); + } + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is offline."); + } + } else { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Player is offline."); + } + } else { + player.sendMessage(ChatColor.RED + "You don�t have permissions to do that."); + } + } else { + player.sendMessage( + ChatColor.RED + "Usage: " + ChatColor.GREEN + "/hb-ai haunt "); + } + + } else if (args[0].equalsIgnoreCase("cancel")) { + if (player.hasPermission("hb-ai.cancel")) { + P_Core.getAICore().CancelTarget(CoreType.ANY); + player.sendMessage(ChatColor.RED + "[HerobrineAI] Target cancelled!"); + } else { + player.sendMessage(ChatColor.RED + "You don�t have permissions to do that."); + } + } else if (args[0].equalsIgnoreCase("reload")) { + if (player.hasPermission("hb-ai.reload")) { + + P_Core.getConfigDB().Reload(); + + player.sendMessage(ChatColor.RED + "[HerobrineAI] Config reloaded!"); + } else { + player.sendMessage(ChatColor.RED + "You don�t have permissions to do that."); + } + } else if (args[0].equalsIgnoreCase("help")) { + if (player.hasPermission("hb-ai.help")) { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Command list"); + player.sendMessage(ChatColor.GREEN + "/hb-ai help - shows all commands"); + player.sendMessage( + ChatColor.GREEN + "/hb-ai attack - herobrine attacks the player"); + player.sendMessage( + ChatColor.GREEN + "/hb-ai haunt - herobrine haunts the player"); + player.sendMessage(ChatColor.GREEN + "/hb-ai cancel - cancel herobrine�s actual target"); + player.sendMessage(ChatColor.GREEN + "/hb-ai reload - reload config"); + player.sendMessage(ChatColor.GREEN + "/hb-ai position - gets actual position of Herobrine"); + player.sendMessage( + ChatColor.GREEN + "/hb-ai pyramid - build pyramid near the player"); + player.sendMessage(ChatColor.GREEN + "/hb-ai bury - bury player"); + player.sendMessage(ChatColor.GREEN + + "/hb-ai graveyard - teleport player to the Graveyard world"); + player.sendMessage( + ChatColor.GREEN + "/hb-ai temple - build temple near the player"); + player.sendMessage( + ChatColor.GREEN + "/hb-ai heads - place heads near the player"); + player.sendMessage( + ChatColor.GREEN + "/hb-ai cave - create cave near the player"); + player.sendMessage(ChatColor.GREEN + "/hb-ai burn - burn player"); + player.sendMessage(ChatColor.GREEN + "/hb-ai curse - curse player"); + player.sendMessage(ChatColor.GREEN + "/hb-ai allworlds - add all worlds to config"); + + } else { + player.sendMessage(ChatColor.RED + "You don�t have permissions to do that."); + } + } else if (args[0].equalsIgnoreCase("allworlds")) { + if (player.hasPermission("hb-ai.allworlds")) { + HerobrineAI.getPluginCore().getConfigDB().addAllWorlds(); + player.sendMessage(ChatColor.GREEN + "[HerobrineAI] All worlds have been added to config."); + player.sendMessage(ChatColor.YELLOW + + "[HerobrineAI] Note: Worlds with blank spaces can cause problems!"); + } else { + player.sendMessage(ChatColor.RED + "You don�t have permissions to do that."); + } + } else if (args[0].equalsIgnoreCase("position")) { + if (player.hasPermission("hb-ai.position")) { + player.sendMessage(ChatColor.RED + "[HerobrineAI] Position"); + player.sendMessage(ChatColor.RED + "World: " + + P_Core.HerobrineNPC.getBukkitEntity().getLocation().getWorld().getName() + " X: " + + ((int) P_Core.HerobrineNPC.getBukkitEntity().getLocation().getX()) + " Y: " + + ((int) P_Core.HerobrineNPC.getBukkitEntity().getLocation().getY()) + " Z: " + + ((int) P_Core.HerobrineNPC.getBukkitEntity().getLocation().getZ())); + player.sendMessage(ChatColor.RED + "InWalkingMode: " + AICore.getStringWalkingMode()); + player.sendMessage(ChatColor.RED + "Available World: " + + HerobrineAI.getPluginCore().getAvailableWorldString()); + } else { + player.sendMessage(ChatColor.RED + "You don�t have permissions to do that."); + } + } else { + player.sendMessage(ChatColor.RED + "Usage: /hb-ai help"); + } + } else { + player.sendMessage(ChatColor.RED + "Usage: /hb-ai help"); + } + } return true; - }else{ + } else { // CONSOLE - if (args.length>0){ - if (args[0].equalsIgnoreCase("attack")){ - if (args.length>1){ - if (Bukkit.getServer().getPlayer(args[1])!=null){ - if (Bukkit.getServer().getPlayer(args[1]).isOnline()){ - if (P_Core.getSupport().checkAttack(Bukkit.getServer().getPlayer(args[1]).getLocation())){ - if (P_Core.canAttackPlayerConsole(Bukkit.getServer().getPlayer(args[1]))){ - if (AICore.isTarget==false){ - P_Core.getAICore().setAttackTarget(Bukkit.getServer().getPlayer(args[1])); - log.info("[HerobrineAI] Herobrine is now attacking the "+args[1]+"!"); - }else{log.info("[HerobrineAI] Herobrine already has target! Use /hb-ai cancel to cancel actual target");} + if (args.length > 0) { + if (args[0].equalsIgnoreCase("attack")) { + if (args.length > 1) { + if (Bukkit.getServer().getPlayer(args[1]) != null) { + if (Bukkit.getServer().getPlayer(args[1]).isOnline()) { + if (P_Core.getSupport() + .checkAttack(Bukkit.getServer().getPlayer(args[1]).getLocation())) { + if (P_Core.canAttackPlayerConsole(Bukkit.getServer().getPlayer(args[1]))) { + if (AICore.isTarget == false) { + P_Core.getAICore().setAttackTarget(Bukkit.getServer().getPlayer(args[1])); + log.info("[HerobrineAI] Herobrine is now attacking the " + args[1] + "!"); + } else { + log.info( + "[HerobrineAI] Herobrine already has target! Use /hb-ai cancel to cancel actual target"); + } + } + } else { + log.info("[HerobrineAI] Player is in secured area."); } - }else{log.info("[HerobrineAI] Player is in secured area.");} - }else{log.info("[HerobrineAI] Player is offline.");} - }else{log.info("[HerobrineAI] Player is offline.");} - }else{log.info("Usage: /hb-ai attack ");} - }else if (args[0].equalsIgnoreCase("pyramid")){ - if (args.length>1){ - if (Bukkit.getServer().getPlayer(args[1])!=null){ - if (Bukkit.getServer().getPlayer(args[1]).isOnline()){ - if (P_Core.getSupport().checkBuild(Bukkit.getServer().getPlayer(args[1]).getLocation())){ - Object[] data = {Bukkit.getServer().getPlayer(args[1])}; - if(P_Core.getAICore().getCore(CoreType.PYRAMID).RunCore(data).getResult()){ - log.info("[HerobrineAI] Creating pyramind near "+args[1]+"!"); - }else{log.info("[HerobrineAI] Cannot find good place for pyramid!");} - }else{log.info("[HerobrineAI] Player is in secure area.");} - }else{log.info("[HerobrineAI] Player is offline.");} - }else{log.info("[HerobrineAI] Player is offline.");} - }else{log.info("Usage: "+ChatColor.GREEN+"/hb-ai pyramid ");} - }else if (args[0].equalsIgnoreCase("temple")){ - if (args.length>1){ - if (Bukkit.getServer().getPlayer(args[1])!=null){ - if (Bukkit.getServer().getPlayer(args[1]).isOnline()){ - if (P_Core.getSupport().checkBuild(Bukkit.getServer().getPlayer(args[1]).getLocation())){ - Object[] data = {Bukkit.getServer().getPlayer(args[1])}; - if(P_Core.getAICore().getCore(CoreType.TEMPLE).RunCore(data).getResult()){ - log.info("[HerobrineAI] Creating temple near "+args[1]+"!"); - }else{log.info("[HerobrineAI] Cannot find good place for temple!");} - }else{log.info("[HerobrineAI] Player is in secure area.");} - }else{log.info("[HerobrineAI] Player is offline.");} - }else{log.info("[HerobrineAI] Player is offline.");} - }else{log.info("Usage: "+ChatColor.GREEN+"/hb-ai temple ");} - }else if (args[0].equalsIgnoreCase("bury")){ - if (args.length>1){ - if (Bukkit.getServer().getPlayer(args[1])!=null){ - if (Bukkit.getServer().getPlayer(args[1]).isOnline()){ - if (P_Core.getSupport().checkBuild(Bukkit.getServer().getPlayer(args[1]).getLocation())){ - Object[] data = {Bukkit.getServer().getPlayer(args[1])}; - if(P_Core.getAICore().getCore(CoreType.BURY_PLAYER).RunCore(data).getResult()){ - log.info("[HerobrineAI] Buried "+args[1]+"!"); - }else{log.info("[HerobrineAI] Cannot find good place!");} - }else{log.info("[HerobrineAI] Player is in secure area.");} - }else{log.info("[HerobrineAI] Player is offline.");} - }else{log.info("[HerobrineAI] Player is offline.");} - }else{log.info("Usage: /hb-ai bury ");} - }else if (args[0].equalsIgnoreCase("cave")){ - if (args.length>1){ - - - if (Bukkit.getServer().getPlayer(args[1])!=null){ - Object[] data = {Bukkit.getServer().getPlayer(args[1]).getLocation(),true}; - log.info(ChatColor.RED+"[HerobrineAI] "+P_Core.getAICore().getCore(CoreType.BUILD_STUFF).RunCore(data).getResultString()); - }else{log.info(ChatColor.RED+"[HerobrineAI] Player is offline.");} - - }else{log.info("Usage: /hb-ai cave ");} - }else if (args[0].equalsIgnoreCase("burn")){ - if (args.length>1){ - - if (Bukkit.getServer().getPlayer(args[1])!=null){ - Object[] data = {Bukkit.getServer().getPlayer(args[1])}; - log.info("[HerobrineAI] "+P_Core.getAICore().getCore(CoreType.BURN).RunCore(data).getResultString()); - }else{log.info("[HerobrineAI] Player is offline.");} - - }else{log.info("Usage: /hb-ai burn ");} - }else if (args[0].equalsIgnoreCase("curse")){ - if (args.length>1){ - - if (Bukkit.getServer().getPlayer(args[1])!=null){ - Object[] data = {Bukkit.getServer().getPlayer(args[1])}; - log.info("[HerobrineAI] "+P_Core.getAICore().getCore(CoreType.CURSE).RunCore(data).getResultString()); - }else{log.info("[HerobrineAI] Player is offline.");} - - }else{log.info("Usage: /hb-ai curse ");} - }else if (args[0].equalsIgnoreCase("heads")){ - if (args.length>1){ - - if (Bukkit.getServer().getPlayer(args[1])!=null){ - Object[] data = {args[1]}; - log.info("[HerobrineAI] "+P_Core.getAICore().getCore(CoreType.HEADS).RunCore(data).getResultString()); - }else{log.info("[HerobrineAI] Player is offline.");} - - }else{log.info("Usage: "+ChatColor.GREEN+"/hb-ai heads ");} + } else { + log.info("[HerobrineAI] Player is offline."); + } + } else { + log.info("[HerobrineAI] Player is offline."); + } + } else { + log.info("Usage: /hb-ai attack "); } - else if (args[0].equalsIgnoreCase("graveyard")){ - if (args.length>1){ - if (Bukkit.getServer().getPlayer(args[1])!=null){ - if (Bukkit.getServer().getPlayer(args[1]).isOnline()){ - if (AICore.isTarget==false){ - P_Core.getAICore().GraveyardTeleport(Bukkit.getServer().getPlayer(args[1])); - log.info("[HerobrineAI] "+args[1]+" is now in the Graveyard world!"); - }else{log.info("[HerobrineAI] Herobrine already has target! Use "+ChatColor.GREEN+"/hb-ai cancel"+ChatColor.RED+" to cancel actual target");} - }else{log.info("[HerobrineAI] Player is offline.");} - }else{log.info("[HerobrineAI] Player is offline.");} - }else{log.info("Usage: /hb-ai graveyard ");} - }else if (args[0].equalsIgnoreCase("haunt")){ - - if (args.length>1){ - if (Bukkit.getServer().getPlayer(args[1])!=null){ - if (Bukkit.getServer().getPlayer(args[1]).isOnline()){ - if (P_Core.getSupport().checkHaunt(Bukkit.getServer().getPlayer(args[1]).getLocation())){ - if (P_Core.canAttackPlayerConsole(Bukkit.getServer().getPlayer(args[1]))){ - if (AICore.isTarget==false){ - P_Core.getAICore().setHauntTarget(Bukkit.getServer().getPlayer(args[1])); - log.info("[HerobrineAI] Herobrine now haunts the "+args[1]+"!"); - }else{log.info("[HerobrineAI] Herobrine already has target! Use /hb-ai cancel to cancel actual target.");} + } else if (args[0].equalsIgnoreCase("pyramid")) { + if (args.length > 1) { + if (Bukkit.getServer().getPlayer(args[1]) != null) { + if (Bukkit.getServer().getPlayer(args[1]).isOnline()) { + if (P_Core.getSupport() + .checkBuild(Bukkit.getServer().getPlayer(args[1]).getLocation())) { + Object[] data = { Bukkit.getServer().getPlayer(args[1]) }; + if (P_Core.getAICore().getCore(CoreType.PYRAMID).RunCore(data).getResult()) { + log.info("[HerobrineAI] Creating pyramind near " + args[1] + "!"); + } else { + log.info("[HerobrineAI] Cannot find good place for pyramid!"); + } + } else { + log.info("[HerobrineAI] Player is in secure area."); } - }else{log.info("[HerobrineAI] Player is in secure area.");} - }else{log.info("[HerobrineAI] Player is offline.");} - }else{log.info("[HerobrineAI] Player is offline.");} - }else{log.info("Usage: /hb-ai haunt ");} - - }else if (args[0].equalsIgnoreCase("cancel")){ - - P_Core.getAICore().CancelTarget(CoreType.ANY); - log.info(ChatColor.RED+"[HerobrineAI] Target cancelled!"); - - }else if (args[0].equalsIgnoreCase("reload")){ - - P_Core.getConfigDB().Reload(); - - log.info("[HerobrineAI] Config reloaded!"); - - }else if (args[0].equalsIgnoreCase("help")){ - - log.info("[HerobrineAI] Command list"); - log.info("/hb-ai help - shows all commands"); - log.info("/hb-ai attack - herobrine attacks the player"); - log.info("/hb-ai haunt - herobrine haunts the player"); - log.info("/hb-ai cancel - cancel herobrine´s actual target"); - log.info("/hb-ai reload - reload config"); - log.info("/hb-ai position - gets actual position of Herobrine"); - log.info("/hb-ai pyramid - build pyramid near the player"); - log.info("/hb-ai bury - bury player"); - log.info("/hb-ai graveyard - teleport player to the Graveyard world"); - log.info("/hb-ai temple - build temple near the player"); - log.info("/hb-ai heads - place heads near the player"); - log.info("/hb-ai cave - create cave near the player"); - log.info("/hb-ai burn - burn player"); - log.info("/hb-ai curse - curse player"); - - }else if (args[0].equalsIgnoreCase("position")){ - - log.info("[HerobrineAI] Position"); - log.info("World: "+P_Core.HerobrineNPC.getBukkitEntity().getLocation().getWorld().getName()+" X: "+((int)P_Core.HerobrineNPC.getBukkitEntity().getLocation().getX())+ - " Y: "+((int)P_Core.HerobrineNPC.getBukkitEntity().getLocation().getY())+" Z: "+((int)P_Core.HerobrineNPC.getBukkitEntity().getLocation().getZ())); - log.info("InWalkingMode: "+AICore.getStringWalkingMode()); - log.info("Available World: "+HerobrineAI.getPluginCore().getAvailableWorldString()); - - - }else{log.info("Usage: /hb-ai help");} - }else{log.info("Usage: /hb-ai help");} + } else { + log.info("[HerobrineAI] Player is offline."); + } + } else { + log.info("[HerobrineAI] Player is offline."); + } + } else { + log.info("Usage: " + ChatColor.GREEN + "/hb-ai pyramid "); + } + } else if (args[0].equalsIgnoreCase("temple")) { + if (args.length > 1) { + if (Bukkit.getServer().getPlayer(args[1]) != null) { + if (Bukkit.getServer().getPlayer(args[1]).isOnline()) { + if (P_Core.getSupport() + .checkBuild(Bukkit.getServer().getPlayer(args[1]).getLocation())) { + Object[] data = { Bukkit.getServer().getPlayer(args[1]) }; + if (P_Core.getAICore().getCore(CoreType.TEMPLE).RunCore(data).getResult()) { + log.info("[HerobrineAI] Creating temple near " + args[1] + "!"); + } else { + log.info("[HerobrineAI] Cannot find good place for temple!"); + } + } else { + log.info("[HerobrineAI] Player is in secure area."); + } + } else { + log.info("[HerobrineAI] Player is offline."); + } + } else { + log.info("[HerobrineAI] Player is offline."); + } + } else { + log.info("Usage: " + ChatColor.GREEN + "/hb-ai temple "); + } + } else if (args[0].equalsIgnoreCase("bury")) { + if (args.length > 1) { + if (Bukkit.getServer().getPlayer(args[1]) != null) { + if (Bukkit.getServer().getPlayer(args[1]).isOnline()) { + if (P_Core.getSupport() + .checkBuild(Bukkit.getServer().getPlayer(args[1]).getLocation())) { + Object[] data = { Bukkit.getServer().getPlayer(args[1]) }; + if (P_Core.getAICore().getCore(CoreType.BURY_PLAYER).RunCore(data).getResult()) { + log.info("[HerobrineAI] Buried " + args[1] + "!"); + } else { + log.info("[HerobrineAI] Cannot find good place!"); + } + } else { + log.info("[HerobrineAI] Player is in secure area."); + } + } else { + log.info("[HerobrineAI] Player is offline."); + } + } else { + log.info("[HerobrineAI] Player is offline."); + } + } else { + log.info("Usage: /hb-ai bury "); + } + } else if (args[0].equalsIgnoreCase("cave")) { + if (args.length > 1) { + + if (Bukkit.getServer().getPlayer(args[1]) != null) { + Object[] data = { Bukkit.getServer().getPlayer(args[1]).getLocation(), true }; + log.info(ChatColor.RED + "[HerobrineAI] " + + P_Core.getAICore().getCore(CoreType.BUILD_STUFF).RunCore(data).getResultString()); + } else { + log.info(ChatColor.RED + "[HerobrineAI] Player is offline."); + } + + } else { + log.info("Usage: /hb-ai cave "); + } + } else if (args[0].equalsIgnoreCase("burn")) { + if (args.length > 1) { + + if (Bukkit.getServer().getPlayer(args[1]) != null) { + Object[] data = { Bukkit.getServer().getPlayer(args[1]) }; + log.info("[HerobrineAI] " + + P_Core.getAICore().getCore(CoreType.BURN).RunCore(data).getResultString()); + } else { + log.info("[HerobrineAI] Player is offline."); + } + + } else { + log.info("Usage: /hb-ai burn "); + } + } else if (args[0].equalsIgnoreCase("curse")) { + if (args.length > 1) { + + if (Bukkit.getServer().getPlayer(args[1]) != null) { + Object[] data = { Bukkit.getServer().getPlayer(args[1]) }; + log.info("[HerobrineAI] " + + P_Core.getAICore().getCore(CoreType.CURSE).RunCore(data).getResultString()); + } else { + log.info("[HerobrineAI] Player is offline."); + } + + } else { + log.info("Usage: /hb-ai curse "); + } + } else if (args[0].equalsIgnoreCase("heads")) { + if (args.length > 1) { + + if (Bukkit.getServer().getPlayer(args[1]) != null) { + Object[] data = { args[1] }; + log.info("[HerobrineAI] " + + P_Core.getAICore().getCore(CoreType.HEADS).RunCore(data).getResultString()); + } else { + log.info("[HerobrineAI] Player is offline."); + } + + } else { + log.info("Usage: " + ChatColor.GREEN + "/hb-ai heads "); + } + } else if (args[0].equalsIgnoreCase("graveyard")) { + if (args.length > 1) { + if (Bukkit.getServer().getPlayer(args[1]) != null) { + if (Bukkit.getServer().getPlayer(args[1]).isOnline()) { + if (AICore.isTarget == false) { + P_Core.getAICore().GraveyardTeleport(Bukkit.getServer().getPlayer(args[1])); + log.info("[HerobrineAI] " + args[1] + " is now in the Graveyard world!"); + } else { + log.info("[HerobrineAI] Herobrine already has target! Use " + ChatColor.GREEN + + "/hb-ai cancel" + ChatColor.RED + " to cancel actual target"); + } + } else { + log.info("[HerobrineAI] Player is offline."); + } + } else { + log.info("[HerobrineAI] Player is offline."); + } + } else { + log.info("Usage: /hb-ai graveyard "); + } + } else if (args[0].equalsIgnoreCase("haunt")) { + + if (args.length > 1) { + if (Bukkit.getServer().getPlayer(args[1]) != null) { + if (Bukkit.getServer().getPlayer(args[1]).isOnline()) { + if (P_Core.getSupport() + .checkHaunt(Bukkit.getServer().getPlayer(args[1]).getLocation())) { + if (P_Core.canAttackPlayerConsole(Bukkit.getServer().getPlayer(args[1]))) { + if (AICore.isTarget == false) { + P_Core.getAICore().setHauntTarget(Bukkit.getServer().getPlayer(args[1])); + log.info("[HerobrineAI] Herobrine now haunts the " + args[1] + "!"); + } else { + log.info( + "[HerobrineAI] Herobrine already has target! Use /hb-ai cancel to cancel actual target."); + } + } + } else { + log.info("[HerobrineAI] Player is in secure area."); + } + } else { + log.info("[HerobrineAI] Player is offline."); + } + } else { + log.info("[HerobrineAI] Player is offline."); + } + } else { + log.info("Usage: /hb-ai haunt "); + } + + } else if (args[0].equalsIgnoreCase("cancel")) { + + P_Core.getAICore().CancelTarget(CoreType.ANY); + log.info(ChatColor.RED + "[HerobrineAI] Target cancelled!"); + + } else if (args[0].equalsIgnoreCase("reload")) { + + P_Core.getConfigDB().Reload(); + + log.info("[HerobrineAI] Config reloaded!"); + + } else if (args[0].equalsIgnoreCase("help")) { + + log.info("[HerobrineAI] Command list"); + log.info("/hb-ai help - shows all commands"); + log.info("/hb-ai attack - herobrine attacks the player"); + log.info("/hb-ai haunt - herobrine haunts the player"); + log.info("/hb-ai cancel - cancel herobrine�s actual target"); + log.info("/hb-ai reload - reload config"); + log.info("/hb-ai position - gets actual position of Herobrine"); + log.info("/hb-ai pyramid - build pyramid near the player"); + log.info("/hb-ai bury - bury player"); + log.info("/hb-ai graveyard - teleport player to the Graveyard world"); + log.info("/hb-ai temple - build temple near the player"); + log.info("/hb-ai heads - place heads near the player"); + log.info("/hb-ai cave - create cave near the player"); + log.info("/hb-ai burn - burn player"); + log.info("/hb-ai curse - curse player"); + log.info("/hb-ai allworlds - add all worlds to config"); + + } else if (args[0].equalsIgnoreCase("position")) { + + log.info("[HerobrineAI] Position"); + log.info("World: " + P_Core.HerobrineNPC.getBukkitEntity().getLocation().getWorld().getName() + + " X: " + ((int) P_Core.HerobrineNPC.getBukkitEntity().getLocation().getX()) + " Y: " + + ((int) P_Core.HerobrineNPC.getBukkitEntity().getLocation().getY()) + " Z: " + + ((int) P_Core.HerobrineNPC.getBukkitEntity().getLocation().getZ())); + log.info("InWalkingMode: " + AICore.getStringWalkingMode()); + log.info("Available World: " + HerobrineAI.getPluginCore().getAvailableWorldString()); + + } else if (args[0].equalsIgnoreCase("allworlds")) { + + HerobrineAI.getPluginCore().getConfigDB().addAllWorlds(); + log.info("[HerobrineAI] All worlds have been added to config."); + log.info("[HerobrineAI] Note: Worlds with blank spaces can cause problems!"); + + } else { + log.info("Usage: /hb-ai help"); + } + } else { + log.info("Usage: /hb-ai help"); + } return true; } } - + } diff --git a/src/org/jakub1221/herobrineai/entity/CustomSkeleton.java b/src/org/jakub1221/herobrineai/entity/CustomSkeleton.java index cfcab5e..689d0eb 100644 --- a/src/org/jakub1221/herobrineai/entity/CustomSkeleton.java +++ b/src/org/jakub1221/herobrineai/entity/CustomSkeleton.java @@ -1,59 +1,68 @@ package org.jakub1221.herobrineai.entity; -import java.util.Random; - import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.entity.Skeleton; import org.bukkit.inventory.ItemStack; import org.bukkit.Color; import org.jakub1221.herobrineai.HerobrineAI; +import org.jakub1221.herobrineai.Utils; import org.jakub1221.herobrineai.misc.ItemName; -import net.minecraft.server.v1_5_R2.World; +import net.minecraft.server.v1_11_R1.GenericAttributes; +import net.minecraft.server.v1_11_R1.World; -public class CustomSkeleton extends net.minecraft.server.v1_5_R2.EntitySkeleton implements CustomEntity{ +public class CustomSkeleton extends net.minecraft.server.v1_11_R1.EntitySkeleton implements CustomEntity { - private MobType mobType=null; - - public CustomSkeleton(World world,Location loc,MobType mbt) { + private MobType mobType = null; + + public CustomSkeleton(World world, Location loc, MobType mbt) { super(world); - this.mobType=mbt; - if (mbt==MobType.DEMON){ - spawnDemon(loc); - } + this.mobType = mbt; + if (mbt == MobType.DEMON) { + spawnDemon(loc); + } + } + + public void spawnDemon(Location loc) { + + this.getAttributeInstance(GenericAttributes.c).setValue(HerobrineAI.getPluginCore().getConfigDB().npc.getDouble("npc.Demon.Speed")); + this.getAttributeInstance(GenericAttributes.maxHealth).setValue(HerobrineAI.getPluginCore().getConfigDB().npc.getInt("npc.Demon.HP")); + this.setHealth(HerobrineAI.getPluginCore().getConfigDB().npc.getInt("npc.Demon.HP")); + this.setCustomName("Demon"); + + Skeleton entityCast = (Skeleton) this.getBukkitEntity(); + + entityCast.getEquipment().setItemInHand(new ItemStack(Material.GOLDEN_APPLE, 1)); + entityCast.getEquipment().setHelmet(ItemName.colorLeatherArmor(new ItemStack(Material.LEATHER_HELMET, 1), Color.RED)); + entityCast.getEquipment().setChestplate(ItemName.colorLeatherArmor(new ItemStack(Material.LEATHER_CHESTPLATE, 1), Color.RED)); + entityCast.getEquipment().setLeggings(ItemName.colorLeatherArmor(new ItemStack(Material.LEATHER_LEGGINGS, 1), Color.RED)); + entityCast.getEquipment().setBoots(ItemName.colorLeatherArmor(new ItemStack(Material.LEATHER_BOOTS, 1), Color.RED)); + this.getBukkitEntity().teleport(loc); + } - - public void spawnDemon(Location loc){ - this.health=HerobrineAI.getPluginCore().getConfigDB().npc.getInt("npc.Demon.HP"); - this.setCustomName("Demon"); - this.maxHealth=HerobrineAI.getPluginCore().getConfigDB().npc.getInt("npc.Demon.HP"); - - ((Skeleton)this.getBukkitEntity()).getEquipment().setItemInHand(new ItemStack(Material.GOLDEN_APPLE,1)); - ((Skeleton)this.getBukkitEntity()).getEquipment().setHelmet(ItemName.colorLeatherArmor(new ItemStack(Material.LEATHER_HELMET,1), Color.RED)); - ((Skeleton)this.getBukkitEntity()).getEquipment().setChestplate(ItemName.colorLeatherArmor(new ItemStack(Material.LEATHER_CHESTPLATE,1), Color.RED)); - ((Skeleton)this.getBukkitEntity()).getEquipment().setLeggings(ItemName.colorLeatherArmor(new ItemStack(Material.LEATHER_LEGGINGS,1), Color.RED)); - ((Skeleton)this.getBukkitEntity()).getEquipment().setBoots(ItemName.colorLeatherArmor(new ItemStack(Material.LEATHER_BOOTS,1), Color.RED)); - this.getBukkitEntity().teleport(loc); - - } - public CustomSkeleton(World world) { super(world); } @Override - public void Kill(){ - for(int i=1;i<=2500;i++){ - if (HerobrineAI.getPluginCore().getConfigDB().npc.contains("npc.Demon.Drops."+Integer.toString(i))==true){ - int chance=new Random().nextInt(100); - if (chance<=HerobrineAI.getPluginCore().getConfigDB().npc.getInt("npc.Demon.Drops."+Integer.toString(i)+".Chance")){ - this.getBukkitEntity().getLocation().getWorld().dropItemNaturally(this.getBukkitEntity().getLocation(), new ItemStack(Material.getMaterial(i),HerobrineAI.getPluginCore().getConfigDB().npc.getInt("npc.Demon.Drops."+Integer.toString(i)+".Count"))); - } + public void Kill() { + for (int i = 1; i <= 2500; i++) { + if (HerobrineAI.getPluginCore().getConfigDB().npc.contains("npc.Demon.Drops." + Integer.toString(i)) == true) { + int chance = Utils.getRandomGen().nextInt(100); + + int requiredRoll = HerobrineAI.getPluginCore().getConfigDB().npc.getInt("npc.Demon.Drops." + Integer.toString(i) + ".Chance"); + + if (chance <= requiredRoll) { + + ItemStack its = new ItemStack(Material.getMaterial(i), HerobrineAI.getPluginCore().getConfigDB().npc.getInt("npc.Demon.Drops." + Integer.toString(i) + ".Count")); + + this.getBukkitEntity().getLocation().getWorld().dropItemNaturally(this.getBukkitEntity().getLocation(),its); + } } } - this.health=0; + this.setHealth(0); } @Override diff --git a/src/org/jakub1221/herobrineai/entity/CustomZombie.java b/src/org/jakub1221/herobrineai/entity/CustomZombie.java index c9406e7..d31dbfc 100644 --- a/src/org/jakub1221/herobrineai/entity/CustomZombie.java +++ b/src/org/jakub1221/herobrineai/entity/CustomZombie.java @@ -4,80 +4,104 @@ import java.util.Random; import org.bukkit.Location; import org.bukkit.Material; +import org.bukkit.entity.Skeleton; +import org.bukkit.entity.Zombie; +import org.bukkit.inventory.ItemStack; import org.jakub1221.herobrineai.HerobrineAI; +import org.jakub1221.herobrineai.Utils; -import net.minecraft.server.v1_5_R2.ItemStack; -import net.minecraft.server.v1_5_R2.World; +import net.minecraft.server.v1_11_R1.GenericAttributes; +import net.minecraft.server.v1_11_R1.World; -public class CustomZombie extends net.minecraft.server.v1_5_R2.EntityZombie implements CustomEntity{ - - private MobType mobType=null; - - public CustomZombie(World world,Location loc,MobType mbt) { +public class CustomZombie extends net.minecraft.server.v1_11_R1.EntityZombie implements CustomEntity { + + private MobType mobType = null; + + public CustomZombie(World world, Location loc, MobType mbt) { super(world); - this.mobType=mbt; - if (mbt==MobType.ARTIFACT_GUARDIAN){ - spawnArtifactGuardian(loc); - }else if (mbt==MobType.HEROBRINE_WARRIOR){ - spawnHerobrineWarrior(loc); - } + this.mobType = mbt; + if (mbt == MobType.ARTIFACT_GUARDIAN) { + spawnArtifactGuardian(loc); + } else if (mbt == MobType.HEROBRINE_WARRIOR) { + spawnHerobrineWarrior(loc); + } } - private void spawnArtifactGuardian(Location loc){ - - this.health=HerobrineAI.getPluginCore().getConfigDB().npc.getInt("npc.Guardian.HP"); - this.setCustomName("Artifact Guardian"); - this.maxHealth=HerobrineAI.getPluginCore().getConfigDB().npc.getInt("npc.Guardian.HP"); - this.setEquipment(0, new ItemStack(net.minecraft.server.v1_5_R2.Item.GOLD_SWORD)); - this.setEquipment(1, new ItemStack(net.minecraft.server.v1_5_R2.Item.GOLD_BOOTS)); - this.setEquipment(2, new ItemStack(net.minecraft.server.v1_5_R2.Item.GOLD_LEGGINGS)); - this.setEquipment(3, new ItemStack(net.minecraft.server.v1_5_R2.Item.GOLD_CHESTPLATE)); - this.setEquipment(4, new ItemStack(net.minecraft.server.v1_5_R2.Item.GOLD_HELMET)); - this.getBukkitEntity().teleport(loc); - - - - } - - private void spawnHerobrineWarrior(Location loc){ - - this.health=HerobrineAI.getPluginCore().getConfigDB().npc.getInt("npc.Warrior.HP"); - this.setCustomName("Herobrine´s Warrior"); - this.maxHealth=HerobrineAI.getPluginCore().getConfigDB().npc.getInt("npc.Warrior.HP"); - this.setEquipment(0, new ItemStack(net.minecraft.server.v1_5_R2.Item.IRON_SWORD)); - this.setEquipment(1, new ItemStack(net.minecraft.server.v1_5_R2.Item.IRON_BOOTS)); - this.setEquipment(2, new ItemStack(net.minecraft.server.v1_5_R2.Item.IRON_LEGGINGS)); - this.setEquipment(3, new ItemStack(net.minecraft.server.v1_5_R2.Item.IRON_CHESTPLATE)); - this.setEquipment(4, new ItemStack(net.minecraft.server.v1_5_R2.Item.IRON_HELMET)); - this.getBukkitEntity().teleport(loc); - - } - - public CustomZombie(World world) { - super(world); - } + private void spawnArtifactGuardian(Location loc) { + + this.getAttributeInstance(GenericAttributes.c).setValue(HerobrineAI.getPluginCore().getConfigDB().npc.getDouble("npc.Guardian.Speed")); + this.getAttributeInstance(GenericAttributes.maxHealth).setValue(HerobrineAI.getPluginCore().getConfigDB().npc.getInt("npc.Guardian.HP")); + this.setHealth(HerobrineAI.getPluginCore().getConfigDB().npc.getInt("npc.Guardian.HP")); + + this.setCustomName("Artifact Guardian"); + + Zombie entityCast = (Zombie) this.getBukkitEntity(); + + entityCast.getEquipment().setItemInMainHand(new ItemStack(Material.GOLD_SWORD, 1)); + entityCast.getEquipment().setHelmet(new ItemStack(Material.GOLD_HELMET, 1)); + entityCast.getEquipment().setChestplate(new ItemStack(Material.GOLD_CHESTPLATE, 1)); + entityCast.getEquipment().setLeggings(new ItemStack(Material.GOLD_LEGGINGS, 1)); + entityCast.getEquipment().setBoots(new ItemStack(Material.GOLD_BOOTS, 1)); + + this.getBukkitEntity().teleport(loc); + + } + + private void spawnHerobrineWarrior(Location loc) { + + this.getAttributeInstance(GenericAttributes.c).setValue(HerobrineAI.getPluginCore().getConfigDB().npc.getDouble("npc.Warrior.Speed")); + this.getAttributeInstance(GenericAttributes.maxHealth).setValue(HerobrineAI.getPluginCore().getConfigDB().npc.getInt("npc.Warrior.HP")); + this.setHealth(HerobrineAI.getPluginCore().getConfigDB().npc.getInt("npc.Warrior.HP")); + + this.setCustomName("Herobrine Warrior"); + + Zombie entityCast = (Zombie) this.getBukkitEntity(); + + entityCast.getEquipment().setItemInMainHand(new ItemStack(Material.IRON_SWORD, 1)); + entityCast.getEquipment().setHelmet(new ItemStack(Material.IRON_HELMET, 1)); + entityCast.getEquipment().setChestplate(new ItemStack(Material.IRON_CHESTPLATE, 1)); + entityCast.getEquipment().setLeggings(new ItemStack(Material.IRON_LEGGINGS, 1)); + entityCast.getEquipment().setBoots(new ItemStack(Material.IRON_BOOTS, 1)); + + this.getBukkitEntity().teleport(loc); + + } + + public CustomZombie(World world) { + super(world); + } @Override public void Kill() { - + String mobS = ""; - if (this.mobType==MobType.ARTIFACT_GUARDIAN){mobS="Guardian";}else{mobS="Warrior";} - - for(int i=1;i<=2500;i++){ - if (HerobrineAI.getPluginCore().getConfigDB().npc.contains("npc."+mobS+".Drops."+Integer.toString(i))==true){ - int chance=new Random().nextInt(100); - if (chance<=HerobrineAI.getPluginCore().getConfigDB().npc.getInt("npc."+mobS+".Drops."+Integer.toString(i)+".Chance")){ - this.getBukkitEntity().getLocation().getWorld().dropItemNaturally(this.getBukkitEntity().getLocation(), new org.bukkit.inventory.ItemStack(Material.getMaterial(i),HerobrineAI.getPluginCore().getConfigDB().npc.getInt("npc."+mobS+".Drops."+Integer.toString(i)+".Count"))); - } - } + if (this.mobType == MobType.ARTIFACT_GUARDIAN) { + mobS = "Guardian"; + } else { + mobS = "Warrior"; } - this.health=0; + for (int i = 1; i <= 2500; i++) { + if (HerobrineAI.getPluginCore().getConfigDB().npc.contains("npc." + mobS + ".Drops." + Integer.toString(i)) == true) { + int chance = Utils.getRandomGen().nextInt(100); + + int requiredRoll = HerobrineAI.getPluginCore().getConfigDB().npc.getInt("npc." + mobS + ".Drops." + Integer.toString(i) + ".Chance"); + + if (chance <= requiredRoll) { + + ItemStack its = new ItemStack(Material.getMaterial(i), HerobrineAI.getPluginCore().getConfigDB().npc.getInt("npc." + mobS + ".Drops." + Integer.toString(i) + ".Count")); + + this.getBukkitEntity().getLocation().getWorld().dropItemNaturally(this.getBukkitEntity().getLocation(),its); + } + } + } + + this.setHealth(0); } @Override public MobType getMobType() { return this.mobType; } - + } diff --git a/src/org/jakub1221/herobrineai/entity/EntityManager.java b/src/org/jakub1221/herobrineai/entity/EntityManager.java index 2e30683..debf118 100644 --- a/src/org/jakub1221/herobrineai/entity/EntityManager.java +++ b/src/org/jakub1221/herobrineai/entity/EntityManager.java @@ -5,7 +5,6 @@ import java.util.Map; import org.bukkit.Location; import org.bukkit.World; -import org.jakub1221.herobrineai.HerobrineAI; public class EntityManager { @@ -14,7 +13,7 @@ public class EntityManager { public void spawnCustomZombie(Location loc,MobType mbt){ World world = loc.getWorld(); - net.minecraft.server.v1_5_R2.World mcWorld = ((org.bukkit.craftbukkit.v1_5_R2.CraftWorld) world).getHandle(); + net.minecraft.server.v1_11_R1.World mcWorld = ((org.bukkit.craftbukkit.v1_11_R1.CraftWorld) world).getHandle(); CustomZombie zmb = new CustomZombie(mcWorld,loc,mbt); mcWorld.addEntity(zmb); mobList.put(new Integer(zmb.getBukkitEntity().getEntityId()),zmb); @@ -24,7 +23,7 @@ public class EntityManager { public void spawnCustomSkeleton(Location loc,MobType mbt){ World world = loc.getWorld(); - net.minecraft.server.v1_5_R2.World mcWorld = ((org.bukkit.craftbukkit.v1_5_R2.CraftWorld) world).getHandle(); + net.minecraft.server.v1_11_R1.World mcWorld = ((org.bukkit.craftbukkit.v1_11_R1.CraftWorld) world).getHandle(); CustomSkeleton zmb = new CustomSkeleton(mcWorld,loc,mbt); mcWorld.addEntity(zmb); mobList.put(new Integer(zmb.getBukkitEntity().getEntityId()),zmb); diff --git a/src/org/jakub1221/herobrineai/listeners/BlockListener.java b/src/org/jakub1221/herobrineai/listeners/BlockListener.java index 8975157..3fc4f52 100644 --- a/src/org/jakub1221/herobrineai/listeners/BlockListener.java +++ b/src/org/jakub1221/herobrineai/listeners/BlockListener.java @@ -12,92 +12,95 @@ import org.bukkit.event.Listener; import org.bukkit.event.block.BlockIgniteEvent; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockPlaceEvent; +import org.bukkit.util.Vector; import org.jakub1221.herobrineai.AI.*; import org.jakub1221.herobrineai.AI.Core.CoreType; import org.jakub1221.herobrineai.AI.cores.Heads; import org.jakub1221.herobrineai.HerobrineAI; -public class BlockListener implements Listener{ - +public class BlockListener implements Listener { + Logger log = Logger.getLogger("Minecraft"); - + @EventHandler - public void onBlockIgnite(BlockIgniteEvent event){ - if (event.getBlock()!=null){ - Block blockt = (Block) event.getBlock(); - Location blockloc = (Location) blockt.getLocation(); - - if (event.getPlayer()!=null){ - blockloc.setY(blockloc.getY()-1); - Block block = (Block) blockloc.getWorld().getBlockAt(blockloc); - if (block.getType() == Material.NETHERRACK){ - - if (block.getWorld().getBlockAt(blockloc.getBlockX(), blockloc.getBlockY()-1, blockloc.getBlockZ()).getType() == Material.NETHERRACK){ - if (block.getWorld().getBlockAt(blockloc.getBlockX()-1, blockloc.getBlockY()-1, blockloc.getBlockZ()).getType() == Material.GOLD_BLOCK){ - if (block.getWorld().getBlockAt(blockloc.getBlockX()-1, blockloc.getBlockY()-1, blockloc.getBlockZ()-1).getType() == Material.GOLD_BLOCK){ - if (block.getWorld().getBlockAt(blockloc.getBlockX()-1, blockloc.getBlockY()-1, blockloc.getBlockZ()+1).getType() == Material.GOLD_BLOCK){ - if (block.getWorld().getBlockAt(blockloc.getBlockX()+1, blockloc.getBlockY()-1, blockloc.getBlockZ()).getType() == Material.GOLD_BLOCK){ - if (block.getWorld().getBlockAt(blockloc.getBlockX()+1, blockloc.getBlockY()-1, blockloc.getBlockZ()-1).getType() == Material.GOLD_BLOCK){ - if (block.getWorld().getBlockAt(blockloc.getBlockX()+1, blockloc.getBlockY()-1, blockloc.getBlockZ()+1).getType() == Material.GOLD_BLOCK){ - if (block.getWorld().getBlockAt(blockloc.getBlockX(), blockloc.getBlockY()-1, blockloc.getBlockZ()-1).getType() == Material.GOLD_BLOCK){ - if (block.getWorld().getBlockAt(blockloc.getBlockX(), blockloc.getBlockY()-1, blockloc.getBlockZ()+1).getType() == Material.GOLD_BLOCK){ - if (block.getWorld().getBlockAt(blockloc.getBlockX(), blockloc.getBlockY(), blockloc.getBlockZ()+1).getType() == Material.REDSTONE_TORCH_ON){ - if (block.getWorld().getBlockAt(blockloc.getBlockX(), blockloc.getBlockY(), blockloc.getBlockZ()-1).getType() == Material.REDSTONE_TORCH_ON){ - if (block.getWorld().getBlockAt(blockloc.getBlockX()+1, blockloc.getBlockY(), blockloc.getBlockZ()).getType() == Material.REDSTONE_TORCH_ON){ - if (block.getWorld().getBlockAt(blockloc.getBlockX()-1, blockloc.getBlockY(), blockloc.getBlockZ()).getType() == Material.REDSTONE_TORCH_ON){ - - if (HerobrineAI.getPluginCore().getConfigDB().UseTotem==true && AICore.isTotemCalled==false){ - - HerobrineAI.getPluginCore().getAICore().PlayerCallTotem(event.getPlayer()); - - } - - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - - if (event.getBlock().getWorld()==Bukkit.getServer().getWorld("world_herobrineai_graveyard")){ - event.setCancelled(true); - return; - } - } - - @EventHandler - public void onBlockBreak(BlockBreakEvent event){ - if (event.getBlock().getWorld()==Bukkit.getServer().getWorld("world_herobrineai_graveyard")){ - event.setCancelled(true); - return; - }else{ - Heads h = (Heads) HerobrineAI.getPluginCore().getAICore().getCore(CoreType.HEADS); - ArrayList list = h.getHeadList(); - if (list.contains(event.getBlock())){ - event.setCancelled(true); - return; + public void onBlockIgnite(BlockIgniteEvent event) { + if (event.getBlock() != null) { + Block blockt = (Block) event.getBlock(); + Location blockloc = (Location) blockt.getLocation(); + + if (event.getPlayer() != null) { + blockloc.setY(blockloc.getY() - 1); + Block block = (Block) blockloc.getWorld().getBlockAt(blockloc); + if (block.getType() == Material.NETHERRACK) { + + Object[][] checkList = { + { new Vector(0, -1, 0), Material.NETHERRACK }, + { new Vector(-1, -1, 0), Material.GOLD_BLOCK }, + { new Vector(-1, -1, -1), Material.GOLD_BLOCK }, + { new Vector(-1, -1, 1), Material.GOLD_BLOCK }, + { new Vector(1, -1, 0), Material.GOLD_BLOCK }, + { new Vector(1, -1, -1), Material.GOLD_BLOCK }, + { new Vector(1, -1, 1), Material.GOLD_BLOCK }, + { new Vector(0, -1, -1), Material.GOLD_BLOCK }, + { new Vector(0, -1, +1), Material.GOLD_BLOCK }, + { new Vector(0, 0, 1), Material.REDSTONE_TORCH_ON }, + { new Vector(0, 0, -1), Material.REDSTONE_TORCH_ON }, + { new Vector(1, 0, 0), Material.REDSTONE_TORCH_ON }, + { new Vector(-1, 0, 0), Material.REDSTONE_TORCH_ON } + }; + + boolean checkListCorrect = true; + + for (int i = 0; i < checkList.length; i++) { + + Vector v = (Vector) checkList[i][0]; + + Block checkBlock = block.getWorld().getBlockAt(blockloc.getBlockX() + v.getBlockX(), + blockloc.getBlockY() + v.getBlockY(), blockloc.getBlockZ() + v.getBlockZ()); + + if (checkBlock.getType() != (Material) checkList[i][1]) { + checkListCorrect = false; + break; + } + } + + if (checkListCorrect && HerobrineAI.getPluginCore().getConfigDB().UseTotem && !AICore.isTotemCalled) { + HerobrineAI.getPluginCore().getAICore().PlayerCallTotem(event.getPlayer()); + } + + } } } - - - } - @EventHandler - public void onBlockPlace(BlockPlaceEvent event){ - if (event.getBlock().getWorld()==Bukkit.getServer().getWorld("world_herobrineai_graveyard")){ + + if (event.getBlock().getWorld() == Bukkit.getServer().getWorld("world_herobrineai_graveyard")) { event.setCancelled(true); return; } - - + + } + + @EventHandler + public void onBlockBreak(BlockBreakEvent event) { + if (event.getBlock().getWorld() == Bukkit.getServer().getWorld("world_herobrineai_graveyard")) { + event.setCancelled(true); + return; + } else { + Heads h = (Heads) HerobrineAI.getPluginCore().getAICore().getCore(CoreType.HEADS); + ArrayList list = h.getHeadList(); + if (list.contains(event.getBlock())) { + event.setCancelled(true); + return; + } + } + + } + + @EventHandler + public void onBlockPlace(BlockPlaceEvent event) { + if (event.getBlock().getWorld() == Bukkit.getServer().getWorld("world_herobrineai_graveyard")) { + event.setCancelled(true); + return; + } + } } diff --git a/src/org/jakub1221/herobrineai/listeners/EntityListener.java b/src/org/jakub1221/herobrineai/listeners/EntityListener.java index 37584b8..50c0c69 100644 --- a/src/org/jakub1221/herobrineai/listeners/EntityListener.java +++ b/src/org/jakub1221/herobrineai/listeners/EntityListener.java @@ -7,8 +7,8 @@ import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.entity.Arrow; -import org.bukkit.entity.CreatureType; import org.bukkit.entity.Entity; +import org.bukkit.entity.EntityType; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.entity.Projectile; @@ -25,266 +25,290 @@ import org.bukkit.event.entity.EntityDeathEvent; import org.bukkit.event.entity.ProjectileHitEvent; import org.bukkit.inventory.ItemStack; import org.jakub1221.herobrineai.HerobrineAI; +import org.jakub1221.herobrineai.Utils; import org.jakub1221.herobrineai.AI.*; import org.jakub1221.herobrineai.AI.Core.CoreType; import org.jakub1221.herobrineai.entity.MobType; import org.jakub1221.herobrineai.misc.ItemName; import org.bukkit.event.entity.EntityTargetLivingEntityEvent; -public class EntityListener implements Listener{ - - private ItemStack itemInHand=null; +public class EntityListener implements Listener { + + private ItemStack itemInHand = null; private ArrayList equalsLore = new ArrayList(); private ArrayList equalsLoreS = new ArrayList(); private ArrayList getLore = new ArrayList(); - - public EntityListener(){ - equalsLore.add("Herobrine´s artifact"); + + public EntityListener() { + equalsLore.add("Herobrine artifact"); equalsLore.add("Bow of Teleporting"); - equalsLoreS.add("Herobrine´s artifact"); + equalsLoreS.add("Herobrine artifact"); equalsLoreS.add("Sword of Lighting"); } - - @SuppressWarnings("deprecation") - @EventHandler - public void onCreatureSpawn(CreatureSpawnEvent event){ - Entity entity = event.getEntity(); - CreatureType creatureType = event.getCreatureType(); - if (event.isCancelled()) return; - - if (creatureType == CreatureType.ZOMBIE){ - if (HerobrineAI.getPluginCore().getConfigDB().UseNPC_Warrior){ - if (new Random().nextInt(100)=HerobrineAI.HerobrineHP){ - - - int i=1; - for(i=1;i<=2500;i++){ - if (HerobrineAI.getPluginCore().getConfigDB().config.contains("config.Drops."+Integer.toString(i))==true){ - Random randgen = new Random(); - int chance=randgen.nextInt(100); - if (chance<=HerobrineAI.getPluginCore().getConfigDB().config.getInt("config.Drops."+Integer.toString(i)+".chance")){ - HerobrineAI.HerobrineNPC.getBukkitEntity().getLocation().getWorld().dropItemNaturally(HerobrineAI.HerobrineNPC.getBukkitEntity().getLocation(), new ItemStack(Material.getMaterial(i),HerobrineAI.getPluginCore().getConfigDB().config.getInt("config.Drops."+Integer.toString(i)+".count"))); - } + if (HerobrineAI.getPluginCore().getConfigDB().Killable == true + && HerobrineAI.getPluginCore().getAICore().getCoreTypeNow() != CoreType.GRAVEYARD) { + + if (dEvent.getDamager() instanceof Player) { + if (event.getDamage() >= HerobrineAI.HerobrineHP) { + + HerobrineDropItems(); + + HerobrineAI.getPluginCore().getAICore().CancelTarget(CoreType.ANY); + HerobrineAI.HerobrineHP = HerobrineAI.HerobrineMaxHP; + Player player = (Player) dEvent.getDamager(); + player.sendMessage(" " + HerobrineAI.getPluginCore().getConfigDB().DeathMessage); + + } else { + HerobrineAI.HerobrineHP -= event.getDamage(); + HerobrineAI.HerobrineNPC.HurtAnimation(); + AICore.log.info("HIT: " + event.getDamage()); + } + } else if (dEvent.getDamager() instanceof Projectile) { + + Arrow arrow = (Arrow) dEvent.getDamager(); + if (arrow.getShooter() instanceof Player) { + if (HerobrineAI.getPluginCore().getAICore().getCoreTypeNow() == CoreType.RANDOM_POSITION) { + HerobrineAI.getPluginCore().getAICore().CancelTarget(CoreType.ANY); + HerobrineAI.getPluginCore().getAICore().setAttackTarget((Player) arrow.getShooter()); + } else { + + if (event.getDamage() >= HerobrineAI.HerobrineHP) { + + HerobrineDropItems(); + + HerobrineAI.getPluginCore().getAICore().CancelTarget(CoreType.ANY); + HerobrineAI.HerobrineHP = HerobrineAI.HerobrineMaxHP; + Player player = (Player) arrow.getShooter(); + player.sendMessage(" " + HerobrineAI.getPluginCore().getConfigDB().DeathMessage); + + } else { + HerobrineAI.HerobrineHP -= event.getDamage(); + HerobrineAI.HerobrineNPC.HurtAnimation(); + AICore.log.info("HIT: " + event.getDamage()); + } + + } + } else { + if (HerobrineAI.getPluginCore().getAICore().getCoreTypeNow() == CoreType.RANDOM_POSITION) { + Location newloc = (Location) HerobrineAI.HerobrineNPC.getBukkitEntity().getLocation(); + newloc.setY(-20); + HerobrineAI.HerobrineNPC.moveTo(newloc); + HerobrineAI.getPluginCore().getAICore().CancelTarget(CoreType.ANY); } } - - HerobrineAI.getPluginCore().getAICore().CancelTarget(CoreType.ANY); - HerobrineAI.HerobrineHP=HerobrineAI.HerobrineMaxHP; - Player player = (Player) dEvent.getDamager(); - player.sendMessage(" "+HerobrineAI.getPluginCore().getConfigDB().DeathMessage); - - }else{HerobrineAI.HerobrineHP-=event.getDamage();HerobrineAI.HerobrineNPC.HurtAnimation();AICore.log.info("HIT: "+event.getDamage());} - }else if(dEvent.getDamager() instanceof Projectile){ - - Arrow arrow = (Arrow) dEvent.getDamager(); - if (arrow.getShooter() instanceof Player){ - if (HerobrineAI.getPluginCore().getAICore().getCoreTypeNow() == CoreType.RANDOM_POSITION){ - HerobrineAI.getPluginCore().getAICore().CancelTarget(CoreType.ANY); - HerobrineAI.getPluginCore().getAICore().setAttackTarget((Player) arrow.getShooter()); - }else{ - - if (event.getDamage()>=HerobrineAI.HerobrineHP){ - - - int i=1; - for(i=1;i<=2500;i++){ - if (HerobrineAI.getPluginCore().getConfigDB().config.contains("config.Drops."+Integer.toString(i))==true){ - Random randgen = new Random(); - int chance=randgen.nextInt(100); - if (chance<=HerobrineAI.getPluginCore().getConfigDB().config.getInt("config.Drops."+Integer.toString(i)+".chance")){ - HerobrineAI.HerobrineNPC.getBukkitEntity().getLocation().getWorld().dropItemNaturally(HerobrineAI.HerobrineNPC.getBukkitEntity().getLocation(), new ItemStack(Material.getMaterial(i),HerobrineAI.getPluginCore().getConfigDB().config.getInt("config.Drops."+Integer.toString(i)+".count"))); - } - } - } - - HerobrineAI.getPluginCore().getAICore().CancelTarget(CoreType.ANY); - HerobrineAI.HerobrineHP=HerobrineAI.HerobrineMaxHP; - Player player = (Player) arrow.getShooter(); - player.sendMessage(" "+HerobrineAI.getPluginCore().getConfigDB().DeathMessage); - - }else{HerobrineAI.HerobrineHP-=event.getDamage();HerobrineAI.HerobrineNPC.HurtAnimation();AICore.log.info("HIT: "+event.getDamage());} - - - } - }else{if (HerobrineAI.getPluginCore().getAICore().getCoreTypeNow() == CoreType.RANDOM_POSITION){ - Location newloc = (Location) HerobrineAI.HerobrineNPC.getBukkitEntity().getLocation(); - newloc.setY(-20); + } else { + if (HerobrineAI.getPluginCore().getAICore().getCoreTypeNow() == CoreType.RANDOM_POSITION) { + Location newloc = (Location) HerobrineAI.HerobrineNPC.getBukkitEntity().getLocation(); + newloc.setY(-20); HerobrineAI.HerobrineNPC.moveTo(newloc); HerobrineAI.getPluginCore().getAICore().CancelTarget(CoreType.ANY); - }} - }else{ - if (HerobrineAI.getPluginCore().getAICore().getCoreTypeNow() == CoreType.RANDOM_POSITION){ - Location newloc = (Location) HerobrineAI.HerobrineNPC.getBukkitEntity().getLocation(); - newloc.setY(-20); - HerobrineAI.HerobrineNPC.moveTo(newloc); - HerobrineAI.getPluginCore().getAICore().CancelTarget(CoreType.ANY); + } } } - } - - } - - - event.setCancelled(true); - event.setDamage(0); - return; - - - }else{ - if (event instanceof EntityDamageByEntityEvent){ - EntityDamageByEntityEvent dEvent = (EntityDamageByEntityEvent) event; - if (dEvent.getDamager() instanceof Player){ - Player player = (Player) dEvent.getDamager(); - if (player.getItemInHand() != null){ - if (player.getItemInHand().getType() == Material.DIAMOND_SWORD){ - if (ItemName.getLore(player.getItemInHand())!=null){ - itemInHand = player.getItemInHand(); - getLore=ItemName.getLore(itemInHand); - if (getLore.containsAll(equalsLoreS)){ - if (HerobrineAI.getPluginCore().getConfigDB().UseArtifactSword){ - if (new Random().nextBoolean()){ - player.getLocation().getWorld().strikeLightning(event.getEntity().getLocation()); - } - } - } - } - } + } - }else if (dEvent.getDamager() instanceof Zombie){ - Zombie zmb = (Zombie) dEvent.getDamager(); - if (zmb.getCustomName()=="Artifact Guardian" || zmb.getCustomName()=="Herobrine´s Warrior"){ - - dEvent.setDamage(dEvent.getDamage()*3); - } - - }else if (dEvent.getDamager() instanceof Skeleton){ - Skeleton zmb = (Skeleton) dEvent.getDamager(); - if (zmb.getCustomName()=="Demon"){ - - dEvent.setDamage(dEvent.getDamage()*3); - } - - } - } - if (event.getCause()!=null){ - if (event.getCause() == DamageCause.LIGHTNING){ - if (event.getEntity() instanceof Player){ - if (event.getEntity().getEntityId()!=HerobrineAI.HerobrineEntityID){ - Player player = (Player) event.getEntity(); - if (player.getItemInHand() != null){ - if (player.getItemInHand().getType() == Material.DIAMOND_SWORD){ - if (ItemName.getLore(player.getItemInHand())!=null){ - itemInHand = player.getItemInHand(); - getLore=ItemName.getLore(itemInHand); - if (getLore.containsAll(equalsLoreS)){ - if (HerobrineAI.getPluginCore().getConfigDB().UseArtifactSword){ - event.setDamage(0); - event.setCancelled(true); - return; + + event.setCancelled(true); + event.setDamage(0); + return; + + } else { + if (event instanceof EntityDamageByEntityEvent) { + EntityDamageByEntityEvent dEvent = (EntityDamageByEntityEvent) event; + if (dEvent.getDamager() instanceof Player) { + Player player = (Player) dEvent.getDamager(); + if (player.getItemInHand() != null) { + if (player.getItemInHand().getType() == Material.DIAMOND_SWORD) { + if (ItemName.getLore(player.getItemInHand()) != null) { + itemInHand = player.getItemInHand(); + getLore = ItemName.getLore(itemInHand); + if (getLore.containsAll(equalsLoreS)) { + if (HerobrineAI.getPluginCore().getConfigDB().UseArtifactSword) { + if (Utils.getRandomGen().nextBoolean()) { + player.getLocation().getWorld().strikeLightning(event.getEntity().getLocation()); + } + } } } - } - } } - - } + } + } else if (dEvent.getDamager() instanceof Zombie) { + Zombie zmb = (Zombie) dEvent.getDamager(); + if (zmb.getCustomName() == "Artifact Guardian" || zmb.getCustomName() == "Herobrine�s Warrior") { + + dEvent.setDamage(dEvent.getDamage() * 3); + } + + } else if (dEvent.getDamager() instanceof Skeleton) { + Skeleton zmb = (Skeleton) dEvent.getDamager(); + if (zmb.getCustomName() == "Demon") { + + dEvent.setDamage(dEvent.getDamage() * 3); + } + } } + if (event.getCause() != null) { + if (event.getCause() == DamageCause.LIGHTNING) { + if (event.getEntity() instanceof Player) { + if (event.getEntity().getEntityId() != HerobrineAI.HerobrineEntityID) { + Player player = (Player) event.getEntity(); + if (player.getItemInHand() != null) { + if (player.getItemInHand().getType() == Material.DIAMOND_SWORD) { + if (ItemName.getLore(player.getItemInHand()) != null) { + itemInHand = player.getItemInHand(); + getLore = ItemName.getLore(itemInHand); + if (getLore.containsAll(equalsLoreS)) { + if (HerobrineAI.getPluginCore().getConfigDB().UseArtifactSword) { + event.setDamage(0); + event.setCancelled(true); + return; + } + } + } + } + } + + } + } + } } } } + protected void HerobrineDropItems(){ + for (int i = 1; i <= 2500; i++) { + if (HerobrineAI.getPluginCore().getConfigDB().config.contains("config.Drops." + Integer.toString(i)) == true) { + + Random randgen = Utils.getRandomGen(); + + int chance = randgen.nextInt(100); + + int requiredRoll = HerobrineAI.getPluginCore().getConfigDB().config.getInt("config.Drops." + Integer.toString(i) + ".chance"); + + if (chance <= requiredRoll) { + + int itsAmount = HerobrineAI.getPluginCore().getConfigDB().config.getInt("config.Drops." + Integer.toString(i)+ ".count"); + + ItemStack its = new ItemStack(Material.getMaterial(i), itsAmount); + + HerobrineAI.HerobrineNPC.getBukkitEntity().getLocation().getWorld().dropItemNaturally( + HerobrineAI.HerobrineNPC.getBukkitEntity().getLocation(), + its); + } + } + } + } + } diff --git a/src/org/jakub1221/herobrineai/listeners/InventoryListener.java b/src/org/jakub1221/herobrineai/listeners/InventoryListener.java index 6114cc3..7a4688b 100644 --- a/src/org/jakub1221/herobrineai/listeners/InventoryListener.java +++ b/src/org/jakub1221/herobrineai/listeners/InventoryListener.java @@ -12,43 +12,52 @@ import org.jakub1221.herobrineai.AI.Core.CoreType; import org.jakub1221.herobrineai.HerobrineAI; import org.jakub1221.herobrineai.misc.ItemName; -public class InventoryListener implements Listener{ +public class InventoryListener implements Listener { Logger log = Logger.getLogger("Minecraft"); - + @EventHandler - public void onInventoryClose(InventoryCloseEvent event){ - if (event.getInventory().getType() == InventoryType.CHEST){ - - Object[] data = {event.getPlayer(),event.getInventory()}; - - HerobrineAI.getPluginCore().getAICore().getCore(CoreType.BOOK).RunCore(data); - - if (new Random().nextInt(100)>97){ - if (HerobrineAI.getPluginCore().getConfigDB().UseHeads){ - if (event.getInventory().firstEmpty()!=-1){ - event.getInventory().setItem(event.getInventory().firstEmpty(),ItemName.CreateSkull(event.getPlayer().getName())); + public void onInventoryClose(InventoryCloseEvent event) { + if (event.getInventory().getType() == InventoryType.CHEST) { + + Object[] data = { event.getPlayer(), event.getInventory() }; + + HerobrineAI.getPluginCore().getAICore().getCore(CoreType.BOOK).RunCore(data); + + if (new Random().nextInt(100) > 97) { + + if (HerobrineAI.getPluginCore().getConfigDB().UseHeads) { + if (event.getInventory().firstEmpty() != -1) { + if (HerobrineAI.getPluginCore().getAICore().getResetLimits().isHead()) { + event.getInventory().setItem(event.getInventory().firstEmpty(), + ItemName.CreateSkull(event.getPlayer().getName())); + } + } + } } } } - } - } - - @EventHandler - public void onInventoryOpen(InventoryOpenEvent event){ + + @EventHandler + public void onInventoryOpen(InventoryOpenEvent event) { + + if (event.getInventory().getType() == InventoryType.CHEST + || event.getInventory().getType() == InventoryType.FURNACE + || event.getInventory().getType() == InventoryType.WORKBENCH) { - - if (event.getInventory().getType() == InventoryType.CHEST || event.getInventory().getType() == InventoryType.FURNACE || event.getInventory().getType() == InventoryType.WORKBENCH){ - if (HerobrineAI.getPluginCore().getConfigDB().useWorlds.contains(event.getPlayer().getLocation().getWorld().getName())){ - if (HerobrineAI.getPluginCore().getConfigDB().PlaceSigns==true && HerobrineAI.getPluginCore().getSupport().checkSigns(event.getPlayer().getLocation())){ - Object[] data = {event.getPlayer().getLocation(),event.getPlayer().getLocation()}; - HerobrineAI.getPluginCore().getAICore().getCore(CoreType.SIGNS).RunCore(data); - } + if (HerobrineAI.getPluginCore().getConfigDB().useWorlds.contains(event.getPlayer().getLocation().getWorld().getName())) { + + if (HerobrineAI.getPluginCore().getConfigDB().PlaceSigns == true + && HerobrineAI.getPluginCore().getSupport().checkSigns(event.getPlayer().getLocation())) { + + if (HerobrineAI.getPluginCore().getAICore().getResetLimits().isSign()) { + Object[] data = { event.getPlayer().getLocation(), event.getPlayer().getLocation() }; + HerobrineAI.getPluginCore().getAICore().getCore(CoreType.SIGNS).RunCore(data); + } } } - } - - - + + } + } diff --git a/src/org/jakub1221/herobrineai/listeners/PlayerListener.java b/src/org/jakub1221/herobrineai/listeners/PlayerListener.java index 5ce3f71..0d3adcc 100644 --- a/src/org/jakub1221/herobrineai/listeners/PlayerListener.java +++ b/src/org/jakub1221/herobrineai/listeners/PlayerListener.java @@ -1,7 +1,6 @@ package org.jakub1221.herobrineai.listeners; import java.util.ArrayList; -import java.util.Random; import org.bukkit.Bukkit; import org.bukkit.ChatColor; @@ -9,7 +8,7 @@ import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.World; import org.bukkit.block.Jukebox; -import org.bukkit.craftbukkit.v1_5_R2.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.event.EventPriority; @@ -25,191 +24,230 @@ import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.inventory.ItemStack; import org.jakub1221.herobrineai.HerobrineAI; +import org.jakub1221.herobrineai.Utils; import org.jakub1221.herobrineai.AI.AICore; import org.jakub1221.herobrineai.AI.Core.CoreType; import org.jakub1221.herobrineai.misc.ItemName; -public class PlayerListener implements Listener{ - - private ItemStack itemInHand=null; +public class PlayerListener implements Listener { + private ArrayList equalsLoreS = new ArrayList(); private ArrayList equalsLoreA = new ArrayList(); - private ArrayList getLore = new ArrayList(); private ArrayList LivingEntities = new ArrayList(); private Location le_loc = null; private Location p_loc = null; private long timestamp = 0; private boolean canUse = false; - - public PlayerListener(){ - equalsLoreS.add("Herobrine´s artifact"); + + public PlayerListener() { + equalsLoreS.add("Herobrine artifact"); equalsLoreS.add("Sword of Lighting"); - equalsLoreA.add("Herobrine´s artifact"); + equalsLoreA.add("Herobrine artifact"); equalsLoreA.add("Apple of Death"); } - - @EventHandler - public void onPlayerInteract(PlayerInteractEvent event){ - if (event.getAction() == Action.LEFT_CLICK_BLOCK || event.getAction() == Action.RIGHT_CLICK_BLOCK){ - if (event.getClickedBlock()!=null && event.getPlayer().getItemInHand()!=null){ - ItemStack itemInHand = event.getPlayer().getItemInHand(); - if (event.getPlayer().getItemInHand().getType()!=null){ - if (itemInHand.getType() == Material.DIAMOND_SWORD || itemInHand.getType() == Material.GOLDEN_APPLE){ - if (ItemName.getLore(itemInHand)!=null){ - if (ItemName.getLore(itemInHand).containsAll(equalsLoreS) && HerobrineAI.getPluginCore().getConfigDB().UseArtifactSword){ - if (new Random().nextBoolean()){ - event.getPlayer().getLocation().getWorld().strikeLightning(event.getClickedBlock().getLocation()); - } - }else if (ItemName.getLore(itemInHand).containsAll(equalsLoreA) && HerobrineAI.getPluginCore().getConfigDB().UseArtifactApple){ - timestamp = System.currentTimeMillis() / 1000; - canUse=false; - if (HerobrineAI.getPluginCore().PlayerApple.containsKey(event.getPlayer())){ - if (HerobrineAI.getPluginCore().PlayerApple.get(event.getPlayer()) < timestamp){ - HerobrineAI.getPluginCore().PlayerApple.remove(event.getPlayer()); - canUse=true; - }else{canUse=false;} - }else{canUse=true;} - - if (canUse==true){ - event.getPlayer().getWorld().createExplosion(event.getPlayer().getLocation(), 0F); - LivingEntities = (ArrayList) event.getPlayer().getLocation().getWorld().getLivingEntities(); - HerobrineAI.getPluginCore().PlayerApple.put(event.getPlayer(), timestamp+60); - for (int i=0;i<=LivingEntities.size()-1;i++){ - - if (LivingEntities.get(i) instanceof Player || LivingEntities.get(i).getEntityId() == HerobrineAI.HerobrineEntityID){}else{ - le_loc=LivingEntities.get(i).getLocation(); - p_loc=event.getPlayer().getLocation(); - if (le_loc.getBlockX() < p_loc.getBlockX()+20 && le_loc.getBlockX() > p_loc.getBlockX()-20){ - if (le_loc.getBlockY() < p_loc.getBlockY()+10 && le_loc.getBlockY() > p_loc.getBlockY()-10){ - if (le_loc.getBlockZ() < p_loc.getBlockZ()+20 && le_loc.getBlockZ() > p_loc.getBlockZ()-20){ - event.getPlayer().getWorld().createExplosion(LivingEntities.get(i).getLocation(), 0F); - LivingEntities.get(i).damage(10000); - } - } - } - - } - - } - - }else{ - event.getPlayer().sendMessage(ChatColor.RED+"Apple of Death is recharging!"); - } - } - } - } - } - } - } - - - if (event.getClickedBlock()!=null){ - if (event.getPlayer().getItemInHand()!=null){ - if (event.getClickedBlock().getType()==Material.JUKEBOX){ - ItemStack item = event.getPlayer().getItemInHand(); - Jukebox block = (Jukebox) event.getClickedBlock().getState(); - if (!block.isPlaying()){ - if (item.getType()==Material.getMaterial(2266)){ - HerobrineAI.getPluginCore().getAICore(); - if (!AICore.isDiscCalled){ - final Player player = event.getPlayer(); - HerobrineAI.getPluginCore().getAICore(); - AICore.isDiscCalled=true; - HerobrineAI.getPluginCore().getAICore().CancelTarget(CoreType.ANY); - Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(AICore.plugin, new Runnable() { - public void run() { - HerobrineAI.getPluginCore().getAICore().callByDisc(player); - } - }, 1 * 50L); - } - } - } - } - } - } - - } - - @EventHandler - public void onPlayerEnterBed(PlayerBedEnterEvent event){ - if (new Random().nextInt(100)>75){ - Player player = event.getPlayer(); - ((CraftPlayer) player).getHandle().a(true, false, false); - HerobrineAI.getPluginCore().getAICore().playerBedEnter(player); - } - } - - @EventHandler(priority = EventPriority.HIGHEST) - public void onPlayerQuit(PlayerQuitEvent event){ - if(event.getPlayer().getEntityId()!=HerobrineAI.HerobrineEntityID){ - if (HerobrineAI.getPluginCore().getAICore().PlayerTarget==event.getPlayer() && HerobrineAI.getPluginCore().getAICore().getCoreTypeNow() == CoreType.GRAVEYARD && event.getPlayer().getLocation().getWorld()==Bukkit.getServer().getWorld("world_herobrineai_graveyard") && HerobrineAI.getPluginCore().getAICore().isTarget){ - if (new Random().nextBoolean()){ - event.getPlayer().teleport( HerobrineAI.getPluginCore().getAICore().getGraveyard().getSavedLocation()); - - } - } - } - } - - @EventHandler(priority = EventPriority.HIGHEST) - public void onPlayerKick(PlayerKickEvent event){ - if (event.getPlayer().getEntityId()==HerobrineAI.HerobrineEntityID){ - event.setCancelled(true); - return; - } - } - - @EventHandler(priority = EventPriority.HIGHEST) - public void onPlayerTeleport(PlayerTeleportEvent event){ - if(event.getPlayer().getEntityId()==HerobrineAI.HerobrineEntityID){ - if (event.getFrom().getWorld()!=event.getTo().getWorld()){ - HerobrineAI.getPluginCore().HerobrineRemove(); - HerobrineAI.getPluginCore().HerobrineSpawn(event.getTo()); - event.setCancelled(true); - return; - } - - if (HerobrineAI.getPluginCore().getAICore().getCoreTypeNow() == CoreType.RANDOM_POSITION){ - if (HerobrineAI.HerobrineNPC.getEntity().getBukkitEntity().getLocation().getBlockX() > HerobrineAI.getPluginCore().getConfigDB().WalkingModeXRadius){ - if (HerobrineAI.HerobrineNPC.getEntity().getBukkitEntity().getLocation().getBlockX() < (-HerobrineAI.getPluginCore().getConfigDB().WalkingModeXRadius)){ - if (HerobrineAI.HerobrineNPC.getEntity().getBukkitEntity().getLocation().getBlockZ() > HerobrineAI.getPluginCore().getConfigDB().WalkingModeZRadius){ - if (HerobrineAI.HerobrineNPC.getEntity().getBukkitEntity().getLocation().getBlockZ() < (-HerobrineAI.getPluginCore().getConfigDB().WalkingModeZRadius)){ - HerobrineAI.getPluginCore().getAICore().CancelTarget(CoreType.RANDOM_POSITION); - HerobrineAI.HerobrineNPC.moveTo(new Location(Bukkit.getServer().getWorlds().get(0),0,-20,0)); - } - } - } - } - } - } - } - - @EventHandler - public void onPlayerDeathEvent(PlayerDeathEvent event){ - if (event.getEntity().getEntityId() == HerobrineAI.HerobrineEntityID){ - event.setDeathMessage(""); - - HerobrineAI.getPluginCore().HerobrineRemove(); - Location nowloc = new Location((World) Bukkit.getServer().getWorlds().get(0),(float) 0,(float) -20,(float) 0); - nowloc.setYaw((float) 1); - nowloc.setPitch((float) 1); - HerobrineAI.getPluginCore().HerobrineSpawn(nowloc); - } - } - @EventHandler - public void onPlayerMoveEvent(PlayerMoveEvent event){ - if (event.getPlayer().getEntityId()!=HerobrineAI.HerobrineEntityID){ - if (event.getPlayer().getWorld()==Bukkit.getServer().getWorld("world_herobrineai_graveyard")){ - Player player = (Player) event.getPlayer(); - player.teleport(new Location(Bukkit.getServer().getWorld("world_herobrineai_graveyard"),-2.49,4,10.69,(float)-179.85,(float) 0.44999)); + public void onPlayerInteract(PlayerInteractEvent event) { + + if (event.getAction() == Action.LEFT_CLICK_BLOCK || event.getAction() == Action.RIGHT_CLICK_BLOCK) { + if (event.getClickedBlock() != null && event.getPlayer().getItemInHand() != null) { + + ItemStack itemInHand = event.getPlayer().getItemInHand(); + if (event.getPlayer().getItemInHand().getType() != null) { + + if (itemInHand.getType() == Material.DIAMOND_SWORD + || itemInHand.getType() == Material.GOLDEN_APPLE) { + + if (ItemName.getLore(itemInHand) != null) { + + if (ItemName.getLore(itemInHand).containsAll(equalsLoreS) + && HerobrineAI.getPluginCore().getConfigDB().UseArtifactSword) { + + if (Utils.getRandomGen().nextBoolean()) { + event.getPlayer().getLocation().getWorld() + .strikeLightning(event.getClickedBlock().getLocation()); + } + + } else if (ItemName.getLore(itemInHand).containsAll(equalsLoreA) + && HerobrineAI.getPluginCore().getConfigDB().UseArtifactApple) { + + timestamp = System.currentTimeMillis() / 1000; + canUse = false; + + if (HerobrineAI.getPluginCore().PlayerApple.containsKey(event.getPlayer())) { + if (HerobrineAI.getPluginCore().PlayerApple.get(event.getPlayer()) < timestamp) { + HerobrineAI.getPluginCore().PlayerApple.remove(event.getPlayer()); + canUse = true; + } else { + canUse = false; + } + } else { + canUse = true; + } + + if (canUse == true) { + + event.getPlayer().getWorld().createExplosion(event.getPlayer().getLocation(), 0F); + LivingEntities = (ArrayList) event.getPlayer().getLocation() + .getWorld().getLivingEntities(); + HerobrineAI.getPluginCore().PlayerApple.put(event.getPlayer(), timestamp + 60); + + for (int i = 0; i <= LivingEntities.size() - 1; i++) { + + if (LivingEntities.get(i) instanceof Player || LivingEntities.get(i) + .getEntityId() == HerobrineAI.HerobrineEntityID) { + } else { + le_loc = LivingEntities.get(i).getLocation(); + p_loc = event.getPlayer().getLocation(); + + if (le_loc.getBlockX() < p_loc.getBlockX() + 20 + && le_loc.getBlockX() > p_loc.getBlockX() - 20) { + + if (le_loc.getBlockY() < p_loc.getBlockY() + 10 + && le_loc.getBlockY() > p_loc.getBlockY() - 10) { + + if (le_loc.getBlockZ() < p_loc.getBlockZ() + 20 + && le_loc.getBlockZ() > p_loc.getBlockZ() - 20) { + + event.getPlayer().getWorld().createExplosion(LivingEntities.get(i).getLocation(), 0F); + LivingEntities.get(i).damage(10000); + } + } + } + } + } + } else { + event.getPlayer().sendMessage(ChatColor.RED + "Apple of Death is recharging!"); + } + } + } + } + } + } + } + + if (event.getClickedBlock() != null) { + if (event.getPlayer().getItemInHand() != null) { + if (event.getClickedBlock().getType() == Material.JUKEBOX) { + + ItemStack item = event.getPlayer().getItemInHand(); + Jukebox block = (Jukebox) event.getClickedBlock().getState(); + + if (!block.isPlaying()) { + if (item.getType() == Material.getMaterial(2266)) { + + HerobrineAI.getPluginCore().getAICore(); + + if (!AICore.isDiscCalled) { + + final Player player = event.getPlayer(); + HerobrineAI.getPluginCore().getAICore(); + AICore.isDiscCalled = true; + HerobrineAI.getPluginCore().getAICore().CancelTarget(CoreType.ANY); + + Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(AICore.plugin, + new Runnable() { + public void run() { + HerobrineAI.getPluginCore().getAICore().callByDisc(player); + } + }, 1 * 50L); + } + } + } + } + } + } + + } + + @EventHandler + public void onPlayerEnterBed(PlayerBedEnterEvent event) { + if (Utils.getRandomGen().nextInt(100) > 75) { + Player player = event.getPlayer(); + ((CraftPlayer) player).getHandle().a(true, false, false); + HerobrineAI.getPluginCore().getAICore().playerBedEnter(player); } } - - - + + @EventHandler(priority = EventPriority.HIGHEST) + + public void onPlayerQuit(PlayerQuitEvent event) { + if (event.getPlayer().getEntityId() != HerobrineAI.HerobrineEntityID) { + + if (HerobrineAI.getPluginCore().getAICore().PlayerTarget == event.getPlayer() + && HerobrineAI.getPluginCore().getAICore().getCoreTypeNow() == CoreType.GRAVEYARD + && event.getPlayer().getLocation().getWorld() == Bukkit.getServer() + .getWorld("world_herobrineai_graveyard") + && HerobrineAI.getPluginCore().getAICore().isTarget) { + + if (Utils.getRandomGen().nextBoolean()) { + event.getPlayer() + .teleport(HerobrineAI.getPluginCore().getAICore().getGraveyard().getSavedLocation()); + } + } + } + } + + @EventHandler(priority = EventPriority.HIGHEST) + public void onPlayerKick(PlayerKickEvent event) { + if (event.getPlayer().getEntityId() == HerobrineAI.HerobrineEntityID) { + event.setCancelled(true); + return; + } + } + + @EventHandler(priority = EventPriority.HIGHEST) + public void onPlayerTeleport(PlayerTeleportEvent event) { + + if (event.getPlayer().getEntityId() == HerobrineAI.HerobrineEntityID) { + if (event.getFrom().getWorld() != event.getTo().getWorld()) { + HerobrineAI.getPluginCore().HerobrineRemove(); + HerobrineAI.getPluginCore().HerobrineSpawn(event.getTo()); + event.setCancelled(true); + return; + } + + if (HerobrineAI.getPluginCore().getAICore().getCoreTypeNow() == CoreType.RANDOM_POSITION) { + + Location herobrineLocation = HerobrineAI.HerobrineNPC.getEntity().getBukkitEntity().getLocation(); + + if (herobrineLocation.getBlockX() > HerobrineAI.getPluginCore().getConfigDB().WalkingModeXRadius + && herobrineLocation.getBlockX() < -HerobrineAI.getPluginCore().getConfigDB().WalkingModeXRadius + && herobrineLocation.getBlockZ() > HerobrineAI.getPluginCore().getConfigDB().WalkingModeZRadius + && herobrineLocation.getBlockZ() < -HerobrineAI.getPluginCore().getConfigDB().WalkingModeZRadius) { + + HerobrineAI.getPluginCore().getAICore().CancelTarget(CoreType.RANDOM_POSITION); + HerobrineAI.HerobrineNPC.moveTo(new Location(Bukkit.getServer().getWorlds().get(0), 0, -20, 0)); + + } + } + } + } + + @EventHandler + public void onPlayerDeathEvent(PlayerDeathEvent event) { + if (event.getEntity().getEntityId() == HerobrineAI.HerobrineEntityID) { + event.setDeathMessage(""); + + HerobrineAI.getPluginCore().HerobrineRemove(); + + Location nowloc = new Location((World) Bukkit.getServer().getWorlds().get(0), 0, -20.f, 0); + nowloc.setYaw(1.f); + nowloc.setPitch(1.f); + HerobrineAI.getPluginCore().HerobrineSpawn(nowloc); + } + } + + @EventHandler + public void onPlayerMoveEvent(PlayerMoveEvent event) { + if (event.getPlayer().getEntityId() != HerobrineAI.HerobrineEntityID) { + if (event.getPlayer().getWorld() == Bukkit.getServer().getWorld("world_herobrineai_graveyard")) { + Player player = (Player) event.getPlayer(); + player.teleport(new Location(Bukkit.getServer().getWorld("world_herobrineai_graveyard"), -2.49f, 4.f, + 10.69f, -179.85f, 0.44999f)); + } + } + } - } diff --git a/src/org/jakub1221/herobrineai/listeners/WorldListener.java b/src/org/jakub1221/herobrineai/listeners/WorldListener.java index 1a840a8..357f7f0 100644 --- a/src/org/jakub1221/herobrineai/listeners/WorldListener.java +++ b/src/org/jakub1221/herobrineai/listeners/WorldListener.java @@ -31,7 +31,7 @@ public class WorldListener implements Listener{ if (HerobrineAI.getPluginCore().getConfigDB().BuildPyramids==true){ - if (new Random().nextInt(15)==1){ + if (new Random().nextInt(30)==4){ Object[] data = {event.getChunk()}; HerobrineAI.getPluginCore().getAICore().getCore(CoreType.PYRAMID).RunCore(data); } diff --git a/src/org/jakub1221/herobrineai/misc/BlockChanger.java b/src/org/jakub1221/herobrineai/misc/BlockChanger.java index 483fcfd..c73e6fc 100644 --- a/src/org/jakub1221/herobrineai/misc/BlockChanger.java +++ b/src/org/jakub1221/herobrineai/misc/BlockChanger.java @@ -11,57 +11,96 @@ import org.bukkit.block.Skull; public class BlockChanger { - public static BlockFace getPlayerBlockFace(Location loc) - { - - BlockFace dir = null; - float y = loc.getYaw(); - if( y < 0 ){y += 360;} - y %= 360; - int i = (int)((y+8) / 22.5); - switch(i){ - case 0: dir = BlockFace.WEST; break; - case 1: dir = BlockFace.WEST_NORTH_WEST; break; - case 2: dir = BlockFace.NORTH_WEST; break; - case 3: dir = BlockFace.NORTH_NORTH_WEST; break; - case 4: dir = BlockFace.NORTH; break; - case 5: dir = BlockFace.NORTH_NORTH_EAST; break; - case 6: dir = BlockFace.NORTH_EAST; break; - case 7: dir = BlockFace.EAST_NORTH_EAST; break; - case 8: dir = BlockFace.EAST; break; - case 9: dir = BlockFace.EAST_SOUTH_EAST; break; - case 10: dir = BlockFace.SOUTH_EAST; break; - case 11: dir = BlockFace.SOUTH_SOUTH_EAST; break; - case 12: dir = BlockFace.SOUTH; break; - case 13: dir = BlockFace.SOUTH_SOUTH_WEST; break; - case 14: dir = BlockFace.SOUTH_WEST; break; - case 15: dir = BlockFace.WEST_SOUTH_WEST; break; - default: dir = BlockFace.WEST; break; - } - - return dir; - - } - - public static void PlaceSkull(Location loc, String name){ - int chance = new Random().nextInt(7); - Block b = loc.getBlock(); - b.setType(Material.SKULL); - - Skull skull = (Skull)b.getState(); - skull.setSkullType(SkullType.PLAYER); - skull.setOwner(name); + public static BlockFace getPlayerBlockFace(Location loc) { - BlockFace bface = BlockFace.EAST; - - if (chance==0){bface=BlockFace.WEST;} - else if (chance==1){bface=BlockFace.EAST;} - else if (chance==2){bface=BlockFace.SOUTH;} - else if (chance==3){bface=BlockFace.NORTH;} - - skull.setRawData((byte) bface.ordinal()); - skull.update(true); - - + BlockFace dir = null; + float y = loc.getYaw(); + if (y < 0) { + y += 360; } + y %= 360; + int i = (int) ((y + 8) / 22.5); + switch (i) { + case 0: + dir = BlockFace.WEST; + break; + case 1: + dir = BlockFace.WEST_NORTH_WEST; + break; + case 2: + dir = BlockFace.NORTH_WEST; + break; + case 3: + dir = BlockFace.NORTH_NORTH_WEST; + break; + case 4: + dir = BlockFace.NORTH; + break; + case 5: + dir = BlockFace.NORTH_NORTH_EAST; + break; + case 6: + dir = BlockFace.NORTH_EAST; + break; + case 7: + dir = BlockFace.EAST_NORTH_EAST; + break; + case 8: + dir = BlockFace.EAST; + break; + case 9: + dir = BlockFace.EAST_SOUTH_EAST; + break; + case 10: + dir = BlockFace.SOUTH_EAST; + break; + case 11: + dir = BlockFace.SOUTH_SOUTH_EAST; + break; + case 12: + dir = BlockFace.SOUTH; + break; + case 13: + dir = BlockFace.SOUTH_SOUTH_WEST; + break; + case 14: + dir = BlockFace.SOUTH_WEST; + break; + case 15: + dir = BlockFace.WEST_SOUTH_WEST; + break; + default: + dir = BlockFace.WEST; + break; + } + + return dir; + + } + + public static void PlaceSkull(Location loc, String name) { + int chance = new Random().nextInt(7); + Block b = loc.getBlock(); + b.setType(Material.SKULL); + + Skull skull = (Skull) b.getState(); + skull.setSkullType(SkullType.PLAYER); + skull.setOwner(name); + + BlockFace bface = BlockFace.EAST; + + if (chance == 0) { + bface = BlockFace.WEST; + } else if (chance == 1) { + bface = BlockFace.EAST; + } else if (chance == 2) { + bface = BlockFace.SOUTH; + } else if (chance == 3) { + bface = BlockFace.NORTH; + } + + skull.setRawData((byte) bface.ordinal()); + skull.update(true); + + } } diff --git a/src/org/jakub1221/herobrineai/misc/CustomID.java b/src/org/jakub1221/herobrineai/misc/CustomID.java index 9ee4ac9..872a361 100644 --- a/src/org/jakub1221/herobrineai/misc/CustomID.java +++ b/src/org/jakub1221/herobrineai/misc/CustomID.java @@ -6,58 +6,58 @@ public class CustomID { private int ID; private int DATA; - - public CustomID(String _data){ - if (_data!=null){ - if (!_data.equals("0")){ - if (_data!=null && _data.length()>0){ - String[] both = _data.split(":"); - ID=Integer.parseInt(both[0]); - if (both.length>1){ - DATA=Integer.parseInt(both[1]); - }else{ - DATA=0; - } - }else{ - ID=0; - DATA=0; - } - }else{ - ID=0; - DATA=0; - } - }else{ - ID=0; - DATA=0; + + public CustomID(String _data) { + if (_data != null) { + if (!_data.equals("0")) { + if (_data != null && _data.length() > 0) { + String[] both = _data.split(":"); + ID = Integer.parseInt(both[0]); + if (both.length > 1) { + DATA = Integer.parseInt(both[1]); + } else { + DATA = 0; + } + } else { + ID = 0; + DATA = 0; + } + } else { + ID = 0; + DATA = 0; + } + } else { + ID = 0; + DATA = 0; } } - - public int getID(){ + + public int getID() { return ID; } - - public int getDATA(){ + + public int getDATA() { return DATA; } - - public boolean isData(){ - if (DATA>0){ + + public boolean isData() { + if (DATA > 0) { return true; } return false; } - - public ItemStack getItemStack(){ + + public ItemStack getItemStack() { ItemStack item = null; - if (ID!=0){ - if (DATA>0){ - item = new ItemStack(ID,1,(byte) DATA); - }else{ - item = new ItemStack(ID); + if (ID != 0) { + if (DATA > 0) { + item = new ItemStack(ID, 1, (byte) DATA); + } else { + item = new ItemStack(ID); + } } - } - return item; - + return item; + } - + } diff --git a/src/org/jakub1221/herobrineai/misc/ItemName.java b/src/org/jakub1221/herobrineai/misc/ItemName.java index b5bf58b..d91397d 100644 --- a/src/org/jakub1221/herobrineai/misc/ItemName.java +++ b/src/org/jakub1221/herobrineai/misc/ItemName.java @@ -1,6 +1,5 @@ package org.jakub1221.herobrineai.misc; - import java.util.ArrayList; import org.bukkit.ChatColor; @@ -14,50 +13,56 @@ import org.bukkit.inventory.meta.SkullMeta; public class ItemName { - public static ItemMeta meta=null; - public static SkullMeta skullmeta=null; - - public static ItemStack colorLeatherArmor(ItemStack i,Color color){ - + public static ItemMeta meta = null; + public static SkullMeta skullmeta = null; + + public static ItemStack colorLeatherArmor(ItemStack i, Color color) { + LeatherArmorMeta la_meta = (LeatherArmorMeta) i.getItemMeta(); la_meta.setColor(color); i.setItemMeta(la_meta); - + return i; } - public static ItemStack setName(ItemStack item, String name){ - meta=item.getItemMeta(); + + public static ItemStack setName(ItemStack item, String name) { + meta = item.getItemMeta(); meta.setDisplayName(name); item.setItemMeta(meta); return item; } - public static ItemStack setLore(ItemStack item, ArrayList lore){ - meta=item.getItemMeta(); + + public static ItemStack setLore(ItemStack item, ArrayList lore) { + meta = item.getItemMeta(); meta.setLore(lore); item.setItemMeta(meta); return item; } - public static ItemStack setNameAndLore(ItemStack item, String name,ArrayList lore){ - meta=item.getItemMeta(); + + public static ItemStack setNameAndLore(ItemStack item, String name, ArrayList lore) { + meta = item.getItemMeta(); meta.setDisplayName(name); meta.setLore(lore); item.setItemMeta(meta); return item; } - public static ArrayList getLore(ItemStack item){ + + public static ArrayList getLore(ItemStack item) { return (ArrayList) item.getItemMeta().getLore(); } - public static String getName(ItemStack item){ + + public static String getName(ItemStack item) { return item.getItemMeta().getDisplayName(); } - public static ItemStack CreateSkull(String data){ - ItemStack skull = new ItemStack(Material.SKULL_ITEM, 1, (short)SkullType.PLAYER.ordinal()); - SkullMeta skullmeta = (SkullMeta)skull.getItemMeta(); + + public static ItemStack CreateSkull(String data) { + ItemStack skull = new ItemStack(Material.SKULL_ITEM, 1, (short) SkullType.PLAYER.ordinal()); + SkullMeta skullmeta = (SkullMeta) skull.getItemMeta(); skullmeta.setOwner(data); - - skullmeta.setDisplayName(ChatColor.RESET+data); + + skullmeta.setDisplayName(ChatColor.RESET + data); skull.setItemMeta(skullmeta); return skull; } - + } \ No newline at end of file diff --git a/src/org/jakub1221/herobrineai/misc/StructureLoader.java b/src/org/jakub1221/herobrineai/misc/StructureLoader.java index 323fcfd..b3f2c43 100644 --- a/src/org/jakub1221/herobrineai/misc/StructureLoader.java +++ b/src/org/jakub1221/herobrineai/misc/StructureLoader.java @@ -10,38 +10,45 @@ import org.bukkit.configuration.file.YamlConfiguration; public class StructureLoader { - private int current=0; - private int length=0; + private int current = 0; + private int length = 0; private InputStream inp; private YamlConfiguration file; - - public StructureLoader(InputStream in){ - inp=in; - + + public StructureLoader(InputStream in) { + inp = in; + file = new YamlConfiguration(); - + try { file.load(inp); } catch (FileNotFoundException e) { - + e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (InvalidConfigurationException e) { - + + e.printStackTrace(); + } + + try { + inp.close(); + } catch (IOException e) { e.printStackTrace(); } } - - public void Build(World world,int MainX,int MainY,int MainZ){ - - length=file.getInt("DATA.LENGTH")-1; - for (current=0;current<=length;current++){ - world.getBlockAt(MainX+file.getInt("DATA."+current+".X"), MainY+file.getInt("DATA."+current+".Y"), MainZ+file.getInt("DATA."+current+".Z")).setTypeIdAndData(+file.getInt("DATA."+current+".ID"),(byte) +file.getInt("DATA."+current+".DATA"),false); + + public void Build(World world, int MainX, int MainY, int MainZ) { + + length = file.getInt("DATA.LENGTH") - 1; + for (current = 0; current <= length; current++) { + world.getBlockAt(MainX + file.getInt("DATA." + current + ".X"), + MainY + file.getInt("DATA." + current + ".Y"), MainZ + file.getInt("DATA." + current + ".Z")) + .setTypeIdAndData(+file.getInt("DATA." + current + ".ID"),(byte) +file.getInt("DATA." + current + ".DATA"), false); } - - + } - + } diff --git a/src/org/jakub1221/herobrineai/support/_Factions.java b/src/org/jakub1221/herobrineai/support/_Factions.java new file mode 100644 index 0000000..78e1810 --- /dev/null +++ b/src/org/jakub1221/herobrineai/support/_Factions.java @@ -0,0 +1,17 @@ +package org.jakub1221.herobrineai.support; + +import org.bukkit.Bukkit; +import org.bukkit.Location; + +import com.massivecraft.factions.entity.BoardColls; +import com.massivecraft.mcore.ps.PS; + +public class _Factions { + + public boolean Check(){ + return (Bukkit.getServer().getPluginManager().getPlugin("Factions")!=null); + } + public boolean isSecuredArea(Location loc){ + return !BoardColls.get().getFactionAt(PS.valueOf(loc)).getComparisonName().equalsIgnoreCase("Wilderness"); + } +}