From e621290faeb3e60574de9767e95136d4afb1f315 Mon Sep 17 00:00:00 2001 From: Steven Lawson Date: Sun, 20 Nov 2011 23:31:29 -0500 Subject: [PATCH] Release update. --- src/config.yml | 4 ++ .../Commands/Command_addexp.java | 62 +++++++++++++++++++ .../Listener/TFM_EntityListener.java | 20 +++++- .../TotalFreedomMod/TFM_Util.java | 14 +++++ .../TotalFreedomMod/TotalFreedomMod.java | 5 ++ src/plugin.yml | 3 + 6 files changed, 106 insertions(+), 2 deletions(-) create mode 100644 src/me/StevenLawson/TotalFreedomMod/Commands/Command_addexp.java diff --git a/src/config.yml b/src/config.yml index 56c43683..a79fddb4 100644 --- a/src/config.yml +++ b/src/config.yml @@ -35,6 +35,10 @@ disable_weather: true landmines_enabled: false mp44_enabled: false +# Moblimiter: +mob_limiter_enabled: true +mob_limiter_max: 50 + # Superadmins: Users that can always log in and use the most powerful commands: # When online-mode = false, only superadmin_ips will be used. # The superadmin lists have been moved to superadmin.yml diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_addexp.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_addexp.java new file mode 100644 index 00000000..5b2c6ff2 --- /dev/null +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_addexp.java @@ -0,0 +1,62 @@ +package me.StevenLawson.TotalFreedomMod.Commands; + +import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; +import org.bukkit.ChatColor; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.ExperienceOrb; +import org.bukkit.entity.Player; + +public class Command_addexp extends TFM_Command +{ + @Override + public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) + { + if (senderIsConsole) + { + sender.sendMessage(TotalFreedomMod.NOT_FROM_CONSOLE); + return true; + } + + if (!sender.isOp()) + { + sender.sendMessage(TotalFreedomMod.MSG_NO_PERMS); + return true; + } + + if (args.length != 1) + { + return false; + } + + int exp_amount; + + try + { + exp_amount = Integer.parseInt(args[0]); + + if (exp_amount < 0) + { + sender.sendMessage(ChatColor.AQUA + "Invalid exp amount (MUST BE POSITIVE)."); + return true; + } + else if (exp_amount > 2000) + { + sender.sendMessage(ChatColor.AQUA + "Invalid exp amount (MAX = 2000)."); + return true; + } + } + catch (NumberFormatException ex) + { + sender.sendMessage(ChatColor.AQUA + "Invalid exp amount."); + return true; + } + + ExperienceOrb exp_orb = sender_p.getWorld().spawn(sender_p.getLocation(), ExperienceOrb.class); + exp_orb.setExperience(exp_amount); + + sender.sendMessage(ChatColor.AQUA + String.valueOf(exp_amount) + " exp added."); + + return true; + } +} diff --git a/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_EntityListener.java b/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_EntityListener.java index ca865661..d7004066 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_EntityListener.java +++ b/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_EntityListener.java @@ -1,6 +1,7 @@ package me.StevenLawson.TotalFreedomMod.Listener; import me.StevenLawson.TotalFreedomMod.TFM_UserInfo; +import me.StevenLawson.TotalFreedomMod.TFM_Util; import me.StevenLawson.TotalFreedomMod.TotalFreedomMod; import org.bukkit.entity.Player; import org.bukkit.event.entity.*; @@ -23,7 +24,7 @@ public class TFM_EntityListener extends EntityListener event.setCancelled(true); return; } - + event.setYield(0.0f); } @@ -69,11 +70,26 @@ public class TFM_EntityListener extends EntityListener } } } - + if (event.getCause() == DamageCause.LAVA && !TotalFreedomMod.allowLavaDamage) { event.setCancelled(true); return; } } + + @Override + public void onCreatureSpawn(CreatureSpawnEvent event) + { + if (TotalFreedomMod.mobLimiterEnabled) + { + if (TotalFreedomMod.mobLimiterMax > 0) + { + if (TFM_Util.getMobAmount(event.getEntity().getWorld()) > TotalFreedomMod.mobLimiterMax) + { + event.setCancelled(true); + } + } + } + } } diff --git a/src/me/StevenLawson/TotalFreedomMod/TFM_Util.java b/src/me/StevenLawson/TotalFreedomMod/TFM_Util.java index 5214ad13..1fde91d0 100644 --- a/src/me/StevenLawson/TotalFreedomMod/TFM_Util.java +++ b/src/me/StevenLawson/TotalFreedomMod/TFM_Util.java @@ -580,4 +580,18 @@ public class TFM_Util } } } + + public static int getMobAmount(World world) + { + List mobs = world.getLivingEntities(); + for (int j = 0; j < mobs.size(); j++) + { + if (!Creature.class.isInstance(mobs.get(j))) + { + mobs.remove(j); + j--; + } + } + return mobs.size(); + } } diff --git a/src/me/StevenLawson/TotalFreedomMod/TotalFreedomMod.java b/src/me/StevenLawson/TotalFreedomMod/TotalFreedomMod.java index e3366da5..6160e0f9 100644 --- a/src/me/StevenLawson/TotalFreedomMod/TotalFreedomMod.java +++ b/src/me/StevenLawson/TotalFreedomMod/TotalFreedomMod.java @@ -135,6 +135,8 @@ public class TotalFreedomMod extends JavaPlugin public static Boolean disableWeather = true; public static boolean landminesEnabled = false; public static boolean mp44Enabled = false; + public static boolean mobLimiterEnabled = true; + public static int mobLimiterMax = 50; public void loadMainConfig() { @@ -159,6 +161,8 @@ public class TotalFreedomMod extends JavaPlugin disableWeather = config.getBoolean("disable_weather", disableWeather); landminesEnabled = config.getBoolean("landmines_enabled", landminesEnabled); mp44Enabled = config.getBoolean("mp44_enabled", mp44Enabled); + mobLimiterEnabled = config.getBoolean("mob_limiter_enabled", mobLimiterEnabled); + mobLimiterMax = config.getInt("mob_limiter_max", mobLimiterMax); } public static List superadmins = new ArrayList(); @@ -201,6 +205,7 @@ public class TotalFreedomMod extends JavaPlugin pm.registerEvent(Event.Type.ENTITY_COMBUST, entityListener, Event.Priority.High, this); pm.registerEvent(Event.Type.ENTITY_DAMAGE, entityListener, Event.Priority.High, this); pm.registerEvent(Event.Type.EXPLOSION_PRIME, entityListener, Event.Priority.High, this); + pm.registerEvent(Event.Type.CREATURE_SPAWN, entityListener, Event.Priority.Normal, this); pm.registerEvent(Event.Type.BLOCK_IGNITE, blockListener, Event.Priority.High, this); pm.registerEvent(Event.Type.BLOCK_BURN, blockListener, Event.Priority.High, this); diff --git a/src/plugin.yml b/src/plugin.yml index c36137d3..0c323f0b 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -4,6 +4,9 @@ version: 2.2 description: Plugin for the Total Freedom server. author: StevenLawson / Madgeek1450 commands: + addexp: + description: Add levels to your survival level. + usage: / [level] cage: description: Superadmin command - Place a cage around someone. usage: / [off | outermaterial] [water | lava]