v0.89.1 - Added update checking and fixed bugs.

This commit is contained in:
Garbage Mule 2011-06-05 14:08:26 +02:00
parent 9c0f442755
commit d03e56f915
8 changed files with 105 additions and 2 deletions

Binary file not shown.

View File

@ -1,6 +1,6 @@
name: MobArena name: MobArena
main: com.garbagemule.MobArena.MobArena main: com.garbagemule.MobArena.MobArena
version: 0.89 version: 0.89.1
commands: commands:
ma: ma:
description: Base command for MobArena description: Base command for MobArena

View File

@ -36,6 +36,7 @@ public class ArenaManager
protected static boolean isSetup = false; protected static boolean isSetup = false;
protected static boolean isEnabled = true; protected static boolean isEnabled = true;
protected static boolean isProtected = true; protected static boolean isProtected = true;
protected static boolean checkUpdates = true;
// Location variables for the arena region. // Location variables for the arena region.
protected static Location p1 = null; protected static Location p1 = null;
@ -125,6 +126,7 @@ public class ArenaManager
p1 = MAUtils.getCoords("p1"); p1 = MAUtils.getCoords("p1");
p2 = MAUtils.getCoords("p2"); p2 = MAUtils.getCoords("p2");
spawnpoints = MAUtils.getSpawnPoints(); spawnpoints = MAUtils.getSpawnPoints();
checkUpdates = MAUtils.getUpdateNotification();
// Set the boolean if all variables are valid. // Set the boolean if all variables are valid.
ArenaManager.isSetup = MAUtils.verifyData(); ArenaManager.isSetup = MAUtils.verifyData();
@ -286,6 +288,7 @@ public class ArenaManager
{ {
p.teleport(spectatorLoc); p.teleport(spectatorLoc);
MAUtils.clearInventory(p); MAUtils.clearInventory(p);
p.setFireTicks(0);
p.setHealth(20); p.setHealth(20);
tellAll(p.getName() + " died!"); tellAll(p.getName() + " died!");

View File

@ -118,6 +118,18 @@ public class MACommands implements CommandExecutor
return true; return true;
} }
if (cmd.equals("check"))
{
if (!arg.equals("updates"))
{
ArenaManager.tellPlayer(p, "/ma check updates");
return true;
}
MAUtils.checkForUpdates(p, true);
return true;
}
// ma force end // ma force end
if (cmd.equals("force")) if (cmd.equals("force"))
{ {

View File

@ -42,7 +42,6 @@ public class MADamageListener extends EntityListener
return; return;
event.setCancelled(true); event.setCancelled(true);
p.setFireTicks(0);
ArenaManager.playerDeath(p); ArenaManager.playerDeath(p);
} }

View File

