Guest User

MODIFIED VERSION LWC BUILD #881

a guest
Sep 10th, 2013
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.36 KB | None | 0 0
  1. this is the result I got when decompiling the LWCPlayerListener.class from .class to .jad
  2. MODIFIED VERSION LWC BUILD #881 (Tested and works)
  3.  
  4. // Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
  5. // Jad home page: http://www.kpdus.com/jad.html
  6. // Decompiler options: packimports(3)
  7. // Source File Name: LWCPlayerListener.java
  8.  
  9. package com.griefcraft.listeners;
  10.  
  11. import com.griefcraft.lwc.LWC;
  12. import com.griefcraft.lwc.LWCPlugin;
  13. import com.griefcraft.model.LWCPlayer;
  14. import com.griefcraft.model.Protection;
  15. import com.griefcraft.scripting.Module;
  16. import com.griefcraft.scripting.ModuleLoader;
  17. import com.griefcraft.scripting.event.LWCBlockInteractEvent;
  18. import com.griefcraft.scripting.event.LWCDropItemEvent;
  19. import com.griefcraft.scripting.event.LWCProtectionInteractEvent;
  20. import com.griefcraft.util.config.Configuration;
  21. import java.util.Iterator;
  22. import java.util.Map;
  23. import java.util.Set;
  24. import org.bukkit.Location;
  25. import org.bukkit.Material;
  26. import org.bukkit.block.Block;
  27. import org.bukkit.block.BlockState;
  28. import org.bukkit.block.DoubleChest;
  29. import org.bukkit.enchantments.Enchantment;
  30. import org.bukkit.entity.Player;
  31. import org.bukkit.event.Event;
  32. import org.bukkit.event.Listener;
  33. import org.bukkit.event.block.Action;
  34. import org.bukkit.event.inventory.InventoryAction;
  35. import org.bukkit.event.inventory.InventoryClickEvent;
  36. import org.bukkit.event.inventory.InventoryType;
  37. import org.bukkit.event.player.PlayerDropItemEvent;
  38. import org.bukkit.event.player.PlayerInteractEvent;
  39. import org.bukkit.event.player.PlayerQuitEvent;
  40. import org.bukkit.inventory.Inventory;
  41. import org.bukkit.inventory.InventoryHolder;
  42. import org.bukkit.inventory.ItemStack;
  43.  
  44. public class LWCPlayerListener
  45. implements Listener
  46. {
  47.  
  48. public LWCPlayerListener(LWCPlugin plugin)
  49. {
  50. this.plugin = plugin;
  51. }
  52.  
  53. public void onPlayerDropItem(PlayerDropItemEvent event)
  54. {
  55. if(event.isCancelled() || !LWC.ENABLED)
  56. return;
  57. Player player = event.getPlayer();
  58. LWCDropItemEvent evt = new LWCDropItemEvent(player, event);
  59. plugin.getLWC().getModuleLoader().dispatchEvent(evt);
  60. if(evt.isCancelled())
  61. event.setCancelled(true);
  62. }
  63.  
  64. public void onPlayerInteract(PlayerInteractEvent event)
  65. {
  66. LWC lwc;
  67. Player player;
  68. LWCPlayer lwcPlayer;
  69. Block block;
  70. if(!LWC.ENABLED)
  71. return;
  72. lwc = plugin.getLWC();
  73. player = event.getPlayer();
  74. lwcPlayer = lwc.wrapPlayer(player);
  75. if(event.getAction() != Action.LEFT_CLICK_BLOCK && event.getAction() != Action.RIGHT_CLICK_BLOCK)
  76. return;
  77. block = event.getClickedBlock();
  78. Material material = block.getType();
  79. if((block.getState() instanceof InventoryHolder) && lwc.isProtectable(block) && !lwc.hasPermission(player, "lwc.protect") && lwc.hasPermission(player, "lwc.deny") && !lwc.isAdmin(player) && !lwc.isMod(player))
  80. {
  81. lwc.sendLocale(player, "protection.interact.error.blocked", new Object[0]);
  82. event.setCancelled(true);
  83. return;
  84. }
  85. Set actions;
  86. Protection protection;
  87. com.griefcraft.scripting.Module.Result result;
  88. boolean canAccess;
  89. boolean hasPendingAction;
  90. actions = lwcPlayer.getActionNames();
  91. protection = lwc.findProtection(block);
  92. result = com.griefcraft.scripting.Module.Result.DEFAULT;
  93. canAccess = lwc.canAccessProtection(player, protection);
  94. int actionCount = actions.size();
  95. boolean hasInteracted = actions.contains("interacted");
  96. hasPendingAction = hasInteracted && actionCount > 1 || !hasInteracted && actionCount > 0;
  97. if(event.getAction() == Action.LEFT_CLICK_BLOCK)
  98. {
  99. boolean ignoreLeftClick = Boolean.parseBoolean(lwc.resolveProtectionConfiguration(block, "ignoreLeftClick"));
  100. if(ignoreLeftClick)
  101. return;
  102. break MISSING_BLOCK_LABEL_273;
  103. }
  104. if(event.getAction() == Action.RIGHT_CLICK_BLOCK)
  105. {
  106. boolean ignoreRightClick = Boolean.parseBoolean(lwc.resolveProtectionConfiguration(block, "ignoreRightClick"));
  107. if(ignoreRightClick)
  108. return;
  109. }
  110. if(event.isCancelled())
  111. {
  112. if(hasPendingAction)
  113. lwc.sendLocale(player, "lwc.pendingaction", new Object[0]);
  114. return;
  115. }
  116. if(protection != null)
  117. {
  118. com.griefcraft.model.Action action = new com.griefcraft.model.Action();
  119. action.setName("interacted");
  120. action.setPlayer(lwcPlayer);
  121. action.setProtection(protection);
  122. lwcPlayer.addAction(action);
  123. }
  124. boolean canAdmin = lwc.canAdminProtection(player, protection);
  125. if(protection != null)
  126. {
  127. LWCProtectionInteractEvent evt = new LWCProtectionInteractEvent(event, protection, actions, canAccess, canAdmin);
  128. lwc.getModuleLoader().dispatchEvent(evt);
  129. result = evt.getResult();
  130. } else
  131. {
  132. LWCBlockInteractEvent evt = new LWCBlockInteractEvent(event, block, actions);
  133. lwc.getModuleLoader().dispatchEvent(evt);
  134. result = evt.getResult();
  135. }
  136. if(result == com.griefcraft.scripting.Module.Result.ALLOW)
  137. return;
  138. if(protection != null && !canAccess && lwc.getConfiguration().getBoolean("optional.onlyProtectWhenOwnerIsOnline", false))
  139. {
  140. Player owner = protection.getBukkitOwner();
  141. if(owner == null || !owner.isOnline())
  142. return;
  143. }
  144. if(protection != null && !canAccess && lwc.getConfiguration().getBoolean("optional.onlyProtectWhenOwnerIsOffline", false))
  145. {
  146. Player owner = protection.getBukkitOwner();
  147. if(owner != null && owner.isOnline())
  148. return;
  149. }
  150. try
  151. {
  152. if(result == com.griefcraft.scripting.Module.Result.DEFAULT)
  153. canAccess = lwc.enforceAccess(player, protection, block, canAccess);
  154. if(!canAccess || result == com.griefcraft.scripting.Module.Result.CANCEL)
  155. {
  156. event.setCancelled(true);
  157. event.setUseInteractedBlock(org.bukkit.event.Event.Result.DENY);
  158. }
  159. }
  160. catch(Exception e)
  161. {
  162. event.setCancelled(true);
  163. event.setUseInteractedBlock(org.bukkit.event.Event.Result.DENY);
  164. lwc.sendLocale(player, "protection.internalerror", new Object[] {
  165. "id", "PLAYER_INTERACT"
  166. });
  167. e.printStackTrace();
  168. }
  169. return;
  170. }
  171.  
  172. public void onPlayerQuit(PlayerQuitEvent event)
  173. {
  174. if(!LWC.ENABLED)
  175. {
  176. return;
  177. } else
  178. {
  179. LWCPlayer.removePlayer(event.getPlayer());
  180. return;
  181. }
  182. }
  183.  
  184. public void onInventoryClick(InventoryClickEvent event)
  185. {
  186. LWC lwc = LWC.getInstance();
  187. if(!(event.getWhoClicked() instanceof Player))
  188. return;
  189. Player player = (Player)event.getWhoClicked();
  190. Inventory inventory = event.getInventory();
  191. if(inventory == null || event.getSlot() < 0)
  192. return;
  193. InventoryHolder holder = null;
  194. try
  195. {
  196. holder = event.getInventory().getHolder();
  197. }
  198. catch(AbstractMethodError e)
  199. {
  200. lwc.log((new StringBuilder("Caught issue with Bukkit's Inventory.getHolder() method! This is occuring NEAR the player: ")).append(player.getName()).toString());
  201. lwc.log((new StringBuilder("This player is located at: ")).append(player.getLocation().toString()).toString());
  202. lwc.log("This should be reported to the Bukkit developers.");
  203. e.printStackTrace();
  204. return;
  205. }
  206. Location location;
  207. try
  208. {
  209. if(holder instanceof BlockState)
  210. location = ((BlockState)holder).getLocation();
  211. else
  212. if(holder instanceof DoubleChest)
  213. location = ((DoubleChest)holder).getLocation();
  214. else
  215. return;
  216. }
  217. catch(Exception e)
  218. {
  219. Location ploc = player.getLocation();
  220. String holderName = holder == null ? "Unknown Block" : holder.getClass().getSimpleName();
  221. lwc.log((new StringBuilder("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());
  222. lwc.log("The exact location of the block is not possible to obtain. This is caused by a Minecraft or Bukkit exception normally.");
  223. e.printStackTrace();
  224. return;
  225. }
  226. if(event.getAction() != InventoryAction.COLLECT_TO_CURSOR)
  227. {
  228. if(event.getSlotType() != org.bukkit.event.inventory.InventoryType.SlotType.CONTAINER)
  229. return;
  230. if(event.getSlot() != event.getRawSlot())
  231. return;
  232. ItemStack item;
  233. try
  234. {
  235. item = event.getCurrentItem();
  236. }
  237. catch(ArrayIndexOutOfBoundsException e)
  238. {
  239. return;
  240. }
  241. ItemStack cursor = event.getCursor();
  242. if(item == null || item.getType() == null || item.getType() == Material.AIR)
  243. return;
  244. if(player.getItemInHand() == null && !event.isRightClick() && !event.isShiftClick())
  245. return;
  246. if(cursor != null && item.getType() == cursor.getType())
  247. {
  248. boolean enchantmentsEqual = areEnchantmentsEqual(item, cursor);
  249. if(item.getDurability() == cursor.getDurability() && item.getAmount() == cursor.getAmount() && enchantmentsEqual)
  250. return;
  251. }
  252. }
  253. Protection protection = lwc.findProtection(location.getBlock());
  254. if(protection == null)
  255. return;
  256. if(protection.getType() != com.griefcraft.model.Protection.Type.DONATION)
  257. return;
  258. boolean canAdmin = lwc.canAdminProtection(player, protection);
  259. if(!canAdmin)
  260. event.setCancelled(true);
  261. }
  262.  
  263. private boolean areEnchantmentsEqual(ItemStack stack1, ItemStack stack2)
  264. {
  265. if(stack1 == null || stack2 == null)
  266. return false;
  267. Map enchantments1 = stack1.getEnchantments();
  268. Map enchantments2 = stack2.getEnchantments();
  269. if(enchantments1.size() != enchantments2.size())
  270. return false;
  271. for(Iterator iterator = enchantments1.keySet().iterator(); iterator.hasNext();)
  272. {
  273. Enchantment enchantment = (Enchantment)iterator.next();
  274. if(!enchantments2.containsKey(enchantment))
  275. return false;
  276. int level1 = ((Integer)enchantments1.get(enchantment)).intValue();
  277. int level2 = ((Integer)enchantments2.get(enchantment)).intValue();
  278. if(level1 != level2)
  279. return false;
  280. }
  281.  
  282. return true;
  283. }
  284.  
  285. private LWCPlugin plugin;
  286. }
Advertisement
Add Comment
Please, Sign In to add comment