Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
if (bl.getType() == Material.CHEST) {
Chest chest = (Chest) bl.getState();
//todo
}
Ты щас серьезно?Как получить экземпляр Chest имея экземпляр Block, если я знаю, что этот Block в мире есть CHEST
public void open(PlayerInteractEvent e) {
Block bl = e.getClickedBlock() ; //я получил блок, но как мне получить CHEST для работы с инвентарем
}
Все работает. Спасибо.PHP:if (bl.getType() == Material.CHEST) { Chest chest = (Chest) bl.getState(); //todo }
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); } }
К тому, что чел наплодил 2 темы.Это вообще к чему? Просто так? Какой пример использования в быту?
Я совсем новичок и если можешь объясни чем полезен протоколлиб и пакетварпер?Собстно сам протоколлиб тут https://www.spigotmc.org/resources/protocollib.1997/
Пакетврапер тут http://ci.shadowvolt.com/job/PacketWrapper/
Вот к примеру отправкой пакета открыть закрыть сундук. И не нужно заботится о версиях сервера, все за тебя сделаено.Я совсем новичок и если можешь объясни чем полезен протоколлиб и пакетварпер?
Если есть уроки по этой теме, то скинь пожалуйста.
А можно изменить title инвентаря этого сундука?Вот к примеру отправкой пакета открыть закрыть сундук. И не нужно заботится о версиях сервера, все за тебя сделаено.
Конечно же.А можно изменить 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;
}
}
Как сделать чтобы сундук был этим InventoryHolder?Конечно же.
Код: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());
Да пофигу. Все написано и давно, для нубасов. https://github.com/alexandrage/ExampleСкорее ты, он же тебе выше сказал, что дуб дубом в этом, а ты ему код кидаешь👍
Или ты хочешь каждый раз за него писать код?
Автор: Иди поучи базу 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; } }
chest.setCustomName("Новый тайтл");
chest.update();
Ты вообще о чем? В моем коде фейк сундук, алё. И он ни разу не устаревший.Не используйте, устаревший метод. Вот актуальный:
Java:chest.setCustomName("Новый тайтл"); chest.update();