*Updated plugin from Bukkit/Spigot 1.9.2 to 1.9.4

*Updated plugin.yml version number from 1.3.1 to 1.4.0
*Changed plugin internal version number from 14 to 15
*Added website attribute to plugin.yml
*Update checking now occurs on a separate thread
*Update checking now occurs once every 24 hours instead of only once when the server is started
*If an update check determines that a newer version is available, an update message will be displayed in the console once every hour
*If an update check determines that a newer version is available, server OPs will be presented with an update message when they log in
This commit is contained in:
David Berdik 2016-05-14 18:15:13 -04:00
parent e47a6a7ea8
commit 2bb45ab770
20 changed files with 118 additions and 64 deletions

View File

@ -11,6 +11,6 @@
<classpathentry kind="lib" path="libs/worldedit-bukkit-6.1.jar"/>
<classpathentry kind="lib" path="libs/worldguard-6.1.jar"/>
<classpathentry kind="lib" path="libs/CustomItems-1.0.0.jar"/>
<classpathentry kind="lib" path="libs/craftbukkit-1.9.2.jar"/>
<classpathentry kind="lib" path="libs/craftbukkit-1.9.4.jar"/>
<classpathentry kind="output" path="bin"/>
</classpath>

2
.gitignore vendored
View File

@ -1,2 +1,2 @@
/bin/
/libs/craftbukkit-1.9.2.jar
/libs/craftbukkit-1.9.4.jar

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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 {

View File

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

View File

@ -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 {

View File

@ -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 {

View File

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

View File

@ -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 {

View File

@ -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 {

View File

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

View File

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

View File

@ -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 {

View File

@ -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 {

View File

@ -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.