Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем Quaiby, 26 июн 2016.

  1. Автор темы
    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)


     
  2. Хостинг MineCraft
    <
  3. Novichock

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

    Баллы:
    76
    Skype:
    pavel.batalov1
    Так нормально создай переменную.
    Код:
    public void onPlayerBreakBlock(BlockBreakEvent event) {
    ItemStack predmet = new ItemStack(event.getBlock().getType(), 1);
    predmet.setData(event.getBlock().getData());
    event.getPlayer().getInventory().addItem(predmet);
    }
    [DOUBLEPOST=1466940528,1466940428][/DOUBLEPOST]И у тебя плагин будет работать не как ты ожидал.К примеру при ломании руды редстоуна игроком ему выдастся не пыль ,а сама руда.
     
  4. Автор темы
    Quaiby

    Quaiby Новичок

    Баллы:
    16
    Имя в Minecraft:
    iQuaiby
    Ругается именно на getData(), мол setData() берёт byte, а getData() даёт MaterialData, но я попробую[DOUBLEPOST=1466940720,1466940650][/DOUBLEPOST]
    Это я уже исправил, просто сам код не скинул. Не работает именно это
    Через переменную тоже
     
  5. CoolBoy

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

    Баллы:
    96
    Skype:
    thecoolboy2070
    Имя в Minecraft:
    CoolBoy
    Так попробуй (byte) getData()
    P.S с материалдатой не работал.
     
  6. Автор темы
    Quaiby

    Quaiby Новичок

    Баллы:
    16
    Имя в Minecraft:
    iQuaiby
    Не работает даже с приведением типов, попробую материалдату
     
  7. fall.us

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

    Баллы:
    76
    Имя в Minecraft:
    fallus
    new ItemStack(event.getBlock().getType(), 1).setData(new MaterialData(event.getBlock().getData())));
    Так что ли тоже не работает?
     
  8. alexandrage

    alexandrage Администратор

    Баллы:
    173
    Skype:
    alexandr0116
    Пиз*ц вы костыльщики...

    Код:
        @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());
            }
        }
     
    Последнее редактирование: 27 июн 2016

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