Solved Is there a more efficient way to do this?

Discussion in 'Plugin Development' started by The Gaming Grunts, Feb 11, 2014.

Thread Status:
Not open for further replies.
  1. Hey everyone! So, there's a bit of repetitive code in this method regarding setting a player's armor contents depending on their rank. I was wondering if there is a more efficient way of doing it that doesn't look as ugly :p Thanks in advance :)

    Code:java
    1. /**
    2.   * Gives a player a set of armor depending on their rank
    3.   *
    4.   * @param player : The Player who will receive the armor
    5.   */
    6. public static void giveDefenseArmor(Player player){
    7. PlayerInventory i = player.getInventory();
    8.  
    9. if (getArmorTier(player).equals("Diamond")){
    10. i.setHelmet(new ItemStack(Material.DIAMOND_HELMET));
    11. i.setChestplate(new ItemStack(Material.DIAMOND_CHESTPLATE));
    12. i.setLeggings(new ItemStack(Material.DIAMOND_LEGGINGS));
    13. i.setBoots(new ItemStack(Material.DIAMOND_BOOTS));
    14. }
    15.  
    16. if (getArmorTier(player).equals("Iron")){
    17. i.setHelmet(new ItemStack(Material.IRON_HELMET));
    18. i.setChestplate(new ItemStack(Material.IRON_CHESTPLATE));
    19. i.setLeggings(new ItemStack(Material.IRON_LEGGINGS));
    20. i.setBoots(new ItemStack(Material.IRON_BOOTS));
    21. }
    22.  
    23. if (getArmorTier(player).equals("Gold")){
    24. i.setHelmet(new ItemStack(Material.GOLD_HELMET));
    25. i.setChestplate(new ItemStack(Material.GOLD_CHESTPLATE));
    26. i.setLeggings(new ItemStack(Material.GOLD_LEGGINGS));
    27. i.setBoots(new ItemStack(Material.GOLD_BOOTS));
    28. }
    29.  
    30. if (getArmorTier(player).equals("Leather")){
    31. i.setHelmet(new ItemStack(Material.LEATHER_HELMET));
    32. i.setChestplate(new ItemStack(Material.LEATHER_CHESTPLATE));
    33. i.setLeggings(new ItemStack(Material.LEATHER_LEGGINGS));
    34. i.setBoots(new ItemStack(Material.LEATHER_BOOTS));
    35. }
    36. }
     
  2. Offline

    Maurdekye

    The Gaming Grunts
    Code:java
    1. public void giveDefenseArmor(Player player) {
    2. ArrayList<ItemStack> contents = new ArrayList<>();
    3. for (String suffix : Arrays.asList("HELMET", "CHESTPLATE", "LEGGINGS", "BOOTS"))
    4. contents.add(new ItemStack(Material.valueOf(getArmorTier(player).toUpperCase() + "_" + suffix)));
    5. player.getInventory.setArmorContents(contents.toArray(new ItemStack[4]));
    6. }

    That ought to do it.
     
  3. Maurdekye
    Wow thanks. I'll try it out and let you know how it works :)

    Edit:
    Maurdekye
    Works like a charm. Thanks again :)
     
Thread Status:
Not open for further replies.

Share This Page