mirror of
https://github.com/TotalFreedomMC/TF-EssentialsX.git
synced 2025-04-25 16:09:44 +00:00
[trunk] Protect, more merges
git-svn-id: https://svn.java.net/svn/essentials~svn/trunk@1586 e251c2fe-e539-e718-e476-b85c1f46cddb
This commit is contained in:
parent
bc3d8d5ece
commit
9a4ef7cd20
3 changed files with 124 additions and 18 deletions
|
@ -50,8 +50,6 @@ public class EssentialsProtect extends JavaPlugin implements IConf
|
||||||
|
|
||||||
public void onEnable()
|
public void onEnable()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|
||||||
ess = Essentials.getStatic();
|
ess = Essentials.getStatic();
|
||||||
ess.getDependancyChecker().checkProtectDependancies();
|
ess.getDependancyChecker().checkProtectDependancies();
|
||||||
PluginManager pm = this.getServer().getPluginManager();
|
PluginManager pm = this.getServer().getPluginManager();
|
||||||
|
@ -90,7 +88,6 @@ public class EssentialsProtect extends JavaPlugin implements IConf
|
||||||
{
|
{
|
||||||
genSettings.clear();
|
genSettings.clear();
|
||||||
dataSettings.clear();
|
dataSettings.clear();
|
||||||
|
|
||||||
blockListener = null;
|
blockListener = null;
|
||||||
playerListener = null;
|
playerListener = null;
|
||||||
entityListener = null;
|
entityListener = null;
|
||||||
|
|
|
@ -110,6 +110,13 @@ public class EssentialsProtectBlockListener extends BlockListener
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (event.getBlock().getType() == Material.OBSIDIAN ||
|
||||||
|
event.getBlock().getFace(BlockFace.DOWN).getType() == Material.OBSIDIAN)
|
||||||
|
{
|
||||||
|
event.setCancelled(EssentialsProtect.guardSettings.get("protect.prevent.portal-creation"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if ((event.getCause().equals(BlockIgniteEvent.IgniteCause.SPREAD)))
|
if ((event.getCause().equals(BlockIgniteEvent.IgniteCause.SPREAD)))
|
||||||
{
|
{
|
||||||
event.setCancelled(EssentialsProtect.guardSettings.get("protect.prevent.fire-spread"));
|
event.setCancelled(EssentialsProtect.guardSettings.get("protect.prevent.fire-spread"));
|
||||||
|
@ -127,6 +134,11 @@ public class EssentialsProtectBlockListener extends BlockListener
|
||||||
event.setCancelled(EssentialsProtect.guardSettings.get("protect.prevent.lava-fire-spread"));
|
event.setCancelled(EssentialsProtect.guardSettings.get("protect.prevent.lava-fire-spread"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (event.getCause().equals(BlockIgniteEvent.IgniteCause.LIGHTNING))
|
||||||
|
{
|
||||||
|
event.setCancelled(EssentialsProtect.guardSettings.get("protect.prevent.lightning-fire-spread"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package com.earth2me.essentials.protect;
|
package com.earth2me.essentials.protect;
|
||||||
|
|
||||||
import com.earth2me.essentials.Essentials;
|
import com.earth2me.essentials.Essentials;
|
||||||
|
import com.earth2me.essentials.EssentialsBlockListener;
|
||||||
import com.earth2me.essentials.User;
|
import com.earth2me.essentials.User;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
|
@ -8,7 +9,9 @@ import java.util.List;
|
||||||
import net.minecraft.server.ChunkPosition;
|
import net.minecraft.server.ChunkPosition;
|
||||||
import net.minecraft.server.Packet60Explosion;
|
import net.minecraft.server.Packet60Explosion;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.block.BlockFace;
|
||||||
import org.bukkit.craftbukkit.CraftServer;
|
import org.bukkit.craftbukkit.CraftServer;
|
||||||
import org.bukkit.craftbukkit.CraftWorld;
|
import org.bukkit.craftbukkit.CraftWorld;
|
||||||
import org.bukkit.craftbukkit.entity.CraftPlayer;
|
import org.bukkit.craftbukkit.entity.CraftPlayer;
|
||||||
|
@ -25,6 +28,8 @@ import org.bukkit.event.entity.EntityDamageEvent;
|
||||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||||
import org.bukkit.event.entity.EntityExplodeEvent;
|
import org.bukkit.event.entity.EntityExplodeEvent;
|
||||||
import org.bukkit.event.entity.EntityListener;
|
import org.bukkit.event.entity.EntityListener;
|
||||||
|
import org.bukkit.event.entity.EntityTargetEvent;
|
||||||
|
import org.bukkit.event.entity.EntityTargetEvent.TargetReason;
|
||||||
|
|
||||||
|
|
||||||
public class EssentialsProtectEntityListener extends EntityListener
|
public class EssentialsProtectEntityListener extends EntityListener
|
||||||
|
@ -39,22 +44,34 @@ public class EssentialsProtectEntityListener extends EntityListener
|
||||||
@Override
|
@Override
|
||||||
public void onEntityDamage(EntityDamageEvent event)
|
public void onEntityDamage(EntityDamageEvent event)
|
||||||
{
|
{
|
||||||
if (event.isCancelled()) return;
|
if (event.isCancelled())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (event instanceof EntityDamageByBlockEvent)
|
if (event instanceof EntityDamageByBlockEvent)
|
||||||
{
|
{
|
||||||
DamageCause cause = event.getCause();
|
DamageCause cause = event.getCause();
|
||||||
|
|
||||||
if (EssentialsProtect.playerSettings.get("protect.disable.contactdmg") && cause == DamageCause.CONTACT)
|
if (EssentialsProtect.playerSettings.get("protect.disable.contactdmg") && cause == DamageCause.CONTACT
|
||||||
|
&& !(event.getEntity() instanceof Player
|
||||||
|
&& Essentials.getStatic().getUser(event.getEntity()).isAuthorized("essentials.protect.damage.contact")
|
||||||
|
&& !Essentials.getStatic().getUser(event.getEntity()).isAuthorized("essentials.protect.damage.disable")))
|
||||||
{
|
{
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (EssentialsProtect.playerSettings.get("protect.disable.lavadmg") && cause == DamageCause.LAVA)
|
if (EssentialsProtect.playerSettings.get("protect.disable.lavadmg") && cause == DamageCause.LAVA
|
||||||
|
&& !(event.getEntity() instanceof Player
|
||||||
|
&& Essentials.getStatic().getUser(event.getEntity()).isAuthorized("essentials.protect.damage.lava")
|
||||||
|
&& !Essentials.getStatic().getUser(event.getEntity()).isAuthorized("essentials.protect.damage.disable")))
|
||||||
{
|
{
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (EssentialsProtect.guardSettings.get("protect.prevent.tnt-explosion") && cause == DamageCause.BLOCK_EXPLOSION)
|
if (EssentialsProtect.guardSettings.get("protect.prevent.tnt-explosion") && cause == DamageCause.BLOCK_EXPLOSION
|
||||||
|
&& !(event.getEntity() instanceof Player
|
||||||
|
&& Essentials.getStatic().getUser(event.getEntity()).isAuthorized("essentials.protect.damage.tnt")
|
||||||
|
&& !Essentials.getStatic().getUser(event.getEntity()).isAuthorized("essentials.protect.damage.disable")))
|
||||||
{
|
{
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
|
@ -85,13 +102,19 @@ public class EssentialsProtectEntityListener extends EntityListener
|
||||||
//Creeper explode prevention
|
//Creeper explode prevention
|
||||||
if (eAttack != null && eAttack instanceof Monster)
|
if (eAttack != null && eAttack instanceof Monster)
|
||||||
{
|
{
|
||||||
if (eAttack instanceof Creeper && EssentialsProtect.guardSettings.get("protect.prevent.creeper-explosion"))
|
if (eAttack instanceof Creeper && EssentialsProtect.guardSettings.get("protect.prevent.creeper-explosion")
|
||||||
|
&& !(event.getEntity() instanceof Player
|
||||||
|
&& Essentials.getStatic().getUser(event.getEntity()).isAuthorized("essentials.protect.damage.creeper")
|
||||||
|
&& !Essentials.getStatic().getUser(event.getEntity()).isAuthorized("essentials.protect.damage.disable")))
|
||||||
{
|
{
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (eAttack instanceof Creeper && EssentialsProtect.guardSettings.get("protect.prevent.creeper-playerdamage"))
|
if (eAttack instanceof Creeper && EssentialsProtect.guardSettings.get("protect.prevent.creeper-playerdamage")
|
||||||
|
&& !(event.getEntity() instanceof Player
|
||||||
|
&& Essentials.getStatic().getUser(event.getEntity()).isAuthorized("essentials.protect.damage.creeper")
|
||||||
|
&& !Essentials.getStatic().getUser(event.getEntity()).isAuthorized("essentials.protect.damage.disable")))
|
||||||
{
|
{
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
|
@ -101,9 +124,12 @@ public class EssentialsProtectEntityListener extends EntityListener
|
||||||
|
|
||||||
if (event instanceof EntityDamageByProjectileEvent)
|
if (event instanceof EntityDamageByProjectileEvent)
|
||||||
{
|
{
|
||||||
if (event.getEntity() instanceof Player)
|
if (event.getEntity() instanceof Player
|
||||||
|
&& EssentialsProtect.playerSettings.get("protect.disable.projectiles")
|
||||||
|
&& !Essentials.getStatic().getUser(event.getEntity()).isAuthorized("essentials.protect.damage.projectiles")
|
||||||
|
&& !Essentials.getStatic().getUser(event.getEntity()).isAuthorized("essentials.protect.damage.disable"))
|
||||||
{
|
{
|
||||||
event.setCancelled(EssentialsProtect.playerSettings.get("protect.disable.projectiles"));
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -112,24 +138,39 @@ public class EssentialsProtectEntityListener extends EntityListener
|
||||||
Entity casualty = event.getEntity();
|
Entity casualty = event.getEntity();
|
||||||
if (casualty instanceof Player)
|
if (casualty instanceof Player)
|
||||||
{
|
{
|
||||||
if (EssentialsProtect.playerSettings.get("protect.disable.fall") && cause == DamageCause.FALL)
|
if (EssentialsProtect.playerSettings.get("protect.disable.fall") && cause == DamageCause.FALL
|
||||||
|
&& !(Essentials.getStatic().getUser(casualty).isAuthorized("essentials.protect.damage.fall")
|
||||||
|
&& !Essentials.getStatic().getUser(event.getEntity()).isAuthorized("essentials.protect.damage.disable")))
|
||||||
{
|
{
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (EssentialsProtect.playerSettings.get("protect.disable.suffocate") && cause == DamageCause.SUFFOCATION)
|
if (EssentialsProtect.playerSettings.get("protect.disable.suffocate") && cause == DamageCause.SUFFOCATION
|
||||||
|
&& !(Essentials.getStatic().getUser(casualty).isAuthorized("essentials.protect.damage.suffocation")
|
||||||
|
&& !Essentials.getStatic().getUser(event.getEntity()).isAuthorized("essentials.protect.damage.disable")))
|
||||||
{
|
{
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (EssentialsProtect.playerSettings.get("protect.disable.firedmg") && (cause == DamageCause.FIRE
|
if (EssentialsProtect.playerSettings.get("protect.disable.firedmg") && (cause == DamageCause.FIRE
|
||||||
|| cause == DamageCause.FIRE_TICK))
|
|| cause == DamageCause.FIRE_TICK)
|
||||||
|
&& !(parent.ess.getUser(casualty).isAuthorized("essentials.protect.damage.fire")
|
||||||
|
&& !parent.ess.getUser(event.getEntity()).isAuthorized("essentials.protect.damage.disable")))
|
||||||
{
|
{
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (EssentialsProtect.playerSettings.get("protect.disable.drown") && cause == DamageCause.DROWNING)
|
if (EssentialsProtect.playerSettings.get("protect.disable.drown") && cause == DamageCause.DROWNING
|
||||||
|
&& !(parent.ess.getUser(casualty).isAuthorized("essentials.protect.damage.drowning")
|
||||||
|
&& !parent.ess.getUser(event.getEntity()).isAuthorized("essentials.protect.damage.disable")))
|
||||||
|
{
|
||||||
|
event.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (EssentialsProtect.playerSettings.get("protect.disable.lightning") && cause == DamageCause.LIGHTNING
|
||||||
|
&& !(parent.ess.getUser(casualty).isAuthorized("essentials.protect.damage.lightning")
|
||||||
|
&& !parent.ess.getUser(event.getEntity()).isAuthorized("essentials.protect.damage.disable")))
|
||||||
{
|
{
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
|
@ -140,7 +181,10 @@ public class EssentialsProtectEntityListener extends EntityListener
|
||||||
@Override
|
@Override
|
||||||
public void onEntityExplode(EntityExplodeEvent event)
|
public void onEntityExplode(EntityExplodeEvent event)
|
||||||
{
|
{
|
||||||
if (event.isCancelled()) return;
|
if (event.isCancelled())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (event.getEntity() instanceof LivingEntity)
|
if (event.getEntity() instanceof LivingEntity)
|
||||||
{
|
{
|
||||||
//Nicccccccccce plaaacccccccccce..
|
//Nicccccccccce plaaacccccccccce..
|
||||||
|
@ -188,18 +232,71 @@ public class EssentialsProtectEntityListener extends EntityListener
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
// This code will prevent explosions near protected rails, signs or protected chests
|
||||||
|
// TODO: Use protect db instead of this code
|
||||||
|
for (Block block : event.blockList())
|
||||||
|
{
|
||||||
|
if ((block.getType() == Material.RAILS || block.getFace(BlockFace.UP).getType() == Material.RAILS) && EssentialsProtect.genSettings.get("protect.protect.rails"))
|
||||||
|
{
|
||||||
|
event.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if ((block.getType() == Material.WALL_SIGN
|
||||||
|
|| block.getFace(BlockFace.NORTH).getType() == Material.WALL_SIGN
|
||||||
|
|| block.getFace(BlockFace.EAST).getType() == Material.WALL_SIGN
|
||||||
|
|| block.getFace(BlockFace.SOUTH).getType() == Material.WALL_SIGN
|
||||||
|
|| block.getFace(BlockFace.WEST).getType() == Material.WALL_SIGN
|
||||||
|
|| block.getType() == Material.SIGN_POST
|
||||||
|
|| block.getFace(BlockFace.UP).getType() == Material.SIGN_POST)
|
||||||
|
&& EssentialsProtect.genSettings.get("protect.protect.signs"))
|
||||||
|
{
|
||||||
|
event.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (EssentialsBlockListener.protectedBlocks.contains(block.getType())
|
||||||
|
&& EssentialsBlockListener.isBlockProtected(block))
|
||||||
|
{
|
||||||
|
event.setCancelled(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCreatureSpawn(CreatureSpawnEvent event)
|
public void onCreatureSpawn(CreatureSpawnEvent event)
|
||||||
{
|
{
|
||||||
if (event.getEntity() instanceof CraftPlayer || event.isCancelled()){ return;}
|
if (event.getEntity() instanceof CraftPlayer)
|
||||||
final String creatureName = event.getCreatureType().toString().toLowerCase();
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (event.isCancelled())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String creatureName = event.getCreatureType().toString().toLowerCase();
|
||||||
if (creatureName == null || creatureName.isEmpty())
|
if (creatureName == null || creatureName.isEmpty())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (EssentialsProtect.guardSettings.get("protect.prevent.spawn." + creatureName))
|
if (EssentialsProtect.guardSettings.get("protect.prevent.spawn." + creatureName))
|
||||||
|
{
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onEntityTarget(EntityTargetEvent event)
|
||||||
|
{
|
||||||
|
if (!(event.getTarget() instanceof Player))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
User user = Essentials.getStatic().getUser(event.getTarget());
|
||||||
|
if ((event.getReason() == TargetReason.CLOSEST_PLAYER
|
||||||
|
|| event.getReason() == TargetReason.TARGET_ATTACKED_ENTITY
|
||||||
|
|| event.getReason() == TargetReason.PIG_ZOMBIE_TARGET)
|
||||||
|
&& EssentialsProtect.guardSettings.get("protect.prevent.entitytarget")
|
||||||
|
&& !user.isAuthorized("essentials.protect.entitytarget.bypass"))
|
||||||
{
|
{
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
|
|
Loading…
Reference in a new issue