Paylaşım JAVA Utils - GUIUtil ve Gui İçi Item Düzenleme

  • Konuyu Başlatan Konuyu Başlatan HaktanOzkan
  • Başlangıç tarihi Başlangıç tarihi
  • Görüntüleme 321
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

HaktanOzkan

Demir Cevheri Gibiyim
Katılım
22 Temmuz 2014
Mesajlar
206
Elmaslar
116
Puan
13.825
Minecraft
HaktanOzkan

Discord:

hktanozkan

Merhaba forum üyeleri. Java eklentisi geliştirirken GUI (Graphical User Interface)'ler herkes tarafından kullanılıyor. GUI oluşturmak ve içerisine item eklemek için bir Util hazırladım. Eksik gördüğünüz, geliştirilmesi veya değiştirilmesi gerektiğini düşündüğünüz vs. kısımları bildirirseniz üzerinde değişiklikler yapıp daha çok geliştiricinin işini görmesini sağlamış oluruz. İyi forumlar...

"Util" kısaltması "utility" (yardımcı) kelimesinden gelir ve genellikle yardımcı işlevlere sahip olan, genel amaçlı bir araç sınıfını ifade eder. Bir programlama dilinde "util" sınıfları, genellikle tekrar kullanılabilir yardımcı metodları içerir ve belirli işlevselliği gerçekleştirmek için kullanılır.
Java:
public class GUIUtil {
        private final Inventory inventory;

        public GUIUtil(String title, int size) {
            this.inventory = Bukkit.createInventory(null, size, title);
        }

        public GUIUtil addItem(int slot, Material material, String displayName, String[] lore,
                Enchantment enchantment, int enchantmentNumber,
                List<String> itemFlagsToAdd, List<ItemFlag> itemFlagsToRemove,
                boolean setUnbreakable) {
            ItemStack itemStack = new ItemStack(material);
            GUIUtil.setNameAndLore(itemStack, displayName, lore);
            if(enchantment != null) GUIUtil.enchantItem(itemStack, enchantment, enchantmentNumber);
            if(itemFlagsToAdd != null) for (String flag : itemFlagsToAdd) GUIUtil.addItemFlags(itemStack, ItemFlag.valueOf(flag));
            if(itemFlagsToRemove != null) for (ItemFlag flag : itemFlagsToRemove) GUIUtil.removeItemFlag(itemStack, flag);
            GUIUtil.setUnbreakable(itemStack, setUnbreakable);
            inventory.setItem(slot, itemStack);
            return this;
        }

        public void open(Player player) {
            player.openInventory(inventory);
        }

    public static void setNameAndLore(ItemStack itemStack, String displayName, String[] lore) {
        ItemMeta itemMeta = itemStack.getItemMeta();
        if (displayName != null) {
            itemMeta.setDisplayName(displayName);
            itemStack.setItemMeta(itemMeta);
        }

        if (lore != null) {
            itemMeta.setLore(java.util.Arrays.asList(lore));
            itemStack.setItemMeta(itemMeta);
        }
    }
    
    public static void enchantItem(ItemStack itemStack, Enchantment enchantment, int level) {
        ItemMeta itemMeta = itemStack.getItemMeta();
        itemMeta.getEnchants().forEach((ench, lvl) -> itemMeta.removeEnchant(ench));
        itemMeta.addEnchant(enchantment, level, true);
        itemStack.setItemMeta(itemMeta);
    }
    
    public static void addItemFlags(ItemStack itemStack, ItemFlag... itemFlags) {
        ItemMeta itemMeta = itemStack.getItemMeta();
        for (ItemFlag itemFlag : itemFlags) {
            if (!itemMeta.hasItemFlag(itemFlag)) {
                itemMeta.addItemFlags(itemFlag);
            }
        }
        itemStack.setItemMeta(itemMeta);
    }
    
