Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static ArrayList<Player> teleporter = new ArrayList<Player>();
- private HashMap<Player, Teleport> teleporters = new HashMap<Player, Teleport>();
- public static void sendKit(Player p){
- p.getInventory().addItem(new ItemStack(Material.WOOD_SWORD, 1));
- p.getInventory().addItem(new ItemStack(Material.MOB_SPAWNER, 2));
- teleporter.add(p);
- }
- private class Teleport {
- private ArrayList<Block> blocks = new ArrayList<Block>();
- Player owner;
- Teleport(Player owner) {
- this.owner = owner;
- }
- public void addBlock(Block block) {
- blocks.add(block);
- }
- public Player getOwner() {
- return owner;
- }
- public int getSize() {
- return blocks.size();
- }
- public boolean hasBlock(Block block) {
- return blocks.contains(block);
- }
- public void removeBlock(Block block) {
- blocks.remove(block);
- }
- public void removeTeleports() {
- for (Block b : blocks)
- b.setType(Material.AIR);
- blocks.clear();
- }
- public void teleport(Player p, Block clicked) {
- p.getWorld().playEffect(p.getLocation(), Effect.ENDER_SIGNAL, 9);
- p.getWorld().playSound(p.getLocation(), Sound.ENDERMAN_TELEPORT, 1.2F, 1);
- for (Block b : blocks)
- if (!b.equals(clicked))
- p.teleport(b.getLocation().clone().add(0.5, 0.5, 0.5));
- p.getWorld().playEffect(p.getLocation(), Effect.ENDER_SIGNAL, 9);
- p.getWorld().playSound(p.getLocation(), Sound.ENDERMAN_TELEPORT, 1.2F, 1);
- }
- }
- private void addItem(Player p) {
- p.getInventory().addItem(new ItemStack(Material.MOB_SPAWNER));
- }
- private Teleport getTeleport(Block block) {
- for (Teleport port : teleporters.values())
- if (port.hasBlock(block))
- return port;
- return null;
- }
- @EventHandler
- public void onBlockDestroy(BlockBreakEvent event) {
- if (event.isCancelled())
- return;
- if (event.getBlock().getType() == Material.MOB_SPAWNER) {
- Teleport teleport = this.getTeleport(event.getBlock());
- if (teleport == null)
- return;
- event.setExpToDrop(0);
- Player p = teleport.getOwner();
- teleport.removeBlock(event.getBlock());
- if (event.getPlayer() != p) {
- p.sendMessage("§c" + event.getPlayer().getName() + " a cassé votre téléporteur!");
- event.getPlayer().sendMessage("§cVous avez cassé le téléporteur de " + p.getName() + ".");
- }
- addItem(p);
- }
- }
- @EventHandler
- public void onExplode(EntityExplodeEvent event) {
- if (event.isCancelled())
- return;
- Iterator<Block> itel = event.blockList().iterator();
- while (itel.hasNext()) {
- Block b = itel.next();
- Teleport teleport = getTeleport(b);
- if (teleport != null) {
- itel.remove();
- Player p = teleport.getOwner();
- p.sendMessage("§cVotre téléporteur a explosé!");
- addItem(p);
- }
- }
- }
- @EventHandler
- public void onInteract(PlayerInteractEvent event) {
- if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
- Block clicked = event.getClickedBlock();
- if (clicked.getType() == Material.MOB_SPAWNER) {
- Player p = event.getPlayer();
- Teleport teleport = getTeleport(clicked);
- if(teleport != null){
- if(teleport.getSize() >= 2){
- teleport.teleport(p, clicked);
- }else{
- p.sendMessage("§cUn des téléporteur est endommagé!");
- }
- }
- }
- }
- }
- @EventHandler
- public void onPlace(BlockPlaceEvent event) {
- Player p = event.getPlayer();
- Block block = event.getBlock();
- if (teleporter.contains(p)) {
- if (block.getType() == Material.MOB_SPAWNER) {
- Teleport teleport = teleporters.get(p);
- if (teleport == null) {
- teleport = new Teleport(p);
- teleporters.put(p, teleport);
- }
- if (teleport.getSize() >= 2) {
- p.sendMessage("§cTrop de téléporteur placé!");
- event.setCancelled(true);
- return;
- }
- CreatureSpawner creature = (CreatureSpawner) block.getState();
- creature.setDelay(Integer.MAX_VALUE);
- teleport.addBlock(block);
- if (teleport.getSize() >= 2) {
- p.sendMessage("§cVos téléporteurs sont raccordés!");
- } else
- p.sendMessage("§cTéléporteur placé! Placez en un autre pour établir un raccordement.");
- }
- }
- }
- @EventHandler
- public void onPlayerKilled(PlayerDeathEvent event) {
- if (teleporters.containsKey(event.getEntity())) {
- Teleport teleporter = teleporters.remove(event.getEntity());
- teleporter.removeTeleports();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement