Дроп предмета из блока

Версия Minecraft
1.7.10
23
0
Глупый вопрос, но всё же потратил на него около часа.
Нужно, чтобы из блока выпадал предмет, как например алмазы.

С ванильными предметами работает

Код:
@Override
    public Item getItemDropped(int par1, Random par2Random, int par3)
    {
        return Items.diamond;
    }
А вот со своими нет

Код:
@Override
    public Item getItemDropped(int par1, Random par2Random, int par3)
    {
        return NightmareWoodsMod.chippedruby;
    }


Глупо, но всё же я туплю. Буду благодарен за разъяснения
 
691
1
5
Meferis написал(а):
Глупый вопрос, но всё же потратил на него около часа.
Нужно, чтобы из блока выпадал предмет, как например алмазы.

С ванильными предметами работает

Код:
@Override
    public Item getItemDropped(int par1, Random par2Random, int par3)
    {
        return Items.diamond;
    }
А вот со своими нет

Код:
@Override
    public Item getItemDropped(int par1, Random par2Random, int par3)
    {
        return NightmareWoodsMod.chippedruby;
    }


Глупо, но всё же я туплю. Буду благодарен за разъяснения

Дроп определенного предмета при разрушении блока
Всё очень просто. В конец класса созданного вами блока (перед последней фигурной скобкой) вставьте это:
[font=monospace, Courier]   @Override
   public Item getItemDropped(int par1, Random par2Random, int par3)
   {
       return Items.diamond;
   }
[/font]

То есть теперь при разрушении вашего блока из него выпадет алмаз. Вы можете написать, чтоб выпадало что угодно. Просто вместо 
Код:
return Items.diamond;

 напишите «

Код:
return Items.getItemFromBlock(Blocks.);

» (для блоков) или «

Код:
return Items.;

» (для предметов), а после ввода вами точки выпадет список возможных предметов или блоков.

Если хотите, чтоб выпадал не один предмет, а несколько, просто вставьте сразу после предыдущих строк
[font=monospace, Courier] 
   @Override
   public int quantityDropped(Random par1Random)
   {
       return 20;
   }
[/font]

Тогда при разрушении выпадет 20 выбранных вами предметов или блоков.


Garik1303 написал(а):
Meferis написал(а):
Глупый вопрос, но всё же потратил на него около часа.
Нужно, чтобы из блока выпадал предмет, как например алмазы.

С ванильными предметами работает

Код:
@Override
    public Item getItemDropped(int par1, Random par2Random, int par3)
    {
        return Items.diamond;
    }
А вот со своими нет

Код:
@Override
    public Item getItemDropped(int par1, Random par2Random, int par3)
    {
        return NightmareWoodsMod.chippedruby;
    }


Глупо, но всё же я туплю. Буду благодарен за разъяснения

Дроп определенного предмета при разрушении блока
Всё очень просто. В конец класса созданного вами блока (перед последней фигурной скобкой) вставьте это:
[font=monospace, Courier]   @Override
   public Item getItemDropped(int par1, Random par2Random, int par3)
   {
       return Items.diamond;
   }
[/font]

То есть теперь при разрушении вашего блока из него выпадет алмаз. Вы можете написать, чтоб выпадало что угодно. Просто вместо 
Код:
return Items.diamond;

 напишите «

Код:
return Items.getItemFromBlock(Blocks.);

» (для блоков) или «

Код:
return Items.;

» (для предметов), а после ввода вами точки выпадет список возможных предметов или блоков.

Если хотите, чтоб выпадал не один предмет, а несколько, просто вставьте сразу после предыдущих строк
[font=monospace, Courier] 
   @Override
   public int quantityDropped(Random par1Random)
   {
       return 20;
   }
[/font]

Тогда при разрушении выпадет 20 выбранных вами предметов или блоков.

Ой... я глупец не заметил что у вас ошибка со своим предметом!
 
23
0
Garik1303 написал(а):
Meferis написал(а):
Глупый вопрос, но всё же потратил на него около часа.
Нужно, чтобы из блока выпадал предмет, как например алмазы.

С ванильными предметами работает

Код:
@Override
    public Item getItemDropped(int par1, Random par2Random, int par3)
    {
        return Items.diamond;
    }
А вот со своими нет

