Рандомное выпадение одного предмета из списка

Версия Minecraft
1.7.10
16
0
Пишу мод но не знаю как сделать так что бы при ломании блока выпадала рандомная вещь из списка.
(Выпадал один предмет из списка,с указанным количеством моего предмета) 
Как это реализовать?
 
16
0
GreenBudgie написал(а):
Создаешь массив ItemStack или Item и записываешь туда все твои предметы, потом выбираешь предмет рандомом типа этого (int) (Math.random() * items.length)
Можешь код написать? (Не пойму как это сделать)
 

timaxa007

Модератор
5,831
409
672
Код:
static ItemStack[] drops = new ItemStack[] {
	new ItemStack(Items.wheat_seeds),
	new ItemStack(Items.melon_seeds),
	new ItemStack(Items.pumpkin_seeds)
};

@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(drops[world.rand.nextInt(drops.length - 1)]);
	return ret;
}
 
16
0
timaxa007 написал(а):
Код:
static ItemStack[] drops = new ItemStack[] {
 new ItemStack(Items.wheat_seeds),
 new ItemStack(Items.melon_seeds),
 new ItemStack(Items.pumpkin_seeds)
};

@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(drops[world.rand.nextInt(drops.length - 1)]);
 return ret;
}

Спасибо но можно иначе?


Как сделать что бы?
[font=Monaco, Consolas, Courier, monospace]Items.melon_seeds выпадает 10 а [size=small][font=Monaco, Consolas, Courier, monospace]Items[/font][font=Monaco, Consolas, Courier, monospace].[size=small][font=Monaco, Consolas, Courier, monospace]wheat[/font]_seeds выпадает 4[/font][/size][/font][/size]

[font=Monaco, Consolas, Courier, monospace][size=small][font=Monaco, Consolas, Courier, monospace]у всех предметов из списка шанс 100% но падает одна вещь из данного списка[/font][/font][/size]
 
16
0
timaxa007 написал(а):
Да, прикрутить им количество.
Код:
static ItemStack[] drops = new ItemStack[] {
new ItemStack(Items.wheat_seeds, 4),
new ItemStack(Items.melon_seeds, 10),
new ItemStack(Items.pumpkin_seeds)
};

а шанс 100%?


Почему то у меня не выпадают вещи из моего мода...


Пишу

new ItemStack(Mech.Gears,1),
new ItemStack(Mech.Spring,1),
new ItemStack(Mech.Rope,1)

Не выпадает (


[FML]: Attempted to add a EntityItem to the world with a invalid item at (-226,21, 68,19, 120,72), this is most likely a config issue between you and the server. Please double check your configs
 

timaxa007

Модератор
5,831
409
672
Код:
@Override
public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) {

ItemStack[] drops = new ItemStack[] {
new ItemStack(Mech.Gears,1),
new ItemStack(Mech.Spring,1),
new ItemStack(Mech.Rope,1)
};

ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
ret.add(drops[world.rand.nextInt(drops.length - 1)]);
return ret;
}
 
16
0
timaxa007 написал(а):
Код:
@Override
public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) {

ItemStack[] drops = new ItemStack[] {
new ItemStack(Mech.Gears,1),
new ItemStack(Mech.Spring,1),
new ItemStack(Mech.Rope,1)
};

ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
ret.add(drops[world.rand.nextInt(drops.length - 1)]);
return ret;
}

Спасибо

Но как ещё сделать допустим предмет всегда выпадает,но его шанс дропа 
[font=Monaco, Consolas, Courier, monospace]Mech.[/font][font=Monaco, Consolas, Courier, monospace]Gears = 30%  [/font]
[font=Monaco, Consolas, Courier, monospace][size=small][font=Monaco, Consolas, Courier, monospace]Mech.Rope[/font][font=Monaco, Consolas, Courier, monospace] = 60%[/font][/font][/size]
[font=Monaco, Consolas, Courier, monospace][size=small][font=Monaco, Consolas, Courier, monospace][size=small][font=Monaco, Consolas, Courier, monospace]Mech.Spring[/font][font=Monaco, Consolas, Courier, monospace] = 10%[/font][/font][/size][/font][/size]
[font=Monaco, Consolas, Courier, monospace][size=small][font=Monaco, Consolas, Courier, monospace][size=small][font=Monaco, Consolas, Courier, monospace]так что бы он предмет давал но с шансом [/font][/font][/size][/font][/size]
 

timaxa007

Модератор
5,831
409
672
А вроде нужно, на сколько я знаю. length от 1 до 3, если дать значение length в nextInt(int), то он будет выдавать значение от 0 до 3, а из массива брать от 0 до 2 значение, на третье значение будет выдавать краш о том что нету такого объект по этому номеру.


Failon, уже была тема с шансами.
 

timaxa007

Модератор
5,831
409
672
Ну тогда, значит я ошибся, тогда не
ret.add(drops[world.rand.nextInt(drops.length - 1)]);
а
ret.add(drops[world.rand.nextInt(drops.length)]);


http://forum.mcmodding.ru/%D0%A2%D0%B5%D0%BC%D0%B0-%D0%9A%D0%BE%D1%80%D0%BE%D0%B1%D0%BA%D0%B0-%D1%81-%D1%81%D1%8E%D1%80%D0%BF%D1%80%D0%B8%D0%B7%D0%BE%D0%BC-%D0%B8%D0%BB%D0%B8-%D1%81%D0%BB%D1%83%D1%87%D0%B0%D0%B9%D0%BD%D1%8B%D0%B9-%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82-%D0%B8%D0%B7-%D1%81%D0%BF%D0%B8%D1%81%D0%BA%D0%B0?pid=91373#pid91373
 

timaxa007

Модератор
5,831
409
672
http://forum.mcmodding.ru/%D0%A2%D0%B5%D0%BC%D0%B0-%D0%9A%D0%BE%D1%80%D0%BE%D0%B1%D0%BA%D0%B0-%D1%81-%D1%81%D1%8E%D1%80%D0%BF%D1%80%D0%B8%D0%B7%D0%BE%D0%BC-%D0%B8%D0%BB%D0%B8-%D1%81%D0%BB%D1%83%D1%87%D0%B0%D0%B9%D0%BD%D1%8B%D0%B9-%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82-%D0%B8%D0%B7-%D1%81%D0%BF%D0%B8%D1%81%D0%BA%D0%B0?pid=91336#pid91336
---
http://forum.mcmodding.ru/%D0%A2%D0%B5%D0%BC%D0%B0-%D0%A0%D0%B0%D0%BD%D0%B4%D0%BE%D0%BC%D0%BD%D1%8B%D0%B9-%D0%B4%D1%80%D0%BE%D0%BF-%D0%B2%D0%B5%D1%89%D0%B5%D0%B9-%D0%B8%D0%B7-%D0%BF%D1%80%D0%B5%D0%B4%D0%BC%D0%B5%D1%82%D0%B0?pid=77760#pid77760
 

timaxa007

Модератор
5,831
409
672
Пожалуйста. На счёт второй темы, у тебя вряд-ли получиться правельно использовать код (и скорее всего будет уже другой код кидать [который уже не маленький]).
 
Сверху