Advertisement
Guest User

Untitled

a guest
Dec 4th, 2016
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.56 KB | None | 0 0
  1. public static ArrayList<Player> teleporter = new ArrayList<Player>();
  2. private HashMap<Player, Teleport> teleporters = new HashMap<Player, Teleport>();
  3.  
  4. public static void sendKit(Player p){
  5. p.getInventory().addItem(new ItemStack(Material.WOOD_SWORD, 1));
  6. p.getInventory().addItem(new ItemStack(Material.MOB_SPAWNER, 2));
  7. teleporter.add(p);
  8. }
  9.  
  10. private class Teleport {
  11. private ArrayList<Block> blocks = new ArrayList<Block>();
  12.  
  13. Player owner;
  14.  
  15. Teleport(Player owner) {
  16. this.owner = owner;
  17. }
  18.  
  19. public void addBlock(Block block) {
  20. blocks.add(block);
  21. }
  22.  
  23. public Player getOwner() {
  24. return owner;
  25. }
  26.  
  27. public int getSize() {
  28. return blocks.size();
  29. }
  30.  
  31. public boolean hasBlock(Block block) {
  32. return blocks.contains(block);
  33. }
  34.  
  35. public void removeBlock(Block block) {
  36. blocks.remove(block);
  37. }
  38.  
  39. public void removeTeleports() {
  40. for (Block b : blocks)
  41. b.setType(Material.AIR);
  42. blocks.clear();
  43. }
  44.  
  45. public void teleport(Player p, Block clicked) {
  46. p.getWorld().playEffect(p.getLocation(), Effect.ENDER_SIGNAL, 9);
  47. p.getWorld().playSound(p.getLocation(), Sound.ENDERMAN_TELEPORT, 1.2F, 1);
  48. for (Block b : blocks)
  49. if (!b.equals(clicked))
  50. p.teleport(b.getLocation().clone().add(0.5, 0.5, 0.5));
  51. p.getWorld().playEffect(p.getLocation(), Effect.ENDER_SIGNAL, 9);
  52. p.getWorld().playSound(p.getLocation(), Sound.ENDERMAN_TELEPORT, 1.2F, 1);
  53. }
  54. }
  55.  
  56. private void addItem(Player p) {
  57. p.getInventory().addItem(new ItemStack(Material.MOB_SPAWNER));
  58. }
  59.  
  60. private Teleport getTeleport(Block block) {
  61. for (Teleport port : teleporters.values())
  62. if (port.hasBlock(block))
  63. return port;
  64. return null;
  65. }
  66.  
  67. @EventHandler
  68. public void onBlockDestroy(BlockBreakEvent event) {
  69. if (event.isCancelled())
  70. return;
  71. if (event.getBlock().getType() == Material.MOB_SPAWNER) {
  72. Teleport teleport = this.getTeleport(event.getBlock());
  73. if (teleport == null)
  74. return;
  75. event.setExpToDrop(0);
  76. Player p = teleport.getOwner();
  77. teleport.removeBlock(event.getBlock());
  78. if (event.getPlayer() != p) {
  79. p.sendMessage("§c" + event.getPlayer().getName() + " a cassé votre téléporteur!");
  80. event.getPlayer().sendMessage("§cVous avez cassé le téléporteur de " + p.getName() + ".");
  81. }
  82. addItem(p);
  83. }
  84. }
  85.  
  86. @EventHandler
  87. public void onExplode(EntityExplodeEvent event) {
  88. if (event.isCancelled())
  89. return;
  90. Iterator<Block> itel = event.blockList().iterator();
  91. while (itel.hasNext()) {
  92. Block b = itel.next();
  93. Teleport teleport = getTeleport(b);
  94. if (teleport != null) {
  95. itel.remove();
  96. Player p = teleport.getOwner();
  97. p.sendMessage("§cVotre téléporteur a explosé!");
  98. addItem(p);
  99. }
  100. }
  101. }
  102.  
  103. @EventHandler
  104. public void onInteract(PlayerInteractEvent event) {
  105. if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
  106. Block clicked = event.getClickedBlock();
  107. if (clicked.getType() == Material.MOB_SPAWNER) {
  108. Player p = event.getPlayer();
  109. Teleport teleport = getTeleport(clicked);
  110. if(teleport != null){
  111. if(teleport.getSize() >= 2){
  112. teleport.teleport(p, clicked);
  113. }else{
  114. p.sendMessage("§cUn des téléporteur est endommagé!");
  115. }
  116. }
  117. }
  118. }
  119. }
  120.  
  121. @EventHandler
  122. public void onPlace(BlockPlaceEvent event) {
  123. Player p = event.getPlayer();
  124. Block block = event.getBlock();
  125. if (teleporter.contains(p)) {
  126. if (block.getType() == Material.MOB_SPAWNER) {
  127. Teleport teleport = teleporters.get(p);
  128. if (teleport == null) {
  129. teleport = new Teleport(p);
  130. teleporters.put(p, teleport);
  131. }
  132. if (teleport.getSize() >= 2) {
  133. p.sendMessage("§cTrop de téléporteur placé!");
  134. event.setCancelled(true);
  135. return;
  136. }
  137. CreatureSpawner creature = (CreatureSpawner) block.getState();
  138. creature.setDelay(Integer.MAX_VALUE);
  139. teleport.addBlock(block);
  140. if (teleport.getSize() >= 2) {
  141. p.sendMessage("§cVos téléporteurs sont raccordés!");
  142. } else
  143. p.sendMessage("§cTéléporteur placé! Placez en un autre pour établir un raccordement.");
  144. }
  145. }
  146. }
  147.  
  148. @EventHandler
  149. public void onPlayerKilled(PlayerDeathEvent event) {
  150. if (teleporters.containsKey(event.getEntity())) {
  151. Teleport teleporter = teleporters.remove(event.getEntity());
  152. teleporter.removeTeleports();
  153. }
  154. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement