Advertisement
Checkium

Untitled

Jul 27th, 2016
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.42 KB | None | 0 0
  1. package me.checkium.NoMoreSofrenciaDiCobri;
  2.  
  3.  
  4. import org.bukkit.Bukkit;
  5. import org.bukkit.ChatColor;
  6. import org.bukkit.Location;
  7. import org.bukkit.Material;
  8. import org.bukkit.block.Block;
  9. import org.bukkit.command.Command;
  10. import org.bukkit.command.CommandSender;
  11. import org.bukkit.entity.Player;
  12. import org.bukkit.event.EventHandler;
  13. import org.bukkit.event.Listener;
  14. import org.bukkit.event.block.BlockDispenseEvent;
  15. import org.bukkit.material.Dispenser;
  16. import org.bukkit.plugin.java.JavaPlugin;
  17. import org.bukkit.util.BlockIterator;
  18.  
  19. public class Main
  20. extends JavaPlugin
  21. implements Listener
  22. {
  23. public void onEnable()
  24. {
  25. Bukkit.getPluginManager().registerEvents(this, this);
  26. }
  27.  
  28. @EventHandler
  29. public void onDispense(BlockDispenseEvent e)
  30. {
  31. if ((e.getBlock().getType() == Material.DISPENSER) &&
  32. (contains(e.getBlock())) &&
  33. (e.getItem().getType() == Material.DIAMOND_PICKAXE))
  34. {
  35. Dispenser d = (Dispenser)e.getBlock().getState().getData();
  36. if (e.getBlock().getRelative(d.getFacing()).getType() != Material.BEDROCK)
  37. {
  38. e.getBlock().getRelative(d.getFacing()).breakNaturally();
  39. e.setCancelled(true);
  40. }
  41. }
  42. }
  43.  
  44. public final Block getTargetBlock(Player player, int range) {
  45. BlockIterator iter = new BlockIterator(player, range);
  46. Block lastBlock = iter.next();
  47. while (iter.hasNext()) {
  48. lastBlock = iter.next();
  49. if (lastBlock.getType() == Material.AIR) {
  50. continue;
  51. }
  52. break;
  53. }
  54. return lastBlock;
  55. }
  56. public boolean onCommand(CommandSender sender, Command cmd, String lable, String[] args)
  57. {
  58. if (!(sender instanceof Player)) {
  59. return false;
  60. }
  61. Player p = (Player)sender;
  62. if (((cmd.getName().equalsIgnoreCase("blockbreaker")) ||
  63. (cmd.getName().equalsIgnoreCase("bb"))) &&
  64. (p.hasPermission("blockbreaker")))
  65. {
  66. Block b = getTargetBlock(p, 7);
  67. if (b.getType() == Material.DISPENSER)
  68. {
  69. if (contains(b))
  70. {
  71. remove(b.getLocation(), p);
  72. p.sendMessage(ChatColor.GREEN + "Você removeu o quebrador de blocos");
  73. }
  74. else
  75. {
  76. if(notMax(p)) {
  77. add(b.getLocation(), p);
  78. p.sendMessage(ChatColor.GREEN + "Você criou um quebrador de blocos");
  79. } else {
  80. p.sendMessage(ChatColor.RED + "Você atingiu o maximo de quebradores de blocos");
  81. }
  82.  
  83. }
  84. }
  85. else {
  86. p.sendMessage(ChatColor.RED + "Esse bloco não é um dispenser!");
  87. }
  88. }
  89. return true;
  90. }
  91.  
  92. public void add(Location loc, Player p)
  93. {
  94. int i = 0;
  95. while (getConfig().contains(Integer.toString(i))) {
  96. i++;
  97. }
  98. getConfig().set(i + ".x", Integer.valueOf(loc.getBlockX()));
  99. getConfig().set(i + ".y", Integer.valueOf(loc.getBlockY()));
  100. getConfig().set(i + ".z", Integer.valueOf(loc.getBlockZ()));
  101. getConfig().set(i + ".w", loc.getWorld().getName());
  102. getConfig().set(i + ".player", p.getName());
  103. saveConfig();
  104. }
  105.  
  106. public boolean contains(Block b)
  107. {
  108. return contains(b.getLocation());
  109. }
  110.  
  111. public boolean contains(Location loc)
  112. {
  113. for (String s : getConfig().getKeys(false)) {
  114. if ((loc.getBlockX() == getConfig().getInt(s + ".x")) &&
  115. (loc.getBlockY() == getConfig().getInt(s + ".y")) &&
  116. (loc.getBlockZ() == getConfig().getInt(s + ".z"))) {
  117. if (loc.getWorld().getName().equals(getConfig().getString(s + ".w"))) {
  118. return true;
  119. }
  120. }
  121. }
  122. return false;
  123. }
  124.  
  125. public boolean notMax(Player p) {
  126. int howMany = 0;
  127. while (getConfig().contains(p.getName())) {
  128. howMany++;
  129. }
  130. if (howMany <= 4) {
  131. return false;
  132. } else {
  133. return true;
  134. }
  135. }
  136. public void remove(Location loc, Player p)
  137. {
  138. if (contains(loc)) {
  139. for (String s : getConfig().getKeys(false)) {
  140. if ((loc.getBlockX() == getConfig().getInt(s + ".x")) &&
  141. (loc.getBlockY() == getConfig().getInt(s + ".y")) &&
  142. (loc.getBlockZ() == getConfig().getInt(s + ".z")) &&
  143. (p.getName() == getConfig().getString(s + ".player"))) {
  144. if (loc.getWorld().getName().equals(getConfig().getString(s + ".w")))
  145. {
  146. getConfig().set(s, null);
  147. saveConfig();
  148. }
  149. }
  150. }
  151. }
  152. }
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement