From e621290faeb3e60574de9767e95136d4afb1f315 Mon Sep 17 00:00:00 2001 From: Steven Lawson Date: Sun, 20 Nov 2011 23:31:29 -0500 Subject: [PATCH 1/2] 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] From d8f2433c5b5ae98988da5c9ed0d780563d40d6fb Mon Sep 17 00:00:00 2001 From: Steven Lawson Date: Mon, 21 Nov 2011 00:54:11 -0500 Subject: [PATCH 2/2] Fixed moblimiter --- .../TotalFreedomMod/Commands/Command_mp.java | 4 +-- .../Listener/TFM_EntityListener.java | 29 ++++++++++++++++++- .../TotalFreedomMod/TFM_Util.java | 14 --------- 3 files changed, 30 insertions(+), 17 deletions(-) diff --git a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_mp.java b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_mp.java index f35985bf..4ce46165 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Commands/Command_mp.java +++ b/src/me/StevenLawson/TotalFreedomMod/Commands/Command_mp.java @@ -20,9 +20,9 @@ public class Command_mp extends TFM_Command int removed = 0; for (World world : Bukkit.getWorlds()) { - for (Entity ent : world.getEntities()) + for (Entity ent : world.getLivingEntities()) { - if (ent instanceof Creature || ent instanceof Ghast || ent instanceof Slime) + if (ent instanceof Creature || ent instanceof Ghast || ent instanceof Slime || ent instanceof EnderDragon) { ent.remove(); removed++; diff --git a/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_EntityListener.java b/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_EntityListener.java index d7004066..e3818ce5 100644 --- a/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_EntityListener.java +++ b/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_EntityListener.java @@ -3,7 +3,14 @@ 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.Bukkit; +import org.bukkit.World; +import org.bukkit.entity.Creature; +import org.bukkit.entity.EnderDragon; +import org.bukkit.entity.Entity; +import org.bukkit.entity.Ghast; import org.bukkit.entity.Player; +import org.bukkit.entity.Slime; import org.bukkit.event.entity.*; import org.bukkit.event.entity.EntityDamageEvent.DamageCause; @@ -83,11 +90,31 @@ public class TFM_EntityListener extends EntityListener { if (TotalFreedomMod.mobLimiterEnabled) { + if (event.getEntity() instanceof Ghast || event.getEntity() instanceof Slime || event.getEntity() instanceof EnderDragon) + { + event.setCancelled(true); + return; + } + if (TotalFreedomMod.mobLimiterMax > 0) { - if (TFM_Util.getMobAmount(event.getEntity().getWorld()) > TotalFreedomMod.mobLimiterMax) + int mobcount = 0; + + for (World world : Bukkit.getWorlds()) + { + for (Entity ent : world.getLivingEntities()) + { + if (ent instanceof Creature || ent instanceof Ghast || ent instanceof Slime || ent instanceof EnderDragon) + { + mobcount++; + } + } + } + + if (mobcount > TotalFreedomMod.mobLimiterMax) { event.setCancelled(true); + return; } } } diff --git a/src/me/StevenLawson/TotalFreedomMod/TFM_Util.java b/src/me/StevenLawson/TotalFreedomMod/TFM_Util.java index 1fde91d0..5214ad13 100644 --- a/src/me/StevenLawson/TotalFreedomMod/TFM_Util.java +++ b/src/me/StevenLawson/TotalFreedomMod/TFM_Util.java @@ -580,18 +580,4 @@ 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(); - } }