1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Помогите Как проверить, был взорван отдельный тнт или нет?

Тема в разделе "Разработка плагинов для новичков", создана пользователем ItsWay, 14 май 2022.

  1. Автор темы
    ItsWay

    ItsWay Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    ItsWay
    Всем привет, мне надо сделать, что бы отдельный тнт(добавленный в игру плагином взрывал обсидиан), я сделал так, что бы при взрыве обычного тнт через ивент с взрывом енити, но вопрос можно ли ниже в проверке если это тнт, проверить, этот тнт был тнт специальным который плагин добавляет или нет? Как такое релизовать?
    Классы:

    Код:
    @EventHandler
    public void onExplode(EntityExplodeEvent e) {
    FileConfiguration config = plugin.getConfig();
    int radiusexplode = config.getInt("configurations.tnts.standart_tnt.explode-obsidian-radius");
    World world = e.getEntity().getWorld();
    if (e.getEntityType() == EntityType.PRIMED_TNT) {
    for (int x = e.getEntity().getLocation().getBlockX() - radiusexplode; x < e.getEntity().getLocation().getBlockX() + radiusexplode; x++) {
    for (int y = e.getEntity().getLocation().getBlockY() - radiusexplode; y < e.getEntity().getLocation().getBlockY() + radiusexplode; y++) {
    for (int z = e.getEntity().getLocation().getBlockZ() - radiusexplode; z < e.getEntity().getLocation().getBlockZ() + radiusexplode; z++) {
    Block radiusBlock = world.getBlockAt(x, y, z);
    if(config.getBoolean("configurations.tnts.standart_tnt.explode-obsidian") == true) {
    if(radiusBlock.getType() == Material.OBSIDIAN) {
    e.blockList().add(radiusBlock);
    Bukkit.broadcast("Succesfully", null);
    return;
    }
    }
    if(config.getBoolean("configurations.tnt`s.standart_tnt.explode-obsidian") == false) {
    e.blockList().remove(radiusBlock);
    }
    }
    }
    }
    }
    }

    Это listener класс


    Код:
    public class ItemManager {
    
    private system plugin;
    
    ItemManager (system plugin) {
    
    this.plugin = plugin;
    
    }
    
    public static ItemStack tnt1;
    
    public static void init() {
    
    Createtnt1();
    }
    
    private static void Createtnt1() {
    ItemStack item = new ItemStack(Material.TNT, 1);
    ItemMeta meta = item.getItemMeta();
    meta.setDisplayName("TNT TIER 1");
    List<String> lore = new ArrayList<>();
    lore.add("Bahaet 10 na 10");
    lore.add("Prikol, on bahaet obsidian)");
    meta.setLore(lore);
    item.setItemMeta(meta);
    tnt1 = item;
    }
    }
    это класс добавления тнт
     
  2. NukerFall

    NukerFall Активный участник Пользователь

    Баллы:
    76
    придётся добавлять поставленному кастомному блоку TNT какую-то инфу через PersistentDataContainer, а потом при эвенте поджога TNT( TNTPrimeEvent или чё то такое) проверять что у блока была инфа и передавать её энтити подожжённого динамита тем же способом, а потом при взрыве смотреть, есть ли у динамита инфа и делать действия в зависимости от этого.

    Собственно итемстаку кастомного динамита тоже нужно будет добавлять инфу в PDC через его MetaData
     

Поделиться этой страницей