Код:
@Override
    public Item getItemDropped(int par1, Random par2Random, int par3)
    {
        return NightmareWoodsMod.chippedruby;
    }


Глупо, но всё же я туплю. Буду благодарен за разъяснения

Дроп определенного предмета при разрушении блока
Всё очень просто. В конец класса созданного вами блока (перед последней фигурной скобкой) вставьте это:
[font=monospace, Courier]   @Override
   public Item getItemDropped(int par1, Random par2Random, int par3)
   {
       return Items.diamond;
   }
[/font]

То есть теперь при разрушении вашего блока из него выпадет алмаз. Вы можете написать, чтоб выпадало что угодно. Просто вместо 
Код:
return Items.diamond;

 напишите «

Код:
return Items.getItemFromBlock(Blocks.);

» (для блоков) или «

Код:
return Items.;

» (для предметов), а после ввода вами точки выпадет список возможных предметов или блоков.

Если хотите, чтоб выпадал не один предмет, а несколько, просто вставьте сразу после предыдущих строк
[font=monospace, Courier] 
   @Override
   public int quantityDropped(Random par1Random)
   {
       return 20;
   }
[/font]

Тогда при разрушении выпадет 20 выбранных вами предметов или блоков.


Garik1303 написал(а):
Meferis написал(а):
Глупый вопрос, но всё же потратил на него около часа.
Нужно, чтобы из блока выпадал предмет, как например алмазы.

С ванильными предметами работает

Код:
@Override
    public Item getItemDropped(int par1, Random par2Random, int par3)
    {
        return Items.diamond;
    }
А вот со своими нет

Код:
@Override
    public Item getItemDropped(int par1, Random par2Random, int par3)
    {
        return NightmareWoodsMod.chippedruby;
    }


Глупо, но всё же я туплю. Буду благодарен за разъяснения

Дроп определенного предмета при разрушении блока
Всё очень просто. В конец класса созданного вами блока (перед последней фигурной скобкой) вставьте это:
[font=monospace, Courier]   @Override
   public Item getItemDropped(int par1, Random par2Random, int par3)
   {
       return Items.diamond;
   }
[/font]

То есть теперь при разрушении вашего блока из него выпадет алмаз. Вы можете написать, чтоб выпадало что угодно. Просто вместо 
Код:
return Items.diamond;

 напишите «

Код:
return Items.getItemFromBlock(Blocks.);

» (для блоков) или «

Код:
return Items.;

» (для предметов), а после ввода вами точки выпадет список возможных предметов или блоков.

Если хотите, чтоб выпадал не один предмет, а несколько, просто вставьте сразу после предыдущих строк
[font=monospace, Courier] 
   @Override
   public int quantityDropped(Random par1Random)
   {
       return 20;
   }
[/font]

Тогда при разрушении выпадет 20 выбранных вами предметов или блоков.

Ой... я глупец не заметил что у вас ошибка со своим предметом!



Агась... В том и суть)


Garik1303 написал(а):
Meferis написал(а):
Глупый вопрос, но всё же потратил на него около часа.
Нужно, чтобы из блока выпадал предмет, как например алмазы.

С ванильными предметами работает

Код:
@Override
    public Item getItemDropped(int par1, Random par2Random, int par3)
    {
        return Items.diamond;
    }
А вот со своими нет

Код:
@Override
    public Item getItemDropped(int par1, Random par2Random, int par3)
    {
        return NightmareWoodsMod.chippedruby;
    }


Глупо, но всё же я туплю. Буду благодарен за разъяснения

Дроп определенного предмета при разрушении блока
Всё очень просто. В конец класса созданного вами блока (перед последней фигурной скобкой) вставьте это:
[font=monospace, Courier]   @Override
   public Item getItemDropped(int par1, Random par2Random, int par3)
   {
       return Items.diamond;
   }
[/font]

То есть теперь при разрушении вашего блока из него выпадет алмаз. Вы можете написать, чтоб выпадало что угодно. Просто вместо 
Код:
return Items.diamond;

 напишите «

Код:
return Items.getItemFromBlock(Blocks.);

» (для блоков) или «

Код:
return Items.;

» (для предметов), а после ввода вами точки выпадет список возможных предметов или блоков.

Если хотите, чтоб выпадал не один предмет, а несколько, просто вставьте сразу после предыдущих строк
[font=monospace, Courier] 
   @Override
   public int quantityDropped(Random par1Random)
   {
       return 20;
   }
