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

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

Discussion in 'Разработка плагинов для новичков' started by Quaiby, Jun 26, 2016.

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

    Quaiby Новичок

    Trophy Points:
    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 Активный участник Пользователь

    Trophy Points:
    76
    Skype:
    pavel.batalov1
    Так нормально создай переменную.
    Code:
    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 Новичок

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

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

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

    Quaiby Новичок

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

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

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

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

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

    Code:
        @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());
            }
        }
     
    Last edited: Jun 27, 2016

Share This Page