@ -7,6 +7,7 @@ import org.bukkit.event.player.PlayerListener;
import org.bukkit.event.player.PlayerEvent; import org.bukkit.event.player.PlayerEvent;
import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerKickEvent; import org.bukkit.event.player.PlayerKickEvent;
import org.bukkit.event.player.PlayerJoinEvent;
/** /**
* This listener acts when a player is kicked or disconnected * This listener acts when a player is kicked or disconnected
@ -43,4 +44,24 @@ public class MADisconnectListener extends PlayerListener
ArenaManager.playerLeave(p); ArenaManager.playerLeave(p);
} }
} }
public void onPlayerJoin(PlayerJoinEvent event)
{
if (!ArenaManager.checkUpdates)
return;
final Player p = event.getPlayer();
if (!event.getPlayer().isOp())
return;
ArenaManager.server.getScheduler().scheduleSyncDelayedTask(ArenaManager.plugin,
new Runnable()
{
public void run()
{
MAUtils.checkForUpdates(p, true);
}
}, 100);
}
} }

View File

@ -1,10 +1,14 @@
package com.garbagemule.MobArena; package com.garbagemule.MobArena;
import java.net.URL;
import java.net.URI;
import java.net.HttpURLConnection;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.ObjectInputStream; import java.io.ObjectInputStream;
import java.io.ObjectOutputStream; import java.io.ObjectOutputStream;
import java.util.Scanner;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.LinkedList; import java.util.LinkedList;
@ -245,6 +249,18 @@ public class MAUtils
return new Configuration(configFile); return new Configuration(configFile);
} }
public static boolean getUpdateNotification()
{
Configuration c = ArenaManager.config;
c.load();
boolean result = c.getBoolean("updatenotification", false);
c.setProperty("updatenotification", result);
c.save();
return result;
}
public static List<String> getDisabledCommands() public static List<String> getDisabledCommands()
{ {
Configuration c = ArenaManager.config; Configuration c = ArenaManager.config;
@ -445,6 +461,9 @@ public class MAUtils
*/ */
public static boolean inRegion(Location loc) public static boolean inRegion(Location loc)
{ {
if (!loc.getWorld().getName().equals(ArenaManager.world.getName()))
return false;
Location p1 = ArenaManager.p1; Location p1 = ArenaManager.p1;
Location p2 = ArenaManager.p2; Location p2 = ArenaManager.p2;
@ -632,6 +651,54 @@ public class MAUtils
} }
} }
/**
* Checks if there is a new update of MobArena and notifies the
* player if the boolean specified is true
*/
public static void checkForUpdates(final Player p, boolean response)
{
String site = "http://forums.bukkit.org/threads/818.19144/";
try
{
// Make a URL of the site address
//URL baseURL = new URL(site);
URI baseURL = new URI(site);
// Open the connection and don't redirect.
HttpURLConnection con = (HttpURLConnection) baseURL.toURL().openConnection();
con.setInstanceFollowRedirects(false);
String header = con.getHeaderField("Location");
// If something's wrong with the connection...
if (header == null)
{
ArenaManager.tellPlayer(p, "Couldn't connect to the MobArena thread.");
return;
}
// Otherwise, grab the location header to get the real URI.
String url = new URI(con.getHeaderField("Location")).toString();
// If the current version is the same as the thread version.
if (url.contains(ArenaManager.plugin.getDescription().getVersion().replace(".", "-")))
{
if (!response)
return;
ArenaManager.tellPlayer(p, "Your version of MobArena is up to date!");
return;
}
// Otherwise, notify the player that there is a new version.
ArenaManager.tellPlayer(p, "There is a new version of MobArena available!");;
}
catch (Exception e)
{
e.printStackTrace();
}
}
/** /**
* Turns the current set of players into an array, and grabs a random * Turns the current set of players into an array, and grabs a random
* element out of it. * element out of it.

View File

@ -61,6 +61,7 @@ public class MobArena extends JavaPlugin
pm.registerEvent(Event.Type.PLAYER_TELEPORT, teleportListener, Priority.Normal, this); pm.registerEvent(Event.Type.PLAYER_TELEPORT, teleportListener, Priority.Normal, this);
pm.registerEvent(Event.Type.PLAYER_QUIT, discListener, Priority.Normal, this); pm.registerEvent(Event.Type.PLAYER_QUIT, discListener, Priority.Normal, this);
pm.registerEvent(Event.Type.PLAYER_KICK, discListener, Priority.Normal, this); pm.registerEvent(Event.Type.PLAYER_KICK, discListener, Priority.Normal, this);
pm.registerEvent(Event.Type.PLAYER_JOIN, discListener, Priority.Normal, this);
pm.registerEvent(Event.Type.BLOCK_BREAK, blockListener, Priority.Normal, this); pm.registerEvent(Event.Type.BLOCK_BREAK, blockListener, Priority.Normal, this);
pm.registerEvent(Event.Type.BLOCK_DAMAGE, blockListener, Priority.Normal, this); pm.registerEvent(Event.Type.BLOCK_DAMAGE, blockListener, Priority.Normal, this);
pm.registerEvent(Event.Type.BLOCK_PLACE, blockListener, Priority.Normal, this); pm.registerEvent(Event.Type.BLOCK_PLACE, blockListener, Priority.Normal, this);