- Баллы
- 66
- Имя в Minecraft
- _TheKrealisYT_
Хочу написать плагин, чтоб было 3 вида ртп, первый на 2500 блоков, второй на 5000. Это я сделал, код будет ниже. Но хочу, чтоб при вводе команды /rtp3 игрока телепортировало вблизи к другим игрокам. Как это можно сделать? Можно ли взять ближайшего игрока, получить его координаты, телепортировать игрока выполняющего команду на 125 блоков к этому игроку? Если можно, то как? Если есть свои варианты, то предложите, как можно написать.
Вот код:
public boolean onCommand(final CommandSender sender, final Command cmd, final String label, final String[] args) {
if (sender instanceof Player) {
final Player p = (Player)sender;
if (p.hasPermission("kaddon.rtp")) {
final int max = 2000;
final int min = 2500;
final int x = new Random().nextInt(max + min) + min;
final int z = new Random().nextInt(max + min) + min;
final Location loc = new Location(p.getWorld(), (double)x, 0.0, (double)z);
final int y = loc.getWorld().getHighestBlockYAt(loc) + 3;
loc.setY((double)y);
p.teleport(loc);
final FoodLevelChangeEvent event = new FoodLevelChangeEvent((HumanEntity)p, p.getFoodLevel() - 4);
Bukkit.getPluginManager().callEvent((Event)event);
p.setFoodLevel(event.getFoodLevel());
p.sendTitle(Main.getInstance().getConfig().getString("messages.title_rtp").replace("&", "§"), (String)null);
p.sendMessage(ChatColor.GREEN + "\u0412\u044b \u0442\u0435\u043b\u0435\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043d\u0430 " + x + " " + y + " " + z);
p.playSound(p.getLocation(), Sound.BLOCK_NOTE_BELL, 4.0f, 4.0f);
p.addPotionEffect(new PotionEffect(PotionEffectType.WATER_BREATHING, 200, 1));
}
else {
p.sendMessage(Main.getInstance().getConfig().getString("messages.rtp_noperm").replace("&", "§"));
}
}
else if (args.length == 1) {
final Player p = Bukkit.getPlayer(args[0]);
if (p != null && p.isOnline()) {
final int max = 2000;
final int min = 2500;
final int x = new Random().nextInt(max + min) + min;
final int z = new Random().nextInt(max + min) + min;
final Location loc = new Location(p.getWorld(), (double)x, 0.0, (double)z);
final int y = loc.getWorld().getHighestBlockYAt(loc) + 3;
loc.setY((double)y);
p.teleport(loc);
p.sendMessage("\u0412\u044b \u0442\u0435\u043b\u0435\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043d\u0430 " + x + " " + y + " " + z);
}
else {
sender.sendMessage(ChatColor.RED + "\u0423 \u0432\u0430\u0441 \u043d\u0435\u0442 \u043f\u0440\u0430\u0432 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b!");
}
}
else {
sender.sendMessage("\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435((");
}
return false;
}
}
Вот код:
public boolean onCommand(final CommandSender sender, final Command cmd, final String label, final String[] args) {
if (sender instanceof Player) {
final Player p = (Player)sender;
if (p.hasPermission("kaddon.rtp")) {
final int max = 2000;
final int min = 2500;
final int x = new Random().nextInt(max + min) + min;
final int z = new Random().nextInt(max + min) + min;
final Location loc = new Location(p.getWorld(), (double)x, 0.0, (double)z);
final int y = loc.getWorld().getHighestBlockYAt(loc) + 3;
loc.setY((double)y);
p.teleport(loc);
final FoodLevelChangeEvent event = new FoodLevelChangeEvent((HumanEntity)p, p.getFoodLevel() - 4);
Bukkit.getPluginManager().callEvent((Event)event);
p.setFoodLevel(event.getFoodLevel());
p.sendTitle(Main.getInstance().getConfig().getString("messages.title_rtp").replace("&", "§"), (String)null);
p.sendMessage(ChatColor.GREEN + "\u0412\u044b \u0442\u0435\u043b\u0435\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043d\u0430 " + x + " " + y + " " + z);
p.playSound(p.getLocation(), Sound.BLOCK_NOTE_BELL, 4.0f, 4.0f);
p.addPotionEffect(new PotionEffect(PotionEffectType.WATER_BREATHING, 200, 1));
}
else {
p.sendMessage(Main.getInstance().getConfig().getString("messages.rtp_noperm").replace("&", "§"));
}
}
else if (args.length == 1) {
final Player p = Bukkit.getPlayer(args[0]);
if (p != null && p.isOnline()) {
final int max = 2000;
final int min = 2500;
final int x = new Random().nextInt(max + min) + min;
final int z = new Random().nextInt(max + min) + min;
final Location loc = new Location(p.getWorld(), (double)x, 0.0, (double)z);
final int y = loc.getWorld().getHighestBlockYAt(loc) + 3;
loc.setY((double)y);
p.teleport(loc);
p.sendMessage("\u0412\u044b \u0442\u0435\u043b\u0435\u043f\u043e\u0440\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u044b \u043d\u0430 " + x + " " + y + " " + z);
}
else {
sender.sendMessage(ChatColor.RED + "\u0423 \u0432\u0430\u0441 \u043d\u0435\u0442 \u043f\u0440\u0430\u0432 \u0434\u043b\u044f \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b!");
}
}
else {
sender.sendMessage("\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435((");
}
return false;
}
}