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);