DemonikJR
Активный участник
- Баллы
- 61
- Имя в Minecraft
- DemonikJR
Пишу плагин, при разрушение блока железной руды киркой тебе выдаётся железная руда, а на место сломанного блока ставится камень (потом нужно будет восстановить руду через минут 20, но с этим позже разберусь). Проблема в том, что если писать
ничего не происходит, я так понимаю, что блок не успевает ставиться, поэтому нужна задержка.
Т.к. Threads.sleep усыпляет весь сервер, то нужно использовать BukkitScheduler, но при его использовании происходит такая ошибка.

Статью про шедулер смотрел, так и не понял в чём проблема. Если что Streams - основной класс, а это действие в классе Handler.
Код:
Location loc = b.getLocation();
Block bl = loc.getBlock();
bl.setType(Material.STONE);
Т.к. Threads.sleep усыпляет весь сервер, то нужно использовать BukkitScheduler, но при его использовании происходит такая ошибка.
Статью про шедулер смотрел, так и не понял в чём проблема. Если что Streams - основной класс, а это действие в классе Handler.
Код:
package dem.main;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.*********ventory.ItemStack;
import org.bukkit.plugin.Plugin;
import net.md_5.bungee.api.ChatMessageType;
import net.md_5.bungee.api.chat.TextComponent;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.scheduler.BukkitScheduler;
public class Handler implements Listener {
@EventHandler
public void join(PlayerJoinEvent e) {
Player p = e.getPlayer();
p.sendMessage("Здравствуй, странник! Ты попал на сервер ScrollsMC, больше о сервере ты можешь узнать у гида в хабе.");
}
@EventHandler
public void block(BlockBreakEvent e) {
Player p = e.getPlayer();
Block b = e.getBlock();
ItemStack item = new ItemStack(Material.IRON_ORE);
ItemStack hitem = p.getItemInHand();
if (b.getType() == Material.IRON_ORE) {
if (hitem.getType() == Material.STONE_PICKAXE) {
p.getInventory().addItem(item);
p.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText("§aТы добыл железную руду!"));
Location loc = b.getLocation();
Block bl = loc.getBlock();
long time = 20L * 2L;
Bukkit.getScheduler().runTaskTimerAsynchronously(Streams, () -> bl.setType(Material.STONE), time);
p.playSound(p.getLocation(), Sound.BLOCK_STONE_BREAK, 1, 2);
}
else return;
}
else return;
}
}