2011-09-20 02:52:08 +00:00
package me.StevenLawson.TotalFreedomMod ;
2011-09-26 15:26:52 +00:00
import java.io.File ;
2012-03-09 19:01:04 +00:00
import java.io.InputStream ;
import java.util.* ;
2011-09-20 02:52:08 +00:00
import java.util.logging.Level ;
import java.util.logging.Logger ;
2011-10-19 00:37:00 +00:00
import me.StevenLawson.TotalFreedomMod.Commands.TFM_Command ;
2012-03-09 19:01:04 +00:00
import me.StevenLawson.TotalFreedomMod.Listener.TFM_BlockListener ;
import me.StevenLawson.TotalFreedomMod.Listener.TFM_EntityListener ;
import me.StevenLawson.TotalFreedomMod.Listener.TFM_PlayerListener ;
import me.StevenLawson.TotalFreedomMod.Listener.TFM_WeatherListener ;
2011-09-20 02:52:08 +00:00
import org.bukkit.Bukkit ;
import org.bukkit.ChatColor ;
2012-03-06 19:25:22 +00:00
import org.bukkit.Server ;
2011-10-19 00:37:00 +00:00
import org.bukkit.command.Command ;
import org.bukkit.command.CommandSender ;
2011-10-12 19:33:31 +00:00
import org.bukkit.configuration.file.FileConfiguration ;
import org.bukkit.configuration.file.YamlConfiguration ;
2011-10-13 23:07:52 +00:00
import org.bukkit.entity.Player ;
2011-09-23 03:22:10 +00:00
import org.bukkit.plugin.PluginManager ;
2011-09-20 02:52:08 +00:00
import org.bukkit.plugin.java.JavaPlugin ;
public class TotalFreedomMod extends JavaPlugin
{
2011-09-26 15:26:52 +00:00
private static final Logger log = Logger . getLogger ( " Minecraft " ) ;
2012-03-06 19:25:22 +00:00
private final Server server = Bukkit . getServer ( ) ;
2011-10-01 17:59:46 +00:00
2011-10-10 12:09:19 +00:00
public static final long HEARTBEAT_RATE = 5L ; //Seconds
2011-10-12 22:45:43 +00:00
public static final String CONFIG_FILE = " config.yml " ;
2011-10-19 02:52:32 +00:00
public static final String SUPERADMIN_FILE = " superadmin.yml " ;
2011-11-08 00:29:33 +00:00
public static final String COMMAND_PATH = " me.StevenLawson.TotalFreedomMod.Commands " ;
public static final String COMMAND_PREFIX = " Command_ " ;
2011-10-02 16:15:16 +00:00
public static final String MSG_NO_PERMS = ChatColor . YELLOW + " You do not have permission to use this command. " ;
public static final String YOU_ARE_OP = ChatColor . YELLOW + " You are now op! " ;
public static final String YOU_ARE_NOT_OP = ChatColor . YELLOW + " You are no longer op! " ;
public static final String CAKE_LYRICS = " But there's no sense crying over every mistake. You just keep on trying till you run out of cake. " ;
2011-10-16 06:00:37 +00:00
public static final String NOT_FROM_CONSOLE = " This command may not be used from the console. " ;
2011-10-13 23:45:01 +00:00
2011-11-08 00:29:33 +00:00
public static boolean allPlayersFrozen = false ;
2011-11-28 22:44:51 +00:00
public static Map < Player , Double > fuckoffEnabledFor = new HashMap < Player , Double > ( ) ;
2011-10-01 17:59:46 +00:00
2012-09-14 22:49:44 +00:00
public static String pluginVersion = " " ;
public static String buildNumber = " " ;
public static String buildDate = " " ;
public static TotalFreedomMod plugin = null ;
2011-10-02 16:15:16 +00:00
@Override
public void onEnable ( )
{
2012-09-14 22:49:44 +00:00
TotalFreedomMod . plugin = this ;
2012-03-09 19:01:04 +00:00
setAppProperties ( ) ;
2011-10-19 02:52:32 +00:00
loadMainConfig ( ) ;
loadSuperadminConfig ( ) ;
2011-10-30 19:27:06 +00:00
2012-03-09 19:01:04 +00:00
TFM_UserList . getInstance ( this ) ;
2011-10-02 16:15:16 +00:00
registerEventHandlers ( ) ;
2011-10-30 19:27:06 +00:00
2012-03-06 19:25:22 +00:00
server . getScheduler ( ) . scheduleAsyncRepeatingTask ( this , new TFM_Heartbeat ( this ) , HEARTBEAT_RATE * 20L , HEARTBEAT_RATE * 20L ) ;
2011-09-30 19:32:13 +00:00
2012-09-14 22:49:44 +00:00
log . log ( Level . INFO , " [ " + getDescription ( ) . getName ( ) + " ] - Enabled! - Version: " + TotalFreedomMod . pluginVersion + " . " + TotalFreedomMod . buildNumber + " by Madgeek1450 and DarthSalamon " ) ;
2011-10-30 19:27:06 +00:00
2011-10-14 05:31:21 +00:00
TFM_Util . deleteFolder ( new File ( " ./_deleteme " ) ) ;
2012-03-06 19:25:22 +00:00
if ( generateFlatlands )
{
TFM_Util . generateFlatlands ( flatlandsGenerationParams ) ;
}
2011-10-02 16:15:16 +00:00
}
2011-09-26 15:26:52 +00:00
2011-10-02 16:15:16 +00:00
@Override
public void onDisable ( )
{
2012-03-06 19:25:22 +00:00
server . getScheduler ( ) . cancelTasks ( this ) ;
2011-10-13 01:33:58 +00:00
log . log ( Level . INFO , " [ " + getDescription ( ) . getName ( ) + " ] - Disabled. " ) ;
2011-10-12 22:45:43 +00:00
}
2011-10-19 00:37:00 +00:00
@Override
public boolean onCommand ( CommandSender sender , Command cmd , String commandLabel , String [ ] args )
{
try
{
Player sender_p = null ;
boolean senderIsConsole = false ;
if ( sender instanceof Player )
{
sender_p = ( Player ) sender ;
log . info ( String . format ( " [PLAYER_COMMAND] %s(%s): /%s %s " ,
sender_p . getName ( ) ,
ChatColor . stripColor ( sender_p . getDisplayName ( ) ) ,
commandLabel ,
TFM_Util . implodeStringList ( " " , Arrays . asList ( args ) ) ) ) ;
}
else
{
senderIsConsole = true ;
log . info ( String . format ( " [CONSOLE_COMMAND] %s: /%s %s " ,
sender . getName ( ) ,
commandLabel ,
TFM_Util . implodeStringList ( " " , Arrays . asList ( args ) ) ) ) ;
}
TFM_Command dispatcher ;
try
{
ClassLoader classLoader = TotalFreedomMod . class . getClassLoader ( ) ;
dispatcher = ( TFM_Command ) classLoader . loadClass ( String . format ( " %s.%s%s " , COMMAND_PATH , COMMAND_PREFIX , cmd . getName ( ) . toLowerCase ( ) ) ) . newInstance ( ) ;
dispatcher . setPlugin ( this ) ;
}
catch ( Throwable ex )
{
2011-10-19 02:52:32 +00:00
log . log ( Level . SEVERE , " [ " + getDescription ( ) . getName ( ) + " ] Command not loaded: " + cmd . getName ( ) , ex ) ;
2011-10-19 00:37:00 +00:00
sender . sendMessage ( ChatColor . RED + " Command Error: Command not loaded: " + cmd . getName ( ) ) ;
return true ;
}
try
{
return dispatcher . run ( sender , sender_p , cmd , commandLabel , args , senderIsConsole ) ;
}
catch ( Throwable ex )
{
sender . sendMessage ( ChatColor . RED + " Command Error: " + ex . getMessage ( ) ) ;
}
2011-10-30 19:27:06 +00:00
2011-10-24 02:43:52 +00:00
dispatcher = null ;
2011-10-19 00:37:00 +00:00
}
catch ( Throwable ex )
{
2011-10-19 02:52:32 +00:00
log . log ( Level . SEVERE , " [ " + getDescription ( ) . getName ( ) + " ] Command Error: " + commandLabel , ex ) ;
2011-10-19 00:37:00 +00:00
sender . sendMessage ( ChatColor . RED + " Unknown Command Error. " ) ;
}
return true ;
}
2011-10-12 22:45:43 +00:00
2011-11-08 00:29:33 +00:00
public static boolean allowFirePlace = false ;
public static Boolean allowFireSpread = false ;
public static Boolean allowLavaDamage = false ;
public static boolean allowLavaPlace = false ;
public static boolean allowWaterPlace = false ;
public static Boolean allowExplosions = false ;
public static double explosiveRadius = 4 . 0D ;
public static boolean autoEntityWipe = true ;
public static boolean nukeMonitor = true ;
public static int nukeMonitorCountBreak = 100 ;
public static int nukeMonitorCountPlace = 25 ;
public static double nukeMonitorRange = 10 . 0D ;
public static int freecamTriggerCount = 10 ;
public static Boolean preprocessLogEnabled = true ;
public static Boolean disableNight = true ;
public static Boolean disableWeather = true ;
public static boolean landminesEnabled = false ;
public static boolean mp44Enabled = false ;
2011-11-21 04:31:29 +00:00
public static boolean mobLimiterEnabled = true ;
public static int mobLimiterMax = 50 ;
2011-11-28 22:44:51 +00:00
public static boolean mobLimiterDisableDragon = true ;
public static boolean mobLimiterDisableGhast = true ;
public static boolean mobLimiterDisableSlime = true ;
public static boolean mobLimiterDisableGiant = true ;
2011-11-29 05:41:47 +00:00
public static boolean tossmobEnabled = false ;
2012-03-06 19:25:22 +00:00
public static boolean generateFlatlands = true ;
public static String flatlandsGenerationParams = " 16,stone,32,dirt,1,grass " ;
public static boolean allowFliudSpread = false ;
2011-10-12 22:45:43 +00:00
2011-10-19 02:52:32 +00:00
public void loadMainConfig ( )
2011-10-02 16:15:16 +00:00
{
2011-10-13 23:07:52 +00:00
TFM_Util . createDefaultConfiguration ( CONFIG_FILE , this , getFile ( ) ) ;
2011-10-12 22:45:43 +00:00
FileConfiguration config = YamlConfiguration . loadConfiguration ( new File ( getDataFolder ( ) , CONFIG_FILE ) ) ;
allowFirePlace = config . getBoolean ( " allow_fire_place " , allowFirePlace ) ;
allowFireSpread = config . getBoolean ( " allow_fire_spread " , allowFireSpread ) ;
allowLavaDamage = config . getBoolean ( " allow_lava_damage " , allowLavaDamage ) ;
allowLavaPlace = config . getBoolean ( " allow_lava_place " , allowLavaPlace ) ;
allowWaterPlace = config . getBoolean ( " allow_water_place " , allowWaterPlace ) ;
allowExplosions = config . getBoolean ( " allow_explosions " , allowExplosions ) ;
explosiveRadius = config . getDouble ( " explosiveRadius " , explosiveRadius ) ;
autoEntityWipe = config . getBoolean ( " auto_wipe " , autoEntityWipe ) ;
nukeMonitor = config . getBoolean ( " nuke_monitor " , nukeMonitor ) ;
2011-10-18 04:08:40 +00:00
nukeMonitorCountBreak = config . getInt ( " nuke_monitor_count_break " , nukeMonitorCountBreak ) ;
nukeMonitorCountPlace = config . getInt ( " nuke_monitor_count_place " , nukeMonitorCountPlace ) ;
2011-10-12 22:45:43 +00:00
nukeMonitorRange = config . getDouble ( " nuke_monitor_range " , nukeMonitorRange ) ;
freecamTriggerCount = config . getInt ( " freecam_trigger_count " , freecamTriggerCount ) ;
preprocessLogEnabled = config . getBoolean ( " preprocess_log " , preprocessLogEnabled ) ;
2011-10-13 18:30:45 +00:00
disableNight = config . getBoolean ( " disable_night " , disableNight ) ;
2011-10-14 05:31:21 +00:00
disableWeather = config . getBoolean ( " disable_weather " , disableWeather ) ;
2011-10-24 02:43:52 +00:00
landminesEnabled = config . getBoolean ( " landmines_enabled " , landminesEnabled ) ;
mp44Enabled = config . getBoolean ( " mp44_enabled " , mp44Enabled ) ;
2011-11-21 04:31:29 +00:00
mobLimiterEnabled = config . getBoolean ( " mob_limiter_enabled " , mobLimiterEnabled ) ;
mobLimiterMax = config . getInt ( " mob_limiter_max " , mobLimiterMax ) ;
2011-11-28 22:44:51 +00:00
mobLimiterDisableDragon = config . getBoolean ( " mob_limiter_disable_dragon " , mobLimiterDisableDragon ) ;
mobLimiterDisableGhast = config . getBoolean ( " mob_limiter_disable_ghast " , mobLimiterDisableGhast ) ;
mobLimiterDisableSlime = config . getBoolean ( " mob_limiter_disable_slime " , mobLimiterDisableSlime ) ;
mobLimiterDisableGiant = config . getBoolean ( " mob_limiter_disable_giant " , mobLimiterDisableGiant ) ;
2012-03-06 19:25:22 +00:00
tossmobEnabled = config . getBoolean ( " tossmob_enabled " , tossmobEnabled ) ;
generateFlatlands = config . getBoolean ( " generate_flatlands " , generateFlatlands ) ;
flatlandsGenerationParams = config . getString ( " flatlands_generation_params " , flatlandsGenerationParams ) ;
allowFliudSpread = config . getBoolean ( " allow_fluid_spread " , allowFliudSpread ) ;
2011-10-19 02:52:32 +00:00
}
2011-11-11 02:18:45 +00:00
public static List < String > superadmins = new ArrayList < String > ( ) ;
public static List < String > superadmin_ips = new ArrayList < String > ( ) ;
2011-10-19 02:52:32 +00:00
public void loadSuperadminConfig ( )
{
TFM_Util . createDefaultConfiguration ( SUPERADMIN_FILE , this , getFile ( ) ) ;
2011-10-30 19:27:06 +00:00
FileConfiguration config = YamlConfiguration . loadConfiguration ( new File ( getDataFolder ( ) , SUPERADMIN_FILE ) ) ;
2011-10-12 18:13:10 +00:00
2011-10-16 06:00:37 +00:00
superadmins = new ArrayList < String > ( ) ;
superadmin_ips = new ArrayList < String > ( ) ;
2011-10-30 19:27:06 +00:00
for ( String user : config . getKeys ( false ) )
2011-10-16 06:00:37 +00:00
{
2011-10-30 19:27:06 +00:00
superadmins . add ( user . toLowerCase ( ) . trim ( ) ) ;
2011-11-28 22:44:51 +00:00
List < String > user_ips = ( List < String > ) config . getStringList ( user ) ;
2011-10-30 19:27:06 +00:00
for ( String ip : user_ips )
2011-10-16 06:00:37 +00:00
{
2011-10-30 19:27:06 +00:00
ip = ip . toLowerCase ( ) . trim ( ) ;
if ( ! superadmin_ips . contains ( ip ) )
{
superadmin_ips . add ( ip ) ;
}
2011-10-16 06:00:37 +00:00
}
}
2011-10-12 18:13:10 +00:00
}
2011-10-30 19:27:06 +00:00
2011-10-02 16:15:16 +00:00
private void registerEventHandlers ( )
{
2012-03-06 19:25:22 +00:00
PluginManager pm = server . getPluginManager ( ) ;
2012-09-14 22:49:44 +00:00
pm . registerEvents ( new TFM_EntityListener ( this ) , this ) ;
pm . registerEvents ( new TFM_BlockListener ( this ) , this ) ;
pm . registerEvents ( new TFM_PlayerListener ( this ) , this ) ;
pm . registerEvents ( new TFM_WeatherListener ( this ) , this ) ;
2011-10-02 16:15:16 +00:00
}
2012-03-09 19:01:04 +00:00
private void setAppProperties ( )
{
try
{
InputStream in ;
Properties props = new Properties ( ) ;
in = getClass ( ) . getResourceAsStream ( " /appinfo.properties " ) ;
props . load ( in ) ;
in . close ( ) ;
2012-07-22 23:15:00 +00:00
TotalFreedomMod . pluginVersion = props . getProperty ( " program.VERSION " ) ;
TotalFreedomMod . buildNumber = props . getProperty ( " program.BUILDNUM " ) ;
TotalFreedomMod . buildDate = props . getProperty ( " program.BUILDDATE " ) ;
2012-03-09 19:01:04 +00:00
}
catch ( Exception ex )
{
log . log ( Level . SEVERE , null , ex ) ;
}
}
2011-09-20 02:52:08 +00:00
}