Advertisement
Guest User

Untitled

a guest
Mar 25th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.75 KB | None | 0 0
  1. // unbreakable spell made by JigglyJohn & Rifle D. Luffy
  2. package com.nisovin.magicspells.spells.instant;
  3.  
  4. import org.apache.commons.lang.ArrayUtils;
  5.  
  6. import java.util.List;
  7. import java.util.ArrayList;
  8.  
  9. import org.bukkit.entity.Player;
  10. import org.bukkit.inventory.PlayerInventory;
  11. import org.bukkit.inventory.Inventory;
  12. import org.bukkit.inventory.ItemStack;
  13. import org.bukkit.inventory.meta.ItemMeta;
  14.  
  15. import com.nisovin.magicspells.MagicSpells;
  16. import com.nisovin.magicspells.DebugHandler;
  17. import com.nisovin.magicspells.spells.InstantSpell;
  18. import com.nisovin.magicspells.util.MagicConfig;
  19. import com.nisovin.magicspells.util.InventoryUtil;
  20.  
  21. public class UnbreakableSpell extends InstantSpell {
  22.  
  23. private static final int hotbarSize = 9;
  24.  
  25. private boolean correctlyConfigured;
  26.  
  27. private String[] validInventory = new String[]{"mainHand","offHand","Wearing","Hotbar","Inventory"}
  28. private String inventoryType;
  29. private boolean toggle;
  30.  
  31. public UnbreakableSpell(MagicConfig config, String spellName) {
  32. super(config, spellName);
  33. // set the config below to mainHand or offHand
  34. inventoryType = getConfigString("inventory-type", null);
  35. toggle = getConfigBoolean("toggle", true);
  36. }
  37.  
  38. @Override
  39. public void initialize() {
  40. super.initialize();
  41.  
  42. if (inventoryType.isEmpty() || inventoryType == null || !ArrayUtils.contains(validInventory,inventoryType)) correctlyConfigured = false;
  43. if (!correctlyConfigured) MagicSpells.error("UnbreakableSpell " + internalName + " was configured incorrectly!");
  44.  
  45. //Lets be nice and tell them where they went wrong.
  46. if (inventoryType.isEmpty()) MagicSpells.error("Inventory-Type was left empty!");
  47. if (inventoryType == null) MagicSpells.error("Inventory-Type wasn't defined!");
  48. if (!ArrayUtils.contains(validInventory,inventoryType)) MagicSpells.error("Invalid Inventory-Type was defined");
  49. }
  50.  
  51. @Override
  52. public PostCastAction castSpell(Player player, SpellCastState state, float power, String[] args) {
  53. if (state == SpellCastState.NORMAL) {
  54. if (!correctlyConfigured) return PostCastAction.ALREADY_HANDLED;
  55.  
  56. PlayerInventory inv = player.getInventory();
  57. ArrayList<ItemStack> itemsToModify = new ArrayList<>();
  58. ItemStack[] wearing = inv.getArmorContents();
  59. ArrayList<ItemStack> hotbar;
  60.  
  61. for (int i = 0; i < hotbarSize; i++) {
  62. ItemStack item = inv.getItem(i);
  63. if (InventoryUtil.isNothing(item)) continue;
  64. hotbar.add(inv.getItem(i));
  65. }
  66.  
  67. switch (inventoryTypee) {
  68. case "mainHand":
  69. item = inv.getItemInMainHand();
  70. break;
  71. case "offHand":
  72. item = inv.getItemInOffHand();
  73. break;
  74. default:
  75. MagicSpells.error("Invalid inventory-type defined; Use mainHand, offHand, Wearing, Hotbar or Inventory.");
  76. return PostCastAction.ALREADY_HANDLED;
  77. }
  78. if (InventoryUtil.isNothing(item)) return PostCastAction.ALREADY_HANDLED;
  79.  
  80. //set the meta back into the item and update the inventory.
  81. item.setItemMeta(meta);
  82. switch (inventoryType) {
  83. case "mainHand":
  84. break;
  85. case "offHand":
  86. break;
  87. case "Wearing":
  88. break;
  89. case "Hotbar":
  90. break;
  91. case "Inventory":
  92. break;
  93. }
  94. player.updateInventory();
  95. return PostCastAction.NO_MESSAGES;
  96. }
  97. return PostCastAction.HANDLE_NORMALLY;
  98. }
  99.  
  100. public ItemStack setUnbreakable(ItemStack item, boolean toggle) {
  101. ItemMeta meta = item.getItemMeta();
  102. if (meta.isUnbreakable() && toggle) meta.setUnbreakable(false);
  103. if (!meta.isUnbreakable()) meta.setUnbreakable(true);
  104. item.setItemMeta(meta);
  105. return item;
  106. }
  107.  
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement