/* * This file is a part of the SteamWar software. * * Copyright (C) 2021 SteamWar.de-Serverteam * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ package de.steamwar.bausystem.utils; import de.steamwar.bausystem.SWUtils; import lombok.experimental.UtilityClass; import org.bukkit.NamespacedKey; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.persistence.PersistentDataContainer; import org.bukkit.persistence.PersistentDataType; @UtilityClass public class ItemUtils { private final NamespacedKey ITEM_KEY = SWUtils.getNamespaceKey("bau_item"); public boolean isItem(ItemStack itemStack, String tag) { String value = getTag(itemStack, ITEM_KEY); return value != null && value.equals(tag); } public void setItem(ItemStack itemStack, String tag) { setTag(itemStack, ITEM_KEY, tag); } public String getTag(ItemStack itemStack, NamespacedKey key) { if (itemStack == null) { return null; } ItemMeta meta = itemStack.getItemMeta(); if (meta == null) { return null; } PersistentDataContainer container = meta.getPersistentDataContainer(); if (!container.has(key, PersistentDataType.STRING)) { return null; } return container.get(key, PersistentDataType.STRING); } public void setTag(ItemStack itemStack, NamespacedKey key, String value) { if (itemStack == null) { return; } ItemMeta meta = itemStack.getItemMeta(); if (meta == null) { return; } if (value == null) { meta.getPersistentDataContainer().remove(key); } else { meta.getPersistentDataContainer().set(key, PersistentDataType.STRING, value); } itemStack.setItemMeta(meta); } }