A feature-rich Minecraft plugin which enhances gaming experience
git clone git://soophie.de/poppy
96
@Override97
public void onDisable() {98
chairModule.onDisable();99
fastTravelModule.onDisable();100
}102
@Override
1
package poppy.modules;3
import java.util.List;4
import java.util.ArrayList;6
import org.bukkit.Location;7
import org.bukkit.Material;8
import org.bukkit.Sound;
11
import org.bukkit.entity.Player;12
import org.bukkit.event.Listener;13
import org.bukkit.event.EventHandler;11
import org.bukkit.event.player.PlayerInteractEvent;14
import org.bukkit.event.block.Action;15
import org.bukkit.inventory.ItemStack;16
import org.bukkit.inventory.EquipmentSlot;17
import org.bukkit.inventory.meta.CompassMeta;18
import org.bukkit.scheduler.BukkitRunnable;19
import org.bukkit.event.player.PlayerInteractEvent;20
import org.bukkit.event.player.PlayerMoveEvent;21
import org.bukkit.event.player.PlayerQuitEvent;23
public class FastTravelModule implements Listener {25
public static final int COUNTDOWN_TIME = 5;26
public static final double MOVEMENT_THRESHOLD = 0.1D;28
private Plugin plugin;29
private List<Player> playersQueue;31
public FastTravelModule(final Plugin plugin) {32
this.plugin = plugin;33
this.playersQueue = new ArrayList<>();34
}36
public void onDisable() {37
this.playersQueue.clear();38
}40
@EventHandler
42
if (event.getHand() != EquipmentSlot.HAND) {43
return;44
}45
if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK) {46
return;47
}48
final ItemStack item = event.getItem();49
if (item == null || item.getType() != Material.COMPASS) {50
return;
59
}60
final Player player = event.getPlayer();61
final Location location = meta.getLodestone();62
if (playersQueue.contains(player)) {63
return;64
}65
playersQueue.add(player);66
new BukkitRunnable() {67
int timer = COUNTDOWN_TIME;68
@Override69
public void run() {70
if (!playersQueue.contains(player)) {71
this.cancel();72
return;73
}74
final Location playerLocation = player.getLocation();75
if ( timer > 0) {76
player.playSound(playerLocation, Sound.ENTITY_EXPERIENCE_ORB_PICKUP, 100.0F, 1.0F);
82
location.setPitch(playerLocation.getPitch());83
player.teleport(location);84
player.playSound(playerLocation, Sound.ENTITY_PLAYER_TELEPORT, 100.0F, 1.0F);85
playersQueue.remove(player);86
return;87
}88
timer--;89
}90
}.runTaskTimer(this.plugin, 0L, 20L);91
}93
@EventHandler94
public void onPlayerMove(final PlayerMoveEvent event) {95
final Player player = event.getPlayer();96
if (playersQueue.contains(player)) {97
final Location fromLocation = event.getFrom();98
final Location toLocation = event.getTo();99
if (fromLocation.distance(toLocation) > MOVEMENT_THRESHOLD) {100
player.playSound(toLocation, Sound.BLOCK_GLASS_BREAK, 100.0F, 1.0F);101
playersQueue.remove(player);102
}103
}104
}106
@EventHandler107
public void onPlayerQuit(final PlayerQuitEvent event) {108
final Player player = event.getPlayer();109
if (playersQueue.contains(player)) {110
playersQueue.remove(player);111
}112
}113
}