    public static void addItemFlagAll(ItemStack itemStack) {
        ItemMeta itemMeta = itemStack.getItemMeta();
        itemMeta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
        itemMeta.addItemFlags(ItemFlag.HIDE_DESTROYS);
        itemMeta.addItemFlags(ItemFlag.HIDE_DYE);
        itemMeta.addItemFlags(ItemFlag.HIDE_ENCHANTS);
        itemMeta.addItemFlags(ItemFlag.HIDE_PLACED_ON);
        itemMeta.addItemFlags(ItemFlag.HIDE_POTION_EFFECTS);
        itemMeta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE);
        itemStack.setItemMeta(itemMeta);
    }

    public static void removeItemFlag(ItemStack itemStack, ItemFlag... itemFlags) {
        ItemMeta itemMeta = itemStack.getItemMeta();
        for (ItemFlag itemFlag : itemFlags) {
            if (!itemMeta.hasItemFlag(itemFlag)) {
                itemMeta.addItemFlags(itemFlag);
            }
        }
        itemStack.setItemMeta(itemMeta);
    }
    
    public static void removeItemFlagAll(ItemStack itemStack) {
        ItemMeta itemMeta = itemStack.getItemMeta();
        itemMeta.removeItemFlags(ItemFlag.HIDE_ATTRIBUTES);
        itemMeta.removeItemFlags(ItemFlag.HIDE_DESTROYS);
        itemMeta.removeItemFlags(ItemFlag.HIDE_DYE);
        itemMeta.removeItemFlags(ItemFlag.HIDE_ENCHANTS);
        itemMeta.removeItemFlags(ItemFlag.HIDE_PLACED_ON);
        itemMeta.removeItemFlags(ItemFlag.HIDE_POTION_EFFECTS);
        itemMeta.removeItemFlags(ItemFlag.HIDE_UNBREAKABLE);
        itemStack.setItemMeta(itemMeta);
    }
    
    public static void setUnbreakable(ItemStack itemStack, boolean setUnbreakable) {
        ItemMeta itemMeta = itemStack.getItemMeta();
        itemMeta.setUnbreakable(setUnbreakable);
    }

}

KULLANIM
Java:
//GUI OLUŞTURMA
// TEXT = Oluşturulacak Gui'nin adı.
// 54 = Oluşturulacak Gui'nin slot sayısı.
GUIUtil gui = new GUIUtil("TEXT" , 54);

//KULLANIM ŞEKLİ
gui.addItem(SLOT SAYISI, MATERIAL, ITEM ADI, STRING[] LORE, ENCHANT ADI, ENCHANT SEVİYESİ, EKLEMEK İÇİN ITEMFLAG ADI, SİLMEK İÇİN ITEMFLAG ADI, KIRILMAZLIK (TRUE, FALSE))
    
//ÖRNEK KULLANIM
// 10 = Eşyanın Gui içerisinde ki slot sayısı.
// Material.ACACIA_BOAT = Eşyanın hangi eşya olacağını belirtme.
// "BOT BU" = Oluşan eşyanın adı.
// item1lore = Oluşan eşyanın lore kısmı. String[] değeri ile çalışır. Lore kısmı istenmiyorsa null yazılır !
// Enchantment.BINDING_CURSE = Herhangi bir enchant ismi.
// 5 = Belirtilen enchant'ın seviyesi
// Arrays.asList("HIDE_ATTRIBUTES") = Eklenmesi istenilen tüm itemFlag'ler.
// Collections.emptyList() = Silinmesi istenilen tüm itemFlag'ler.
// true = Eşyanın kırılmaz olup olmamasını ayarlamak.
gui.addItem(10, Material.ACACIA_BOAT, "BOT BU", item1lore, Enchantment.BINDING_CURSE, 5, Arrays.asList("HIDE_ATTRIBUTES"), Collections.emptyList(), true);
2024-01-29_01.02.47.png
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

Hala Discord sunucumuza katılmadın mı?

Büyük bir topluluğun parçası ol, etkinliklere katıl ve özel hediyeler kazanma şansı yakala!

Şimdi Katıl
Üst