- Баллы
- 76
- Имя в Minecraft
- Lisenochek
Всем привет! Сделал сигнальные шашки, которые должны дымиться и дропать ящики, но беда в том, что если на место шашки поставить любой блок, то дым опять пойдет и ящик заспавнится, при этом блок исчезнет и так по новой.
Как это можно пофиксить?
Как это можно пофиксить?
JavaScript:
package ru.lisenochek.fgmrealistic.listeners;
import org.bukkit.Material;
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.BlockPlaceEvent;
import org.bukkit.scheduler.BukkitRunnable;
import ru.lisenochek.fgmrealistic.API;
import ru.lisenochek.fgmrealistic.MainConfig;
import ru.lisenochek.fgmrealistic.crate.CrateList;
import ru.lisenochek.fgmrealistic.lists.ListItems;
import ru.lisenochek.fgmrealistic.utils.C;
import ru.lisenochek.fgmrealistic.utils.ParticleEffect;
import java.util.Random;
public class PlaceSignalListener implements Listener {
private static Random r = new Random();
@EventHandler
public void placeSignal(BlockPlaceEvent e) {
Player p = e.getPlayer();
if (p.getWorld().getName().equalsIgnoreCase("Realistic_nether") || p.getWorld().getName().equalsIgnoreCase("Realistic_the_end")) {
p.sendMessage(C.getPrefix() + C.c("&cЯ в другом мире, не могу поставить шашку."));
e.setCancelled(true);
return;
}
if (!MainConfig.wlWorlds.contains(p.getWorld())) return;
if (e.getBlockPlaced().getType() != Material.REDSTONE_TORCH_ON) return;
if (!p.getItemInHand().hasItemMeta()) return;
if (!p.getItemInHand().getItemMeta().hasDisplayName()) return;
if (p.getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase(ListItems.commonSignal.getItemMeta().getDisplayName())) spawnCrate(p, e.getBlockPlaced(), "common");
if (p.getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase(ListItems.strangeSignal.getItemMeta().getDisplayName())) spawnCrate(p, e.getBlockPlaced(), "strange");
}
public void spawnCrate(Player p, Block b, String name) {
BukkitRunnable run = new BukkitRunnable() {
@Override
public void run() {
if (b.getType() == Material.AIR) return;
ParticleEffect.SMOKE_LARGE.display(0, 2, 0, 0, 5, b.getLocation().add(0.5, 3, 0.5), 200);
if (r.nextInt(1000) <= 1) {
if (name.equalsIgnoreCase("common")) CrateList.getCommonCrate(p);
if (name.equalsIgnoreCase("strange")) CrateList.getStrangeCrate(b.getLocation());
b.setType(Material.AIR);
}
}
};
run.runTaskTimer(API.getInstance(), 5, 0);
}
}
