Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // unbreakable spell made by JigglyJohn & Rifle D. Luffy
- package com.nisovin.magicspells.spells.instant;
- import org.apache.commons.lang.ArrayUtils;
- import java.util.List;
- import java.util.ArrayList;
- import org.bukkit.entity.Player;
- import org.bukkit.inventory.PlayerInventory;
- import org.bukkit.inventory.Inventory;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.inventory.meta.ItemMeta;
- import com.nisovin.magicspells.MagicSpells;
- import com.nisovin.magicspells.DebugHandler;
- import com.nisovin.magicspells.spells.InstantSpell;
- import com.nisovin.magicspells.util.MagicConfig;
- import com.nisovin.magicspells.util.InventoryUtil;
- public class UnbreakableSpell extends InstantSpell {
- private static final int hotbarSize = 9;
- private boolean correctlyConfigured;
- private String[] validInventory = new String[]{"mainHand","offHand","Wearing","Hotbar","Inventory"}
- private String inventoryType;
- private boolean toggle;
- public UnbreakableSpell(MagicConfig config, String spellName) {
- super(config, spellName);
- // set the config below to mainHand or offHand
- inventoryType = getConfigString("inventory-type", null);
- toggle = getConfigBoolean("toggle", true);
- }
- @Override
- public void initialize() {
- super.initialize();
- if (inventoryType.isEmpty() || inventoryType == null || !ArrayUtils.contains(validInventory,inventoryType)) correctlyConfigured = false;
- if (!correctlyConfigured) MagicSpells.error("UnbreakableSpell " + internalName + " was configured incorrectly!");
- //Lets be nice and tell them where they went wrong.
- if (inventoryType.isEmpty()) MagicSpells.error("Inventory-Type was left empty!");
- if (inventoryType == null) MagicSpells.error("Inventory-Type wasn't defined!");
- if (!ArrayUtils.contains(validInventory,inventoryType)) MagicSpells.error("Invalid Inventory-Type was defined");
- }
- @Override
- public PostCastAction castSpell(Player player, SpellCastState state, float power, String[] args) {
- if (state == SpellCastState.NORMAL) {
- if (!correctlyConfigured) return PostCastAction.ALREADY_HANDLED;
- PlayerInventory inv = player.getInventory();
- ArrayList<ItemStack> itemsToModify = new ArrayList<>();
- ItemStack[] wearing = inv.getArmorContents();
- ArrayList<ItemStack> hotbar;
- for (int i = 0; i < hotbarSize; i++) {
- ItemStack item = inv.getItem(i);
- if (InventoryUtil.isNothing(item)) continue;
- hotbar.add(inv.getItem(i));
- }
- switch (inventoryTypee) {
- case "mainHand":
- item = inv.getItemInMainHand();
- break;
- case "offHand":
- item = inv.getItemInOffHand();
- break;
- default:
- MagicSpells.error("Invalid inventory-type defined; Use mainHand, offHand, Wearing, Hotbar or Inventory.");
- return PostCastAction.ALREADY_HANDLED;
- }
- if (InventoryUtil.isNothing(item)) return PostCastAction.ALREADY_HANDLED;
- //set the meta back into the item and update the inventory.
- item.setItemMeta(meta);
- switch (inventoryType) {
- case "mainHand":
- break;
- case "offHand":
- break;
- case "Wearing":
- break;
- case "Hotbar":
- break;
- case "Inventory":
- break;
- }
- player.updateInventory();
- return PostCastAction.NO_MESSAGES;
- }
- return PostCastAction.HANDLE_NORMALLY;
- }
- public ItemStack setUnbreakable(ItemStack item, boolean toggle) {
- ItemMeta meta = item.getItemMeta();
- if (meta.isUnbreakable() && toggle) meta.setUnbreakable(false);
- if (!meta.isUnbreakable()) meta.setUnbreakable(true);
- item.setItemMeta(meta);
- return item;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement