Advertisement
Guest User

DwarfCraft PlayerListener

a guest
Jul 8th, 2012
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.46 KB | None | 0 0
  1. package com.Jessy1237.DwarfCraft.events;
  2.  
  3. /**
  4.  * Original Authors: smartaleq, LexManos and RCarretta
  5.  */
  6.  
  7. import java.util.HashMap;
  8.  
  9. import org.bukkit.Location;
  10. import org.bukkit.Material;
  11. import org.bukkit.World;
  12. import org.bukkit.block.Block;
  13. import org.bukkit.entity.Item;
  14. import org.bukkit.entity.Player;
  15. import org.bukkit.event.EventHandler;
  16. import org.bukkit.event.EventPriority;
  17. import org.bukkit.event.Listener;
  18. import org.bukkit.event.block.Action;
  19. import org.bukkit.event.player.PlayerEatEvent;
  20. import org.bukkit.event.player.PlayerFishEvent;
  21. import org.bukkit.event.player.PlayerFishEvent.State;
  22. import org.bukkit.event.player.PlayerInteractEvent;
  23. import org.bukkit.event.player.PlayerInventoryEvent;
  24. import org.bukkit.event.player.PlayerJoinEvent;
  25. import org.bukkit.event.player.PlayerQuitEvent;
  26. import org.bukkit.inventory.ItemStack;
  27.  
  28. import com.Jessy1237.DwarfCraft.DCCraftSchedule;
  29. import com.Jessy1237.DwarfCraft.DCPlayer;
  30. import com.Jessy1237.DwarfCraft.DataManager;
  31. import com.Jessy1237.DwarfCraft.DwarfCraft;
  32. import com.Jessy1237.DwarfCraft.Effect;
  33. import com.Jessy1237.DwarfCraft.EffectType;
  34. import com.Jessy1237.DwarfCraft.Skill;
  35. import com.Jessy1237.DwarfCraft.Util;
  36. @SuppressWarnings("deprecation")
  37. public class DCPlayerListener implements Listener {
  38.     private final DwarfCraft plugin;
  39.  
  40.     public DCPlayerListener(final DwarfCraft plugin) {
  41.         this.plugin = plugin;
  42.     }
  43.  
  44.     @EventHandler(priority = EventPriority.LOW)
  45.     public void onPlayerQuit(PlayerQuitEvent event) {
  46.     }
  47.  
  48.     /**
  49.      * When a player joins the server this initialized their data from the
  50.      * database or creates new info for them.
  51.      *
  52.      * also broadcasts a welcome "player" message
  53.      */
  54.     @EventHandler(priority = EventPriority.NORMAL)
  55.     public void onPlayerJoin(PlayerJoinEvent event) {
  56.         DataManager dm = plugin.getDataManager();
  57.         Player player = event.getPlayer();
  58.         DCPlayer data = dm.find(player);
  59.  
  60.         if (data == null)
  61.             data = dm.createDwarf(player);
  62.         if (!dm.getDwarfData(data))
  63.             dm.createDwarfData(data);
  64.         if (!plugin.getConfigManager().sendGreeting)
  65.             return;
  66.  
  67.         plugin.getOut().welcome(plugin.getServer(), data);
  68.     }
  69.  
  70.     /**
  71.      * Called when a player interacts
  72.      *
  73.      * @param event
  74.      *            Relevant event details
  75.      */
  76.     @EventHandler(priority = EventPriority.NORMAL)
  77.     public void onPlayerInteract(PlayerInteractEvent event) {
  78.  
  79.         if (plugin.getConfigManager().worldBlacklist) {
  80.             for (World w : plugin.getConfigManager().worlds) {
  81.                 if (w != null) {
  82.                     if (event.getPlayer().getWorld() == w) {
  83.                         return;
  84.                     }
  85.                 }
  86.             }
  87.         }
  88.  
  89.         // Crafting changes
  90.  
  91.         if (event.getAction() == Action.RIGHT_CLICK_BLOCK && event.getClickedBlock().getType() == Material.WORKBENCH) {
  92.             DCCraftSchedule sched = new DCCraftSchedule(plugin, plugin.getDataManager().find(event.getPlayer()));
  93.             int id = plugin.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, sched, 0, 2);
  94.             sched.setID(id);
  95.         }
  96.  
  97.         Player player = event.getPlayer();
  98.         DCPlayer dcPlayer = plugin.getDataManager().find(player);
  99.         HashMap<Integer, Skill> skills = dcPlayer.getSkills();
  100.  
  101.         ItemStack item = player.getItemInHand();
  102.  
  103.         // EffectType.PLOWDURABILITY
  104.         if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
  105.             Block block = event.getClickedBlock();
  106.             Material material = block.getType();
  107.  
  108.             if (material == Material.DIRT || material == Material.GRASS) {
  109.                 for (Skill s : skills.values()) {
  110.                     for (Effect effect : s.getEffects()) {
  111.                         if (effect.getEffectType() == EffectType.PLOWDURABILITY && effect.checkTool(item)) {
  112.                             effect.damageTool(dcPlayer, 1, item);
  113.                             // block.setTypeId(60);
  114.                         }
  115.                     }
  116.                 }
  117.             }
  118.         }
  119.     }
  120.  
  121.     /**
  122.      * Called when a player eats food
  123.      *
  124.      * @param event
  125.      *            Relevant event details
  126.      */
  127.     @EventHandler
  128.     public void onPlayerEat(PlayerEatEvent event) {
  129.  
  130.         DCPlayer dcPlayer = plugin.getDataManager().find(event.getPlayer());
  131.         HashMap<Integer, Skill> skills = dcPlayer.getSkills();
  132.         ItemStack item = event.getPlayer().getItemInHand();
  133.         Block block = (Block) event.getPlayer().getItemOnCursor();
  134.  
  135.         for (Skill s : skills.values()) {
  136.             for (Effect e : s.getEffects()) {
  137.                 if (e.getEffectType() == EffectType.EAT && e.checkInitiator(item)) {
  138.                     int health = Util.randomAmount((e.getEffectAmount(dcPlayer)));
  139.  
  140.                     if (DwarfCraft.debugMessagesThreshold < 8)
  141.                         System.out.println(String.format("DC8: Are Food: \"%s\" for %d health", Util.getCleanName(item), health));
  142.  
  143.                     int id = item.getTypeId();
  144.                     int itemFoodLevel = 0;
  145.                     final int amount = event.getAmount();
  146.  
  147.                     // Raw Fish
  148.                     if (id == 349) {
  149.                         itemFoodLevel = 2;
  150.  
  151.                         // Mushroom Soup
  152.                     } else if (id == 282) {
  153.                         itemFoodLevel = 8;
  154.  
  155.                         // Raw Pork
  156.                     } else if (id == 319) {
  157.                         itemFoodLevel = 3;
  158.                     } else if (id == 320) {
  159.                         itemFoodLevel = 9;
  160.                     }
  161.  
  162.                     event.setAmount((amount - itemFoodLevel) + health);
  163.  
  164.                 } else if (e.getEffectType() == EffectType.EAT && e.checkInitiator(block)) {
  165.                     int health = Util.randomAmount((e.getEffectAmount(dcPlayer)));
  166.  
  167.                     if (DwarfCraft.debugMessagesThreshold < 8)
  168.                         System.out.println(String.format("DC8: Are Food: \"%s\" for %d health", Util.getCleanName(item), health));
  169.  
  170.                     int itemFoodLevel = 0;
  171.                     final int amount = event.getAmount();
  172.  
  173.                     // Cake
  174.                     if (block.getTypeId() == 92) {
  175.                         itemFoodLevel = 2;
  176.                     }
  177.  
  178.                     event.setAmount((amount - itemFoodLevel) + health);
  179.                 }
  180.             }
  181.         }
  182.     }
  183.  
  184.     /**
  185.      * Called when a player opens an inventory
  186.      *
  187.      * @param event
  188.      *            Relevant event details
  189.      */
  190.    
  191.     @EventHandler(priority = EventPriority.NORMAL)
  192.     public void onInventoryOpen(PlayerInventoryEvent event) {
  193.  
  194.         if (plugin.getConfigManager().worldBlacklist) {
  195.             for (World w : plugin.getConfigManager().worlds) {
  196.                 if (w != null) {
  197.                     if (event.getPlayer().getWorld() == w) {
  198.                         return;
  199.                     }
  200.                 }
  201.             }
  202.         }
  203.  
  204.         DCCraftSchedule sched = new DCCraftSchedule(plugin, plugin.getDataManager().find(event.getPlayer()));
  205.         int id = plugin.getServer().getScheduler().scheduleSyncRepeatingTask(plugin, sched, 0, 2);
  206.         sched.setID(id);
  207.     }
  208.  
  209.     @EventHandler(priority = EventPriority.NORMAL)
  210.     public void onPlayerFish(PlayerFishEvent event) {
  211.  
  212.         if (plugin.getConfigManager().worldBlacklist) {
  213.             for (World w : plugin.getConfigManager().worlds) {
  214.                 if (w != null) {
  215.                     if (event.getPlayer().getWorld() == w) {
  216.                         return;
  217.                     }
  218.                 }
  219.             }
  220.         }
  221.  
  222.         if (event.isCancelled())
  223.             return;
  224.  
  225.         if (event.getState() == State.CAUGHT_FISH) {
  226.             DCPlayer player = plugin.getDataManager().find(event.getPlayer());
  227.             ItemStack item = ((Item) event.getCaught()).getItemStack();
  228.             byte meta = item.getData().getData();
  229.             Location loc = player.getPlayer().getLocation();
  230.             ItemStack tool = player.getPlayer().getItemInHand();
  231.             if (item.getType() == Material.RAW_FISH) {
  232.                 for (Skill skill : player.getSkills().values()) {
  233.                     for (Effect effect : skill.getEffects()) {
  234.                         if (effect.getEffectType() == EffectType.FISH) {
  235.                             ItemStack drop = effect.getOutput(player, meta);
  236.                             if (drop.getAmount() > 0)
  237.                                 loc.getWorld().dropItemNaturally(loc, drop);
  238.                         }
  239.                     }
  240.                 }
  241.  
  242.                 if (tool != null && tool.getType().getMaxDurability() > 0) {
  243.                     for (Skill s : player.getSkills().values()) {
  244.                         for (Effect e : s.getEffects()) {
  245.                             if (e.getEffectType() == EffectType.RODDURABILITY && e.checkTool(tool))
  246.                                 e.damageTool(player, 1, tool);
  247.                         }
  248.                     }
  249.                 }
  250.             }
  251.         }
  252.  
  253.     }
  254. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement