Ir para conteúdo
  • 0

[Resolvido] Poderia adicionar encantamentos ?


Frogguer

Pergunta

Olá queria poder adicionar encantamentos no itens da config


 


esta assim o cod 



public ArrayList<ItemStack> GetDroppedItems() {
ArrayList<ItemStack> toreturn = new ArrayList<ItemStack>();
Set<String> droppeditems = configGetter.getConfig().getConfigurationSection("DroppedItems.").getKeys(false);
for (String item : droppeditems) {
String material = configGetter.getConfig().getString("DroppedItems." + item + ".MATERIAL");
for (int amount = configGetter.getConfig().getInt("DroppedItems." + item + ".AMOUNT"), i = 0; i <= amount; ++i) {
toreturn.add(new ItemStack(Material.valueOf(material), 1));
}
}
return toreturn;
}



quero deixar desse jeito a config


 


DroppedItems:

  Item1:

    MATERIAL: IRON_PICKAXE

    AMOUNT: 1

ENCANTAMENTO:

FORTUNE

UNBREAKING

  Item2:

    MATERIAL: GOLD_INGOT

    AMOUNT: 7

  Item3:

    MATERIAL: IRON_INGOT

    AMOUNT: 5

  Item4:

    MATERIAL: LOG

    AMOUNT: 3

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

Guest VitorEmanoel

Tenta isso, fiz rapidin aqui, não sei se combina com seu código, mas tenta usar a mesma logica.

String[] guide = main.getConfig().getString("DroppedItems." + item + ".ENCHANT").split("-");
item.addEnchantment(Enchantment.getByName(guide[0].toUpperCase()), Integer.parseInt(guide[1]));

Config:

  Item4:
    MATERIAL: LOG
    AMOUNT: 3
    ENCHANT: EFICIENCIA-1 -> Level do enchant
              |>Enchant

E claro que você tem que usar o mesmo nome que está nos enum da classe Enchantment. 

Link para o comentário
Compartilhar em outros sites

Tenta isso, fiz rapidin aqui, não sei se combina com seu código, mas tenta usar a mesma logica.

String[] guide = main.getConfig().getString("DroppedItems." + item + ".ENCHANT").split("-");
item.addEnchantment(Enchantment.getByName(guide[0].toUpperCase()), Integer.parseInt(guide[1]));

Config:

  Item4:
    MATERIAL: LOG
    AMOUNT: 3
    ENCHANT: EFICIENCIA-1 -> Level do enchant
              |>Enchant

E claro que você tem que usar o mesmo nome que está nos enum da classe Enchantment. 

deu erro '- quando importa 

item.addEnchantment(Enchantment.getByName

Link para o comentário
Compartilhar em outros sites

deu erro '- quando importa

item.addEnchantment(Enchantment.getByName

Antes do código do Vítor, ItemStack item = new ItemStack(Material.valueOf(material), 1);

Deve dar erro por causa disso,se não for.. não era suposto dar erro

Depois disso é do código do Vítor, toreturn.add(item)

Editado por zAth
Link para o comentário
Compartilhar em outros sites

Antes do código do Vítor, ItemStack item = new ItemStack(Material.valueOf(material), 1);

Deve dar erro por causa disso,se não for.. não era suposto dar erro

Depois disso é do código do Vítor, toreturn.add(item)

deu certo mais da erro na config 

  Item4:
    MATERIAL: LOG
    AMOUNT: 3
    ENCHANT: EFICIENCIA-1

e como posso por mais de um encantamentos em um item ?

Link para o comentário
Compartilhar em outros sites

deu certo mais da erro na config 

  Item4:
    MATERIAL: LOG
    AMOUNT: 3
    ENCHANT: EFICIENCIA-1

e como posso por mais de um encantamentos em um item ?

ItemStack itemstack = new ItemStack(Material.valueOf(material), 1);
for(String s : main.getConfig().getStringList("DroppedItems." + item + ".ENCHANT")){
    String enchant = s.split("-")[0];
    String level= s.split("-")[1];
    if(Enchantment.getByName(enchant) != null) {
         if (Enchantment.getByName(enchant).canEnchantItem(itemstack)) {
               itemstack.addUnsafeEnchantment(Enchantment.getByName(enchant), Integer.parseInt(level));
         }
    }
}
toreturn.add(itemstack); 

config

Item4:
  MATERIAL: LOG
  AMOUNT: 3
  ENCHANT: 
   - 'EFICIENCIA-1'
   - 'DURABILITY-1'
Editado por zAth
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...