Solved Adding Multiple enchantments from config.yml to an ItemStack

Discussion in 'Plugin Development' started by CGA1123, May 24, 2014.

Thread Status:
Not open for further replies.
  1. Offline

    CGA1123

    I'm am trying to add multiple enchantments to an ItemStack, however I can't seem to do it!
    I currently have this code:
    Code:java
    1.  
    2.  
    3. String itemInHandConfig = "items."+(p.getItemInHand().getType().toString());
    4. Enchantment enchant1 = Enchantment.getByName(this.getConfig().getString(itemInHandConfig+"enchantments.first.enchant"));
    5. int value1 = this.getConfig().getInt(itemInHandConfig+"enchantments.first.enchant");
    6.  
    7. Enchantment enchant2 = Enchantment.getByName(this.getConfig().getString(itemInHandConfig+"enchantments.second.enchant"));
    8. int value2 = this.getConfig().getInt(itemInHandConfig+"enchantments.second.enchant");
    9.  
    10. Enchantment enchant3= Enchantment.getByName(this.getConfig().getString(itemInHandConfig+"enchantments.third.enchant"));
    11. int value3 = this.getConfig().getInt(itemInHandConfig+"enchantments.third.enchant");
    12.  
    13. Enchantment enchant4 = Enchantment.getByName(this.getConfig().getString(itemInHandConfig+"enchantments.fourth.enchant"));
    14. int value4 = this.getConfig().getInt(itemInHandConfig+"enchantments.fourth.enchant");
    15.  
    16. Enchantment enchant5 = Enchantment.getByName(this.getConfig().getString(itemInHandConfig+"enchantments.fifth.enchant"));
    17. int value5 = this.getConfig().getInt(itemInHandConfig+"enchantments.fifth.enchant");
    18.  
    19. Map<Enchantment, Integer> enchants = new HashMap<Enchantment, Integer>();
    20. if(this.getConfig().contains(itemInHandConfig+"enchantments.first")){
    21. enchants.put(enchant1,value1);
    22. }
    23. if(this.getConfig().contains(itemInHandConfig+"enchantments.second")){
    24. enchants.put(enchant2,value2);
    25. }
    26. if(this.getConfig().contains(itemInHandConfig+"enchantments.third")){
    27. enchants.put(enchant3,value3);
    28. }
    29. if(this.getConfig().contains(itemInHandConfig+"enchantments.fourth")){
    30. enchants.put(enchant4,value4);
    31. }
    32. if(this.getConfig().contains(itemInHandConfig+"enchantments.fifth")){
    33. enchants.put(enchant5,value5);
    34. }
    35. ItemStack stack = new ItemStack(Material.valueOf(this.getConfig().getString(itemInHandConfig+".realname")),1);
    36. ItemStack enchantGive = stack.addUnsafeEnchantments(enchants);
    37.  
    38. p.getInventory().addItem(enchantGive);
    39.  
    40.  



    My config.yml looks like this
    Code:
    items:
      DIAMOND_SWORD:
        realname: DIAMOND_SWORD
        name: '&aID'
        lore: '&cLORE'
        enchantments:
          first:
            enchant: FIRE_ASPECT
            level: 3
          second:
            enchant: KNOCKBACK
            level: 2
        buyprice: 40
        sellprice: 20
    
    I have been trying for ages to get it to work but no result!
    I hope a couple more set of eyes might help.

    eclipse says 'Type mismatch: cannot convert from void to ItemStack' at the line
    Code:java
    1.  
    2. ItemStack enchantGive = stack.addUnsafeEnchantments(enchants);
    3.  


    Thanks in advance I hope this can get solved!!
     
  2. Offline

    St3venAU

    the addUnsafeEnchatments method always returns null, so in effect it results in ItemStack enchantGive = null;

    Try just stack.addUnsafeEnchantements(enchants); and then p.getInventory().addItem(stack);
     
  3. Offline

    CGA1123

    Still doesn't add any enchantment! No errors either!

    If I print the value of the ItemStack it gives this:

    ItemStack{DIAMOND_SWORD x 1, UNSPECIFIC_META:{meta-type=UNSPECIFIC, display-name=ID, lore=[LORE]}}

    The display name and lore have been set to what I wanted which is why I don't understand why there are no enchantements!

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 8, 2016
  4. Offline

    CGA1123

    Solved it! I forgot to put '.' when defining paths to the config.yml
     
Thread Status:
Not open for further replies.

Share This Page