Add Multi Personal Kits #228
@ -68,16 +68,16 @@ public class PersonalKitCreator extends BasicListener {
|
|||||||
kits.removeIf(kit -> !kit.getName().toLowerCase().contains(qry.toLowerCase()));
|
kits.removeIf(kit -> !kit.getName().toLowerCase().contains(qry.toLowerCase()));
|
||||||
List<SWListInv.SWListEntry<PersonalKit>> entries = new ArrayList<>(kits.size());
|
List<SWListInv.SWListEntry<PersonalKit>> entries = new ArrayList<>(kits.size());
|
||||||
kits.forEach(kit -> entries.add(new SWListInv.SWListEntry<>(new SWItem(Material.LEATHER_CHESTPLATE, "§e" + kit.getName(), new ArrayList<>(), kit.isInUse(), clickType -> {}), kit)));
|
kits.forEach(kit -> entries.add(new SWListInv.SWListEntry<>(new SWItem(Material.LEATHER_CHESTPLATE, "§e" + kit.getName(), new ArrayList<>(), kit.isInUse(), clickType -> {}), kit)));
|
||||||
SWListInv<PersonalKit> inv = new SWListInv<>(player, "§eKit wählen", false, entries, (clickType, kit) -> showKit(player, kit));
|
SWListInv<PersonalKit> inv = new SWListInv<>(player, "§eKit wählen", false, entries, (clickType, kit) -> preview(player, kit));
|
||||||
if(entries.isEmpty())
|
if(entries.isEmpty())
|
||||||
inv.setItem(22, new SWItem(Material.BARRIER, "§cKeine Kits gefunden"));
|
inv.setItem(22, new SWItem(Material.BARRIER, "§cKeine Kits gefunden"));
|
||||||
inv.setItem(48, Material.NETHER_STAR, "§eNeues Kit", clickType -> {
|
inv.setItem(48, Material.NETHER_STAR, "§eNeues Kit", clickType -> {
|
||||||
|
|||||||
SWAnvilInv anvilInv = new SWAnvilInv(player, "§eKit namen eingeben");
|
SWAnvilInv anvilInv = new SWAnvilInv(player, "Kitname eingeben");
|
||||||
Lixfel
hat
Inventartitel eher unkoloriert. Kitname singular & zusammengeschrieben Inventartitel eher unkoloriert. Kitname singular & zusammengeschrieben
|
|||||||
anvilInv.setItem(Material.LEATHER_CHESTPLATE);
|
anvilInv.setItem(Material.LEATHER_CHESTPLATE);
|
||||||
anvilInv.setCallback(s -> {
|
anvilInv.setCallback(s -> {
|
||||||
SteamwarUser user = SteamwarUser.get(player.getUniqueId());
|
SteamwarUser user = SteamwarUser.get(player.getUniqueId());
|
||||||
if(PersonalKit.nameInUse(user.getId(), Config.SchematicType.toDB(), s)) {
|
if(PersonalKit.nameInUse(user.getId(), Config.SchematicType.toDB(), s)) {
|
||||||
player.sendMessage(FightSystem.PREFIX + "§cDieser Kit name wird bereits genutzt!");
|
player.sendMessage(FightSystem.PREFIX + "§cDieser Kitname wird bereits genutzt!");
|
||||||
Lixfel
hat
Kitname Kitname
|
|||||||
player.closeInventory();
|
player.closeInventory();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -96,29 +96,8 @@ public class PersonalKitCreator extends BasicListener {
|
|||||||
inv.open();
|
inv.open();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void showKit(Player player, PersonalKit kit) {
|
|
||||||
SWInventory inv = new SWInventory(player, 9, "§e" + kit.getName());
|
|
||||||
inv.setItem(0, Material.LEATHER_CHESTPLATE, "§aKit benutzen", clickType -> useKit(player, kit));
|
|
||||||
inv.setItem(1, Material.GLASS, "§bPreview", clickType -> preview(player, kit));
|
|
||||||
inv.setItem(4, SWItem.getMaterial("WOOD_AXE"), "§6Kit bearbeiten", clickType -> openKitCreator(player, kit));
|
|
||||||
inv.setItem(8, Material.BARRIER, "§cKit Löschen", clickType -> {
|
|
||||||
player.closeInventory();
|
|
||||||
SWInventory conf = new SWInventory(player, 0, "§cKit " + kit.getName() + " wirklich löchen?");
|
|
||||||
conf.setItem(8, SWItem.getDye(1), "§cAbbrechen", click -> player.closeInventory());
|
|
||||||
conf.setItem(0, SWItem.getDye(10), "§aLöschen", click -> {
|
|
||||||
player.closeInventory();
|
|
||||||
if(kit.isInUse()) {
|
|
||||||
useKit(player, PersonalKit.get(SteamwarUser.get(player.getUniqueId()).getId(), Config.SchematicType.toDB()).get(0));
|
|
||||||
}
|
|
||||||
kit.delete();
|
|
||||||
});
|
|
||||||
conf.open();
|
|
||||||
});
|
|
||||||
inv.open();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void preview(Player player, PersonalKit kit){
|
public static void preview(Player player, PersonalKit kit){
|
||||||
SWInventory inv = new SWInventory(player, 54, "§e" + kit.getName());
|
SWInventory inv = new SWInventory(player, 54, kit.getName());
|
||||||
Lixfel
hat
Lass den Fenster-Titel am besten ungefärbt. Lass den Fenster-Titel am besten ungefärbt.
|
|||||||
|
|
||||||
//36 = Inventargröße
|
//36 = Inventargröße
|
||||||
Lixfel
hat
b kein Teil der Farbpalette (7??) b kein Teil der Farbpalette (7??)
|
|||||||
for(int i = 0; i < 36; i++){
|
for(int i = 0; i < 36; i++){
|
||||||
Lixfel
hat
6 ist kein Teil der SW-Farbpalette, wir haben ja Stil und kein Weihnachtsbaumsyndrom wie nahezu alle anderen MC-Server): 78e (7 schätzungsweise die "korrekte" Farbe) 6 ist kein Teil der SW-Farbpalette, wir haben ja Stil und kein Weihnachtsbaumsyndrom wie nahezu alle anderen MC-Server): 78e (7 schätzungsweise die "korrekte" Farbe)
|
|||||||
@ -139,11 +118,21 @@ public class PersonalKitCreator extends BasicListener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Lixfel
hat
So eine Preview gibt es schon beim normalen Kit wählen, würde dich bitten, das wenn wiederzuverwenden. Ich fände es auch noch gut, wenn diese Ansicht mit den Kitoptionen (showKit) gemergt wird, dass dann im oberen Teil der GUI das Kit zu sehen ist und unten die Optionen dazu angezeigt werden (ich weiß, das macht eine kleine Veränderung der bisherigen Preview-GUI nötig, evtl. lässt du sie dann einfach das SWInventory zurückgeben, dass dann noch nachträglich anklickoptionen hinzugefügt werden können und dann halt die Aufrufende Funktion dann das Inventar .open() muss. So eine Preview gibt es schon beim normalen Kit wählen, würde dich bitten, das wenn wiederzuverwenden. Ich fände es auch noch gut, wenn diese Ansicht mit den Kitoptionen (showKit) gemergt wird, dass dann im oberen Teil der GUI das Kit zu sehen ist und unten die Optionen dazu angezeigt werden (ich weiß, das macht eine kleine Veränderung der bisherigen Preview-GUI nötig, evtl. lässt du sie dann einfach das SWInventory zurückgeben, dass dann noch nachträglich anklickoptionen hinzugefügt werden können und dann halt die Aufrufende Funktion dann das Inventar .open() muss.
Lixfel
hat
Bitte Code-Duplication entfernen! Bitte Code-Duplication entfernen!
|
|||||||
inv.setItem(45, SWItem.getDye(10), (byte)10, "§aKit wählen", (click) -> {
|
inv.setItem(45, Material.LEATHER_CHESTPLATE, "§aKit benutzen", clickType -> useKit(player, kit));
|
||||||
|
inv.setItem(49, SWItem.getMaterial("WOOD_AXE"), "§7Kit bearbeiten", clickType -> openKitCreator(player, kit));
|
||||||
|
inv.setItem(53, Material.BARRIER, "§cKit löschen", clickType -> {
|
||||||
player.closeInventory();
|
player.closeInventory();
|
||||||
useKit(player, kit);
|
SWInventory conf = new SWInventory(player, 0, "§cKit " + kit.getName() + " wirklich löchen?");
|
||||||
|
conf.setItem(8, SWItem.getDye(1), "§cAbbrechen", click -> player.closeInventory());
|
||||||
|
conf.setItem(0, SWItem.getDye(10), "§aLöschen", click -> {
|
||||||
|
player.closeInventory();
|
||||||
|
if(kit.isInUse()) {
|
||||||
|
useKit(player, PersonalKit.get(SteamwarUser.get(player.getUniqueId()).getId(), Config.SchematicType.toDB()).get(0));
|
||||||
|
}
|
||||||
|
kit.delete();
|
||||||
|
});
|
||||||
|
conf.open();
|
||||||
});
|
});
|
||||||
inv.setItem(53, SWItem.getDye(1), (byte)1, "§cZurück", (click) -> showKit(player, kit));
|
|
||||||
inv.open();
|
inv.open();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Ich würde hier schon die dynamicSize im SWListInv nutzen (vor allem, weil die meisten nicht mehr als eine Handvoll Kits haben werden) und dann die Neue-Kit-Option einfach als letzten Entry in nehmen (Mit PersonalKit = null). Geht aber natürlich auch so.
Ich finde hier sollten wir es auch etwas einheitlich mit dem Schematic GUI halten, deshalb hatte ich es auch so gebaut, dass es sich anfühlt wie das SchematicSystem