Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- this is the result I got when decompiling the LWCPlayerListener.class from .class to .jad
- ORIGINAL VERSION LWC BUILD #881
- // Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
- // Jad home page: http://www.kpdus.com/jad.html
- // Decompiler options: packimports(3)
- // Source File Name: LWCPlayerListener.java
- package com.griefcraft.listeners;
- import com.griefcraft.lwc.LWC;
- import com.griefcraft.lwc.LWCPlugin;
- import com.griefcraft.model.Action;
- import com.griefcraft.model.Flag;
- import com.griefcraft.model.LWCPlayer;
- import com.griefcraft.model.Protection;
- import com.griefcraft.scripting.Module;
- import com.griefcraft.scripting.ModuleLoader;
- import com.griefcraft.scripting.event.LWCBlockInteractEvent;
- import com.griefcraft.scripting.event.LWCDropItemEvent;
- import com.griefcraft.scripting.event.LWCProtectionInteractEvent;
- import com.griefcraft.util.config.Configuration;
- import java.util.Iterator;
- import java.util.Map;
- import java.util.Set;
- import org.bukkit.Location;
- import org.bukkit.Material;
- import org.bukkit.block.Block;
- import org.bukkit.block.BlockState;
- import org.bukkit.block.DoubleChest;
- import org.bukkit.enchantments.Enchantment;
- import org.bukkit.entity.Player;
- import org.bukkit.event.Event;
- import org.bukkit.event.Listener;
- import org.bukkit.event.inventory.InventoryClickEvent;
- import org.bukkit.event.inventory.InventoryMoveItemEvent;
- import org.bukkit.event.inventory.InventoryType;
- import org.bukkit.event.player.PlayerDropItemEvent;
- import org.bukkit.event.player.PlayerInteractEvent;
- import org.bukkit.event.player.PlayerQuitEvent;
- import org.bukkit.inventory.Inventory;
- import org.bukkit.inventory.InventoryHolder;
- import org.bukkit.inventory.ItemStack;
- public class LWCPlayerListener
- implements Listener
- {
- public LWCPlayerListener(LWCPlugin plugin)
- {
- this.plugin = plugin;
- }
- public void onMoveItem(InventoryMoveItemEvent event)
- {
- if(handleMoveItemEvent(event.getSource()) || handleMoveItemEvent(event.getDestination()))
- event.setCancelled(true);
- }
- private boolean handleMoveItemEvent(Inventory inventory)
- {
- LWC lwc = LWC.getInstance();
- if(inventory == null)
- return false;
- InventoryHolder holder;
- try
- {
- holder = inventory.getHolder();
- }
- catch(AbstractMethodError e)
- {
- return false;
- }
- Location location;
- try
- {
- if(holder instanceof BlockState)
- location = ((BlockState)holder).getLocation();
- else
- if(holder instanceof DoubleChest)
- location = ((DoubleChest)holder).getLocation();
- else
- return false;
- }
- catch(Exception e)
- {
- return false;
- }
- Protection protection = lwc.findProtection(location.getBlock());
- if(protection == null)
- return false;
- boolean denyHoppers = Boolean.parseBoolean(lwc.resolveProtectionConfiguration(protection.getBlock(), "denyHoppers"));
- return denyHoppers && !protection.hasFlag(com.griefcraft.model.Flag.Type.HOPPER) || !denyHoppers && protection.hasFlag(com.griefcraft.model.Flag.Type.HOPPER);
- }
- public void onPlayerDropItem(PlayerDropItemEvent event)
- {
- if(event.isCancelled() || !LWC.ENABLED)
- return;
- Player player = event.getPlayer();
- LWCDropItemEvent evt = new LWCDropItemEvent(player, event);
- plugin.getLWC().getModuleLoader().dispatchEvent(evt);
- if(evt.isCancelled())
- event.setCancelled(true);
- }
- public void onPlayerInteract(PlayerInteractEvent event)
- {
- LWC lwc;
- Player player;
- LWCPlayer lwcPlayer;
- Block block;
- if(!LWC.ENABLED)
- return;
- lwc = plugin.getLWC();
- player = event.getPlayer();
- lwcPlayer = lwc.wrapPlayer(player);
- if(event.getAction() != org.bukkit.event.block.Action.LEFT_CLICK_BLOCK && event.getAction() != org.bukkit.event.block.Action.RIGHT_CLICK_BLOCK)
- return;
- block = event.getClickedBlock();
- Material material = block.getType();
- if((block.getState() instanceof InventoryHolder) && lwc.isProtectable(block) && !lwc.hasPermission(player, "lwc.protect") && lwc.hasPermission(player, "lwc.deny") && !lwc.isAdmin(player) && !lwc.isMod(player))
- {
- lwc.sendLocale(player, "protection.interact.error.blocked", new Object[0]);
- event.setCancelled(true);
- return;
- }
- Set actions;
- Protection protection;
- com.griefcraft.scripting.Module.Result result;
- boolean canAccess;
- boolean hasPendingAction;
- actions = lwcPlayer.getActionNames();
- protection = lwc.findProtection(block);
- result = com.griefcraft.scripting.Module.Result.DEFAULT;
- canAccess = lwc.canAccessProtection(player, protection);
- int actionCount = actions.size();
- boolean hasInteracted = actions.contains("interacted");
- hasPendingAction = hasInteracted && actionCount > 1 || !hasInteracted && actionCount > 0;
- if(event.getAction() == org.bukkit.event.block.Action.LEFT_CLICK_BLOCK)
- {
- boolean ignoreLeftClick = Boolean.parseBoolean(lwc.resolveProtectionConfiguration(block, "ignoreLeftClick"));
- if(ignoreLeftClick)
- return;
- break MISSING_BLOCK_LABEL_276;
- }
- if(event.getAction() == org.bukkit.event.block.Action.RIGHT_CLICK_BLOCK)
- {
- boolean ignoreRightClick = Boolean.parseBoolean(lwc.resolveProtectionConfiguration(block, "ignoreRightClick"));
- if(ignoreRightClick)
- return;
- }
- if(event.isCancelled())
- {
- if(hasPendingAction)
- lwc.sendLocale(player, "lwc.pendingaction", new Object[0]);
- return;
- }
- if(protection != null)
- {
- Action action = new Action();
- action.setName("interacted");
- action.setPlayer(lwcPlayer);
- action.setProtection(protection);
- lwcPlayer.addAction(action);
- }
- boolean canAdmin = lwc.canAdminProtection(player, protection);
- if(protection != null)
- {
- LWCProtectionInteractEvent evt = new LWCProtectionInteractEvent(event, protection, actions, canAccess, canAdmin);
- lwc.getModuleLoader().dispatchEvent(evt);
- result = evt.getResult();
- } else
- {
- LWCBlockInteractEvent evt = new LWCBlockInteractEvent(event, block, actions);
- lwc.getModuleLoader().dispatchEvent(evt);
- result = evt.getResult();
- }
- if(result == com.griefcraft.scripting.Module.Result.ALLOW)
- return;
- if(protection != null && !canAccess && lwc.getConfiguration().getBoolean("optional.onlyProtectWhenOwnerIsOnline", false))
- {
- Player owner = protection.getBukkitOwner();
- if(owner == null || !owner.isOnline())
- return;
- }
- if(protection != null && !canAccess && lwc.getConfiguration().getBoolean("optional.onlyProtectWhenOwnerIsOffline", false))
- {
- Player owner = protection.getBukkitOwner();
- if(owner != null && owner.isOnline())
- return;
- }
- try
- {
- if(result == com.griefcraft.scripting.Module.Result.DEFAULT)
- canAccess = lwc.enforceAccess(player, protection, block, canAccess);
- if(!canAccess || result == com.griefcraft.scripting.Module.Result.CANCEL)
- {
- event.setCancelled(true);
- event.setUseInteractedBlock(org.bukkit.event.Event.Result.DENY);
- }
- }
- catch(Exception e)
- {
- event.setCancelled(true);
- event.setUseInteractedBlock(org.bukkit.event.Event.Result.DENY);
- lwc.sendLocale(player, "protection.internalerror", new Object[] {
- "id", "PLAYER_INTERACT"
- });
- e.printStackTrace();
- }
- return;
- }
- public void onPlayerQuit(PlayerQuitEvent event)
- {
- if(!LWC.ENABLED)
- {
- return;
- } else
- {
- LWCPlayer.removePlayer(event.getPlayer());
- return;
- }
- }
- public void onInventoryClick(InventoryClickEvent event)
- {
- LWC lwc = LWC.getInstance();
- if(!(event.getWhoClicked() instanceof Player))
- return;
- Player player = (Player)event.getWhoClicked();
- Inventory inventory = event.getInventory();
- if(inventory == null || event.getSlot() < 0)
- return;
- InventoryHolder holder = null;
- try
- {
- holder = event.getInventory().getHolder();
- }
- catch(AbstractMethodError e)
- {
- lwc.log((new StringBuilder()).append("Caught issue with Bukkit's Inventory.getHolder() method! This is occuring NEAR the player: ").append(player.getName()).toString());
- lwc.log((new StringBuilder()).append("This player is located at: ").append(player.getLocation().toString()).toString());
- lwc.log("This should be reported to the Bukkit developers.");
- e.printStackTrace();
- return;
- }
- Location location;
- try
- {
- if(holder instanceof BlockState)
- location = ((BlockState)holder).getLocation();
- else
- if(holder instanceof DoubleChest)
- location = ((DoubleChest)holder).getLocation();
- else
- return;
- }
- catch(Exception e)
- {
- Location ploc = player.getLocation();
- String holderName = holder == null ? "Unknown Block" : holder.getClass().getSimpleName();
- lwc.log((new StringBuilder()).append("Exception with getting the location of a ").append(holderName).append(" has occurred NEAR the player: ").append(player.getName()).append(" [").append(ploc.getBlockX()).append(" ").append(ploc.getBlockY()).append(" ").append(ploc.getBlockZ()).append("]").toString());
- lwc.log("The exact location of the block is not possible to obtain. This is caused by a Minecraft or Bukkit exception normally.");
- e.printStackTrace();
- return;
- }
- boolean doubleClick = false;
- try
- {
- doubleClick = event.isDoubleClick();
- }
- catch(Throwable e) { }
- if(!doubleClick)
- {
- if(event.getSlotType() != org.bukkit.event.inventory.InventoryType.SlotType.CONTAINER)
- return;
- if(event.getSlot() != event.getRawSlot())
- return;
- ItemStack item;
- try
- {
- item = event.getCurrentItem();
- }
- catch(ArrayIndexOutOfBoundsException e)
- {
- return;
- }
- ItemStack cursor = event.getCursor();
- if(item == null || item.getType() == null || item.getType() == Material.AIR)
- return;
- if(player.getItemInHand() == null && !event.isRightClick() && !event.isShiftClick())
- return;
- if(cursor != null && item.getType() == cursor.getType())
- {
- boolean enchantmentsEqual = areEnchantmentsEqual(item, cursor);
- if(item.getDurability() == cursor.getDurability() && item.getAmount() == cursor.getAmount() && enchantmentsEqual)
- return;
- }
- }
- Protection protection = lwc.findProtection(location.getBlock());
- if(protection == null)
- return;
- if(protection.getType() != com.griefcraft.model.Protection.Type.DONATION)
- return;
- boolean canAdmin = lwc.canAdminProtection(player, protection);
- if(!canAdmin)
- event.setCancelled(true);
- }
- private boolean areEnchantmentsEqual(ItemStack stack1, ItemStack stack2)
- {
- if(stack1 == null || stack2 == null)
- return false;
- Map enchantments1 = stack1.getEnchantments();
- Map enchantments2 = stack2.getEnchantments();
- if(enchantments1.size() != enchantments2.size())
- return false;
- for(Iterator i$ = enchantments1.keySet().iterator(); i$.hasNext();)
- {
- Enchantment enchantment = (Enchantment)i$.next();
- if(!enchantments2.containsKey(enchantment))
- return false;
- int level1 = ((Integer)enchantments1.get(enchantment)).intValue();
- int level2 = ((Integer)enchantments2.get(enchantment)).intValue();
- if(level1 != level2)
- return false;
- }
- return true;
- }
- private LWCPlugin plugin;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement