Помогите Как правильно записывать Material в конфиг?

Bezobrazie

Активный участник
Пользователь
Баллы
46
Имя в Minecraft
MySoulIsCry
Написал код который по команде смотрит на вещь в руке и записывает это в КФГ
Запись в КФГ:
Код:
Item1:
  Material: !!org.bukkit.Material 'DIAMOND_SWORD'
  name: asaaaaaa
  lore:
  - asssssssssssf
  - asssssssssf
  amount: 1
  prise: 1
  data: 0
  flag: !!set {}
  enable: true
Как пофиксить !!org.bukkit.Material 'DIAMOND_SWORD' чтобы просто записывало DIAMOND_SWORD
просто потом сам же этот код считать эту фигню не может
делал
Код:
.replace("!!","").replace("'","").replace("org.bukkit.Material '","")
не помогает.
также не могу получить NBT предмета и записать это в КФГ записывает просто вот это flag: !!set {}
 
В смысле не может? Material material = (Material) this.getConfig().get("Material");
А вот если сотрешь !!org.bukkit.Material, то уже ошибку выдаст.
Но лучше сразу вот так.
this.getConfig().set("item", stack);
ItemStack stack = (ItemStack) this.getConfig().get("item", stack);
 
Последнее редактирование:
В смысле не может? Material material = (Material) this.getConfig().get("Material");
А вот если сотрешь !!org.bukkit.Material, то уже ошибку выдаст.
Но лучше сразу вот так.
this.getConfig().set("item", stack);
ItemStack stack = (ItemStack) this.getConfig().get("item", stack);
Оно какбы работает на половину когда я только добавляю предмет через команду он читается с КФГ и появляется в GUI но после перезагрузки сервера или даже конфига плагина он пропадает и в консоли ошибка
Код:
Caused by: org.yaml.snakeyaml.constructor.ConstructorException: could not determine a constructor for the tag tag:yaml.org,2002:org.bukkit.Material
 in 'string', line 3, column 13:
      Material: !!org.bukkit.Material 'LEAVES'
 
Оно какбы работает на половину когда я только добавляю предмет через команду он читается с КФГ и появляется в GUI но после перезагрузки сервера или даже конфига плагина он пропадает и в консоли ошибка
Код:
Caused by: org.yaml.snakeyaml.constructor.ConstructorException: could not determine a constructor for the tag tag:yaml.org,2002:org.bukkit.Material
 in 'string', line 3, column 13:
      Material: !!org.bukkit.Material 'LEAVES'
Ну хз, записывай целиком айтемстак, всегда работало у меня.
 
Ну хз, записывай целиком айтемстак, всегда работало у меня.
Что значит записывать айтемстак?
щас у меня все выглядит так
Код:
Material material = (Material) main.getConfig().get("Item" + r + ".Material");
          
            ItemStack item1 = new ItemStack(material, i1amount , (short)data);
также я понял что ошибка в гораздо большем формате т.к. если я убираю все лишнее из конфига и оставляю только название предмета то после перезагрузки кфг оно вообше все стирает и приводит к такому виду
Код:
Item0: {}
Item1: {}
Item2: {}
Item3: {}
Item4: {}
Item5: {}
Item6: {}
Item7: {}
Item8: {}
Item9: {}
хотя в главном конфиге который лежит в jar прописано так
Код:
Item0:
  Material:
  name:
  lore:
  amount:
  prise:
  data:
  enable: false
Item1:
  Material:
  name:
  lore:
  amount:
  prise:
  data:
  enable: false
Item2:
  Material:
  name:
  lore:
  amount:
  prise:
  data:
  enable: false
 
this.getConfig().set("item", stack); запись.
ItemStack stack = (ItemStack) this.getConfig().get("item", stack); чтение.
у меня все также только записано по другому
plugin.getConfig().set("Item" + g + ".Material", item0.getType()); //запись в кфг


Material material = (Material) main.getConfig().get("Item" + r + ".Material"); // чтение

ItemStack item1 = new ItemStack(material, i1amount , (short)data);

(переменные g, r это номер айтема в кфг)
 
у меня все также только записано по другому
plugin.getConfig().set("Item" + g + ".Material", item0.getType()); //запись в кфг


Material material = (Material) main.getConfig().get("Item" + r + ".Material"); // чтение

ItemStack item1 = new ItemStack(material, i1amount , (short)data);

(переменные g, r это номер айтема в кфг)
Ну значит ведро не может отдельно материал читать, делай как я сказал, пиши стак целиком в конфиг.
 
Ну или пиши материал как строку, тоже вариант.
 
Ну значит ведро не может отдельно материал читать, делай как я сказал, пиши стак целиком в конфиг.
я не понимаю как ты хочешь чтобы я сделал я пытался сделать как у тебя, поправил все аод свой код но все равно ошибка в IDE
 
я не понимаю как ты хочешь чтобы я сделал я пытался сделать как у тебя, поправил все аод свой код но все равно ошибка в IDE
plugin.getConfig().set("Item" + g + ".stack", item0); //запись в кфг
ItemStack stack= (ItemStack) main.getConfig().get("Item" + r + ".stack"); // чтение
 
plugin.getConfig().set("Item" + g + ".stack", item0); //запись в кфг
ItemStack stack= (ItemStack) main.getConfig().get("Item" + r + ".stack"); // чтение
как мне туда добавить дату предмета и количество?
понятно что вот так это работать не будет
ItemStack item1 = (ItemStack) main.getConfig().get("Item" + r + ".stack"), i1amount, (short)data
 
Зачем? Предмет целиком пишется... Количество, имя, лоре, чарка, прочая мета.
спасибо ты очень помог код уменьшится в пол раза ибо я для каждой меты создавал отдельное поле в кфг
 
Назад
Верх