Advertisement
Guest User

PlayerListener Class

a guest
Dec 11th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.57 KB | None | 0 0
  1. package surviveio;
  2.  
  3. import org.bukkit.*;
  4. import org.bukkit.block.Block;
  5. import org.bukkit.entity.Entity;
  6. import org.bukkit.entity.ItemFrame;
  7. import org.bukkit.entity.Player;
  8. import org.bukkit.event.EventHandler;
  9. import org.bukkit.event.Listener;
  10. import org.bukkit.event.block.Action;
  11. import org.bukkit.event.block.BlockBreakEvent;
  12. import org.bukkit.event.entity.EntityDamageEvent;
  13. import org.bukkit.event.entity.PlayerDeathEvent;
  14. import org.bukkit.event.player.PlayerInteractEntityEvent;
  15. import org.bukkit.event.player.PlayerInteractEvent;
  16. import org.bukkit.event.player.PlayerJoinEvent;
  17. import org.bukkit.inventory.EquipmentSlot;
  18. import org.bukkit.inventory.meta.MapMeta;
  19. import org.bukkit.map.MapView;
  20.  
  21. public class PlayerListener implements Listener {
  22.  
  23.     private final SurvivePlugin plugin;
  24.  
  25.     public PlayerListener(final SurvivePlugin plugin){
  26.         this.plugin = plugin;
  27.     }
  28.  
  29.     @EventHandler
  30.     public void onPlayerInteract(PlayerInteractEvent event) {
  31.         Player player = event.getPlayer();
  32.         Block block = event.getClickedBlock();
  33.  
  34.         int xp = player.getLevel();
  35.         if (block.getType() != Material.SOUL_SAND) return;
  36.         if (!player.isSneaking()) return;
  37.         if (event.getAction() == Action.LEFT_CLICK_BLOCK) {
  38.             if (player.getLevel() <= 0) return;
  39.             if (plugin.xp_blocks.containsKey(block.getLocation())) {
  40.                 xp += plugin.xp_blocks.get(block.getLocation());
  41.             }
  42.             player.sendMessage(ChatColor.YELLOW + "You have stored " + player.getLevel() + ". Now the block has " + LevelCommission(xp) + " levels.");
  43.             plugin.xp_blocks.put(block.getLocation(), xp);
  44.             player.setLevel(0);
  45.         }
  46.         if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
  47.             if (!plugin.xp_blocks.containsKey(block.getLocation())) return;
  48.             xp = plugin.xp_blocks.get(block.getLocation());
  49.             if (event.getHand() != EquipmentSlot.HAND) return;
  50.             player.sendMessage(ChatColor.YELLOW + "This block has " + LevelCommission(xp) + " levels.");
  51.         }
  52.     }
  53.  
  54.     @EventHandler
  55.     public void onBreakBlock(BlockBreakEvent event) {
  56.         Player player = event.getPlayer();
  57.         Block block = event.getBlock();
  58.         if (block.getType() == Material.SOUL_SAND) {
  59.             if (plugin.xp_blocks.containsKey(block.getLocation())) {
  60.                 int xp = plugin.xp_blocks.get(block.getLocation());
  61.                 event.setExpToDrop(ExtraXP(xp));
  62.                 xp = LevelCommission(xp);
  63.                 player.setLevel(xp + player.getLevel());
  64.                 player.sendMessage(ChatColor.GOLD + "You earned " + xp + " levels.");
  65.                 event.setDropItems(false);
  66.                 plugin.xp_blocks.remove(block.getLocation());
  67.             }
  68.         }
  69.     }
  70.  
  71.     private int LevelCommission(int level) {
  72.         if (level <= 10) {
  73.             return (int) (level*0.80);
  74.         } else if (level <= 30) {
  75.             return (int) (level*0.85);
  76.         } else {
  77.             return (int) (level*0.90);
  78.         }
  79.     }
  80.  
  81.     private int ExtraXP(int xp) {
  82.         if (xp <= 10) {
  83.             return (int) (xp*0.20);
  84.         } else if (xp <= 30) {
  85.             return (int) (xp*0.25);
  86.         } else {
  87.             return (int) (xp*0.30);
  88.         }
  89.     }
  90.  
  91.     @EventHandler
  92.     public void onPlayerInteractEntity(PlayerInteractEntityEvent event){
  93.         Player player = event.getPlayer();
  94.         Entity entity = event.getRightClicked();
  95.         if (entity instanceof ItemFrame) {
  96.             final ItemFrame frame = (ItemFrame) entity;
  97.             Rotation frameRotation = frame.getRotation().rotateCounterClockwise();
  98.             if (frame.getItem() != null && frame.getItem().getType() == Material.FILLED_MAP) {
  99.                 if (player.isSneaking()) {
  100.                     frame.setRotation(frameRotation);
  101.                     final MapMeta meta = (MapMeta)frame.getItem().getItemMeta();
  102.                     final MapView mapView = Bukkit.getMap((short)meta.getMapId());
  103.                     Location location = new Location(mapView.getWorld(), mapView.getCenterX(),
  104.                             mapView.getWorld().getHighestBlockYAt(mapView.getCenterX(), mapView.getCenterZ()), mapView.getCenterZ());
  105.                     player.teleport(location);
  106.                     player.sendMessage(ChatColor.GREEN + "Teleported to " + location.getX() + ", " + location.getY() + ", " + location.getZ());
  107.                 }
  108.             }
  109.         }
  110.     }
  111.  
  112.     @EventHandler
  113.     public void onPlayerDeath(PlayerDeathEvent event) {
  114.         Player player = event.getEntity();
  115.         int xp = player.getTotalExperience();
  116.         if (player.getKiller() != null) {
  117.             if (player.getKiller() != player) {
  118.                 event.setDeathMessage("Something wrong had happened between " + player.getName() + " and " + player.getKiller().getName());
  119.                 player.setTotalExperience(xp);
  120.             } else if (player.getKiller() == player) {
  121.                 event.setDeathMessage(player.getName() + " has a problem with himself");
  122.             }
  123.         }
  124.         if (player.getLastDamageCause().getCause() == EntityDamageEvent.DamageCause.PROJECTILE) {
  125.             player.chat("QualcĂș tĂ© una tirita?");
  126.             event.setDeathMessage("A 'Latin' has killed " + player.getName());
  127.         }
  128.     }
  129.  
  130.     @EventHandler
  131.     public void onPlayerJoin(PlayerJoinEvent event) {
  132.         Player player = event.getPlayer();
  133.         player.sendMessage(ChatColor.DARK_AQUA + "Welcome " + player.getName());
  134.         player.setHealth(20.0);
  135.     }
  136.  
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement