ChestShop-3/src/main/java/com/Acrobot/ChestShop/Plugins/LightweightChestProtection.java

108 lines
3.2 KiB
Java
Raw Normal View History

package com.Acrobot.ChestShop.Plugins;
import com.Acrobot.ChestShop.Configuration.Messages;
import com.Acrobot.ChestShop.Configuration.Properties;
import com.Acrobot.ChestShop.Events.Protection.ProtectBlockEvent;
import com.Acrobot.ChestShop.Events.Protection.ProtectionCheckEvent;
import com.Acrobot.ChestShop.Events.ShopCreatedEvent;
import com.Acrobot.ChestShop.Security;
import com.griefcraft.lwc.LWC;
import com.griefcraft.model.Protection;
2013-03-16 18:32:41 +01:00
import com.griefcraft.scripting.event.LWCProtectionRegisterEvent;
import org.bukkit.Bukkit;
import org.bukkit.block.Block;
import org.bukkit.block.Chest;
import org.bukkit.block.Sign;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
/**
* @author Acrobot
*/
public class LightweightChestProtection implements Listener {
private LWC lwc;
2012-06-25 17:16:24 +02:00
public LightweightChestProtection() {
this.lwc = LWC.getInstance();
}
@EventHandler
public static void onShopCreation(ShopCreatedEvent event) {
Player player = event.getPlayer();
Sign sign = event.getSign();
Chest connectedChest = event.getChest();
if (Properties.PROTECT_SIGN_WITH_LWC) {
if (!Security.protect(player.getName(), sign.getBlock())) {
player.sendMessage(Messages.prefix(Messages.NOT_ENOUGH_PROTECTIONS));
}
}
if (Properties.PROTECT_CHEST_WITH_LWC && connectedChest != null && Security.protect(player.getName(), connectedChest.getBlock())) {
player.sendMessage(Messages.prefix(Messages.PROTECTED_SHOP));
}
}
@EventHandler
public void onProtectionCheck(ProtectionCheckEvent event) {
if (event.getResult() == Event.Result.DENY) {
return;
}
Block block = event.getBlock();
Player player = event.getPlayer();
Protection protection = lwc.findProtection(block);
if (protection == null) {
return;
}
if (!lwc.canAccessProtection(player, protection)) {
event.setResult(Event.Result.DENY);
}
}
@EventHandler
public void onBlockProtect(ProtectBlockEvent event) {
if (event.isProtected()) {
return;
}
Block block = event.getBlock();
Player player = Bukkit.getPlayerExact(event.getName());
2013-03-16 18:32:41 +01:00
if (player == null) {
return;
}
int x = block.getX();
int y = block.getY();
int z = block.getZ();
String worldName = block.getWorld().getName();
Protection existingProtection = lwc.getPhysicalDatabase().loadProtection(worldName, x, y, z);
if (existingProtection != null) {
event.setProtected(true);
return;
}
2013-03-16 18:32:41 +01:00
LWCProtectionRegisterEvent protectionEvent = new LWCProtectionRegisterEvent(player, block);
lwc.getModuleLoader().dispatchEvent(protectionEvent);
if (protectionEvent.isCancelled()) {
return;
}
Protection protection = lwc.getPhysicalDatabase().registerProtection(block.getTypeId(), Protection.Type.PRIVATE, worldName, event.getName(), "", x, y, z);
if (protection != null) {
event.setProtected(true);
}
}
}