Помогите Как установить MaterialData

  • Автор темы Автор темы Quaiby
  • Дата начала Дата начала

Quaiby

Новичок
Баллы
16
Имя в Minecraft
iQuaiby
Я пишу один плюгин, а именно что бы когда игрок ломает блок он сразу был в инвентаре (ну типо что бы не поднял кто-нибудь ещё).
Наткнулся на проблему:
public void onPlayerBreakBlock(BlockBreakEvent event) {
event.getPlayer().getInventory().addItem(
new ItemStack(event.getBlock().getType(), 1).setData(event.getBlock().getData()));
}
​
На сие творение ругается IDEA (выделенное), пишу на spigot 1.10, с JavaDoc'ом все значения совпадают, но чую я что JavaDoc забыли обновить (JD)

​
 
Так нормально создай переменную.
Код:
public void onPlayerBreakBlock(BlockBreakEvent event) {
ItemStack predmet = new ItemStack(event.getBlock().getType(), 1);
predmet.setData(event.getBlock().getData());
event.getPlayer().getInventory().addItem(predmet);
}

И у тебя плагин будет работать не как ты ожидал.К примеру при ломании руды редстоуна игроком ему выдастся не пыль ,а сама руда.
 
Так нормально создай переменную.
Код:
public void onPlayerBreakBlock(BlockBreakEvent event) {
ItemStack predmet = new ItemStack(event.getBlock().getType(), 1);
predmet.setData(event.getBlock().getData());
event.getPlayer().getInventory().addItem(predmet);
}
Ругается именно на getData(), мол setData() берёт byte, а getData() даёт MaterialData, но я попробую
И у тебя плагин будет работать не как ты ожидал.К примеру при ломании руды редстоуна игроком ему выдастся не пыль ,а сама руда.
Это я уже исправил, просто сам код не скинул. Не работает именно это
Через переменную тоже
 
Ругается именно на getData(), мол setData() берёт byte, а getData() даёт MaterialData, но я попробую

Это я уже исправил, просто сам код не скинул. Не работает именно это
Через переменную тоже
Так попробуй (byte) getData()
P.S с материалдатой не работал.
 
new ItemStack(event.getBlock().getType(), 1).setData(new MaterialData(event.getBlock().getData())));
Так что ли тоже не работает?
 
Пиз*ц вы костыльщики...

Код:
    @EventHandler
    public void onPlayerBreakBlock(BlockBreakEvent e) {
        Player p = e.getPlayer();
        Collection<ItemStack> itemstacks =  e.getBlock().getDrops();
        for (ItemStack itemstack : itemstacks) {
            setitem(p,itemstack);
       }
        e.getBlock().getWorld().getBlockAt(e.getBlock().getLocation()).setType(Material.AIR);
    }
  
    public void setitem(Player p, ItemStack i) {
        HashMap<Integer, ItemStack> over = p.getInventory().addItem(i);
        for(Entry<Integer, ItemStack> entry : over.entrySet()) { 
           p.getWorld().dropItemNaturally(p.getLocation(), entry.getValue());
        }
    }
 
Последнее редактирование:
Назад
Верх