TotalFreedomMod/src/me/StevenLawson/TotalFreedomMod/Listener/TFM_EntityListener.java

168 lines
4.7 KiB
Java
Raw Normal View History

2011-10-19 00:37:00 +00:00
package me.StevenLawson.TotalFreedomMod.Listener;
2011-09-23 03:22:10 +00:00
import me.StevenLawson.TotalFreedomMod.Config.TFM_ConfigEntry;
2011-11-28 22:44:51 +00:00
import org.bukkit.entity.*;
2012-03-03 04:29:54 +00:00
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
2011-10-13 23:07:52 +00:00
import org.bukkit.event.entity.*;
2011-09-23 03:22:10 +00:00
2012-03-03 04:29:54 +00:00
public class TFM_EntityListener implements Listener
2011-09-23 03:22:10 +00:00
{
2012-03-03 04:29:54 +00:00
@EventHandler(priority = EventPriority.HIGH)
2011-09-23 03:22:10 +00:00
public void onEntityExplode(EntityExplodeEvent event)
{
2013-08-18 18:52:46 +00:00
if (!TFM_ConfigEntry.ALLOW_EXPLOSIONS.getBoolean())
{
event.setCancelled(true);
return;
}
2011-11-21 04:31:29 +00:00
event.setYield(0.0F);
}
2012-03-03 04:29:54 +00:00
@EventHandler(priority = EventPriority.HIGH)
public void onExplosionPrime(ExplosionPrimeEvent event)
2011-09-23 03:22:10 +00:00
{
2013-08-18 18:52:46 +00:00
if (!TFM_ConfigEntry.ALLOW_EXPLOSIONS.getBoolean())
2011-09-23 15:45:34 +00:00
{
event.setCancelled(true);
return;
}
2013-08-18 19:52:32 +00:00
event.setRadius((float) TFM_ConfigEntry.EXPLOSIVE_RADIUS.getDouble().doubleValue());
2011-09-23 15:45:34 +00:00
}
2012-03-03 04:29:54 +00:00
@EventHandler(priority = EventPriority.HIGH)
2011-09-23 15:45:34 +00:00
public void onEntityCombust(EntityCombustEvent event)
{
2013-08-18 18:52:46 +00:00
if (!TFM_ConfigEntry.ALLOW_EXPLOSIONS.getBoolean())
2011-09-23 15:45:34 +00:00
{
event.setCancelled(true);
}
}
2012-03-03 04:29:54 +00:00
@EventHandler(priority = EventPriority.HIGH)
2011-09-23 15:45:34 +00:00
public void onEntityDamage(EntityDamageEvent event)
{
2012-03-03 04:29:54 +00:00
switch (event.getCause())
2011-09-23 15:45:34 +00:00
{
2012-03-03 04:29:54 +00:00
case LAVA:
{
2013-08-18 18:52:46 +00:00
if (!TFM_ConfigEntry.ALLOW_LAVA_DAMAGE.getBoolean())
{
event.setCancelled(true);
return;
}
}
}
if (TFM_ConfigEntry.ENABLE_PET_PROTECT.getBoolean())
{
Entity entity = event.getEntity();
if (entity instanceof Tameable)
{
if (((Tameable) entity).isTamed())
2012-03-03 04:29:54 +00:00
{
event.setCancelled(true);
}
}
2011-09-23 15:45:34 +00:00
}
2011-09-23 03:22:10 +00:00
}
2011-11-21 04:31:29 +00:00
2012-03-03 04:29:54 +00:00
@EventHandler(priority = EventPriority.NORMAL)
2011-11-21 04:31:29 +00:00
public void onCreatureSpawn(CreatureSpawnEvent event)
{
2013-08-18 19:27:17 +00:00
if (TFM_ConfigEntry.MOB_LIMITER_ENABLED.getBoolean())
2011-11-21 04:31:29 +00:00
{
2012-11-18 03:57:24 +00:00
if (event.getSpawnReason().equals(CreatureSpawnEvent.SpawnReason.EGG))
{
event.setCancelled(true);
return;
}
2011-11-28 22:44:51 +00:00
Entity spawned = event.getEntity();
if (spawned instanceof EnderDragon)
{
2013-08-18 19:27:17 +00:00
if (TFM_ConfigEntry.MOB_LIMITER_DISABLE_DRAGON.getBoolean())
2011-11-28 22:44:51 +00:00
{
event.setCancelled(true);
return;
}
}
else if (spawned instanceof Ghast)
{
2013-08-18 19:27:17 +00:00
if (TFM_ConfigEntry.MOB_LIMITER_DISABLE_GHAST.getBoolean())
2011-11-28 22:44:51 +00:00
{
event.setCancelled(true);
return;
}
}
else if (spawned instanceof Slime)
2011-11-21 05:54:11 +00:00
{
2013-08-18 19:27:17 +00:00
if (TFM_ConfigEntry.MOB_LIMITER_DISABLE_SLIME.getBoolean())
2011-11-28 22:44:51 +00:00
{
event.setCancelled(true);
return;
}
2011-11-21 05:54:11 +00:00
}
2011-11-28 22:44:51 +00:00
else if (spawned instanceof Giant)
{
2013-08-18 19:27:17 +00:00
if (TFM_ConfigEntry.MOB_LIMITER_DISABLE_GIANT.getBoolean())
2011-11-28 22:44:51 +00:00
{
event.setCancelled(true);
return;
}
}
2012-11-18 03:57:24 +00:00
else if (spawned instanceof Bat)
{
event.setCancelled(true);
return;
}
2011-11-28 22:44:51 +00:00
2013-08-18 19:27:17 +00:00
int mobLimiterMax = TFM_ConfigEntry.MOB_LIMITER_MAX.getInteger().intValue();
if (mobLimiterMax > 0)
2011-11-21 04:31:29 +00:00
{
2011-11-21 05:54:11 +00:00
int mobcount = 0;
2011-11-28 22:44:51 +00:00
for (Entity entity : event.getLocation().getWorld().getLivingEntities())
2011-11-21 05:54:11 +00:00
{
if (!(entity instanceof HumanEntity))
2011-11-21 05:54:11 +00:00
{
2012-03-03 04:29:54 +00:00
mobcount++;
2011-11-21 05:54:11 +00:00
}
}
2011-11-28 22:44:51 +00:00
2013-08-18 19:27:17 +00:00
if (mobcount > mobLimiterMax)
2011-11-21 04:31:29 +00:00
{
event.setCancelled(true);
}
}
}
}
@EventHandler(priority = EventPriority.HIGH)
public void onEntityDeath(EntityDeathEvent event)
{
2013-08-18 18:52:46 +00:00
if (TFM_ConfigEntry.AUTO_ENTITY_WIPE.getBoolean())
{
event.setDroppedExp(0);
}
}
@EventHandler(priority = EventPriority.NORMAL)
public void onProjectileHit(ProjectileHitEvent event)
{
2013-08-18 18:52:46 +00:00
if (TFM_ConfigEntry.ALLOW_EXPLOSIONS.getBoolean())
{
Projectile entity = event.getEntity();
if (event.getEntityType() == EntityType.ARROW)
{
entity.getWorld().createExplosion(entity.getLocation(), 2F);
}
}
}
2011-09-23 03:22:10 +00:00
}