[/font]

Тогда при разрушении выпадет 20 выбранных вами предметов или блоков.


Garik1303 написал(а):
Meferis написал(а):
Глупый вопрос, но всё же потратил на него около часа.
Нужно, чтобы из блока выпадал предмет, как например алмазы.

С ванильными предметами работает

Код:
@Override
    public Item getItemDropped(int par1, Random par2Random, int par3)
    {
        return Items.diamond;
    }
А вот со своими нет

Код:
@Override
    public Item getItemDropped(int par1, Random par2Random, int par3)
    {
        return NightmareWoodsMod.chippedruby;
    }


Глупо, но всё же я туплю. Буду благодарен за разъяснения

Дроп определенного предмета при разрушении блока
Всё очень просто. В конец класса созданного вами блока (перед последней фигурной скобкой) вставьте это:
[font=monospace, Courier]   @Override
   public Item getItemDropped(int par1, Random par2Random, int par3)
   {
       return Items.diamond;
   }
[/font]

То есть теперь при разрушении вашего блока из него выпадет алмаз. Вы можете написать, чтоб выпадало что угодно. Просто вместо 
Код:
return Items.diamond;

 напишите «

Код:
return Items.getItemFromBlock(Blocks.);

» (для блоков) или «

Код:
return Items.;

» (для предметов), а после ввода вами точки выпадет список возможных предметов или блоков.

Если хотите, чтоб выпадал не один предмет, а несколько, просто вставьте сразу после предыдущих строк
[font=monospace, Courier] 
   @Override
   public int quantityDropped(Random par1Random)
   {
       return 20;
   }
[/font]

Тогда при разрушении выпадет 20 выбранных вами предметов или блоков.

Ой... я глупец не заметил что у вас ошибка со своим предметом!



Агась... В том и суть)
 
5,021
47
784
Метод - говно. Юзай такой
Код:
        @Override
	public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) {
		ArrayList<ItemStack> ret = new  ArrayList<ItemStack>();
		ret.add(new ItemStack(drop, 1 + world.rand.nextInt(10), metadata));//какой блок\предмет дропать, количество, ////мета если блок\предмет метой
		return ret;
	}
Плюсы этого
- он один, не надо кучу левых юзать
- сколько угодно чего угодно.
- удобное указание меты
- возможность гибко и через random настроить количество дропа.

Рандом доставай через world.rand
P.S Сорян, но на этом форуме невозможно красиво отформатировать код
Изменил для 1.7.10
 
7,099
324
1,510
Maxik001 написал(а):
Сорян, но на этом форуме невозможно красиво отформатировать код
Вместо табуляции пробелы юзай
 
23
0
BlesseNtumble написал(а):
Код:
   @Override
    public Item getItemDropped(int meta, Random random, int par3)
    {
     return GSItems.GlowstoneDusts;
    }
    
    @Override
    public int damageDropped(int metadata) {
        return 1;
    }
    
    public int quantityDropped(Random random)
    {
        return 2 + random.nextInt(3);
    }

А что есть GSItems? Главный класс мода?
 

timaxa007

Модератор
5,831
409
672
Meferis написал(а):
Глупо, конечно, но что это за класс?
timaxa007 написал(а):
Класс в котором находиться переменные предметов.

Meferis написал(а):
Где идёт регистрация? Или класс самого предмета?
Я точно не знаю я с GC не работал, может в самом классе, а может в главном классе. Нет, не самого предмета, а место где переменные предметов, типа как Items.
 
344
1
47
Meferis написал(а):
Где идёт регистрация? Или класс самого предмета?


По идеи у них идет регистрация в главном классе мода, либо в прокси.
Точно не помню, завтра гляну :)
 
3,005
192
592
Meferis написал(а):
А что есть GSItems? Главный класс мода?

Просто используй то, что тебе надо.
Вроде бы ето: [font=Monaco, Consolas, Courier, monospace]NightmareWoodsMod.chippedruby[/font].
 
23
0
Doc написал(а):
Meferis написал(а):
А что есть GSItems? Главный класс мода?

Просто используй то, что тебе надо.
Вроде бы ето: [font=Monaco, Consolas, Courier, monospace]NightmareWoodsMod.chippedruby[/font].

Чувак. Огромное тебе спасибо C:
 
Сверху