2011-06-29 02:18:20 +02:00
/ * *
* Copyright ( C ) 2011 Morgan Humes < morgan @lanaddict.com >
*
* This program is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation ; either version 2
* of the License , or ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 51 Franklin Street , Fifth Floor , Boston , MA 02110 - 1301 , USA .
*
* /
package net.milkbowl.vault ;
2011-12-03 10:30:44 +01:00
import java.net.URL ;
2011-07-19 16:33:01 +02:00
import java.util.Collection ;
2011-06-29 02:18:20 +02:00
import java.util.logging.Logger ;
2011-12-03 10:30:44 +01:00
import javax.xml.parsers.DocumentBuilderFactory ;
2011-10-23 22:18:23 +02:00
import net.milkbowl.vault.chat.Chat ;
import net.milkbowl.vault.chat.plugins.Chat_GroupManager ;
import net.milkbowl.vault.chat.plugins.Chat_Permissions3 ;
import net.milkbowl.vault.chat.plugins.Chat_PermissionsEx ;
2011-10-29 01:12:49 +02:00
import net.milkbowl.vault.chat.plugins.Chat_bPermissions ;
2011-11-19 19:13:12 +01:00
import net.milkbowl.vault.chat.plugins.Chat_iChat ;
2011-10-23 22:18:23 +02:00
import net.milkbowl.vault.chat.plugins.Chat_mChat ;
2011-06-30 17:14:09 +02:00
import net.milkbowl.vault.economy.Economy ;
import net.milkbowl.vault.economy.plugins.Economy_3co ;
2011-10-10 08:02:05 +02:00
import net.milkbowl.vault.economy.plugins.Economy_BOSE6 ;
import net.milkbowl.vault.economy.plugins.Economy_BOSE7 ;
2011-12-03 19:35:49 +01:00
import net.milkbowl.vault.economy.plugins.Economy_EconXP ;
2011-06-30 17:14:09 +02:00
import net.milkbowl.vault.economy.plugins.Economy_Essentials ;
2011-11-27 20:14:28 +01:00
import net.milkbowl.vault.economy.plugins.Economy_MineConomy ;
2011-09-23 08:43:48 +02:00
import net.milkbowl.vault.economy.plugins.Economy_MultiCurrency ;
2011-11-27 20:28:23 +01:00
import net.milkbowl.vault.economy.plugins.Economy_eWallet ;
2011-06-30 17:14:09 +02:00
import net.milkbowl.vault.economy.plugins.Economy_iConomy4 ;
import net.milkbowl.vault.economy.plugins.Economy_iConomy5 ;
2011-08-11 23:18:25 +02:00
import net.milkbowl.vault.economy.plugins.Economy_iConomy6 ;
2011-06-30 17:14:09 +02:00
import net.milkbowl.vault.permission.Permission ;
2011-08-08 09:05:32 +02:00
import net.milkbowl.vault.permission.plugins.Permission_GroupManager ;
2011-08-09 17:43:15 +02:00
import net.milkbowl.vault.permission.plugins.Permission_Permissions3 ;
2011-09-18 10:19:35 +02:00
import net.milkbowl.vault.permission.plugins.Permission_PermissionsBukkit ;
2011-06-30 17:14:09 +02:00
import net.milkbowl.vault.permission.plugins.Permission_PermissionsEx ;
2011-09-18 10:19:35 +02:00
import net.milkbowl.vault.permission.plugins.Permission_SuperPerms ;
2011-10-28 22:41:02 +02:00
import net.milkbowl.vault.permission.plugins.Permission_bPermissions ;
2011-06-29 02:18:20 +02:00
2011-06-30 15:49:26 +02:00
import org.bukkit.command.Command ;
import org.bukkit.command.CommandSender ;
2011-06-30 17:14:09 +02:00
import org.bukkit.command.ConsoleCommandSender ;
import org.bukkit.entity.Player ;
2011-12-10 05:14:28 +01:00
import org.bukkit.event.Event.Priority ;
import org.bukkit.event.Event.Type ;
import org.bukkit.event.player.PlayerJoinEvent ;
import org.bukkit.event.player.PlayerListener ;
2011-07-19 16:33:01 +02:00
import org.bukkit.plugin.RegisteredServiceProvider ;
2011-07-19 15:25:12 +02:00
import org.bukkit.plugin.ServicePriority ;
2011-06-29 02:18:20 +02:00
import org.bukkit.plugin.java.JavaPlugin ;
2011-12-03 10:30:44 +01:00
import org.w3c.dom.Document ;
import org.w3c.dom.Element ;
import org.w3c.dom.Node ;
import org.w3c.dom.NodeList ;
2011-06-29 02:18:20 +02:00
public class Vault extends JavaPlugin {
2011-08-12 19:11:25 +02:00
2011-12-10 05:14:28 +01:00
private static final Logger log = Logger . getLogger ( " Minecraft " ) ;
private Permission perms ;
2011-12-10 06:19:09 +01:00
private String newVersion ;
2011-12-10 05:14:28 +01:00
@Override
public void onDisable ( ) {
// Remove all Service Registrations
getServer ( ) . getServicesManager ( ) . unregisterAll ( this ) ;
log . info ( String . format ( " [%s] Disabled Version %s " , getDescription ( ) . getName ( ) , getDescription ( ) . getVersion ( ) ) ) ;
}
@Override
public void onEnable ( ) {
try {
2011-12-10 06:19:09 +01:00
newVersion = updateCheck ( ) ;
2011-12-10 05:14:28 +01:00
String oldVersion = getDescription ( ) . getVersion ( ) . substring ( 0 , 5 ) ;
if ( ! oldVersion . equalsIgnoreCase ( newVersion ) ) {
log . warning ( newVersion + " is out! You are running " + oldVersion ) ;
log . warning ( " Update Vault at: http://dev.bukkit.org/server-mods/vault " ) ;
}
} catch ( Exception e ) {
// ignore exceptions
}
// Load Vault Addons
loadEconomy ( ) ;
loadPermission ( ) ;
loadChat ( ) ;
getCommand ( " vault-info " ) . setExecutor ( this ) ;
getCommand ( " vault-reload " ) . setExecutor ( this ) ;
this . getServer ( ) . getPluginManager ( ) . registerEvent ( Type . PLAYER_JOIN , new VaultPlayerListener ( ) , Priority . Monitor , this ) ;
2011-12-10 06:19:09 +01:00
// Schedule to check the version every 30 minutes for an update. Tis is to update the most recent
// version so if an admin reconnects they will be warned about newer versions.
this . getServer ( ) . getScheduler ( ) . scheduleAsyncRepeatingTask ( this , new Runnable ( ) {
@Override
public void run ( ) {
try {
String version = updateCheck ( ) ;
setVersion ( version ) ;
} catch ( Exception e ) {
// ignore exceptions
}
}
} , 36000 , 36000 ) ;
2011-12-10 05:14:28 +01:00
log . info ( String . format ( " [%s] Enabled Version %s " , getDescription ( ) . getName ( ) , getDescription ( ) . getVersion ( ) ) ) ;
}
/ * *
* Attempts to load Chat Addons
* /
private void loadChat ( ) {
// Try to load PermissionsEx
if ( packageExists ( new String [ ] { " ru.tehkode.permissions.bukkit.PermissionsEx " } ) ) {
Chat eChat = new Chat_PermissionsEx ( this , perms ) ;
getServer ( ) . getServicesManager ( ) . register ( Chat . class , eChat , this , ServicePriority . Highest ) ;
log . info ( String . format ( " [%s][Chat] PermissionsEx found: %s " , getDescription ( ) . getName ( ) , eChat . isEnabled ( ) ? " Loaded " : " Waiting " ) ) ;
}
//Try loading mChat
if ( packageExists ( new String [ ] { " net.D3GN.MiracleM4n.mChat " } ) ) {
Chat mChat = new Chat_mChat ( this , perms ) ;
getServer ( ) . getServicesManager ( ) . register ( Chat . class , mChat , this , ServicePriority . Highest ) ;
log . info ( String . format ( " [%s][Chat] mChat found: %s " , getDescription ( ) . getName ( ) , mChat . isEnabled ( ) ? " Loaded " : " Waiting " ) ) ;
}
//try loading bPermissions
if ( packageExists ( new String [ ] { " de.bananaco.permissions.worlds.WorldPermissionsManager " } ) ) {
Chat bPerms = new Chat_bPermissions ( this , perms ) ;
getServer ( ) . getServicesManager ( ) . register ( Chat . class , bPerms , this , ServicePriority . High ) ;
log . info ( String . format ( " [%s][Chat] bPermissions found: %s " , getDescription ( ) . getName ( ) , bPerms . isEnabled ( ) ? " Loaded " : " Waiting " ) ) ;
}
// Try to load GroupManager
if ( packageExists ( new String [ ] { " org.anjocaido.groupmanager.GroupManager " } ) ) {
Chat gPerms = new Chat_GroupManager ( this , perms ) ;
getServer ( ) . getServicesManager ( ) . register ( Chat . class , gPerms , this , ServicePriority . High ) ;
log . info ( String . format ( " [%s][Chat] GroupManager found: %s " , getDescription ( ) . getName ( ) , gPerms . isEnabled ( ) ? " Loaded " : " Waiting " ) ) ;
}
// Try to load Permissions 3 (Yeti)
if ( packageExists ( new String [ ] { " com.nijiko.permissions.ModularControl " } ) ) {
Chat nPerms = new Chat_Permissions3 ( this , perms ) ;
getServer ( ) . getServicesManager ( ) . register ( Chat . class , nPerms , this , ServicePriority . High ) ;
log . info ( String . format ( " [%s][Chat] Permissions 3 (Yeti) found: %s " , getDescription ( ) . getName ( ) , nPerms . isEnabled ( ) ? " Loaded " : " Waiting " ) ) ;
}
// Try to load iChat
if ( packageExists ( new String [ ] { " net.TheDgtl.iChat.iChat " } ) ) {
Chat iChat = new Chat_iChat ( this , perms ) ;
getServer ( ) . getServicesManager ( ) . register ( Chat . class , iChat , this , ServicePriority . Lowest ) ;
log . info ( String . format ( " [%s][Chat] PermissionsEx found: %s " , getDescription ( ) . getName ( ) , iChat . isEnabled ( ) ? " Loaded " : " Waiting " ) ) ;
}
}
/ * *
* Attempts to load Economy Addons
* /
private void loadEconomy ( ) {
// Try to load MultiCurrency
if ( packageExists ( new String [ ] { " me.ashtheking.currency.Currency " , " me.ashtheking.currency.CurrencyList " } ) ) {
Economy econ = new Economy_MultiCurrency ( this ) ;
getServer ( ) . getServicesManager ( ) . register ( Economy . class , econ , this , ServicePriority . Normal ) ;
log . info ( String . format ( " [%s][Economy] MultiCurrency found: %s " , getDescription ( ) . getName ( ) , econ . isEnabled ( ) ? " Loaded " : " Waiting " ) ) ;
}
//Try Loading MineConomy
if ( packageExists ( new String [ ] { " me.mjolnir.mineconomy.MineConomy " } ) ) {
Economy econ = new Economy_MineConomy ( this ) ;
getServer ( ) . getServicesManager ( ) . register ( Economy . class , econ , this , ServicePriority . Normal ) ;
log . info ( String . format ( " [%s][Economy] MineConomy found: %s " , getDescription ( ) . getName ( ) , econ . isEnabled ( ) ? " Loaded " : " Waiting " ) ) ;
}
//Try loading eWallet
if ( packageExists ( new String [ ] { " me.ethan.eWallet.ECO " } ) ) {
Economy econ = new Economy_eWallet ( this ) ;
getServer ( ) . getServicesManager ( ) . register ( Economy . class , econ , this , ServicePriority . Normal ) ;
log . info ( String . format ( " [%s][Economy] eWallet found: %s " , getDescription ( ) . getName ( ) , econ . isEnabled ( ) ? " Loaded " : " Waiting " ) ) ;
}
// Try to load 3co
if ( packageExists ( new String [ ] { " me.ic3d.eco.ECO " } ) ) {
Economy econ = new Economy_3co ( this ) ;
getServer ( ) . getServicesManager ( ) . register ( Economy . class , econ , this , ServicePriority . Normal ) ;
log . info ( String . format ( " [%s][Economy] 3co found: %s " , getDescription ( ) . getName ( ) , econ . isEnabled ( ) ? " Loaded " : " Waiting " ) ) ;
}
// Try to load BOSEconomy
if ( packageExists ( new String [ ] { " cosine.boseconomy.BOSEconomy " , " cosine.boseconomy.CommandManager " } ) ) {
Economy bose6 = new Economy_BOSE6 ( this ) ;
getServer ( ) . getServicesManager ( ) . register ( Economy . class , bose6 , this , ServicePriority . Normal ) ;
log . info ( String . format ( " [%s][Economy] BOSEconomy6 found: %s " , getDescription ( ) . getName ( ) , bose6 . isEnabled ( ) ? " Loaded " : " Waiting " ) ) ;
}
// Try to load BOSEconomy
if ( packageExists ( new String [ ] { " cosine.boseconomy.BOSEconomy " , " cosine.boseconomy.CommandHandler " } ) ) {
Economy bose7 = new Economy_BOSE7 ( this ) ;
getServer ( ) . getServicesManager ( ) . register ( net . milkbowl . vault . economy . Economy . class , bose7 , this , ServicePriority . Normal ) ;
log . info ( String . format ( " [%s][Economy] BOSEconomy7 found: %s " , getDescription ( ) . getName ( ) , bose7 . isEnabled ( ) ? " Loaded " : " Waiting " ) ) ;
}
// Try to load Essentials Economy
if ( packageExists ( new String [ ] { " com.earth2me.essentials.api.Economy " , " com.earth2me.essentials.api.NoLoanPermittedException " , " com.earth2me.essentials.api.UserDoesNotExistException " } ) ) {
Economy essentials = new Economy_Essentials ( this ) ;
getServer ( ) . getServicesManager ( ) . register ( net . milkbowl . vault . economy . Economy . class , essentials , this , ServicePriority . Low ) ;
log . info ( String . format ( " [%s][Economy] Essentials Economy found: %s " , getDescription ( ) . getName ( ) , essentials . isEnabled ( ) ? " Loaded " : " Waiting " ) ) ;
}
// Try to load iConomy 4
if ( packageExists ( new String [ ] { " com.nijiko.coelho.iConomy.iConomy " , " com.nijiko.coelho.iConomy.system.Account " } ) ) {
Economy icon4 = new Economy_iConomy4 ( this ) ;
getServer ( ) . getServicesManager ( ) . register ( net . milkbowl . vault . economy . Economy . class , icon4 , this , ServicePriority . High ) ;
log . info ( String . format ( " [%s][Economy] iConomy 4 found: " , getDescription ( ) . getName ( ) , icon4 . isEnabled ( ) ? " Loaded " : " Waiting " ) ) ;
}
// Try to load iConomy 5
if ( packageExists ( new String [ ] { " com.iConomy.iConomy " , " com.iConomy.system.Account " , " com.iConomy.system.Holdings " } ) ) {
Economy icon5 = new Economy_iConomy5 ( this ) ;
getServer ( ) . getServicesManager ( ) . register ( net . milkbowl . vault . economy . Economy . class , icon5 , this , ServicePriority . High ) ;
log . info ( String . format ( " [%s][Economy] iConomy 5 found: %s " , getDescription ( ) . getName ( ) , icon5 . isEnabled ( ) ? " Loaded " : " Waiting " ) ) ;
}
// Try to load iConomy 6
if ( packageExists ( new String [ ] { " com.iCo6.iConomy " } ) ) {
Economy icon6 = new Economy_iConomy6 ( this ) ;
getServer ( ) . getServicesManager ( ) . register ( Economy . class , icon6 , this , ServicePriority . High ) ;
log . info ( String . format ( " [%s][Economy] iConomy 6 found: %s " , getDescription ( ) . getName ( ) , icon6 . isEnabled ( ) ? " Loaded " : " Waiting " ) ) ;
}
//Try loading EconXP
2011-12-03 19:35:49 +01:00
if ( packageExists ( new String [ ] { " ca.agnate.EconXP.EconXP " } ) ) {
Economy econ = new Economy_EconXP ( this ) ;
getServer ( ) . getServicesManager ( ) . register ( Economy . class , econ , this , ServicePriority . Normal ) ;
log . info ( String . format ( " [%s][Economy] EconXP found: %s " , getDescription ( ) . getName ( ) , econ . isEnabled ( ) ? " Loaded " : " Waiting " ) ) ;
}
2011-12-10 05:14:28 +01:00
}
/ * *
* Attempts to load Permission Addons
* /
private void loadPermission ( ) {
// Try to load PermissionsEx
if ( packageExists ( new String [ ] { " ru.tehkode.permissions.bukkit.PermissionsEx " } ) ) {
Permission ePerms = new Permission_PermissionsEx ( this ) ;
getServer ( ) . getServicesManager ( ) . register ( Permission . class , ePerms , this , ServicePriority . Highest ) ;
log . info ( String . format ( " [%s][Permission] PermissionsEx found: %s " , getDescription ( ) . getName ( ) , ePerms . isEnabled ( ) ? " Loaded " : " Waiting " ) ) ;
log . info ( String . format ( " [%s] - Warning Using PEX can cause SuperPerms compatibility issues with non-Vault enabled plugins. " , getDescription ( ) . getName ( ) ) ) ;
}
//Try loading PermissionsBukkit
if ( packageExists ( new String [ ] { " com.platymuus.bukkit.permissions.PermissionsPlugin " } ) ) {
Permission pPerms = new Permission_PermissionsBukkit ( this ) ;
getServer ( ) . getServicesManager ( ) . register ( Permission . class , pPerms , this , ServicePriority . Highest ) ;
log . info ( String . format ( " [%s][Permission] PermissionsBukkit found: %s " , getDescription ( ) . getName ( ) , pPerms . isEnabled ( ) ? " Loaded " : " Waiting " ) ) ;
}
//Try to load bPermissions
if ( packageExists ( new String [ ] { " de.bananaco.permissions.worlds.WorldPermissionsManager " } ) ) {
Permission bPerms = new Permission_bPermissions ( this ) ;
getServer ( ) . getServicesManager ( ) . register ( Permission . class , bPerms , this , ServicePriority . Highest ) ;
log . info ( String . format ( " [%s][Permission] bPermissions found: %s " , getDescription ( ) . getName ( ) , bPerms . isEnabled ( ) ? " Loaded " : " Waiting " ) ) ;
}
// Try to load GroupManager
if ( packageExists ( new String [ ] { " org.anjocaido.groupmanager.GroupManager " } ) ) {
Permission gPerms = new Permission_GroupManager ( this ) ;
getServer ( ) . getServicesManager ( ) . register ( Permission . class , gPerms , this , ServicePriority . High ) ;
log . info ( String . format ( " [%s][Permission] GroupManager found: %s " , getDescription ( ) . getName ( ) , gPerms . isEnabled ( ) ? " Loaded " : " Waiting " ) ) ;
}
// Try to load Permissions 3 (Yeti)
if ( packageExists ( new String [ ] { " com.nijiko.permissions.ModularControl " } ) ) {
Permission nPerms = new Permission_Permissions3 ( this ) ;
getServer ( ) . getServicesManager ( ) . register ( Permission . class , nPerms , this , ServicePriority . High ) ;
log . info ( String . format ( " [%s][Permission] Permissions 3 (Yeti) found: %s " , getDescription ( ) . getName ( ) , nPerms . isEnabled ( ) ? " Loaded " : " Waiting " ) ) ;
}
Permission perms = new Permission_SuperPerms ( this ) ;
getServer ( ) . getServicesManager ( ) . register ( Permission . class , perms , this , ServicePriority . Lowest ) ;
log . info ( String . format ( " [%s][Permission] SuperPermissions loaded as backup permission system. " , getDescription ( ) . getName ( ) ) ) ;
this . perms = getServer ( ) . getServicesManager ( ) . getRegistration ( Permission . class ) . getProvider ( ) ;
}
@Override
public boolean onCommand ( CommandSender sender , Command command , String commandLabel , String [ ] args ) {
if ( sender instanceof Player ) {
// Check if Player
// If so, ignore command if player is not Op
Player p = ( Player ) sender ;
if ( ! p . isOp ( ) ) {
return true ;
}
} else if ( ! ( sender instanceof ConsoleCommandSender ) ) {
// Check if NOT console
// Ignore it if not originated from Console!
return true ;
}
if ( command . getLabel ( ) . equals ( " vault-info " ) ) {
// Get String of Registered Economy Services
String registeredEcons = null ;
Collection < RegisteredServiceProvider < Economy > > econs = this . getServer ( ) . getServicesManager ( ) . getRegistrations ( Economy . class ) ;
for ( RegisteredServiceProvider < Economy > econ : econs ) {
Economy e = econ . getProvider ( ) ;
if ( registeredEcons = = null ) {
registeredEcons = e . getName ( ) ;
} else {
registeredEcons + = " , " + e . getName ( ) ;
}
}
// Get String of Registered Permission Services
String registeredPerms = null ;
Collection < RegisteredServiceProvider < Permission > > perms = this . getServer ( ) . getServicesManager ( ) . getRegistrations ( Permission . class ) ;
for ( RegisteredServiceProvider < Permission > perm : perms ) {
Permission p = perm . getProvider ( ) ;
if ( registeredPerms = = null ) {
registeredPerms = p . getName ( ) ;
} else {
registeredPerms + = " , " + p . getName ( ) ;
}
}
// Get Economy & Permission primary Services
Economy econ = getServer ( ) . getServicesManager ( ) . getRegistration ( Economy . class ) . getProvider ( ) ;
Permission perm = getServer ( ) . getServicesManager ( ) . getRegistration ( Permission . class ) . getProvider ( ) ;
// Send user some info!
sender . sendMessage ( String . format ( " [%s] Vault v%s Information " , getDescription ( ) . getName ( ) , getDescription ( ) . getVersion ( ) ) ) ;
sender . sendMessage ( String . format ( " [%s] Economy: %s [%s] " , getDescription ( ) . getName ( ) , econ . getName ( ) , registeredEcons ) ) ;
sender . sendMessage ( String . format ( " [%s] Permission: %s [%s] " , getDescription ( ) . getName ( ) , perm . getName ( ) , registeredPerms ) ) ;
return true ;
} else {
// Show help
sender . sendMessage ( " Vault Commands: " ) ;
sender . sendMessage ( " /vault-info - Displays information about Vault " ) ;
return true ;
}
}
2011-12-10 06:19:09 +01:00
public synchronized void setVersion ( String newVersion ) {
this . newVersion = newVersion ;
}
2011-12-10 05:14:28 +01:00
/ * *
* Determines if all packages in a String array are within the Classpath
* This is the best way to determine if a specific plugin exists and will be
* loaded . If the plugin package isn ' t loaded , we shouldn ' t bother waiting
* for it !
* @param packages String Array of package names to check
* @return Success or Failure
* /
private static boolean packageExists ( String [ ] packages ) {
try {
for ( String pkg : packages ) {
Class . forName ( pkg ) ;
}
return true ;
} catch ( Exception e ) {
return false ;
}
}
2011-12-10 06:19:09 +01:00
2011-12-10 05:14:28 +01:00
public String updateCheck ( ) throws Exception {
String pluginUrlString = " http://dev.bukkit.org/server-mods/vault/files.rss " ;
try {
URL url = new URL ( pluginUrlString ) ;
Document doc = DocumentBuilderFactory . newInstance ( ) . newDocumentBuilder ( ) . parse ( url . openConnection ( ) . getInputStream ( ) ) ;
doc . getDocumentElement ( ) . normalize ( ) ;
NodeList nodes = doc . getElementsByTagName ( " item " ) ;
Node firstNode = nodes . item ( 0 ) ;
if ( firstNode . getNodeType ( ) = = 1 ) {
Element firstElement = ( Element ) firstNode ;
NodeList firstElementTagName = firstElement . getElementsByTagName ( " title " ) ;
Element firstNameElement = ( Element ) firstElementTagName . item ( 0 ) ;
NodeList firstNodes = firstNameElement . getChildNodes ( ) ;
return firstNodes . item ( 0 ) . getNodeValue ( ) ;
}
}
catch ( Exception localException ) {
return getDescription ( ) . getVersion ( ) . substring ( 0 , 5 ) ;
}
return getDescription ( ) . getVersion ( ) . substring ( 0 , 5 ) ;
}
public class VaultPlayerListener extends PlayerListener {
@Override
public void onPlayerJoin ( PlayerJoinEvent event ) {
Player player = event . getPlayer ( ) ;
if ( perms . has ( player , " vault.admin " ) ) {
try {
String oldVersion = getDescription ( ) . getVersion ( ) . substring ( 0 , 5 ) ;
if ( ! newVersion . contains ( oldVersion ) ) {
player . sendMessage ( newVersion + " is out! You are running " + oldVersion ) ;
player . sendMessage ( " Update Vault at: http://dev.bukkit.org/server-mods/vault " ) ;
}
} catch ( Exception e ) {
// Ignore exceptions
}
}
}
}
2011-06-29 02:18:20 +02:00
}
2011-12-03 10:30:44 +01:00
2011-12-10 06:19:09 +01:00