diff --git a/.classpath b/.classpath index 5dff9eb..a780b9b 100644 --- a/.classpath +++ b/.classpath @@ -11,6 +11,6 @@ - + diff --git a/.gitignore b/.gitignore index fdee606..a790f88 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ /bin/ -/libs/craftbukkit-1.9.2.jar \ No newline at end of file +/libs/craftbukkit-1.9.4.jar \ No newline at end of file diff --git a/src/net/theprogrammersworld/herobrine/AI/AICore.java b/src/net/theprogrammersworld/herobrine/AI/AICore.java index 5525249..2297a44 100644 --- a/src/net/theprogrammersworld/herobrine/AI/AICore.java +++ b/src/net/theprogrammersworld/herobrine/AI/AICore.java @@ -4,9 +4,9 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Random; -import net.minecraft.server.v1_9_R1.EntityPlayer; -import net.minecraft.server.v1_9_R1.PacketPlayOutPlayerInfo; -import net.minecraft.server.v1_9_R1.PacketPlayOutPlayerInfo.EnumPlayerInfoAction; +import net.minecraft.server.v1_9_R2.EntityPlayer; +import net.minecraft.server.v1_9_R2.PacketPlayOutPlayerInfo; +import net.minecraft.server.v1_9_R2.PacketPlayOutPlayerInfo.EnumPlayerInfoAction; import net.theprogrammersworld.herobrine.Herobrine; import net.theprogrammersworld.herobrine.Util; import net.theprogrammersworld.herobrine.AI.cores.Attack; @@ -33,7 +33,7 @@ import org.bukkit.Bukkit; import org.bukkit.Effect; import org.bukkit.Location; import org.bukkit.Material; -import org.bukkit.craftbukkit.v1_9_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_9_R2.entity.CraftPlayer; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; diff --git a/src/net/theprogrammersworld/herobrine/ConfigDB.java b/src/net/theprogrammersworld/herobrine/ConfigDB.java index f0e0eff..66f4b5b 100644 --- a/src/net/theprogrammersworld/herobrine/ConfigDB.java +++ b/src/net/theprogrammersworld/herobrine/ConfigDB.java @@ -89,9 +89,10 @@ public class ConfigDB public boolean UseSound = true; public boolean ShowInTabList = false; public boolean CheckForUpdates = true; + public static String pluginVersionNumber = Bukkit.getServer().getPluginManager().getPlugin("Herobrine"). getDescription().getVersion(); - + public boolean newVersionFound = false; private boolean isStartupDone = false; public ConfigDB(Logger l) diff --git a/src/net/theprogrammersworld/herobrine/Herobrine.java b/src/net/theprogrammersworld/herobrine/Herobrine.java index b7a610f..a9d5e21 100644 --- a/src/net/theprogrammersworld/herobrine/Herobrine.java +++ b/src/net/theprogrammersworld/herobrine/Herobrine.java @@ -1,9 +1,6 @@ package net.theprogrammersworld.herobrine; -import java.io.BufferedReader; import java.io.InputStream; -import java.io.InputStreamReader; -import java.net.URL; import java.util.HashMap; import java.util.Map; import java.util.logging.Logger; @@ -29,9 +26,10 @@ import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.WorldCreator; import org.bukkit.WorldType; -import org.bukkit.command.ConsoleCommandSender; import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.plugin.java.JavaPlugin; @@ -60,7 +58,6 @@ public class Herobrine extends JavaPlugin implements Listener { public Location hbSpawnData = null; public boolean removeHBNextTick = false; - public String pluginVersionCount = "14"; @Override public void onEnable() { @@ -78,27 +75,17 @@ public class Herobrine extends JavaPlugin implements Listener { getServer().getPluginManager().registerEvents(new InventoryListener(), this); getServer().getPluginManager().registerEvents(new PlayerListener(), this); getServer().getPluginManager().registerEvents(new WorldListener(), this); + getServer().getPluginManager().registerEvents(this, this); initHerobrine(); // Start the telemetry collection. new Thread(new Telemetry()).start(); - // If the user has update checking turned on, check if the server is running the latest version - // of the plugin and display a message in the server console if it is not. + // If the user has update checking turned on, start the thread responsible for performing + // the check. if(configdb.CheckForUpdates) { - ConsoleCommandSender console = Bukkit.getServer().getConsoleSender(); - try { - URL versionCheckURL = new URL("https://www.theprogrammersworld.net/Herobrine/latestVersion.html"); - BufferedReader remoteNumberReader = new BufferedReader(new InputStreamReader(versionCheckURL.openStream())); - String remoteVersionNumber = remoteNumberReader.readLine(); - if(!remoteVersionNumber.equals(pluginVersionCount)) - console.sendMessage(ChatColor.RED + "A new version of Herobrine is available.\nTo get it, " + - "go to www.theprogrammersworld.net/Herobrine and click \"Download\"."); - } catch (Exception e) { - console.sendMessage(ChatColor.RED + "Herobrine was unable to connect to the internet to check\n" + - "for a new version."); - } + new Thread(new UpdateScanner()).start(); } } @@ -283,5 +270,17 @@ public class Herobrine extends JavaPlugin implements Listener { } } } + + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) { + // When a player joins the server, check if they are an OP. If they are, + // and a newer version of Herobrine is available, display a message to + // them stating so. + Player joinedPlayer = event.getPlayer(); + if(configdb.newVersionFound && joinedPlayer.isOp()) { + joinedPlayer.sendMessage(ChatColor.RED + "A new version of Herobrine is available. To " + + "get it, go to www.theprogrammersworld.net/Herobrine and click \"Download\"."); + } + } } \ No newline at end of file diff --git a/src/net/theprogrammersworld/herobrine/UpdateScanner.java b/src/net/theprogrammersworld/herobrine/UpdateScanner.java new file mode 100644 index 0000000..2bcf57a --- /dev/null +++ b/src/net/theprogrammersworld/herobrine/UpdateScanner.java @@ -0,0 +1,53 @@ +package net.theprogrammersworld.herobrine; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.net.URL; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.command.ConsoleCommandSender; + +public class UpdateScanner implements Runnable { + + @Override + public void run() { + // Check for a newer version of the plugin, and put the thread to sleep for 24 hours + // before the check is performed again. If a newer version is found, begin reporting + // the discovery of a newer version once every hour. + final String pluginVersionCount = "15"; + ConsoleCommandSender console = Bukkit.getServer().getConsoleSender(); + + while(!Herobrine.getPluginCore().getConfigDB().newVersionFound) { + // Check for updates once every 24 hours. + try { + URL versionCheckURL = new URL("https://www.theprogrammersworld.net/Herobrine/latestVersion.html"); + BufferedReader remoteNumberReader = new BufferedReader(new InputStreamReader(versionCheckURL.openStream())); + String remoteVersionNumber = remoteNumberReader.readLine(); + if(!remoteVersionNumber.equals(pluginVersionCount)) { + // A newer version was found. Change the value of "newVersionFound", and break + // from this loop in to a loop that will display a "new version" report in the + // console once every hour. + Herobrine.getPluginCore().getConfigDB().newVersionFound = true; + break; + } + } catch (Exception e) { + console.sendMessage(ChatColor.RED + "Herobrine was unable to connect to the internet to check\n" + + "for a new version."); + } + try { + Thread.sleep(86400000); + } catch (InterruptedException e) {} + } + + while(true) { + // Display a "new version" message in the console once every hour. + console.sendMessage(ChatColor.RED + "A new version of Herobrine is available.\nTo get it, " + + "go to www.theprogrammersworld.net/Herobrine and click \"Download\"."); + try { + Thread.sleep(3600000); + } catch (InterruptedException e) {} + } + } + +} diff --git a/src/net/theprogrammersworld/herobrine/commands/CmdExecutor.java b/src/net/theprogrammersworld/herobrine/commands/CmdExecutor.java index 2ff2fa2..aab7087 100644 --- a/src/net/theprogrammersworld/herobrine/commands/CmdExecutor.java +++ b/src/net/theprogrammersworld/herobrine/commands/CmdExecutor.java @@ -966,7 +966,7 @@ public class CmdExecutor implements CommandExecutor { double x = Herobrine.herobrineNPC.getNMSEntity().locX; double y = Herobrine.herobrineNPC.getNMSEntity().locY; double z = Herobrine.herobrineNPC.getNMSEntity().locZ; - net.minecraft.server.v1_9_R1.World world = Herobrine.herobrineNPC.getNMSEntity().getWorld(); + net.minecraft.server.v1_9_R2.World world = Herobrine.herobrineNPC.getNMSEntity().getWorld(); sender.sendMessage(red + "Herobrine's location world: " + world + " x: " + x + " y: " + y + " z: " + z); diff --git a/src/net/theprogrammersworld/herobrine/nms/NPC/NPCCore.java b/src/net/theprogrammersworld/herobrine/nms/NPC/NPCCore.java index 9967465..bb4b53d 100644 --- a/src/net/theprogrammersworld/herobrine/nms/NPC/NPCCore.java +++ b/src/net/theprogrammersworld/herobrine/nms/NPC/NPCCore.java @@ -5,8 +5,8 @@ import java.util.HashMap; import java.util.Map; import java.util.UUID; -import net.minecraft.server.v1_9_R1.Entity; -import net.minecraft.server.v1_9_R1.PlayerInteractManager; +import net.minecraft.server.v1_9_R2.Entity; +import net.minecraft.server.v1_9_R2.PlayerInteractManager; import net.theprogrammersworld.herobrine.Herobrine; import net.theprogrammersworld.herobrine.nms.NPC.entity.HumanEntity; import net.theprogrammersworld.herobrine.nms.NPC.entity.HumanNPC; diff --git a/src/net/theprogrammersworld/herobrine/nms/NPC/entity/HumanEntity.java b/src/net/theprogrammersworld/herobrine/nms/NPC/entity/HumanEntity.java index 2c1f54c..335cddf 100644 --- a/src/net/theprogrammersworld/herobrine/nms/NPC/entity/HumanEntity.java +++ b/src/net/theprogrammersworld/herobrine/nms/NPC/entity/HumanEntity.java @@ -1,10 +1,10 @@ package net.theprogrammersworld.herobrine.nms.NPC.entity; -import net.minecraft.server.v1_9_R1.Entity; -import net.minecraft.server.v1_9_R1.EntityHuman; -import net.minecraft.server.v1_9_R1.EntityPlayer; -import net.minecraft.server.v1_9_R1.WorldSettings.EnumGamemode; -import net.minecraft.server.v1_9_R1.PlayerInteractManager; +import net.minecraft.server.v1_9_R2.Entity; +import net.minecraft.server.v1_9_R2.EntityHuman; +import net.minecraft.server.v1_9_R2.EntityPlayer; +import net.minecraft.server.v1_9_R2.WorldSettings.EnumGamemode; +import net.minecraft.server.v1_9_R2.PlayerInteractManager; import net.theprogrammersworld.herobrine.nms.NPC.NPCCore; import net.theprogrammersworld.herobrine.nms.NPC.network.NetworkHandler; import net.theprogrammersworld.herobrine.nms.NPC.utils.NMSWorldAccess; @@ -12,8 +12,8 @@ import net.theprogrammersworld.herobrine.nms.NPC.utils.NMSWorldAccess; import com.mojang.authlib.GameProfile; import org.bukkit.Bukkit; -import org.bukkit.craftbukkit.v1_9_R1.CraftServer; -import org.bukkit.craftbukkit.v1_9_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_9_R2.CraftServer; +import org.bukkit.craftbukkit.v1_9_R2.entity.CraftPlayer; public class HumanEntity extends EntityPlayer { diff --git a/src/net/theprogrammersworld/herobrine/nms/NPC/entity/HumanNPC.java b/src/net/theprogrammersworld/herobrine/nms/NPC/entity/HumanNPC.java index 3a86d4a..0143a73 100644 --- a/src/net/theprogrammersworld/herobrine/nms/NPC/entity/HumanNPC.java +++ b/src/net/theprogrammersworld/herobrine/nms/NPC/entity/HumanNPC.java @@ -1,8 +1,8 @@ package net.theprogrammersworld.herobrine.nms.NPC.entity; -import net.minecraft.server.v1_9_R1.EntityPlayer; -import net.minecraft.server.v1_9_R1.PacketPlayInArmAnimation; -import net.minecraft.server.v1_9_R1.WorldServer; +import net.minecraft.server.v1_9_R2.EntityPlayer; +import net.minecraft.server.v1_9_R2.PacketPlayInArmAnimation; +import net.minecraft.server.v1_9_R2.WorldServer; import net.theprogrammersworld.herobrine.Herobrine; import org.bukkit.Location; @@ -94,8 +94,8 @@ public class HumanNPC { if (newYaw > 0.0D || newYaw < 180.0D){ ((EntityPlayer) getNMSEntity()).yaw = (float) (newYaw - 90.0); ((EntityPlayer) getNMSEntity()).pitch = (float) newPitch; - ((EntityPlayer) getNMSEntity()).aK = (float) (newYaw - 90.0); - ((EntityPlayer) getNMSEntity()).aI = (float) (newYaw - 90.0); + ((EntityPlayer) getNMSEntity()).aL = (float) (newYaw - 90.0); + ((EntityPlayer) getNMSEntity()).aJ = (float) (newYaw - 90.0); } } diff --git a/src/net/theprogrammersworld/herobrine/nms/NPC/network/NetworkCore.java b/src/net/theprogrammersworld/herobrine/nms/NPC/network/NetworkCore.java index 1afb54f..fea3acb 100644 --- a/src/net/theprogrammersworld/herobrine/nms/NPC/network/NetworkCore.java +++ b/src/net/theprogrammersworld/herobrine/nms/NPC/network/NetworkCore.java @@ -1,7 +1,7 @@ package net.theprogrammersworld.herobrine.nms.NPC.network; -import net.minecraft.server.v1_9_R1.EnumProtocolDirection; -import net.minecraft.server.v1_9_R1.NetworkManager; +import net.minecraft.server.v1_9_R2.EnumProtocolDirection; +import net.minecraft.server.v1_9_R2.NetworkManager; public class NetworkCore extends NetworkManager { diff --git a/src/net/theprogrammersworld/herobrine/nms/NPC/network/NetworkHandler.java b/src/net/theprogrammersworld/herobrine/nms/NPC/network/NetworkHandler.java index 6db252a..640f88a 100644 --- a/src/net/theprogrammersworld/herobrine/nms/NPC/network/NetworkHandler.java +++ b/src/net/theprogrammersworld/herobrine/nms/NPC/network/NetworkHandler.java @@ -1,8 +1,8 @@ package net.theprogrammersworld.herobrine.nms.NPC.network; -import net.minecraft.server.v1_9_R1.EntityPlayer; -import net.minecraft.server.v1_9_R1.Packet; -import net.minecraft.server.v1_9_R1.PlayerConnection; +import net.minecraft.server.v1_9_R2.EntityPlayer; +import net.minecraft.server.v1_9_R2.Packet; +import net.minecraft.server.v1_9_R2.PlayerConnection; import net.theprogrammersworld.herobrine.nms.NPC.NPCCore; public class NetworkHandler extends PlayerConnection { diff --git a/src/net/theprogrammersworld/herobrine/nms/NPC/network/NetworkUtils.java b/src/net/theprogrammersworld/herobrine/nms/NPC/network/NetworkUtils.java index 67b4761..c9d87a6 100644 --- a/src/net/theprogrammersworld/herobrine/nms/NPC/network/NetworkUtils.java +++ b/src/net/theprogrammersworld/herobrine/nms/NPC/network/NetworkUtils.java @@ -1,11 +1,11 @@ package net.theprogrammersworld.herobrine.nms.NPC.network; -import net.minecraft.server.v1_9_R1.Packet; +import net.minecraft.server.v1_9_R2.Packet; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.World; -import org.bukkit.craftbukkit.v1_9_R1.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_9_R2.entity.CraftPlayer; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; diff --git a/src/net/theprogrammersworld/herobrine/nms/NPC/utils/NMSServerAccess.java b/src/net/theprogrammersworld/herobrine/nms/NPC/utils/NMSServerAccess.java index e888887..fab14dc 100644 --- a/src/net/theprogrammersworld/herobrine/nms/NPC/utils/NMSServerAccess.java +++ b/src/net/theprogrammersworld/herobrine/nms/NPC/utils/NMSServerAccess.java @@ -3,12 +3,12 @@ package net.theprogrammersworld.herobrine.nms.NPC.utils; import java.util.List; import java.util.logging.Logger; -import net.minecraft.server.v1_9_R1.MinecraftServer; -import net.minecraft.server.v1_9_R1.WorldServer; +import net.minecraft.server.v1_9_R2.MinecraftServer; +import net.minecraft.server.v1_9_R2.WorldServer; import org.bukkit.Bukkit; import org.bukkit.Server; -import org.bukkit.craftbukkit.v1_9_R1.CraftServer; +import org.bukkit.craftbukkit.v1_9_R2.CraftServer; public class NMSServerAccess { diff --git a/src/net/theprogrammersworld/herobrine/nms/NPC/utils/NMSWorldAccess.java b/src/net/theprogrammersworld/herobrine/nms/NPC/utils/NMSWorldAccess.java index bd705db..3458e4f 100644 --- a/src/net/theprogrammersworld/herobrine/nms/NPC/utils/NMSWorldAccess.java +++ b/src/net/theprogrammersworld/herobrine/nms/NPC/utils/NMSWorldAccess.java @@ -3,11 +3,11 @@ package net.theprogrammersworld.herobrine.nms.NPC.utils; import java.util.logging.Level; import java.util.logging.Logger; -import net.minecraft.server.v1_9_R1.PlayerChunkMap; -import net.minecraft.server.v1_9_R1.WorldServer; +import net.minecraft.server.v1_9_R2.PlayerChunkMap; +import net.minecraft.server.v1_9_R2.WorldServer; import org.bukkit.World; -import org.bukkit.craftbukkit.v1_9_R1.CraftWorld; +import org.bukkit.craftbukkit.v1_9_R2.CraftWorld; public class NMSWorldAccess { diff --git a/src/net/theprogrammersworld/herobrine/nms/entity/CustomSkeleton.java b/src/net/theprogrammersworld/herobrine/nms/entity/CustomSkeleton.java index f12f799..235d0ce 100644 --- a/src/net/theprogrammersworld/herobrine/nms/entity/CustomSkeleton.java +++ b/src/net/theprogrammersworld/herobrine/nms/entity/CustomSkeleton.java @@ -2,9 +2,9 @@ package net.theprogrammersworld.herobrine.nms.entity; import java.util.Random; -import net.minecraft.server.v1_9_R1.EntitySkeleton; -import net.minecraft.server.v1_9_R1.GenericAttributes; -import net.minecraft.server.v1_9_R1.World; +import net.minecraft.server.v1_9_R2.EntitySkeleton; +import net.minecraft.server.v1_9_R2.GenericAttributes; +import net.minecraft.server.v1_9_R2.World; import net.theprogrammersworld.herobrine.Herobrine; import net.theprogrammersworld.herobrine.misc.ItemName; diff --git a/src/net/theprogrammersworld/herobrine/nms/entity/CustomZombie.java b/src/net/theprogrammersworld/herobrine/nms/entity/CustomZombie.java index 14fbd0e..53e67eb 100644 --- a/src/net/theprogrammersworld/herobrine/nms/entity/CustomZombie.java +++ b/src/net/theprogrammersworld/herobrine/nms/entity/CustomZombie.java @@ -2,9 +2,9 @@ package net.theprogrammersworld.herobrine.nms.entity; import java.util.Random; -import net.minecraft.server.v1_9_R1.EntityZombie; -import net.minecraft.server.v1_9_R1.GenericAttributes; -import net.minecraft.server.v1_9_R1.World; +import net.minecraft.server.v1_9_R2.EntityZombie; +import net.minecraft.server.v1_9_R2.GenericAttributes; +import net.minecraft.server.v1_9_R2.World; import net.theprogrammersworld.herobrine.Herobrine; import org.bukkit.Location; diff --git a/src/net/theprogrammersworld/herobrine/nms/entity/EntityInjector.java b/src/net/theprogrammersworld/herobrine/nms/entity/EntityInjector.java index 971c9c3..7a495b0 100644 --- a/src/net/theprogrammersworld/herobrine/nms/entity/EntityInjector.java +++ b/src/net/theprogrammersworld/herobrine/nms/entity/EntityInjector.java @@ -4,7 +4,7 @@ import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.Map; -import net.minecraft.server.v1_9_R1.EntityTypes; +import net.minecraft.server.v1_9_R2.EntityTypes; import net.theprogrammersworld.herobrine.Herobrine; public class EntityInjector { diff --git a/src/net/theprogrammersworld/herobrine/nms/entity/EntityManager.java b/src/net/theprogrammersworld/herobrine/nms/entity/EntityManager.java index af631af..e492398 100644 --- a/src/net/theprogrammersworld/herobrine/nms/entity/EntityManager.java +++ b/src/net/theprogrammersworld/herobrine/nms/entity/EntityManager.java @@ -3,10 +3,10 @@ package net.theprogrammersworld.herobrine.nms.entity; import java.util.HashMap; import java.util.Map; -import net.minecraft.server.v1_9_R1.World; +import net.minecraft.server.v1_9_R2.World; import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_9_R1.CraftWorld; +import org.bukkit.craftbukkit.v1_9_R2.CraftWorld; public class EntityManager { diff --git a/src/plugin.yml b/src/plugin.yml index d3930f4..92abb3e 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -1,6 +1,7 @@ name: Herobrine main: net.theprogrammersworld.herobrine.Herobrine -version: 1.3.1 +version: 1.4.0 +website: https://www.theprogrammersworld.net commands: herobrine: description: Main command.