SteamWar/SpigotCore
Archiviert
13
0

Merge pull request 'Add SWActionListInv' (#57) from TNTTracerInventory into master

Reviewed-by: Chaoscaot <chaoscaot444@gmail.com>
Dieser Commit ist enthalten in:
YoyoNow 2020-09-05 14:44:45 +02:00
Commit 29dc01684a
3 geänderte Dateien mit 120 neuen und 20 gelöschten Zeilen

Datei anzeigen

@ -0,0 +1,31 @@
package de.steamwar.inventory;
public class SWActionBar {
public enum Slot {
ZERO(0),
ONE(1),
TWO(2),
THREE(3),
FOUR(4),
FIVE(5),
SIX(6);
private int index;
Slot(int index) {
this.index = index;
}
int getIndex() {
return index;
}
}
SWItem[] actionBar = new SWItem[7];
public void setItem(Slot slot, SWItem item) {
actionBar[slot.getIndex()] = item;
}
}

Datei anzeigen

@ -0,0 +1,73 @@
package de.steamwar.inventory;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
import java.util.List;
public class SWActionListInv<T> extends SWInventory {
private SWListInv.ListCallback<T> callback;
private List<SWListInv.SWListEntry<T>> elements;
private SWActionBar actionBar = null;
private int page;
public SWActionListInv(Player p, String t, List<SWListInv.SWListEntry<T>> l, SWListInv.ListCallback<T> c){
super(p, 54, t);
callback = c;
elements = l;
page = 0;
}
public void setActionBar(SWActionBar actionBar) {
this.actionBar = actionBar;
}
@Override
public void open(){
inventory.clear();
setCallback(-999, (ClickType click) -> player.closeInventory());
if (page != 0) {
setItem(0, SWItem.getDye(10), (byte) 10, "§eSeite zurück", (ClickType click) -> {
page--;
open();
});
} else {
setItem(0, SWItem.getDye(8), (byte) 8, "§7Seite zurück", (ClickType click) -> {});
}
if (page < elements.size() / 45) {
setItem(8, SWItem.getDye(10), (byte) 10, "§eSeite vor", (ClickType click) -> {
page++;
open();
});
} else {
setItem(8, SWItem.getDye(8), (byte) 8, "§7Seite vor", (ClickType click) -> {});
}
if (actionBar != null) {
for (int i = 0; i < 7; i++) {
setItem(i + 1, actionBar.actionBar[i]);
}
}
int ipageLimit = elements.size() - page*45;
if(ipageLimit > 45 && elements.size() > 45){
ipageLimit = 45;
}
int i = page*45;
for(int ipage=0; ipage < ipageLimit; ipage++ ){
SWItem e = elements.get(i).getItem();
final int pos = i;
setItem(ipage + 9, e);
setCallback(ipage, (ClickType click) -> callback.clicked(click, elements.get(pos).getObject()));
i++;
}
super.open();
}
public void setCallback(SWListInv.ListCallback<T> c){
callback = c;
}
}

Datei anzeigen

@ -104,7 +104,7 @@ public class SWItem {
} }
} }
public SWItem(){ public SWItem() {
itemStack = new ItemStack(Material.AIR); itemStack = new ItemStack(Material.AIR);
itemMeta = itemStack.getItemMeta(); itemMeta = itemStack.getItemMeta();
hideAttributes(); hideAttributes();
@ -114,34 +114,31 @@ public class SWItem {
this(material, (byte)0, name, new ArrayList<>(), false, null); this(material, (byte)0, name, new ArrayList<>(), false, null);
} }
public SWItem(Material material, String name, List<String> lore, boolean enchanted, InvCallback c){ public SWItem(Material material, String name, List<String> lore, boolean enchanted, InvCallback c) {
this(material, (byte)0, name, lore, enchanted, c); this(material, (byte)0, name, lore, enchanted, c);
} }
public SWItem(Material material, byte meta, String name, List<String> lore, boolean enchanted, InvCallback c){ public SWItem(Material material, byte meta, String name, List<String> lore, boolean enchanted, InvCallback c) {
try{ try {
itemStack = new ItemStack(material, 1, (short)0, meta); itemStack = new ItemStack(material, 1, (short)0, meta);
}catch(IllegalArgumentException e){ } catch (IllegalArgumentException e) {
itemStack = new ItemStack(material, 1); itemStack = new ItemStack(material, 1);
} }
itemMeta = itemStack.getItemMeta(); itemMeta = itemStack.getItemMeta();
if(itemMeta != null){ if (itemMeta != null) {
hideAttributes(); hideAttributes();
itemMeta.setDisplayName(name); itemMeta.setDisplayName(name);
if(lore != null && !lore.isEmpty()) if (lore != null && !lore.isEmpty()) itemMeta.setLore(lore);
itemMeta.setLore(lore); if (enchanted) itemMeta.addEnchant(Enchantment.DURABILITY , 10, true);
if(enchanted)
itemMeta.addEnchant(Enchantment.DURABILITY , 10, true);
itemStack.setItemMeta(itemMeta); itemStack.setItemMeta(itemMeta);
} }
callback = c; callback = c;
} }
private void hideAttributes(){ private void hideAttributes() {
if(itemMeta == null) if (itemMeta == null) return;
return;
itemMeta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES); itemMeta.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);
itemMeta.addItemFlags(ItemFlag.HIDE_DESTROYS); itemMeta.addItemFlags(ItemFlag.HIDE_DESTROYS);
itemMeta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE); itemMeta.addItemFlags(ItemFlag.HIDE_UNBREAKABLE);
@ -178,23 +175,22 @@ public class SWItem {
this.callback = callback; this.callback = callback;
} }
public void setName(String name){ public void setName(String name) {
itemMeta.setDisplayName(name); itemMeta.setDisplayName(name);
itemStack.setItemMeta(itemMeta); itemStack.setItemMeta(itemMeta);
} }
public void setLore(List<String> lore){ public void setLore(List<String> lore) {
itemMeta.setLore(lore); itemMeta.setLore(lore);
itemStack.setItemMeta(itemMeta); itemStack.setItemMeta(itemMeta);
} }
public void setEnchanted(boolean enchanted){ public void setEnchanted(boolean enchanted) {
if(enchanted){ if (enchanted){
itemMeta.addEnchant(Enchantment.DURABILITY , 10, true); itemMeta.addEnchant(Enchantment.DURABILITY , 10, true);
itemStack.setItemMeta(itemMeta); } else {
}else{
itemMeta.removeEnchant(Enchantment.DURABILITY); itemMeta.removeEnchant(Enchantment.DURABILITY);
itemStack.setItemMeta(itemMeta);
} }
itemStack.setItemMeta(itemMeta);
} }
} }