- Баллы
- 63
Допустим у меня есть значение стринг, с форматом itemstack[], но как его преобразовать что бы "запихнуть" в GUI инвентаря?
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Ну мне если бы мне это нужно было бы сделать один раз, или были одинаковые итемы, это одно, а у меня всегда разные значения и количество предметовПарсить в ручную.
кода нет(т.к я не сейчас не дома), но я получаю список предметов в виде id-count:id-count, потом начинаю парсить его 2 раза, сначала что бы получить 1 предмет, а потом его ид и количество, и с этими данными могу делать что угодно, можно выдать их через цикл, но мне нужно именно все "загнать" в один ItemStack[].Тогда мне нужен пример строки из нескольких объектов ItemStack и я напишу пример класса-парсера.
public ItemStack[] getFromString(String s)
{
String[] dataArray = s.split(":");
List<ItemStack> items = new ArrayList<ItemStack>();
for(String i : dataArray)
{
String[] data = i.split("-");
int id = Integer.parseInt(data[0]);
int count = Integer.parseInt(data[1]);
ItemStack item = new ItemStack(id);
item.setAmount(count);
items.add(item);
}
ItemStack[] array = new ItemStack[dataArray.length];
items.toArray(array);
return array;
}
for(ItemStack item : array)//ItemStack[] array = getFromString("1-64:2-64:4-32")
{
getLogger().info(item.toString());
}
Спасибо огромное, именно то что нужно, я хотел сделать примерно так же. Но не получалось сделать так, что бы все правильно работало, завтра попробую и отпишусь. Еще раз спасибо!Так в чем проблема?
Считывайте строку, получаете количество получившихся объектов или разбивайте на подстроки items.split(":") и берите оттуда length.
Создаете массив ItemStack[] items = new ItemStack[count];.
Далее берите то, что разбивали(массив) и в цикле заполняйте массив items.
Пример(я использовал List):
Java:public ItemStack[] getFromString(String s) { String[] dataArray = s.split(":"); List<ItemStack> items = new ArrayList<ItemStack>(); for(String i : dataArray) { String[] data = i.split("-"); int id = Integer.parseInt(data[0]); int count = Integer.parseInt(data[1]); ItemStack item = new ItemStack(id); item.setAmount(count); items.add(item); } ItemStack[] array = new ItemStack[dataArray.length]; items.toArray(array); return array; }

еще вопрос, если у меня на входе больше стака итемов, я их делил, можно ли как то аккуратно сюда добавить такую возможность что бы не велосипедить?Пожалуйста.![]()
for(String i : arrayData)
{
String[] data = i.split("-");
int id = Integer.parseInt(data[0]);
int count = Integer.parseInt(data[1]);
while(count > 64)
{
count -= 64;
ItemStack item = new ItemStack(id);
item.setAmount(64);
items.add(item);
}
ItemStack item = new ItemStack(id);
item.setAmount(count);
items.add(item);
}
Вот только ItemStack в String. Не по теме.Если ItemStack в yaml, то проще юзать config.getItemStack("item.awesomeStick") .
Пример его String'a то где?Вот только ItemStack в String. Не по теме.
Вот с этого чот всполыхнуло.Не по теме.