Advertisement
Guest User

ORIGINAL VERSION LWC BUILD #881

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