2011-10-18 20:37:00 -04:00
|
|
|
package me.StevenLawson.TotalFreedomMod.Listener;
|
2011-09-22 23:22:10 -04:00
|
|
|
|
2011-10-18 20:37:00 -04:00
|
|
|
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
|
2011-11-21 00:54:11 -05:00
|
|
|
import org.bukkit.Bukkit;
|
|
|
|
import org.bukkit.World;
|
2011-11-28 17:44:51 -05:00
|
|
|
import org.bukkit.entity.*;
|
2011-10-13 19:07:52 -04:00
|
|
|
import org.bukkit.event.entity.*;
|
2011-09-23 11:45:34 -04:00
|
|
|
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
2011-09-22 23:22:10 -04:00
|
|
|
|
2011-10-02 00:23:22 -04:00
|
|
|
public class TFM_EntityListener extends EntityListener
|
2011-09-22 23:22:10 -04:00
|
|
|
{
|
2011-10-10 08:09:19 -04:00
|
|
|
private TotalFreedomMod plugin;
|
2011-09-28 13:42:21 -04:00
|
|
|
|
2011-10-18 20:37:00 -04:00
|
|
|
public TFM_EntityListener(TotalFreedomMod instance)
|
2011-09-22 23:22:10 -04:00
|
|
|
{
|
2011-10-10 08:09:19 -04:00
|
|
|
this.plugin = instance;
|
2011-09-22 23:22:10 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onEntityExplode(EntityExplodeEvent event)
|
2011-09-26 11:26:52 -04:00
|
|
|
{
|
2011-11-07 19:29:33 -05:00
|
|
|
if (!TotalFreedomMod.allowExplosions)
|
2011-09-26 11:26:52 -04:00
|
|
|
{
|
|
|
|
event.setCancelled(true);
|
|
|
|
return;
|
|
|
|
}
|
2011-11-20 23:31:29 -05:00
|
|
|
|
2011-10-21 13:02:07 -04:00
|
|
|
event.setYield(0.0f);
|
2011-09-26 11:26:52 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onExplosionPrime(ExplosionPrimeEvent event)
|
2011-09-22 23:22:10 -04:00
|
|
|
{
|
2011-11-07 19:29:33 -05:00
|
|
|
if (!TotalFreedomMod.allowExplosions)
|
2011-09-23 11:45:34 -04:00
|
|
|
{
|
|
|
|
event.setCancelled(true);
|
|
|
|
return;
|
|
|
|
}
|
2011-09-28 13:42:21 -04:00
|
|
|
|
2011-11-07 19:29:33 -05:00
|
|
|
event.setRadius((float) TotalFreedomMod.explosiveRadius);
|
2011-09-23 11:45:34 -04:00
|
|
|
}
|
2011-09-28 13:42:21 -04:00
|
|
|
|
2011-09-23 11:45:34 -04:00
|
|
|
@Override
|
|
|
|
public void onEntityCombust(EntityCombustEvent event)
|
|
|
|
{
|
2011-11-07 19:29:33 -05:00
|
|
|
if (!TotalFreedomMod.allowFireSpread)
|
2011-09-23 11:45:34 -04:00
|
|
|
{
|
|
|
|
event.setCancelled(true);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onEntityDamage(EntityDamageEvent event)
|
|
|
|
{
|
2011-11-07 19:29:33 -05:00
|
|
|
if (event.getCause() == DamageCause.LAVA && !TotalFreedomMod.allowLavaDamage)
|
2011-09-23 11:45:34 -04:00
|
|
|
{
|
|
|
|
event.setCancelled(true);
|
|
|
|
return;
|
|
|
|
}
|
2011-09-22 23:22:10 -04:00
|
|
|
}
|
2011-11-20 23:31:29 -05:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public void onCreatureSpawn(CreatureSpawnEvent event)
|
|
|
|
{
|
|
|
|
if (TotalFreedomMod.mobLimiterEnabled)
|
|
|
|
{
|
2011-11-28 17:44:51 -05:00
|
|
|
Entity spawned = event.getEntity();
|
|
|
|
|
|
|
|
if (spawned instanceof EnderDragon)
|
|
|
|
{
|
|
|
|
if (TotalFreedomMod.mobLimiterDisableDragon)
|
|
|
|
{
|
|
|
|
event.setCancelled(true);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (spawned instanceof Ghast)
|
|
|
|
{
|
|
|
|
if (TotalFreedomMod.mobLimiterDisableGhast)
|
|
|
|
{
|
|
|
|
event.setCancelled(true);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (spawned instanceof Slime)
|
2011-11-21 00:54:11 -05:00
|
|
|
{
|
2011-11-28 17:44:51 -05:00
|
|
|
if (TotalFreedomMod.mobLimiterDisableSlime)
|
|
|
|
{
|
|
|
|
event.setCancelled(true);
|
|
|
|
return;
|
|
|
|
}
|
2011-11-21 00:54:11 -05:00
|
|
|
}
|
2011-11-28 17:44:51 -05:00
|
|
|
else if (spawned instanceof Giant)
|
|
|
|
{
|
|
|
|
if (TotalFreedomMod.mobLimiterDisableGiant)
|
|
|
|
{
|
|
|
|
event.setCancelled(true);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-11-20 23:31:29 -05:00
|
|
|
if (TotalFreedomMod.mobLimiterMax > 0)
|
|
|
|
{
|
2011-11-21 00:54:11 -05:00
|
|
|
int mobcount = 0;
|
2011-11-28 17:44:51 -05:00
|
|
|
|
2011-11-21 00:54:11 -05:00
|
|
|
for (World world : Bukkit.getWorlds())
|
|
|
|
{
|
|
|
|
for (Entity ent : world.getLivingEntities())
|
|
|
|
{
|
|
|
|
if (ent instanceof Creature || ent instanceof Ghast || ent instanceof Slime || ent instanceof EnderDragon)
|
|
|
|
{
|
|
|
|
mobcount++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2011-11-28 17:44:51 -05:00
|
|
|
|
2011-11-21 00:54:11 -05:00
|
|
|
if (mobcount > TotalFreedomMod.mobLimiterMax)
|
2011-11-20 23:31:29 -05:00
|
|
|
{
|
|
|
|
event.setCancelled(true);
|
2011-11-21 00:54:11 -05:00
|
|
|
return;
|
2011-11-20 23:31:29 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2011-09-22 23:22:10 -04:00
|
|
|
}
|