EgoR_TATARKIN
Пользователь
- Сообщения
- 70
Привет, пишу плагин на /tpa nick и у меня проблема. Я не знаю почему но если я отправил запрос к игроку а он пишет /tpaccept то игрока не начинает телепортировать а пишет что нет запросов.
Java:
package org.infernworld.awtpa.command;
import org.bukkit.*;
import org.bukkit.boss.BarColor;
import org.bukkit.boss.BarStyle;
import org.bukkit.boss.BossBar;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import org.infernworld.awtpa.AWtpa;
import org.infernworld.awtpa.util.Config;
import org.infernworld.awtpa.util.SoundUtil;
import org.jetbrains.annotations.NotNull;
import java.util.*;
public class Commands implements CommandExecutor {
private final AWtpa plugin;
private final Config cfg;
private BossBar bossBar;
private Map<Player, Player > called = new HashMap<>();
public Commands(AWtpa plugin) {
this.plugin = plugin;
this.cfg = new Config(plugin);
}
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
Player player = (Player) sender;
if (command.getName().equalsIgnoreCase("tpa")) {
if (args.length == 1) {
Player target = Bukkit.getPlayer(args[0]);
if (target != null) {
playerToCall(player, target);
} else {
player.sendMessage("Игрок не найден.");
}
} else {
player.sendMessage("Используйте: /tpa <игрок>");
}
} else if (command.getName().equalsIgnoreCase("tpaccept")) {
playerCall(player);
}
return true;
}
private void playerToCall(Player player, Player player2) {
player2.sendMessage(cfg.getMessageCall().replace("%player", player.getName()));
called.put(player2, player);
new BukkitRunnable() {
@Override
public void run() {
called.remove(player2);
}
}.runTaskLater(plugin,10*20L);
}
public void playerCall(Player player) {
Player sender = called.get(player);
if (sender == null) {
player.sendMessage("Запросов на тп нет!");
}
player.spawnParticle(Particle.PORTAL, player.getLocation(), 100, 0.5, 1, 0.5, 0.1);
player.spawnParticle(Particle.SPELL_WITCH, player.getLocation(), 50, 0.5, 1, 0.5, 0.1);
player.spawnParticle(Particle.CLOUD, player.getLocation(), 30, 0.5, 1, 0.5, 0.1);
bossBar = Bukkit.createBossBar("Телепортация через " + cfg.getTime(), BarColor.GREEN, BarStyle.SEGMENTED_10);
bossBar.addPlayer(player);
cfg.getCall().forEach(player::sendMessage);
new BukkitRunnable() {
int time = cfg.getTime();
@Override
public void run() {
if (time > 0) {
SoundUtil.playSound(player,cfg.getSoundcalled());
player.spawnParticle(Particle.PORTAL, player.getLocation(), 100, 0.5, 1, 0.5, 0.1);
bossBar.setTitle(cfg.getBossBar().replace("%time", String.valueOf(time)));
bossBar.setProgress((double) time / 5);
time--;
} else {
bossBar.removePlayer(player);
bossBar.removeAll();
cancel();
}
}
}.runTaskTimer(plugin,0L,20L);
new BukkitRunnable() {
@Override
public void run() {
sender.teleport(player);
called.remove(sender);
SoundUtil.playSound(player,cfg.getSoundTp());
}
}.runTaskLater(plugin,5*20L);
}
}