Помогите Как получить экземпляр Chest имея экземпляр Block

Poyalnik

Активный участник
Пользователь
Баллы
66
Как получить экземпляр Chest имея экземпляр Block, если я знаю, что этот Block в мире есть CHEST

public void open(PlayerInteractEvent e) {
Block bl = e.getClickedBlock() ; //я получил блок, но как мне получить CHEST для работы с инвентарем

}
 
Как получить экземпляр Chest имея экземпляр Block, если я знаю, что этот Block в мире есть CHEST

public void open(PlayerInteractEvent e) {
Block bl = e.getClickedBlock() ; //я получил блок, но как мне получить CHEST для работы с инвентарем

}
Ты щас серьезно?
 
Код:
    public void sendBlockAction(Location loc, Player player, int i) {
        WrapperPlayServerBlockAction packet = new WrapperPlayServerBlockAction();
        packet.setBlockType(Material.CHEST);
        packet.setByte1(1);
        packet.setByte2(i);
        packet.setLocation(new BlockPosition(loc.toVector()));
        packet.sendPacket(player);
        if(i==1) {
            player.playSound(loc, Sound.BLOCK_CHEST_OPEN, 1, i);
        }
        if(i==0) {
            player.playSound(loc, Sound.BLOCK_CHEST_CLOSE, 1, i);
        }
    }
  
    @EventHandler
    public void on(PlayerInteractEvent e) {
        Block block = e.getClickedBlock();
        Player player = e.getPlayer();
        if (block.getType() == Material.CHEST) {
            sendBlockAction(block.getLocation(), player, 1);
            e.setCancelled(true);
        }
    }
 
Код:
    public void sendBlockAction(Location loc, Player player, int i) {
        WrapperPlayServerBlockAction packet = new WrapperPlayServerBlockAction();
        packet.setBlockType(Material.CHEST);
        packet.setByte1(1);
        packet.setByte2(i);
        packet.setLocation(new BlockPosition(loc.toVector()));
        packet.sendPacket(player);
        if(i==1) {
            player.playSound(loc, Sound.BLOCK_CHEST_OPEN, 1, i);
        }
        if(i==0) {
            player.playSound(loc, Sound.BLOCK_CHEST_CLOSE, 1, i);
        }
    }
 
    @EventHandler
    public void on(PlayerInteractEvent e) {
        Block block = e.getClickedBlock();
        Player player = e.getPlayer();
        if (block.getType() == Material.CHEST) {
            sendBlockAction(block.getLocation(), player, 1);
            e.setCancelled(true);
        }
    }
Это вообще к чему? Просто так? Какой пример использования в быту?
 
Я совсем новичок и если можешь объясни чем полезен протоколлиб и пакетварпер?
Если есть уроки по этой теме, то скинь пожалуйста.
Вот к примеру отправкой пакета открыть закрыть сундук. И не нужно заботится о версиях сервера, все за тебя сделаено.
 
А можно изменить title инвентаря этого сундука?
Конечно же.

Код:
package Example;

import java.util.List;
import org.bukkit.Bukkit;
import org.*********ventory.Inventory;
import org.*********ventory.InventoryHolder;
import org.*********ventory.ItemStack;

public class Menu implements InventoryHolder {

    private Inventory inventory;

    public Menu(List<ItemStack> stack, String title) {
        this.inventory = Bukkit.createInventory(this, 9 * (int) Math.ceil((double) stack.size() / 9), title);
        for (int i = 0; i < stack.size(); i++) {
            inventory.setItem(i, stack.get(i));
        }
    }

    @Override
    public Inventory getInventory() {
        return this.inventory;
    }
}
 
Конечно же.

Код:
package Example;

import java.util.List;
import org.bukkit.Bukkit;
import org.*********ventory.Inventory;
import org.*********ventory.InventoryHolder;
import org.*********ventory.ItemStack;

public class Menu implements InventoryHolder {

    private Inventory inventory;

    public Menu(List<ItemStack> stack, String title) {
        this.inventory = Bukkit.createInventory(this, 9 * (int) Math.ceil((double) stack.size() / 9), title);
        for (int i = 0; i < stack.size(); i++) {
            inventory.setItem(i, stack.get(i));
        }
    }

    @Override
    public Inventory getInventory() {
        return this.inventory;
    }
}
Как сделать чтобы сундук был этим InventoryHolder?

может так? (Menu menu = new Menu(a,b);
Chest ch=(Chest) menu; )
 
От ты даун!)
e.getPlayer().openInventory(menu.getInventory());
Скорее ты, он же тебе выше сказал, что дуб дубом в этом, а ты ему код кидаешь👍
Или ты хочешь каждый раз за него писать код?
Автор: Иди поучи базу Java для старта, а потом уже переходи к Javadoc по Bukkit Api и можешь еще почитать темы на рб для новичков с полезным кодом и гайдами
 
Скорее ты, он же тебе выше сказал, что дуб дубом в этом, а ты ему код кидаешь👍
Или ты хочешь каждый раз за него писать код?
Автор: Иди поучи базу Java для старта, а потом уже переходи к Javadoc по Bukkit Api и можешь еще почитать темы на рб для новичков с полезным кодом и гайдами
Да пофигу. Все написано и давно, для нубасов. https://github.com/alexandrage/Example
Из пустого в порожни же гоняют, одно и тоже.
 
Конечно же.

Код:
package Example;

import java.util.List;
import org.bukkit.Bukkit;
import org.*********ventory.Inventory;
import org.*********ventory.InventoryHolder;
import org.*********ventory.ItemStack;

public class Menu implements InventoryHolder {

    private Inventory inventory;

    public Menu(List<ItemStack> stack, String title) {
        this.inventory = Bukkit.createInventory(this, 9 * (int) Math.ceil((double) stack.size() / 9), title);
        for (int i = 0; i < stack.size(); i++) {
            inventory.setItem(i, stack.get(i));
        }
    }

    @Override
    public Inventory getInventory() {
        return this.inventory;
    }
}
Не используйте, устаревший метод. Вот актуальный:
Java:
chest.setCustomName("Новый тайтл");
chest.update();
 
Назад
Верх