From f8f2dfc95ecdbe63d0e73388cf51d0007061cbb5 Mon Sep 17 00:00:00 2001 From: NichtStudioCode <51272202+NichtStudioCode@users.noreply.github.com> Date: Sat, 28 Jan 2023 12:30:36 +0100 Subject: [PATCH] Refactoring, Improved Window building --- inventoryaccess/inventory-access-r1/pom.xml | 2 +- .../{inventory => }/AnvilInventoryImpl.java | 5 +- .../CartographyInventoryImpl.java | 5 +- .../r1/{util => }/InventoryUtilsImpl.java | 4 +- .../r1/{util => }/ItemUtilsImpl.java | 4 +- .../r1/{util => }/PlayerUtilsImpl.java | 4 +- inventoryaccess/inventory-access-r10/pom.xml | 2 +- .../{inventory => }/AnvilInventoryImpl.java | 5 +- .../CartographyInventoryImpl.java | 5 +- .../r10/{util => }/InventoryUtilsImpl.java | 4 +- .../r10/{util => }/ItemUtilsImpl.java | 4 +- .../r10/{util => }/PlayerUtilsImpl.java | 4 +- inventoryaccess/inventory-access-r11/pom.xml | 2 +- .../{inventory => }/AnvilInventoryImpl.java | 5 +- .../CartographyInventoryImpl.java | 5 +- .../r11/{util => }/InventoryUtilsImpl.java | 4 +- .../r11/{util => }/ItemUtilsImpl.java | 4 +- .../r11/{util => }/PlayerUtilsImpl.java | 4 +- inventoryaccess/inventory-access-r12/pom.xml | 2 +- .../{inventory => }/AnvilInventoryImpl.java | 5 +- .../CartographyInventoryImpl.java | 5 +- .../r12/{util => }/InventoryUtilsImpl.java | 4 +- .../r12/{util => }/ItemUtilsImpl.java | 4 +- .../r12/{util => }/PlayerUtilsImpl.java | 4 +- inventoryaccess/inventory-access-r2/pom.xml | 2 +- .../{inventory => }/AnvilInventoryImpl.java | 5 +- .../CartographyInventoryImpl.java | 5 +- .../r2/{util => }/InventoryUtilsImpl.java | 4 +- .../r2/{util => }/ItemUtilsImpl.java | 4 +- .../r2/{util => }/PlayerUtilsImpl.java | 4 +- inventoryaccess/inventory-access-r3/pom.xml | 2 +- .../{inventory => }/AnvilInventoryImpl.java | 5 +- .../CartographyInventoryImpl.java | 5 +- .../r3/{util => }/InventoryUtilsImpl.java | 4 +- .../r3/{util => }/ItemUtilsImpl.java | 4 +- .../r3/{util => }/PlayerUtilsImpl.java | 4 +- inventoryaccess/inventory-access-r4/pom.xml | 2 +- .../{inventory => }/AnvilInventoryImpl.java | 5 +- .../CartographyInventoryImpl.java | 5 +- .../r4/{util => }/InventoryUtilsImpl.java | 4 +- .../r4/{util => }/ItemUtilsImpl.java | 4 +- .../r4/{util => }/PlayerUtilsImpl.java | 4 +- inventoryaccess/inventory-access-r5/pom.xml | 2 +- .../{inventory => }/AnvilInventoryImpl.java | 5 +- .../CartographyInventoryImpl.java | 5 +- .../r5/{util => }/InventoryUtilsImpl.java | 4 +- .../r5/{util => }/ItemUtilsImpl.java | 4 +- .../r5/{util => }/PlayerUtilsImpl.java | 4 +- inventoryaccess/inventory-access-r6/pom.xml | 2 +- .../{inventory => }/AnvilInventoryImpl.java | 5 +- .../CartographyInventoryImpl.java | 5 +- .../r6}/InventoryUtilsImpl.java | 4 +- .../inventoryaccess/r6}/ItemUtilsImpl.java | 4 +- .../r6/{util => }/PlayerUtilsImpl.java | 4 +- inventoryaccess/inventory-access-r7/pom.xml | 2 +- .../{inventory => }/AnvilInventoryImpl.java | 5 +- .../CartographyInventoryImpl.java | 5 +- .../r7}/InventoryUtilsImpl.java | 4 +- .../inventoryaccess/r7}/ItemUtilsImpl.java | 4 +- .../r7/{util => }/PlayerUtilsImpl.java | 4 +- inventoryaccess/inventory-access-r8/pom.xml | 2 +- .../{inventory => }/AnvilInventoryImpl.java | 5 +- .../CartographyInventoryImpl.java | 5 +- .../r8/{util => }/InventoryUtilsImpl.java | 4 +- .../r8/{util => }/ItemUtilsImpl.java | 4 +- .../r8/{util => }/PlayerUtilsImpl.java | 4 +- inventoryaccess/inventory-access-r9/pom.xml | 2 +- .../{inventory => }/AnvilInventoryImpl.java | 5 +- .../CartographyInventoryImpl.java | 5 +- .../r9/{util => }/InventoryUtilsImpl.java | 4 +- .../r9/{util => }/ItemUtilsImpl.java | 4 +- .../r9/{util => }/PlayerUtilsImpl.java | 4 +- inventoryaccess/inventory-access/pom.xml | 2 +- .../{version => }/InventoryAccess.java | 12 +- .../inventoryaccess/util/VersionUtils.java | 7 +- invui-resourcepack/pom.xml | 2 +- .../invui/resourcepack/ForceResourcePack.java | 2 +- invui/pom.xml | 2 +- .../{impl/BaseGUI.java => AbstractGUI.java} | 90 ++++---- .../invui/gui/AbstractPagedGUI.java | 138 ++++++++++++ .../ScrollGUI.java => AbstractScrollGUI.java} | 52 ++--- .../{impl/TabGUI.java => AbstractTabGUI.java} | 47 +++- .../de/studiocode/invui/gui/Controllable.java | 7 - .../java/de/studiocode/invui/gui/GUI.java | 160 ++++++-------- .../de/studiocode/invui/gui/PagedGUI.java | 106 +++++++++ .../de/studiocode/invui/gui/ScrollGUI.java | 49 ++++ .../de/studiocode/invui/gui/SlotElement.java | 13 +- .../java/de/studiocode/invui/gui/TabGUI.java | 68 ++++++ .../invui/gui/builder/GUIBuilder.java | 81 +++---- .../invui/gui/builder/GUIContext.java | 32 +-- .../invui/gui/builder/guitype/GUIType.java | 37 +--- .../gui/builder/guitype/NormalGUIType.java | 24 +- .../gui/builder/guitype/PagedGUIsGUIType.java | 25 +-- .../builder/guitype/PagedItemsGUIType.java | 25 +-- .../builder/guitype/ScrollGUIsGUIType.java | 25 +-- .../builder/guitype/ScrollItemsGUIType.java | 25 +-- .../gui/builder/guitype/ScrollVIGUIType.java | 25 +-- .../invui/gui/builder/guitype/TabGUIType.java | 25 +-- .../{SimpleGUI.java => NormalGUIImpl.java} | 7 +- .../invui/gui/impl/PageNestedGUIImpl.java | 59 +++++ .../studiocode/invui/gui/impl/PagedGUI.java | 101 --------- .../invui/gui/impl/PagedItemsGUIImpl.java | 58 +++++ ...lItemsGUI.java => ScrollItemsGUIImpl.java} | 18 +- ...estedGUI.java => ScrollNestedGUIImpl.java} | 21 +- .../invui/gui/impl/ScrollVIGUIImpl.java | 54 +++++ .../invui/gui/impl/SimplePagedItemsGUI.java | 79 ------- .../invui/gui/impl/SimplePagedNestedGUI.java | 82 ------- .../invui/gui/impl/SimpleScrollVIGUI.java | 53 ----- .../{SimpleTabGUI.java => TabGUIImpl.java} | 33 +-- .../invui/gui/structure/IngredientList.java | 6 +- .../invui/gui/structure/Markers.java | 18 +- .../studiocode/invui/item/ItemProvider.java | 4 +- .../invui/item/builder/BaseItemBuilder.java | 176 ++++++++------- .../studiocode/invui/item/impl/BaseItem.java | 11 +- .../item/impl/controlitem/ControlItem.java | 4 +- .../invui/item/impl/controlitem/PageItem.java | 11 +- .../item/impl/controlitem/ScrollItem.java | 9 +- .../invui/item/impl/controlitem/TabItem.java | 7 +- .../invui/{map => util}/ColorPalette.java | 4 +- .../studiocode/invui/util/MojangApiUtils.java | 1 + .../virtualinventory/VirtualInventory.java | 203 +++++++++++++++-- .../VirtualInventoryManager.java | 2 +- ...dWindow.java => AbstractDoubleWindow.java} | 18 +- ...dWindow.java => AbstractMergedWindow.java} | 21 +- ...eWindow.java => AbstractSingleWindow.java} | 22 +- ...itWindow.java => AbstractSplitWindow.java} | 23 +- .../BaseWindow.java => AbstractWindow.java} | 93 ++++---- .../studiocode/invui/window/AnvilWindow.java | 7 + .../invui/window/CartographyWindow.java | 23 ++ .../de/studiocode/invui/window/Window.java | 209 +++++------------- .../invui/window/WindowManager.java | 33 +-- .../window/impl/AnvilSingleWindowImpl.java | 46 ++++ .../window/impl/AnvilSplitWindowImpl.java | 47 ++++ ....java => CartographySingleWindowImpl.java} | 55 ++--- .../impl/CartographySplitWindowImpl.java | 74 +++++++ .../window/impl/NormalMergedWindowImpl.java | 27 +++ .../window/impl/NormalSingleWindowImpl.java | 17 ++ .../window/impl/NormalSplitWindowImpl.java | 16 ++ .../merged/combined/SimpleCombinedWindow.java | 48 ---- .../impl/merged/split/AnvilSplitWindow.java | 67 ------ .../merged/split/CartographySplitWindow.java | 98 -------- .../impl/merged/split/SimpleSplitWindow.java | 38 ---- .../invui/window/impl/single/AnvilWindow.java | 66 ------ .../window/impl/single/SimpleWindow.java | 64 ------ .../invui/window/type/WindowType.java | 170 ++++++++++++++ .../type/context/AbstractWindowContext.java | 59 +++++ .../context/AnvilSingleWindowContext.java | 41 ++++ .../type/context/AnvilSplitWindowContext.java | 58 +++++ .../CartographySingleWindowContext.java | 31 +++ .../CartographySplitWindowContext.java | 48 ++++ .../context/NormalCombinedWindowContext.java | 31 +++ .../context/NormalSingleWindowContext.java | 36 +++ .../context/NormalSplitWindowContext.java | 48 ++++ .../window/type/context/WindowContext.java | 4 + pom.xml | 28 +-- 155 files changed, 2281 insertions(+), 1775 deletions(-) rename inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/{inventory => }/AnvilInventoryImpl.java (96%) rename inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/{inventory => }/CartographyInventoryImpl.java (94%) rename inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/{util => }/InventoryUtilsImpl.java (97%) rename inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/{util => }/ItemUtilsImpl.java (97%) rename inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/{util => }/PlayerUtilsImpl.java (96%) rename inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/{inventory => }/AnvilInventoryImpl.java (96%) rename inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/{inventory => }/CartographyInventoryImpl.java (95%) rename inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/{util => }/InventoryUtilsImpl.java (96%) rename inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/{util => }/ItemUtilsImpl.java (96%) rename inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/{util => }/PlayerUtilsImpl.java (97%) rename inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/{inventory => }/AnvilInventoryImpl.java (96%) rename inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/{inventory => }/CartographyInventoryImpl.java (95%) rename inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/{util => }/InventoryUtilsImpl.java (96%) rename inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/{util => }/ItemUtilsImpl.java (96%) rename inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/{util => }/PlayerUtilsImpl.java (97%) rename inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/{inventory => }/AnvilInventoryImpl.java (96%) rename inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/{inventory => }/CartographyInventoryImpl.java (95%) rename inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/{util => }/InventoryUtilsImpl.java (96%) rename inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/{util => }/ItemUtilsImpl.java (96%) rename inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/{util => }/PlayerUtilsImpl.java (97%) rename inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/{inventory => }/AnvilInventoryImpl.java (96%) rename inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/{inventory => }/CartographyInventoryImpl.java (94%) rename inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/{util => }/InventoryUtilsImpl.java (96%) rename inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/{util => }/ItemUtilsImpl.java (97%) rename inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/{util => }/PlayerUtilsImpl.java (96%) rename inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/{inventory => }/AnvilInventoryImpl.java (96%) rename inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/{inventory => }/CartographyInventoryImpl.java (94%) rename inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/{util => }/InventoryUtilsImpl.java (96%) rename inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/{util => }/ItemUtilsImpl.java (97%) rename inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/{util => }/PlayerUtilsImpl.java (96%) rename inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/{inventory => }/AnvilInventoryImpl.java (96%) rename inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/{inventory => }/CartographyInventoryImpl.java (94%) rename inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/{util => }/InventoryUtilsImpl.java (96%) rename inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/{util => }/ItemUtilsImpl.java (97%) rename inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/{util => }/PlayerUtilsImpl.java (96%) rename inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/{inventory => }/AnvilInventoryImpl.java (96%) rename inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/{inventory => }/CartographyInventoryImpl.java (94%) rename inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/{util => }/InventoryUtilsImpl.java (96%) rename inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/{util => }/ItemUtilsImpl.java (97%) rename inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/{util => }/PlayerUtilsImpl.java (96%) rename inventoryaccess/inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/{inventory => }/AnvilInventoryImpl.java (96%) rename inventoryaccess/inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/{inventory => }/CartographyInventoryImpl.java (95%) rename inventoryaccess/{inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/util => inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6}/InventoryUtilsImpl.java (96%) rename inventoryaccess/{inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/util => inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6}/ItemUtilsImpl.java (97%) rename inventoryaccess/inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/{util => }/PlayerUtilsImpl.java (97%) rename inventoryaccess/inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/{inventory => }/AnvilInventoryImpl.java (97%) rename inventoryaccess/inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/{inventory => }/CartographyInventoryImpl.java (95%) rename inventoryaccess/{inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/util => inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7}/InventoryUtilsImpl.java (96%) rename inventoryaccess/{inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/util => inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7}/ItemUtilsImpl.java (97%) rename inventoryaccess/inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/{util => }/PlayerUtilsImpl.java (97%) rename inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/{inventory => }/AnvilInventoryImpl.java (97%) rename inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/{inventory => }/CartographyInventoryImpl.java (95%) rename inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/{util => }/InventoryUtilsImpl.java (96%) rename inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/{util => }/ItemUtilsImpl.java (97%) rename inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/{util => }/PlayerUtilsImpl.java (97%) rename inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/{inventory => }/AnvilInventoryImpl.java (97%) rename inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/{inventory => }/CartographyInventoryImpl.java (95%) rename inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/{util => }/InventoryUtilsImpl.java (96%) rename inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/{util => }/ItemUtilsImpl.java (97%) rename inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/{util => }/PlayerUtilsImpl.java (97%) rename inventoryaccess/inventory-access/src/main/java/de/studiocode/inventoryaccess/{version => }/InventoryAccess.java (90%) rename invui/src/main/java/de/studiocode/invui/gui/{impl/BaseGUI.java => AbstractGUI.java} (91%) create mode 100644 invui/src/main/java/de/studiocode/invui/gui/AbstractPagedGUI.java rename invui/src/main/java/de/studiocode/invui/gui/{impl/ScrollGUI.java => AbstractScrollGUI.java} (60%) rename invui/src/main/java/de/studiocode/invui/gui/{impl/TabGUI.java => AbstractTabGUI.java} (53%) delete mode 100644 invui/src/main/java/de/studiocode/invui/gui/Controllable.java create mode 100644 invui/src/main/java/de/studiocode/invui/gui/PagedGUI.java create mode 100644 invui/src/main/java/de/studiocode/invui/gui/ScrollGUI.java create mode 100644 invui/src/main/java/de/studiocode/invui/gui/TabGUI.java rename invui/src/main/java/de/studiocode/invui/gui/impl/{SimpleGUI.java => NormalGUIImpl.java} (65%) create mode 100644 invui/src/main/java/de/studiocode/invui/gui/impl/PageNestedGUIImpl.java delete mode 100644 invui/src/main/java/de/studiocode/invui/gui/impl/PagedGUI.java create mode 100644 invui/src/main/java/de/studiocode/invui/gui/impl/PagedItemsGUIImpl.java rename invui/src/main/java/de/studiocode/invui/gui/impl/{SimpleScrollItemsGUI.java => ScrollItemsGUIImpl.java} (64%) rename invui/src/main/java/de/studiocode/invui/gui/impl/{SimpleScrollNestedGUI.java => ScrollNestedGUIImpl.java} (62%) create mode 100644 invui/src/main/java/de/studiocode/invui/gui/impl/ScrollVIGUIImpl.java delete mode 100644 invui/src/main/java/de/studiocode/invui/gui/impl/SimplePagedItemsGUI.java delete mode 100644 invui/src/main/java/de/studiocode/invui/gui/impl/SimplePagedNestedGUI.java delete mode 100644 invui/src/main/java/de/studiocode/invui/gui/impl/SimpleScrollVIGUI.java rename invui/src/main/java/de/studiocode/invui/gui/impl/{SimpleTabGUI.java => TabGUIImpl.java} (59%) rename invui/src/main/java/de/studiocode/invui/{map => util}/ColorPalette.java (94%) rename invui/src/main/java/de/studiocode/invui/window/{impl/merged/MergedWindow.java => AbstractDoubleWindow.java} (87%) rename invui/src/main/java/de/studiocode/invui/window/{impl/merged/combined/CombinedWindow.java => AbstractMergedWindow.java} (69%) rename invui/src/main/java/de/studiocode/invui/window/{impl/single/SingleWindow.java => AbstractSingleWindow.java} (81%) rename invui/src/main/java/de/studiocode/invui/window/{impl/merged/split/SplitWindow.java => AbstractSplitWindow.java} (71%) rename invui/src/main/java/de/studiocode/invui/window/{impl/BaseWindow.java => AbstractWindow.java} (83%) create mode 100644 invui/src/main/java/de/studiocode/invui/window/AnvilWindow.java create mode 100644 invui/src/main/java/de/studiocode/invui/window/CartographyWindow.java create mode 100644 invui/src/main/java/de/studiocode/invui/window/impl/AnvilSingleWindowImpl.java create mode 100644 invui/src/main/java/de/studiocode/invui/window/impl/AnvilSplitWindowImpl.java rename invui/src/main/java/de/studiocode/invui/window/impl/{single/CartographyWindow.java => CartographySingleWindowImpl.java} (56%) create mode 100644 invui/src/main/java/de/studiocode/invui/window/impl/CartographySplitWindowImpl.java create mode 100644 invui/src/main/java/de/studiocode/invui/window/impl/NormalMergedWindowImpl.java create mode 100644 invui/src/main/java/de/studiocode/invui/window/impl/NormalSingleWindowImpl.java create mode 100644 invui/src/main/java/de/studiocode/invui/window/impl/NormalSplitWindowImpl.java delete mode 100644 invui/src/main/java/de/studiocode/invui/window/impl/merged/combined/SimpleCombinedWindow.java delete mode 100644 invui/src/main/java/de/studiocode/invui/window/impl/merged/split/AnvilSplitWindow.java delete mode 100644 invui/src/main/java/de/studiocode/invui/window/impl/merged/split/CartographySplitWindow.java delete mode 100644 invui/src/main/java/de/studiocode/invui/window/impl/merged/split/SimpleSplitWindow.java delete mode 100644 invui/src/main/java/de/studiocode/invui/window/impl/single/AnvilWindow.java delete mode 100644 invui/src/main/java/de/studiocode/invui/window/impl/single/SimpleWindow.java create mode 100644 invui/src/main/java/de/studiocode/invui/window/type/WindowType.java create mode 100644 invui/src/main/java/de/studiocode/invui/window/type/context/AbstractWindowContext.java create mode 100644 invui/src/main/java/de/studiocode/invui/window/type/context/AnvilSingleWindowContext.java create mode 100644 invui/src/main/java/de/studiocode/invui/window/type/context/AnvilSplitWindowContext.java create mode 100644 invui/src/main/java/de/studiocode/invui/window/type/context/CartographySingleWindowContext.java create mode 100644 invui/src/main/java/de/studiocode/invui/window/type/context/CartographySplitWindowContext.java create mode 100644 invui/src/main/java/de/studiocode/invui/window/type/context/NormalCombinedWindowContext.java create mode 100644 invui/src/main/java/de/studiocode/invui/window/type/context/NormalSingleWindowContext.java create mode 100644 invui/src/main/java/de/studiocode/invui/window/type/context/NormalSplitWindowContext.java create mode 100644 invui/src/main/java/de/studiocode/invui/window/type/context/WindowContext.java diff --git a/inventoryaccess/inventory-access-r1/pom.xml b/inventoryaccess/inventory-access-r1/pom.xml index 83ace65..93d69ce 100644 --- a/inventoryaccess/inventory-access-r1/pom.xml +++ b/inventoryaccess/inventory-access-r1/pom.xml @@ -5,7 +5,7 @@ de.studiocode.invui InvUI-Parent - 0.10.2 + 1.0-SNAPSHOT ../../pom.xml 4.0.0 diff --git a/inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/inventory/AnvilInventoryImpl.java b/inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/AnvilInventoryImpl.java similarity index 96% rename from inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/inventory/AnvilInventoryImpl.java rename to inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/AnvilInventoryImpl.java index 77dbb6f..089fd7d 100644 --- a/inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/inventory/AnvilInventoryImpl.java +++ b/inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/AnvilInventoryImpl.java @@ -1,8 +1,7 @@ -package de.studiocode.inventoryaccess.r1.inventory; +package de.studiocode.inventoryaccess.r1; import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.inventoryaccess.r1.util.InventoryUtilsImpl; import de.studiocode.inventoryaccess.util.ReflectionUtils; import net.minecraft.server.v1_14_R1.*; import org.bukkit.craftbukkit.v1_14_R1.entity.CraftPlayer; @@ -18,7 +17,7 @@ import org.jetbrains.annotations.NotNull; import java.lang.reflect.Field; import java.util.function.Consumer; -public class AnvilInventoryImpl extends ContainerAnvil implements AnvilInventory { +class AnvilInventoryImpl extends ContainerAnvil implements AnvilInventory { private static final Field CONTAINER_ACCESS_FIELD = ReflectionUtils.getField(ContainerAnvil.class, true, "containerAccess"); private static final Field REPAIR_INVENTORY_FIELD = ReflectionUtils.getField(ContainerAnvil.class, true, "repairInventory"); diff --git a/inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/inventory/CartographyInventoryImpl.java b/inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/CartographyInventoryImpl.java similarity index 94% rename from inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/inventory/CartographyInventoryImpl.java rename to inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/CartographyInventoryImpl.java index 8a35841..25acb5a 100644 --- a/inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/inventory/CartographyInventoryImpl.java +++ b/inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/CartographyInventoryImpl.java @@ -1,8 +1,7 @@ -package de.studiocode.inventoryaccess.r1.inventory; +package de.studiocode.inventoryaccess.r1; import de.studiocode.inventoryaccess.abstraction.inventory.CartographyInventory; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.inventoryaccess.r1.util.InventoryUtilsImpl; import de.studiocode.inventoryaccess.util.ReflectionUtils; import net.minecraft.server.v1_14_R1.*; import org.bukkit.craftbukkit.v1_14_R1.entity.CraftPlayer; @@ -16,7 +15,7 @@ import org.jetbrains.annotations.NotNull; import java.lang.reflect.Field; -public class CartographyInventoryImpl extends ContainerCartography implements CartographyInventory { +class CartographyInventoryImpl extends ContainerCartography implements CartographyInventory { private static final Field RESULT_CONTAINER_FIELD = ReflectionUtils.getField(ContainerCartography.class, true, "resultInventory"); diff --git a/inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/util/InventoryUtilsImpl.java b/inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/InventoryUtilsImpl.java similarity index 97% rename from inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/util/InventoryUtilsImpl.java rename to inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/InventoryUtilsImpl.java index 3b3ec69..2137b3f 100644 --- a/inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/util/InventoryUtilsImpl.java +++ b/inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/InventoryUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r1.util; +package de.studiocode.inventoryaccess.r1; import de.studiocode.inventoryaccess.abstraction.util.InventoryUtils; import de.studiocode.inventoryaccess.component.ComponentWrapper; @@ -13,7 +13,7 @@ import org.bukkit.inventory.Inventory; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class InventoryUtilsImpl implements InventoryUtils { +class InventoryUtilsImpl implements InventoryUtils { private static Containers getNotchInventoryType(Inventory inventory) { InventoryType type = inventory.getType(); diff --git a/inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/util/ItemUtilsImpl.java b/inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/ItemUtilsImpl.java similarity index 97% rename from inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/util/ItemUtilsImpl.java rename to inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/ItemUtilsImpl.java index c891a9e..4cbbb31 100644 --- a/inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/util/ItemUtilsImpl.java +++ b/inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/ItemUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r1.util; +package de.studiocode.inventoryaccess.r1; import de.studiocode.inventoryaccess.abstraction.util.ItemUtils; import de.studiocode.inventoryaccess.component.ComponentWrapper; @@ -15,7 +15,7 @@ import java.io.*; import java.util.List; import java.util.stream.Collectors; -public class ItemUtilsImpl implements ItemUtils { +class ItemUtilsImpl implements ItemUtils { @Override public byte[] serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, boolean compressed) { diff --git a/inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/util/PlayerUtilsImpl.java b/inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/PlayerUtilsImpl.java similarity index 96% rename from inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/util/PlayerUtilsImpl.java rename to inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/PlayerUtilsImpl.java index 92dbc62..30c54f3 100644 --- a/inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/util/PlayerUtilsImpl.java +++ b/inventoryaccess/inventory-access-r1/src/main/java/de/studiocode/inventoryaccess/r1/PlayerUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r1.util; +package de.studiocode.inventoryaccess.r1; import de.studiocode.inventoryaccess.abstraction.util.PlayerUtils; import de.studiocode.inventoryaccess.map.MapPatch; @@ -17,7 +17,7 @@ import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; -public class PlayerUtilsImpl implements PlayerUtils { +class PlayerUtilsImpl implements PlayerUtils { private static final Method REGISTER_LISTENERS_METHOD = ReflectionUtils.getMethod(AdvancementDataPlayer.class, true, "d"); diff --git a/inventoryaccess/inventory-access-r10/pom.xml b/inventoryaccess/inventory-access-r10/pom.xml index f2217b9..60da2aa 100644 --- a/inventoryaccess/inventory-access-r10/pom.xml +++ b/inventoryaccess/inventory-access-r10/pom.xml @@ -5,7 +5,7 @@ de.studiocode.invui InvUI-Parent - 0.10.2 + 1.0-SNAPSHOT ../../pom.xml 4.0.0 diff --git a/inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/inventory/AnvilInventoryImpl.java b/inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/AnvilInventoryImpl.java similarity index 96% rename from inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/inventory/AnvilInventoryImpl.java rename to inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/AnvilInventoryImpl.java index 431faa0..34cc61c 100644 --- a/inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/inventory/AnvilInventoryImpl.java +++ b/inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/AnvilInventoryImpl.java @@ -1,8 +1,7 @@ -package de.studiocode.inventoryaccess.r10.inventory; +package de.studiocode.inventoryaccess.r10; import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.inventoryaccess.r10.util.InventoryUtilsImpl; import net.minecraft.core.BlockPos; import net.minecraft.core.NonNullList; import net.minecraft.network.chat.Component; @@ -28,7 +27,7 @@ import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; -public class AnvilInventoryImpl extends AnvilMenu implements AnvilInventory { +class AnvilInventoryImpl extends AnvilMenu implements AnvilInventory { private final Component title; private final Consumer renameHandler; diff --git a/inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/inventory/CartographyInventoryImpl.java b/inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/CartographyInventoryImpl.java similarity index 95% rename from inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/inventory/CartographyInventoryImpl.java rename to inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/CartographyInventoryImpl.java index cfa1bc0..4038c48 100644 --- a/inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/inventory/CartographyInventoryImpl.java +++ b/inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/CartographyInventoryImpl.java @@ -1,8 +1,7 @@ -package de.studiocode.inventoryaccess.r10.inventory; +package de.studiocode.inventoryaccess.r10; import de.studiocode.inventoryaccess.abstraction.inventory.CartographyInventory; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.inventoryaccess.r10.util.InventoryUtilsImpl; import de.studiocode.inventoryaccess.util.ReflectionUtils; import net.minecraft.core.BlockPos; import net.minecraft.core.NonNullList; @@ -25,7 +24,7 @@ import org.jetbrains.annotations.NotNull; import java.lang.reflect.Field; -public class CartographyInventoryImpl extends CartographyTableMenu implements CartographyInventory { +class CartographyInventoryImpl extends CartographyTableMenu implements CartographyInventory { private static final Field RESULT_CONTAINER_FIELD = ReflectionUtils.getField( CartographyTableMenu.class, diff --git a/inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/util/InventoryUtilsImpl.java b/inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/InventoryUtilsImpl.java similarity index 96% rename from inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/util/InventoryUtilsImpl.java rename to inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/InventoryUtilsImpl.java index 874af38..b1c537d 100644 --- a/inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/util/InventoryUtilsImpl.java +++ b/inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/InventoryUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r10.util; +package de.studiocode.inventoryaccess.r10; import de.studiocode.inventoryaccess.abstraction.util.InventoryUtils; import de.studiocode.inventoryaccess.component.ComponentWrapper; @@ -19,7 +19,7 @@ import org.bukkit.inventory.Inventory; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class InventoryUtilsImpl implements InventoryUtils { +class InventoryUtilsImpl implements InventoryUtils { public static Component createNMSComponent(ComponentWrapper component) { if (component == null) return null; diff --git a/inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/util/ItemUtilsImpl.java b/inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/ItemUtilsImpl.java similarity index 96% rename from inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/util/ItemUtilsImpl.java rename to inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/ItemUtilsImpl.java index 46d99b9..9b2c5d3 100644 --- a/inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/util/ItemUtilsImpl.java +++ b/inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/ItemUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r10.util; +package de.studiocode.inventoryaccess.r10; import de.studiocode.inventoryaccess.abstraction.util.ItemUtils; import de.studiocode.inventoryaccess.component.ComponentWrapper; @@ -15,7 +15,7 @@ import java.io.*; import java.util.List; import java.util.stream.Collectors; -public class ItemUtilsImpl implements ItemUtils { +class ItemUtilsImpl implements ItemUtils { @Override public byte[] serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, boolean compressed) { diff --git a/inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/util/PlayerUtilsImpl.java b/inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/PlayerUtilsImpl.java similarity index 97% rename from inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/util/PlayerUtilsImpl.java rename to inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/PlayerUtilsImpl.java index 09503f3..c661b1c 100644 --- a/inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/util/PlayerUtilsImpl.java +++ b/inventoryaccess/inventory-access-r10/src/main/java/de/studiocode/inventoryaccess/r10/PlayerUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r10.util; +package de.studiocode.inventoryaccess.r10; import de.studiocode.inventoryaccess.abstraction.util.PlayerUtils; import de.studiocode.inventoryaccess.component.ComponentWrapper; @@ -25,7 +25,7 @@ import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; -public class PlayerUtilsImpl implements PlayerUtils { +class PlayerUtilsImpl implements PlayerUtils { private static final Method REGISTER_LISTENERS_METHOD = ReflectionUtils.getMethod( PlayerAdvancements.class, diff --git a/inventoryaccess/inventory-access-r11/pom.xml b/inventoryaccess/inventory-access-r11/pom.xml index 75a9a46..893d96a 100644 --- a/inventoryaccess/inventory-access-r11/pom.xml +++ b/inventoryaccess/inventory-access-r11/pom.xml @@ -5,7 +5,7 @@ de.studiocode.invui InvUI-Parent - 0.10.2 + 1.0-SNAPSHOT ../../pom.xml 4.0.0 diff --git a/inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/inventory/AnvilInventoryImpl.java b/inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/AnvilInventoryImpl.java similarity index 96% rename from inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/inventory/AnvilInventoryImpl.java rename to inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/AnvilInventoryImpl.java index 6875794..8d1fae5 100644 --- a/inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/inventory/AnvilInventoryImpl.java +++ b/inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/AnvilInventoryImpl.java @@ -1,8 +1,7 @@ -package de.studiocode.inventoryaccess.r11.inventory; +package de.studiocode.inventoryaccess.r11; import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.inventoryaccess.r11.util.InventoryUtilsImpl; import net.minecraft.core.BlockPos; import net.minecraft.core.NonNullList; import net.minecraft.network.chat.Component; @@ -28,7 +27,7 @@ import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; -public class AnvilInventoryImpl extends AnvilMenu implements AnvilInventory { +class AnvilInventoryImpl extends AnvilMenu implements AnvilInventory { private final Component title; private final Consumer renameHandler; diff --git a/inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/inventory/CartographyInventoryImpl.java b/inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/CartographyInventoryImpl.java similarity index 95% rename from inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/inventory/CartographyInventoryImpl.java rename to inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/CartographyInventoryImpl.java index d08bfc8..3a7b038 100644 --- a/inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/inventory/CartographyInventoryImpl.java +++ b/inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/CartographyInventoryImpl.java @@ -1,8 +1,7 @@ -package de.studiocode.inventoryaccess.r11.inventory; +package de.studiocode.inventoryaccess.r11; import de.studiocode.inventoryaccess.abstraction.inventory.CartographyInventory; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.inventoryaccess.r11.util.InventoryUtilsImpl; import de.studiocode.inventoryaccess.util.ReflectionUtils; import net.minecraft.core.BlockPos; import net.minecraft.core.NonNullList; @@ -25,7 +24,7 @@ import org.jetbrains.annotations.NotNull; import java.lang.reflect.Field; -public class CartographyInventoryImpl extends CartographyTableMenu implements CartographyInventory { +class CartographyInventoryImpl extends CartographyTableMenu implements CartographyInventory { private static final Field RESULT_CONTAINER_FIELD = ReflectionUtils.getField( CartographyTableMenu.class, diff --git a/inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/util/InventoryUtilsImpl.java b/inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/InventoryUtilsImpl.java similarity index 96% rename from inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/util/InventoryUtilsImpl.java rename to inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/InventoryUtilsImpl.java index 7b65119..66b0f00 100644 --- a/inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/util/InventoryUtilsImpl.java +++ b/inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/InventoryUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r11.util; +package de.studiocode.inventoryaccess.r11; import de.studiocode.inventoryaccess.abstraction.util.InventoryUtils; import de.studiocode.inventoryaccess.component.ComponentWrapper; @@ -19,7 +19,7 @@ import org.bukkit.inventory.Inventory; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class InventoryUtilsImpl implements InventoryUtils { +class InventoryUtilsImpl implements InventoryUtils { public static Component createNMSComponent(ComponentWrapper component) { if (component == null) return null; diff --git a/inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/util/ItemUtilsImpl.java b/inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/ItemUtilsImpl.java similarity index 96% rename from inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/util/ItemUtilsImpl.java rename to inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/ItemUtilsImpl.java index 7079f74..557af59 100644 --- a/inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/util/ItemUtilsImpl.java +++ b/inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/ItemUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r11.util; +package de.studiocode.inventoryaccess.r11; import de.studiocode.inventoryaccess.abstraction.util.ItemUtils; import de.studiocode.inventoryaccess.component.ComponentWrapper; @@ -15,7 +15,7 @@ import java.io.*; import java.util.List; import java.util.stream.Collectors; -public class ItemUtilsImpl implements ItemUtils { +class ItemUtilsImpl implements ItemUtils { @Override public byte[] serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, boolean compressed) { diff --git a/inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/util/PlayerUtilsImpl.java b/inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/PlayerUtilsImpl.java similarity index 97% rename from inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/util/PlayerUtilsImpl.java rename to inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/PlayerUtilsImpl.java index b72e66b..6039038 100644 --- a/inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/util/PlayerUtilsImpl.java +++ b/inventoryaccess/inventory-access-r11/src/main/java/de/studiocode/inventoryaccess/r11/PlayerUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r11.util; +package de.studiocode.inventoryaccess.r11; import de.studiocode.inventoryaccess.abstraction.util.PlayerUtils; import de.studiocode.inventoryaccess.component.ComponentWrapper; @@ -25,7 +25,7 @@ import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; -public class PlayerUtilsImpl implements PlayerUtils { +class PlayerUtilsImpl implements PlayerUtils { private static final Method REGISTER_LISTENERS_METHOD = ReflectionUtils.getMethod( PlayerAdvancements.class, diff --git a/inventoryaccess/inventory-access-r12/pom.xml b/inventoryaccess/inventory-access-r12/pom.xml index 372f9d1..a7e79dc 100644 --- a/inventoryaccess/inventory-access-r12/pom.xml +++ b/inventoryaccess/inventory-access-r12/pom.xml @@ -5,7 +5,7 @@ de.studiocode.invui InvUI-Parent - 0.10.2 + 1.0-SNAPSHOT ../../pom.xml 4.0.0 diff --git a/inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/inventory/AnvilInventoryImpl.java b/inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/AnvilInventoryImpl.java similarity index 96% rename from inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/inventory/AnvilInventoryImpl.java rename to inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/AnvilInventoryImpl.java index 71fa8b9..c503779 100644 --- a/inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/inventory/AnvilInventoryImpl.java +++ b/inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/AnvilInventoryImpl.java @@ -1,8 +1,7 @@ -package de.studiocode.inventoryaccess.r12.inventory; +package de.studiocode.inventoryaccess.r12; import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.inventoryaccess.r12.util.InventoryUtilsImpl; import net.minecraft.core.BlockPos; import net.minecraft.core.NonNullList; import net.minecraft.network.chat.Component; @@ -28,7 +27,7 @@ import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; -public class AnvilInventoryImpl extends AnvilMenu implements AnvilInventory { +class AnvilInventoryImpl extends AnvilMenu implements AnvilInventory { private final Component title; private final Consumer renameHandler; diff --git a/inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/inventory/CartographyInventoryImpl.java b/inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/CartographyInventoryImpl.java similarity index 95% rename from inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/inventory/CartographyInventoryImpl.java rename to inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/CartographyInventoryImpl.java index 7c4e76c..16060b9 100644 --- a/inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/inventory/CartographyInventoryImpl.java +++ b/inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/CartographyInventoryImpl.java @@ -1,8 +1,7 @@ -package de.studiocode.inventoryaccess.r12.inventory; +package de.studiocode.inventoryaccess.r12; import de.studiocode.inventoryaccess.abstraction.inventory.CartographyInventory; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.inventoryaccess.r12.util.InventoryUtilsImpl; import de.studiocode.inventoryaccess.util.ReflectionUtils; import net.minecraft.core.BlockPos; import net.minecraft.core.NonNullList; @@ -25,7 +24,7 @@ import org.jetbrains.annotations.NotNull; import java.lang.reflect.Field; -public class CartographyInventoryImpl extends CartographyTableMenu implements CartographyInventory { +class CartographyInventoryImpl extends CartographyTableMenu implements CartographyInventory { private static final Field RESULT_CONTAINER_FIELD = ReflectionUtils.getField( CartographyTableMenu.class, diff --git a/inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/util/InventoryUtilsImpl.java b/inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/InventoryUtilsImpl.java similarity index 96% rename from inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/util/InventoryUtilsImpl.java rename to inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/InventoryUtilsImpl.java index 67c257f..876358b 100644 --- a/inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/util/InventoryUtilsImpl.java +++ b/inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/InventoryUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r12.util; +package de.studiocode.inventoryaccess.r12; import de.studiocode.inventoryaccess.abstraction.util.InventoryUtils; import de.studiocode.inventoryaccess.component.ComponentWrapper; @@ -19,7 +19,7 @@ import org.bukkit.inventory.Inventory; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class InventoryUtilsImpl implements InventoryUtils { +class InventoryUtilsImpl implements InventoryUtils { public static Component createNMSComponent(ComponentWrapper component) { if (component == null) return null; diff --git a/inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/util/ItemUtilsImpl.java b/inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/ItemUtilsImpl.java similarity index 96% rename from inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/util/ItemUtilsImpl.java rename to inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/ItemUtilsImpl.java index 9efeebc..15aecb9 100644 --- a/inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/util/ItemUtilsImpl.java +++ b/inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/ItemUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r12.util; +package de.studiocode.inventoryaccess.r12; import de.studiocode.inventoryaccess.abstraction.util.ItemUtils; import de.studiocode.inventoryaccess.component.ComponentWrapper; @@ -15,7 +15,7 @@ import java.io.*; import java.util.List; import java.util.stream.Collectors; -public class ItemUtilsImpl implements ItemUtils { +class ItemUtilsImpl implements ItemUtils { @Override public byte[] serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, boolean compressed) { diff --git a/inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/util/PlayerUtilsImpl.java b/inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/PlayerUtilsImpl.java similarity index 97% rename from inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/util/PlayerUtilsImpl.java rename to inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/PlayerUtilsImpl.java index c6f6e8e..6afe88a 100644 --- a/inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/util/PlayerUtilsImpl.java +++ b/inventoryaccess/inventory-access-r12/src/main/java/de/studiocode/inventoryaccess/r12/PlayerUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r12.util; +package de.studiocode.inventoryaccess.r12; import de.studiocode.inventoryaccess.abstraction.util.PlayerUtils; import de.studiocode.inventoryaccess.component.ComponentWrapper; @@ -25,7 +25,7 @@ import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; -public class PlayerUtilsImpl implements PlayerUtils { +class PlayerUtilsImpl implements PlayerUtils { private static final Method REGISTER_LISTENERS_METHOD = ReflectionUtils.getMethod( PlayerAdvancements.class, diff --git a/inventoryaccess/inventory-access-r2/pom.xml b/inventoryaccess/inventory-access-r2/pom.xml index c73dede..5b256c6 100644 --- a/inventoryaccess/inventory-access-r2/pom.xml +++ b/inventoryaccess/inventory-access-r2/pom.xml @@ -5,7 +5,7 @@ de.studiocode.invui InvUI-Parent - 0.10.2 + 1.0-SNAPSHOT ../../pom.xml 4.0.0 diff --git a/inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/inventory/AnvilInventoryImpl.java b/inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/AnvilInventoryImpl.java similarity index 96% rename from inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/inventory/AnvilInventoryImpl.java rename to inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/AnvilInventoryImpl.java index 23b2f21..87f923e 100644 --- a/inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/inventory/AnvilInventoryImpl.java +++ b/inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/AnvilInventoryImpl.java @@ -1,8 +1,7 @@ -package de.studiocode.inventoryaccess.r2.inventory; +package de.studiocode.inventoryaccess.r2; import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.inventoryaccess.r2.util.InventoryUtilsImpl; import de.studiocode.inventoryaccess.util.ReflectionUtils; import net.minecraft.server.v1_15_R1.*; import org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer; @@ -18,7 +17,7 @@ import org.jetbrains.annotations.NotNull; import java.lang.reflect.Field; import java.util.function.Consumer; -public class AnvilInventoryImpl extends ContainerAnvil implements AnvilInventory { +class AnvilInventoryImpl extends ContainerAnvil implements AnvilInventory { private static final Field CONTAINER_ACCESS_FIELD = ReflectionUtils.getField(ContainerAnvil.class, true, "containerAccess"); private static final Field REPAIR_INVENTORY_FIELD = ReflectionUtils.getField(ContainerAnvil.class, true, "repairInventory"); diff --git a/inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/inventory/CartographyInventoryImpl.java b/inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/CartographyInventoryImpl.java similarity index 94% rename from inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/inventory/CartographyInventoryImpl.java rename to inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/CartographyInventoryImpl.java index 6ea9779..9cfdc91 100644 --- a/inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/inventory/CartographyInventoryImpl.java +++ b/inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/CartographyInventoryImpl.java @@ -1,8 +1,7 @@ -package de.studiocode.inventoryaccess.r2.inventory; +package de.studiocode.inventoryaccess.r2; import de.studiocode.inventoryaccess.abstraction.inventory.CartographyInventory; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.inventoryaccess.r2.util.InventoryUtilsImpl; import de.studiocode.inventoryaccess.util.ReflectionUtils; import net.minecraft.server.v1_15_R1.*; import org.bukkit.craftbukkit.v1_15_R1.entity.CraftPlayer; @@ -16,7 +15,7 @@ import org.jetbrains.annotations.NotNull; import java.lang.reflect.Field; -public class CartographyInventoryImpl extends ContainerCartography implements CartographyInventory { +class CartographyInventoryImpl extends ContainerCartography implements CartographyInventory { private static final Field RESULT_CONTAINER_FIELD = ReflectionUtils.getField(ContainerCartography.class, true, "resultInventory"); diff --git a/inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/util/InventoryUtilsImpl.java b/inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/InventoryUtilsImpl.java similarity index 96% rename from inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/util/InventoryUtilsImpl.java rename to inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/InventoryUtilsImpl.java index 40c1554..54ee04f 100644 --- a/inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/util/InventoryUtilsImpl.java +++ b/inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/InventoryUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r2.util; +package de.studiocode.inventoryaccess.r2; import de.studiocode.inventoryaccess.abstraction.util.InventoryUtils; import de.studiocode.inventoryaccess.component.ComponentWrapper; @@ -12,7 +12,7 @@ import org.bukkit.inventory.Inventory; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class InventoryUtilsImpl implements InventoryUtils { +class InventoryUtilsImpl implements InventoryUtils { public static IChatBaseComponent createNMSComponent(ComponentWrapper component) { return IChatBaseComponent.ChatSerializer.a(component.serializeToJson()); diff --git a/inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/util/ItemUtilsImpl.java b/inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/ItemUtilsImpl.java similarity index 97% rename from inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/util/ItemUtilsImpl.java rename to inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/ItemUtilsImpl.java index 5144568..b7ed67e 100644 --- a/inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/util/ItemUtilsImpl.java +++ b/inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/ItemUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r2.util; +package de.studiocode.inventoryaccess.r2; import de.studiocode.inventoryaccess.abstraction.util.ItemUtils; import de.studiocode.inventoryaccess.component.ComponentWrapper; @@ -15,7 +15,7 @@ import java.io.*; import java.util.List; import java.util.stream.Collectors; -public class ItemUtilsImpl implements ItemUtils { +class ItemUtilsImpl implements ItemUtils { @Override public byte[] serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, boolean compressed) { diff --git a/inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/util/PlayerUtilsImpl.java b/inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/PlayerUtilsImpl.java similarity index 96% rename from inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/util/PlayerUtilsImpl.java rename to inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/PlayerUtilsImpl.java index 35e66c2..404f827 100644 --- a/inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/util/PlayerUtilsImpl.java +++ b/inventoryaccess/inventory-access-r2/src/main/java/de/studiocode/inventoryaccess/r2/PlayerUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r2.util; +package de.studiocode.inventoryaccess.r2; import de.studiocode.inventoryaccess.abstraction.util.PlayerUtils; import de.studiocode.inventoryaccess.map.MapPatch; @@ -17,7 +17,7 @@ import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; -public class PlayerUtilsImpl implements PlayerUtils { +class PlayerUtilsImpl implements PlayerUtils { private static final Method REGISTER_LISTENERS_METHOD = ReflectionUtils.getMethod(AdvancementDataPlayer.class, true, "d"); diff --git a/inventoryaccess/inventory-access-r3/pom.xml b/inventoryaccess/inventory-access-r3/pom.xml index a22f2c0..f26c535 100644 --- a/inventoryaccess/inventory-access-r3/pom.xml +++ b/inventoryaccess/inventory-access-r3/pom.xml @@ -5,7 +5,7 @@ de.studiocode.invui InvUI-Parent - 0.10.2 + 1.0-SNAPSHOT ../../pom.xml 4.0.0 diff --git a/inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/inventory/AnvilInventoryImpl.java b/inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/AnvilInventoryImpl.java similarity index 96% rename from inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/inventory/AnvilInventoryImpl.java rename to inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/AnvilInventoryImpl.java index 9229d82..e94d184 100644 --- a/inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/inventory/AnvilInventoryImpl.java +++ b/inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/AnvilInventoryImpl.java @@ -1,8 +1,7 @@ -package de.studiocode.inventoryaccess.r3.inventory; +package de.studiocode.inventoryaccess.r3; import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.inventoryaccess.r3.util.InventoryUtilsImpl; import net.minecraft.server.v1_16_R1.*; import org.bukkit.craftbukkit.v1_16_R1.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_16_R1.event.CraftEventFactory; @@ -16,7 +15,7 @@ import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; -public class AnvilInventoryImpl extends ContainerAnvil implements AnvilInventory { +class AnvilInventoryImpl extends ContainerAnvil implements AnvilInventory { private final IChatBaseComponent title; private final Consumer renameHandler; diff --git a/inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/inventory/CartographyInventoryImpl.java b/inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/CartographyInventoryImpl.java similarity index 94% rename from inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/inventory/CartographyInventoryImpl.java rename to inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/CartographyInventoryImpl.java index 420c87e..a4cdbba 100644 --- a/inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/inventory/CartographyInventoryImpl.java +++ b/inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/CartographyInventoryImpl.java @@ -1,8 +1,7 @@ -package de.studiocode.inventoryaccess.r3.inventory; +package de.studiocode.inventoryaccess.r3; import de.studiocode.inventoryaccess.abstraction.inventory.CartographyInventory; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.inventoryaccess.r3.util.InventoryUtilsImpl; import de.studiocode.inventoryaccess.util.ReflectionUtils; import net.minecraft.server.v1_16_R1.*; import org.bukkit.craftbukkit.v1_16_R1.entity.CraftPlayer; @@ -16,7 +15,7 @@ import org.jetbrains.annotations.NotNull; import java.lang.reflect.Field; -public class CartographyInventoryImpl extends ContainerCartography implements CartographyInventory { +class CartographyInventoryImpl extends ContainerCartography implements CartographyInventory { private static final Field RESULT_CONTAINER_FIELD = ReflectionUtils.getField(ContainerCartography.class, true, "resultInventory"); diff --git a/inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/util/InventoryUtilsImpl.java b/inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/InventoryUtilsImpl.java similarity index 96% rename from inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/util/InventoryUtilsImpl.java rename to inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/InventoryUtilsImpl.java index 0b60dfb..a29ba0a 100644 --- a/inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/util/InventoryUtilsImpl.java +++ b/inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/InventoryUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r3.util; +package de.studiocode.inventoryaccess.r3; import de.studiocode.inventoryaccess.abstraction.util.InventoryUtils; import de.studiocode.inventoryaccess.component.ComponentWrapper; @@ -13,7 +13,7 @@ import org.bukkit.inventory.Inventory; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class InventoryUtilsImpl implements InventoryUtils { +class InventoryUtilsImpl implements InventoryUtils { public static IChatBaseComponent createNMSComponent(ComponentWrapper component) { return IChatBaseComponent.ChatSerializer.a(component.serializeToJson()); diff --git a/inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/util/ItemUtilsImpl.java b/inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/ItemUtilsImpl.java similarity index 97% rename from inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/util/ItemUtilsImpl.java rename to inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/ItemUtilsImpl.java index fe4aadd..e549d0a 100644 --- a/inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/util/ItemUtilsImpl.java +++ b/inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/ItemUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r3.util; +package de.studiocode.inventoryaccess.r3; import de.studiocode.inventoryaccess.abstraction.util.ItemUtils; import de.studiocode.inventoryaccess.component.ComponentWrapper; @@ -15,7 +15,7 @@ import java.io.*; import java.util.List; import java.util.stream.Collectors; -public class ItemUtilsImpl implements ItemUtils { +class ItemUtilsImpl implements ItemUtils { @Override public byte[] serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, boolean compressed) { diff --git a/inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/util/PlayerUtilsImpl.java b/inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/PlayerUtilsImpl.java similarity index 96% rename from inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/util/PlayerUtilsImpl.java rename to inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/PlayerUtilsImpl.java index cff9df1..e642033 100644 --- a/inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/util/PlayerUtilsImpl.java +++ b/inventoryaccess/inventory-access-r3/src/main/java/de/studiocode/inventoryaccess/r3/PlayerUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r3.util; +package de.studiocode.inventoryaccess.r3; import de.studiocode.inventoryaccess.abstraction.util.PlayerUtils; import de.studiocode.inventoryaccess.map.MapPatch; @@ -16,7 +16,7 @@ import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; -public class PlayerUtilsImpl implements PlayerUtils { +class PlayerUtilsImpl implements PlayerUtils { private static final Method REGISTER_LISTENERS_METHOD = ReflectionUtils.getMethod(AdvancementDataPlayer.class, true, "b", AdvancementDataWorld.class); diff --git a/inventoryaccess/inventory-access-r4/pom.xml b/inventoryaccess/inventory-access-r4/pom.xml index c3dc7b0..d51e8c2 100644 --- a/inventoryaccess/inventory-access-r4/pom.xml +++ b/inventoryaccess/inventory-access-r4/pom.xml @@ -5,7 +5,7 @@ de.studiocode.invui InvUI-Parent - 0.10.2 + 1.0-SNAPSHOT ../../pom.xml 4.0.0 diff --git a/inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/inventory/AnvilInventoryImpl.java b/inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/AnvilInventoryImpl.java similarity index 96% rename from inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/inventory/AnvilInventoryImpl.java rename to inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/AnvilInventoryImpl.java index c1418af..f711d78 100644 --- a/inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/inventory/AnvilInventoryImpl.java +++ b/inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/AnvilInventoryImpl.java @@ -1,8 +1,7 @@ -package de.studiocode.inventoryaccess.r4.inventory; +package de.studiocode.inventoryaccess.r4; import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.inventoryaccess.r4.util.InventoryUtilsImpl; import net.minecraft.server.v1_16_R2.*; import org.bukkit.craftbukkit.v1_16_R2.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_16_R2.event.CraftEventFactory; @@ -16,7 +15,7 @@ import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; -public class AnvilInventoryImpl extends ContainerAnvil implements AnvilInventory { +class AnvilInventoryImpl extends ContainerAnvil implements AnvilInventory { private final IChatBaseComponent title; private final Consumer renameHandler; diff --git a/inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/inventory/CartographyInventoryImpl.java b/inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/CartographyInventoryImpl.java similarity index 94% rename from inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/inventory/CartographyInventoryImpl.java rename to inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/CartographyInventoryImpl.java index 8c2839a..ba2b20b 100644 --- a/inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/inventory/CartographyInventoryImpl.java +++ b/inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/CartographyInventoryImpl.java @@ -1,8 +1,7 @@ -package de.studiocode.inventoryaccess.r4.inventory; +package de.studiocode.inventoryaccess.r4; import de.studiocode.inventoryaccess.abstraction.inventory.CartographyInventory; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.inventoryaccess.r4.util.InventoryUtilsImpl; import de.studiocode.inventoryaccess.util.ReflectionUtils; import net.minecraft.server.v1_16_R2.*; import org.bukkit.craftbukkit.v1_16_R2.entity.CraftPlayer; @@ -16,7 +15,7 @@ import org.jetbrains.annotations.NotNull; import java.lang.reflect.Field; -public class CartographyInventoryImpl extends ContainerCartography implements CartographyInventory { +class CartographyInventoryImpl extends ContainerCartography implements CartographyInventory { private static final Field RESULT_CONTAINER_FIELD = ReflectionUtils.getField(ContainerCartography.class, true, "resultInventory"); diff --git a/inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/util/InventoryUtilsImpl.java b/inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/InventoryUtilsImpl.java similarity index 96% rename from inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/util/InventoryUtilsImpl.java rename to inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/InventoryUtilsImpl.java index d2549aa..cd34932 100644 --- a/inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/util/InventoryUtilsImpl.java +++ b/inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/InventoryUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r4.util; +package de.studiocode.inventoryaccess.r4; import de.studiocode.inventoryaccess.abstraction.util.InventoryUtils; import de.studiocode.inventoryaccess.component.ComponentWrapper; @@ -13,7 +13,7 @@ import org.bukkit.inventory.Inventory; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class InventoryUtilsImpl implements InventoryUtils { +class InventoryUtilsImpl implements InventoryUtils { public static IChatBaseComponent createNMSComponent(ComponentWrapper component) { return IChatBaseComponent.ChatSerializer.a(component.serializeToJson()); diff --git a/inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/util/ItemUtilsImpl.java b/inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/ItemUtilsImpl.java similarity index 97% rename from inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/util/ItemUtilsImpl.java rename to inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/ItemUtilsImpl.java index 95536ab..ddcf37d 100644 --- a/inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/util/ItemUtilsImpl.java +++ b/inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/ItemUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r4.util; +package de.studiocode.inventoryaccess.r4; import de.studiocode.inventoryaccess.abstraction.util.ItemUtils; import de.studiocode.inventoryaccess.component.ComponentWrapper; @@ -15,7 +15,7 @@ import java.io.*; import java.util.List; import java.util.stream.Collectors; -public class ItemUtilsImpl implements ItemUtils { +class ItemUtilsImpl implements ItemUtils { @Override public byte[] serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, boolean compressed) { diff --git a/inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/util/PlayerUtilsImpl.java b/inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/PlayerUtilsImpl.java similarity index 96% rename from inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/util/PlayerUtilsImpl.java rename to inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/PlayerUtilsImpl.java index 22455e0..b326b18 100644 --- a/inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/util/PlayerUtilsImpl.java +++ b/inventoryaccess/inventory-access-r4/src/main/java/de/studiocode/inventoryaccess/r4/PlayerUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r4.util; +package de.studiocode.inventoryaccess.r4; import de.studiocode.inventoryaccess.abstraction.util.PlayerUtils; import de.studiocode.inventoryaccess.map.MapPatch; @@ -16,7 +16,7 @@ import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; -public class PlayerUtilsImpl implements PlayerUtils { +class PlayerUtilsImpl implements PlayerUtils { private static final Method REGISTER_LISTENERS_METHOD = ReflectionUtils.getMethod(AdvancementDataPlayer.class, true, "b", AdvancementDataWorld.class); diff --git a/inventoryaccess/inventory-access-r5/pom.xml b/inventoryaccess/inventory-access-r5/pom.xml index 1ef7ef8..e53d69d 100644 --- a/inventoryaccess/inventory-access-r5/pom.xml +++ b/inventoryaccess/inventory-access-r5/pom.xml @@ -5,7 +5,7 @@ de.studiocode.invui InvUI-Parent - 0.10.2 + 1.0-SNAPSHOT ../../pom.xml 4.0.0 diff --git a/inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/inventory/AnvilInventoryImpl.java b/inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/AnvilInventoryImpl.java similarity index 96% rename from inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/inventory/AnvilInventoryImpl.java rename to inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/AnvilInventoryImpl.java index 2e7944b..3b36631 100644 --- a/inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/inventory/AnvilInventoryImpl.java +++ b/inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/AnvilInventoryImpl.java @@ -1,8 +1,7 @@ -package de.studiocode.inventoryaccess.r5.inventory; +package de.studiocode.inventoryaccess.r5; import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.inventoryaccess.r5.util.InventoryUtilsImpl; import net.minecraft.server.v1_16_R3.*; import org.bukkit.craftbukkit.v1_16_R3.entity.CraftPlayer; import org.bukkit.craftbukkit.v1_16_R3.event.CraftEventFactory; @@ -16,7 +15,7 @@ import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; -public class AnvilInventoryImpl extends ContainerAnvil implements AnvilInventory { +class AnvilInventoryImpl extends ContainerAnvil implements AnvilInventory { private final IChatBaseComponent title; private final Consumer renameHandler; diff --git a/inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/inventory/CartographyInventoryImpl.java b/inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/CartographyInventoryImpl.java similarity index 94% rename from inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/inventory/CartographyInventoryImpl.java rename to inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/CartographyInventoryImpl.java index 967d958..06cc2d7 100644 --- a/inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/inventory/CartographyInventoryImpl.java +++ b/inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/CartographyInventoryImpl.java @@ -1,8 +1,7 @@ -package de.studiocode.inventoryaccess.r5.inventory; +package de.studiocode.inventoryaccess.r5; import de.studiocode.inventoryaccess.abstraction.inventory.CartographyInventory; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.inventoryaccess.r5.util.InventoryUtilsImpl; import de.studiocode.inventoryaccess.util.ReflectionUtils; import net.minecraft.server.v1_16_R3.*; import org.bukkit.craftbukkit.v1_16_R3.entity.CraftPlayer; @@ -16,7 +15,7 @@ import org.jetbrains.annotations.NotNull; import java.lang.reflect.Field; -public class CartographyInventoryImpl extends ContainerCartography implements CartographyInventory { +class CartographyInventoryImpl extends ContainerCartography implements CartographyInventory { private static final Field RESULT_CONTAINER_FIELD = ReflectionUtils.getField(ContainerCartography.class, true, "resultInventory"); diff --git a/inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/util/InventoryUtilsImpl.java b/inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/InventoryUtilsImpl.java similarity index 96% rename from inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/util/InventoryUtilsImpl.java rename to inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/InventoryUtilsImpl.java index 4a7c369..55804c2 100644 --- a/inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/util/InventoryUtilsImpl.java +++ b/inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/InventoryUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r5.util; +package de.studiocode.inventoryaccess.r5; import de.studiocode.inventoryaccess.abstraction.util.InventoryUtils; import de.studiocode.inventoryaccess.component.ComponentWrapper; @@ -13,7 +13,7 @@ import org.bukkit.inventory.Inventory; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class InventoryUtilsImpl implements InventoryUtils { +class InventoryUtilsImpl implements InventoryUtils { public static IChatBaseComponent createNMSComponent(ComponentWrapper component) { return IChatBaseComponent.ChatSerializer.a(component.serializeToJson()); diff --git a/inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/util/ItemUtilsImpl.java b/inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/ItemUtilsImpl.java similarity index 97% rename from inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/util/ItemUtilsImpl.java rename to inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/ItemUtilsImpl.java index fd597be..f278fef 100644 --- a/inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/util/ItemUtilsImpl.java +++ b/inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/ItemUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r5.util; +package de.studiocode.inventoryaccess.r5; import de.studiocode.inventoryaccess.abstraction.util.ItemUtils; import de.studiocode.inventoryaccess.component.ComponentWrapper; @@ -15,7 +15,7 @@ import java.io.*; import java.util.List; import java.util.stream.Collectors; -public class ItemUtilsImpl implements ItemUtils { +class ItemUtilsImpl implements ItemUtils { @Override public byte[] serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, boolean compressed) { diff --git a/inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/util/PlayerUtilsImpl.java b/inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/PlayerUtilsImpl.java similarity index 96% rename from inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/util/PlayerUtilsImpl.java rename to inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/PlayerUtilsImpl.java index 5b086d9..d499963 100644 --- a/inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/util/PlayerUtilsImpl.java +++ b/inventoryaccess/inventory-access-r5/src/main/java/de/studiocode/inventoryaccess/r5/PlayerUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r5.util; +package de.studiocode.inventoryaccess.r5; import de.studiocode.inventoryaccess.abstraction.util.PlayerUtils; import de.studiocode.inventoryaccess.map.MapPatch; @@ -16,7 +16,7 @@ import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; -public class PlayerUtilsImpl implements PlayerUtils { +class PlayerUtilsImpl implements PlayerUtils { private static final Method REGISTER_LISTENERS_METHOD = ReflectionUtils.getMethod(AdvancementDataPlayer.class, true, "b", AdvancementDataWorld.class); diff --git a/inventoryaccess/inventory-access-r6/pom.xml b/inventoryaccess/inventory-access-r6/pom.xml index 4583b6f..b9a1929 100644 --- a/inventoryaccess/inventory-access-r6/pom.xml +++ b/inventoryaccess/inventory-access-r6/pom.xml @@ -5,7 +5,7 @@ de.studiocode.invui InvUI-Parent - 0.10.2 + 1.0-SNAPSHOT ../../pom.xml 4.0.0 diff --git a/inventoryaccess/inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/inventory/AnvilInventoryImpl.java b/inventoryaccess/inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/AnvilInventoryImpl.java similarity index 96% rename from inventoryaccess/inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/inventory/AnvilInventoryImpl.java rename to inventoryaccess/inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/AnvilInventoryImpl.java index 7594146..197e995 100644 --- a/inventoryaccess/inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/inventory/AnvilInventoryImpl.java +++ b/inventoryaccess/inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/AnvilInventoryImpl.java @@ -1,8 +1,7 @@ -package de.studiocode.inventoryaccess.r6.inventory; +package de.studiocode.inventoryaccess.r6; import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.inventoryaccess.r6.util.InventoryUtilsImpl; import net.minecraft.core.BlockPos; import net.minecraft.core.NonNullList; import net.minecraft.network.chat.Component; @@ -27,7 +26,7 @@ import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; -public class AnvilInventoryImpl extends AnvilMenu implements AnvilInventory { +class AnvilInventoryImpl extends AnvilMenu implements AnvilInventory { private final Component title; private final Consumer renameHandler; diff --git a/inventoryaccess/inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/inventory/CartographyInventoryImpl.java b/inventoryaccess/inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/CartographyInventoryImpl.java similarity index 95% rename from inventoryaccess/inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/inventory/CartographyInventoryImpl.java rename to inventoryaccess/inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/CartographyInventoryImpl.java index 99228a2..f587a8f 100644 --- a/inventoryaccess/inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/inventory/CartographyInventoryImpl.java +++ b/inventoryaccess/inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/CartographyInventoryImpl.java @@ -1,8 +1,7 @@ -package de.studiocode.inventoryaccess.r6.inventory; +package de.studiocode.inventoryaccess.r6; import de.studiocode.inventoryaccess.abstraction.inventory.CartographyInventory; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.inventoryaccess.r6.util.InventoryUtilsImpl; import de.studiocode.inventoryaccess.util.ReflectionUtils; import net.minecraft.core.BlockPos; import net.minecraft.core.NonNullList; @@ -25,7 +24,7 @@ import org.jetbrains.annotations.NotNull; import java.lang.reflect.Field; -public class CartographyInventoryImpl extends CartographyTableMenu implements CartographyInventory { +class CartographyInventoryImpl extends CartographyTableMenu implements CartographyInventory { private static final Field RESULT_CONTAINER_FIELD = ReflectionUtils.getField( CartographyTableMenu.class, diff --git a/inventoryaccess/inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/util/InventoryUtilsImpl.java b/inventoryaccess/inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/InventoryUtilsImpl.java similarity index 96% rename from inventoryaccess/inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/util/InventoryUtilsImpl.java rename to inventoryaccess/inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/InventoryUtilsImpl.java index ab84a47..d9d5bf9 100644 --- a/inventoryaccess/inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/util/InventoryUtilsImpl.java +++ b/inventoryaccess/inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/InventoryUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r7.util; +package de.studiocode.inventoryaccess.r6; import de.studiocode.inventoryaccess.abstraction.util.InventoryUtils; import de.studiocode.inventoryaccess.component.ComponentWrapper; @@ -19,7 +19,7 @@ import org.bukkit.inventory.Inventory; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class InventoryUtilsImpl implements InventoryUtils { +class InventoryUtilsImpl implements InventoryUtils { public static Component createNMSComponent(ComponentWrapper component) { if (component == null) return null; diff --git a/inventoryaccess/inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/util/ItemUtilsImpl.java b/inventoryaccess/inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/ItemUtilsImpl.java similarity index 97% rename from inventoryaccess/inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/util/ItemUtilsImpl.java rename to inventoryaccess/inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/ItemUtilsImpl.java index d0f259b..dc4919b 100644 --- a/inventoryaccess/inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/util/ItemUtilsImpl.java +++ b/inventoryaccess/inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/ItemUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r7.util; +package de.studiocode.inventoryaccess.r6; import de.studiocode.inventoryaccess.abstraction.util.ItemUtils; import de.studiocode.inventoryaccess.component.ComponentWrapper; @@ -15,7 +15,7 @@ import java.io.*; import java.util.List; import java.util.stream.Collectors; -public class ItemUtilsImpl implements ItemUtils { +class ItemUtilsImpl implements ItemUtils { @Override public byte[] serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, boolean compressed) { diff --git a/inventoryaccess/inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/util/PlayerUtilsImpl.java b/inventoryaccess/inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/PlayerUtilsImpl.java similarity index 97% rename from inventoryaccess/inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/util/PlayerUtilsImpl.java rename to inventoryaccess/inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/PlayerUtilsImpl.java index ede4ebf..f4e03c3 100644 --- a/inventoryaccess/inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/util/PlayerUtilsImpl.java +++ b/inventoryaccess/inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/PlayerUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r6.util; +package de.studiocode.inventoryaccess.r6; import de.studiocode.inventoryaccess.abstraction.util.PlayerUtils; import de.studiocode.inventoryaccess.component.ComponentWrapper; @@ -25,7 +25,7 @@ import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; -public class PlayerUtilsImpl implements PlayerUtils { +class PlayerUtilsImpl implements PlayerUtils { private static final Method REGISTER_LISTENERS_METHOD = ReflectionUtils.getMethod( PlayerAdvancements.class, diff --git a/inventoryaccess/inventory-access-r7/pom.xml b/inventoryaccess/inventory-access-r7/pom.xml index 6291ac5..dab4e1e 100644 --- a/inventoryaccess/inventory-access-r7/pom.xml +++ b/inventoryaccess/inventory-access-r7/pom.xml @@ -5,7 +5,7 @@ de.studiocode.invui InvUI-Parent - 0.10.2 + 1.0-SNAPSHOT ../../pom.xml 4.0.0 diff --git a/inventoryaccess/inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/inventory/AnvilInventoryImpl.java b/inventoryaccess/inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/AnvilInventoryImpl.java similarity index 97% rename from inventoryaccess/inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/inventory/AnvilInventoryImpl.java rename to inventoryaccess/inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/AnvilInventoryImpl.java index 6b0f780..ebc840f 100644 --- a/inventoryaccess/inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/inventory/AnvilInventoryImpl.java +++ b/inventoryaccess/inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/AnvilInventoryImpl.java @@ -1,8 +1,7 @@ -package de.studiocode.inventoryaccess.r7.inventory; +package de.studiocode.inventoryaccess.r7; import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.inventoryaccess.r7.util.InventoryUtilsImpl; import net.minecraft.core.BlockPos; import net.minecraft.core.NonNullList; import net.minecraft.network.chat.Component; @@ -28,7 +27,7 @@ import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; -public class AnvilInventoryImpl extends AnvilMenu implements AnvilInventory { +class AnvilInventoryImpl extends AnvilMenu implements AnvilInventory { private final Component title; private final Consumer renameHandler; diff --git a/inventoryaccess/inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/inventory/CartographyInventoryImpl.java b/inventoryaccess/inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/CartographyInventoryImpl.java similarity index 95% rename from inventoryaccess/inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/inventory/CartographyInventoryImpl.java rename to inventoryaccess/inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/CartographyInventoryImpl.java index 71c3ada..d44882b 100644 --- a/inventoryaccess/inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/inventory/CartographyInventoryImpl.java +++ b/inventoryaccess/inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/CartographyInventoryImpl.java @@ -1,8 +1,7 @@ -package de.studiocode.inventoryaccess.r7.inventory; +package de.studiocode.inventoryaccess.r7; import de.studiocode.inventoryaccess.abstraction.inventory.CartographyInventory; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.inventoryaccess.r7.util.InventoryUtilsImpl; import de.studiocode.inventoryaccess.util.ReflectionUtils; import net.minecraft.core.BlockPos; import net.minecraft.core.NonNullList; @@ -25,7 +24,7 @@ import org.jetbrains.annotations.NotNull; import java.lang.reflect.Field; -public class CartographyInventoryImpl extends CartographyTableMenu implements CartographyInventory { +class CartographyInventoryImpl extends CartographyTableMenu implements CartographyInventory { private static final Field RESULT_CONTAINER_FIELD = ReflectionUtils.getField( CartographyTableMenu.class, diff --git a/inventoryaccess/inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/util/InventoryUtilsImpl.java b/inventoryaccess/inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/InventoryUtilsImpl.java similarity index 96% rename from inventoryaccess/inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/util/InventoryUtilsImpl.java rename to inventoryaccess/inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/InventoryUtilsImpl.java index 4b3b948..276b2bb 100644 --- a/inventoryaccess/inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/util/InventoryUtilsImpl.java +++ b/inventoryaccess/inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/InventoryUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r6.util; +package de.studiocode.inventoryaccess.r7; import de.studiocode.inventoryaccess.abstraction.util.InventoryUtils; import de.studiocode.inventoryaccess.component.ComponentWrapper; @@ -19,7 +19,7 @@ import org.bukkit.inventory.Inventory; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class InventoryUtilsImpl implements InventoryUtils { +class InventoryUtilsImpl implements InventoryUtils { public static Component createNMSComponent(ComponentWrapper component) { if (component == null) return null; diff --git a/inventoryaccess/inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/util/ItemUtilsImpl.java b/inventoryaccess/inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/ItemUtilsImpl.java similarity index 97% rename from inventoryaccess/inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/util/ItemUtilsImpl.java rename to inventoryaccess/inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/ItemUtilsImpl.java index 0aaadca..1a8f73f 100644 --- a/inventoryaccess/inventory-access-r6/src/main/java/de/studiocode/inventoryaccess/r6/util/ItemUtilsImpl.java +++ b/inventoryaccess/inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/ItemUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r6.util; +package de.studiocode.inventoryaccess.r7; import de.studiocode.inventoryaccess.abstraction.util.ItemUtils; import de.studiocode.inventoryaccess.component.ComponentWrapper; @@ -15,7 +15,7 @@ import java.io.*; import java.util.List; import java.util.stream.Collectors; -public class ItemUtilsImpl implements ItemUtils { +class ItemUtilsImpl implements ItemUtils { @Override public byte[] serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, boolean compressed) { diff --git a/inventoryaccess/inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/util/PlayerUtilsImpl.java b/inventoryaccess/inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/PlayerUtilsImpl.java similarity index 97% rename from inventoryaccess/inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/util/PlayerUtilsImpl.java rename to inventoryaccess/inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/PlayerUtilsImpl.java index f3e1028..eb8c6a3 100644 --- a/inventoryaccess/inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/util/PlayerUtilsImpl.java +++ b/inventoryaccess/inventory-access-r7/src/main/java/de/studiocode/inventoryaccess/r7/PlayerUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r7.util; +package de.studiocode.inventoryaccess.r7; import de.studiocode.inventoryaccess.abstraction.util.PlayerUtils; import de.studiocode.inventoryaccess.component.ComponentWrapper; @@ -25,7 +25,7 @@ import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; -public class PlayerUtilsImpl implements PlayerUtils { +class PlayerUtilsImpl implements PlayerUtils { private static final Method REGISTER_LISTENERS_METHOD = ReflectionUtils.getMethod( PlayerAdvancements.class, diff --git a/inventoryaccess/inventory-access-r8/pom.xml b/inventoryaccess/inventory-access-r8/pom.xml index e24e536..172afac 100644 --- a/inventoryaccess/inventory-access-r8/pom.xml +++ b/inventoryaccess/inventory-access-r8/pom.xml @@ -5,7 +5,7 @@ de.studiocode.invui InvUI-Parent - 0.10.2 + 1.0-SNAPSHOT ../../pom.xml 4.0.0 diff --git a/inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/inventory/AnvilInventoryImpl.java b/inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/AnvilInventoryImpl.java similarity index 97% rename from inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/inventory/AnvilInventoryImpl.java rename to inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/AnvilInventoryImpl.java index 4150c2d..f5abfc2 100644 --- a/inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/inventory/AnvilInventoryImpl.java +++ b/inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/AnvilInventoryImpl.java @@ -1,8 +1,7 @@ -package de.studiocode.inventoryaccess.r8.inventory; +package de.studiocode.inventoryaccess.r8; import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.inventoryaccess.r8.util.InventoryUtilsImpl; import net.minecraft.core.BlockPos; import net.minecraft.core.NonNullList; import net.minecraft.network.chat.Component; @@ -28,7 +27,7 @@ import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; -public class AnvilInventoryImpl extends AnvilMenu implements AnvilInventory { +class AnvilInventoryImpl extends AnvilMenu implements AnvilInventory { private final Component title; private final Consumer renameHandler; diff --git a/inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/inventory/CartographyInventoryImpl.java b/inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/CartographyInventoryImpl.java similarity index 95% rename from inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/inventory/CartographyInventoryImpl.java rename to inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/CartographyInventoryImpl.java index 4e1ceab..c8b08ae 100644 --- a/inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/inventory/CartographyInventoryImpl.java +++ b/inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/CartographyInventoryImpl.java @@ -1,8 +1,7 @@ -package de.studiocode.inventoryaccess.r8.inventory; +package de.studiocode.inventoryaccess.r8; import de.studiocode.inventoryaccess.abstraction.inventory.CartographyInventory; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.inventoryaccess.r8.util.InventoryUtilsImpl; import de.studiocode.inventoryaccess.util.ReflectionUtils; import net.minecraft.core.BlockPos; import net.minecraft.core.NonNullList; @@ -25,7 +24,7 @@ import org.jetbrains.annotations.NotNull; import java.lang.reflect.Field; -public class CartographyInventoryImpl extends CartographyTableMenu implements CartographyInventory { +class CartographyInventoryImpl extends CartographyTableMenu implements CartographyInventory { private static final Field RESULT_CONTAINER_FIELD = ReflectionUtils.getField( CartographyTableMenu.class, diff --git a/inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/util/InventoryUtilsImpl.java b/inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/InventoryUtilsImpl.java similarity index 96% rename from inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/util/InventoryUtilsImpl.java rename to inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/InventoryUtilsImpl.java index 3580736..1b62faf 100644 --- a/inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/util/InventoryUtilsImpl.java +++ b/inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/InventoryUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r8.util; +package de.studiocode.inventoryaccess.r8; import de.studiocode.inventoryaccess.abstraction.util.InventoryUtils; import de.studiocode.inventoryaccess.component.ComponentWrapper; @@ -19,7 +19,7 @@ import org.bukkit.inventory.Inventory; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class InventoryUtilsImpl implements InventoryUtils { +class InventoryUtilsImpl implements InventoryUtils { public static Component createNMSComponent(ComponentWrapper component) { if (component == null) return null; diff --git a/inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/util/ItemUtilsImpl.java b/inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/ItemUtilsImpl.java similarity index 97% rename from inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/util/ItemUtilsImpl.java rename to inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/ItemUtilsImpl.java index c036e19..307f611 100644 --- a/inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/util/ItemUtilsImpl.java +++ b/inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/ItemUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r8.util; +package de.studiocode.inventoryaccess.r8; import de.studiocode.inventoryaccess.abstraction.util.ItemUtils; import de.studiocode.inventoryaccess.component.ComponentWrapper; @@ -15,7 +15,7 @@ import java.io.*; import java.util.List; import java.util.stream.Collectors; -public class ItemUtilsImpl implements ItemUtils { +class ItemUtilsImpl implements ItemUtils { @Override public byte[] serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, boolean compressed) { diff --git a/inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/util/PlayerUtilsImpl.java b/inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/PlayerUtilsImpl.java similarity index 97% rename from inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/util/PlayerUtilsImpl.java rename to inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/PlayerUtilsImpl.java index ce64200..44e0613 100644 --- a/inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/util/PlayerUtilsImpl.java +++ b/inventoryaccess/inventory-access-r8/src/main/java/de/studiocode/inventoryaccess/r8/PlayerUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r8.util; +package de.studiocode.inventoryaccess.r8; import de.studiocode.inventoryaccess.abstraction.util.PlayerUtils; import de.studiocode.inventoryaccess.component.ComponentWrapper; @@ -25,7 +25,7 @@ import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; -public class PlayerUtilsImpl implements PlayerUtils { +class PlayerUtilsImpl implements PlayerUtils { private static final Method REGISTER_LISTENERS_METHOD = ReflectionUtils.getMethod( PlayerAdvancements.class, diff --git a/inventoryaccess/inventory-access-r9/pom.xml b/inventoryaccess/inventory-access-r9/pom.xml index 8f11395..4a48af9 100644 --- a/inventoryaccess/inventory-access-r9/pom.xml +++ b/inventoryaccess/inventory-access-r9/pom.xml @@ -5,7 +5,7 @@ de.studiocode.invui InvUI-Parent - 0.10.2 + 1.0-SNAPSHOT ../../pom.xml 4.0.0 diff --git a/inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/inventory/AnvilInventoryImpl.java b/inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/AnvilInventoryImpl.java similarity index 97% rename from inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/inventory/AnvilInventoryImpl.java rename to inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/AnvilInventoryImpl.java index 0404868..6a959f8 100644 --- a/inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/inventory/AnvilInventoryImpl.java +++ b/inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/AnvilInventoryImpl.java @@ -1,8 +1,7 @@ -package de.studiocode.inventoryaccess.r9.inventory; +package de.studiocode.inventoryaccess.r9; import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.inventoryaccess.r9.util.InventoryUtilsImpl; import net.minecraft.core.BlockPos; import net.minecraft.core.NonNullList; import net.minecraft.network.chat.Component; @@ -28,7 +27,7 @@ import org.jetbrains.annotations.NotNull; import java.util.function.Consumer; -public class AnvilInventoryImpl extends AnvilMenu implements AnvilInventory { +class AnvilInventoryImpl extends AnvilMenu implements AnvilInventory { private final Component title; private final Consumer renameHandler; diff --git a/inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/inventory/CartographyInventoryImpl.java b/inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/CartographyInventoryImpl.java similarity index 95% rename from inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/inventory/CartographyInventoryImpl.java rename to inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/CartographyInventoryImpl.java index 2392776..1ad1f14 100644 --- a/inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/inventory/CartographyInventoryImpl.java +++ b/inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/CartographyInventoryImpl.java @@ -1,8 +1,7 @@ -package de.studiocode.inventoryaccess.r9.inventory; +package de.studiocode.inventoryaccess.r9; import de.studiocode.inventoryaccess.abstraction.inventory.CartographyInventory; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.inventoryaccess.r9.util.InventoryUtilsImpl; import de.studiocode.inventoryaccess.util.ReflectionUtils; import net.minecraft.core.BlockPos; import net.minecraft.core.NonNullList; @@ -25,7 +24,7 @@ import org.jetbrains.annotations.NotNull; import java.lang.reflect.Field; -public class CartographyInventoryImpl extends CartographyTableMenu implements CartographyInventory { +class CartographyInventoryImpl extends CartographyTableMenu implements CartographyInventory { private static final Field RESULT_CONTAINER_FIELD = ReflectionUtils.getField( CartographyTableMenu.class, diff --git a/inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/util/InventoryUtilsImpl.java b/inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/InventoryUtilsImpl.java similarity index 96% rename from inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/util/InventoryUtilsImpl.java rename to inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/InventoryUtilsImpl.java index 8c0f4dc..855a837 100644 --- a/inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/util/InventoryUtilsImpl.java +++ b/inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/InventoryUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r9.util; +package de.studiocode.inventoryaccess.r9; import de.studiocode.inventoryaccess.abstraction.util.InventoryUtils; import de.studiocode.inventoryaccess.component.ComponentWrapper; @@ -19,7 +19,7 @@ import org.bukkit.inventory.Inventory; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -public class InventoryUtilsImpl implements InventoryUtils { +class InventoryUtilsImpl implements InventoryUtils { public static Component createNMSComponent(ComponentWrapper component) { if (component == null) return null; diff --git a/inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/util/ItemUtilsImpl.java b/inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/ItemUtilsImpl.java similarity index 97% rename from inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/util/ItemUtilsImpl.java rename to inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/ItemUtilsImpl.java index bbbc606..d73019c 100644 --- a/inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/util/ItemUtilsImpl.java +++ b/inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/ItemUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r9.util; +package de.studiocode.inventoryaccess.r9; import de.studiocode.inventoryaccess.abstraction.util.ItemUtils; import de.studiocode.inventoryaccess.component.ComponentWrapper; @@ -15,7 +15,7 @@ import java.io.*; import java.util.List; import java.util.stream.Collectors; -public class ItemUtilsImpl implements ItemUtils { +class ItemUtilsImpl implements ItemUtils { @Override public byte[] serializeItemStack(org.bukkit.inventory.@NotNull ItemStack itemStack, boolean compressed) { diff --git a/inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/util/PlayerUtilsImpl.java b/inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/PlayerUtilsImpl.java similarity index 97% rename from inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/util/PlayerUtilsImpl.java rename to inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/PlayerUtilsImpl.java index 1288722..9a6dce8 100644 --- a/inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/util/PlayerUtilsImpl.java +++ b/inventoryaccess/inventory-access-r9/src/main/java/de/studiocode/inventoryaccess/r9/PlayerUtilsImpl.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.r9.util; +package de.studiocode.inventoryaccess.r9; import de.studiocode.inventoryaccess.abstraction.util.PlayerUtils; import de.studiocode.inventoryaccess.component.ComponentWrapper; @@ -25,7 +25,7 @@ import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; -public class PlayerUtilsImpl implements PlayerUtils { +class PlayerUtilsImpl implements PlayerUtils { private static final Method REGISTER_LISTENERS_METHOD = ReflectionUtils.getMethod( PlayerAdvancements.class, diff --git a/inventoryaccess/inventory-access/pom.xml b/inventoryaccess/inventory-access/pom.xml index 175a278..0099c2d 100644 --- a/inventoryaccess/inventory-access/pom.xml +++ b/inventoryaccess/inventory-access/pom.xml @@ -5,7 +5,7 @@ de.studiocode.invui InvUI-Parent - 0.10.2 + 1.0-SNAPSHOT ../../pom.xml 4.0.0 diff --git a/inventoryaccess/inventory-access/src/main/java/de/studiocode/inventoryaccess/version/InventoryAccess.java b/inventoryaccess/inventory-access/src/main/java/de/studiocode/inventoryaccess/InventoryAccess.java similarity index 90% rename from inventoryaccess/inventory-access/src/main/java/de/studiocode/inventoryaccess/version/InventoryAccess.java rename to inventoryaccess/inventory-access/src/main/java/de/studiocode/inventoryaccess/InventoryAccess.java index 130f163..4094439 100644 --- a/inventoryaccess/inventory-access/src/main/java/de/studiocode/inventoryaccess/version/InventoryAccess.java +++ b/inventoryaccess/inventory-access/src/main/java/de/studiocode/inventoryaccess/InventoryAccess.java @@ -1,4 +1,4 @@ -package de.studiocode.inventoryaccess.version; +package de.studiocode.inventoryaccess; import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory; import de.studiocode.inventoryaccess.abstraction.inventory.CartographyInventory; @@ -15,11 +15,11 @@ import java.util.function.Consumer; public class InventoryAccess { - private static final Class INVENTORY_UTILS_CLASS = ReflectionUtils.getImplClass("util.InventoryUtilsImpl"); - private static final Class ITEM_UTILS_CLASS = ReflectionUtils.getImplClass("util.ItemUtilsImpl"); - private static final Class PLAYER_UTILS_CLASS = ReflectionUtils.getImplClass("util.PlayerUtilsImpl"); - private static final Class ANVIL_INVENTORY_CLASS = ReflectionUtils.getImplClass("inventory.AnvilInventoryImpl"); - private static final Class CARTOGRAPHY_INVENTORY_CLASS = ReflectionUtils.getImplClass("inventory.CartographyInventoryImpl"); + private static final Class INVENTORY_UTILS_CLASS = ReflectionUtils.getImplClass("InventoryUtilsImpl"); + private static final Class ITEM_UTILS_CLASS = ReflectionUtils.getImplClass("ItemUtilsImpl"); + private static final Class PLAYER_UTILS_CLASS = ReflectionUtils.getImplClass("PlayerUtilsImpl"); + private static final Class ANVIL_INVENTORY_CLASS = ReflectionUtils.getImplClass("AnvilInventoryImpl"); + private static final Class CARTOGRAPHY_INVENTORY_CLASS = ReflectionUtils.getImplClass("CartographyInventoryImpl"); private static final Constructor ANVIL_INVENTORY_CONSTRUCTOR = ReflectionUtils.getConstructor(ANVIL_INVENTORY_CLASS, false, Player.class, ComponentWrapper.class, Consumer.class); diff --git a/inventoryaccess/inventory-access/src/main/java/de/studiocode/inventoryaccess/util/VersionUtils.java b/inventoryaccess/inventory-access/src/main/java/de/studiocode/inventoryaccess/util/VersionUtils.java index db8acdc..c4fff84 100644 --- a/inventoryaccess/inventory-access/src/main/java/de/studiocode/inventoryaccess/util/VersionUtils.java +++ b/inventoryaccess/inventory-access/src/main/java/de/studiocode/inventoryaccess/util/VersionUtils.java @@ -1,6 +1,5 @@ package de.studiocode.inventoryaccess.util; -import com.google.common.base.Preconditions; import org.bukkit.Bukkit; public class VersionUtils { @@ -54,7 +53,8 @@ public class VersionUtils { * @throws IllegalArgumentException If the version array does not have a size of 3 */ public static boolean isHigherOrEqualThanServer(int... version) { - Preconditions.checkArgument(version.length == 3); + if (version.length != 3) + throw new IllegalArgumentException("Version array must have a size of 3"); return version[0] > major || (version[0] == major && version[1] > minor) @@ -79,7 +79,8 @@ public class VersionUtils { * @throws IllegalArgumentException If the version array does not have a size of 3 */ public static boolean isServerHigherOrEqual(int... version) { - Preconditions.checkArgument(version.length == 3); + if (version.length != 3) + throw new IllegalArgumentException("Version array must have a size of 3"); return major > version[0] || (major == version[0] && minor > version[1]) diff --git a/invui-resourcepack/pom.xml b/invui-resourcepack/pom.xml index b534658..0a9ee9f 100644 --- a/invui-resourcepack/pom.xml +++ b/invui-resourcepack/pom.xml @@ -5,7 +5,7 @@ InvUI-Parent de.studiocode.invui - 0.10.2 + 1.0-SNAPSHOT 4.0.0 diff --git a/invui-resourcepack/src/main/java/de/studiocode/invui/resourcepack/ForceResourcePack.java b/invui-resourcepack/src/main/java/de/studiocode/invui/resourcepack/ForceResourcePack.java index 57e3282..d24a00f 100644 --- a/invui-resourcepack/src/main/java/de/studiocode/invui/resourcepack/ForceResourcePack.java +++ b/invui-resourcepack/src/main/java/de/studiocode/invui/resourcepack/ForceResourcePack.java @@ -1,10 +1,10 @@ package de.studiocode.invui.resourcepack; +import de.studiocode.inventoryaccess.InventoryAccess; import de.studiocode.inventoryaccess.component.BaseComponentWrapper; import de.studiocode.inventoryaccess.component.ComponentWrapper; import de.studiocode.inventoryaccess.util.ReflectionRegistry; import de.studiocode.inventoryaccess.util.VersionUtils; -import de.studiocode.inventoryaccess.version.InventoryAccess; import de.studiocode.invui.InvUI; import de.studiocode.invui.resourcepack.auth.AuthenticationServiceManager; import de.studiocode.invui.util.DataUtils; diff --git a/invui/pom.xml b/invui/pom.xml index a0c2251..afdcac2 100644 --- a/invui/pom.xml +++ b/invui/pom.xml @@ -7,7 +7,7 @@ de.studiocode.invui InvUI-Parent - 0.10.2 + 1.0-SNAPSHOT ../pom.xml diff --git a/invui/src/main/java/de/studiocode/invui/gui/impl/BaseGUI.java b/invui/src/main/java/de/studiocode/invui/gui/AbstractGUI.java similarity index 91% rename from invui/src/main/java/de/studiocode/invui/gui/impl/BaseGUI.java rename to invui/src/main/java/de/studiocode/invui/gui/AbstractGUI.java index 378f7d0..052890c 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/impl/BaseGUI.java +++ b/invui/src/main/java/de/studiocode/invui/gui/AbstractGUI.java @@ -1,10 +1,6 @@ -package de.studiocode.invui.gui.impl; +package de.studiocode.invui.gui; import de.studiocode.invui.animation.Animation; -import de.studiocode.invui.gui.Controllable; -import de.studiocode.invui.gui.GUI; -import de.studiocode.invui.gui.GUIParent; -import de.studiocode.invui.gui.SlotElement; import de.studiocode.invui.gui.SlotElement.ItemSlotElement; import de.studiocode.invui.gui.SlotElement.LinkedSlotElement; import de.studiocode.invui.gui.SlotElement.VISlotElement; @@ -12,18 +8,14 @@ import de.studiocode.invui.gui.structure.Structure; import de.studiocode.invui.item.Item; import de.studiocode.invui.item.ItemProvider; import de.studiocode.invui.item.impl.controlitem.ControlItem; -import de.studiocode.invui.util.ArrayUtils; import de.studiocode.invui.util.InventoryUtils; import de.studiocode.invui.util.SlotUtils; +import de.studiocode.invui.util.ArrayUtils; import de.studiocode.invui.virtualinventory.VirtualInventory; import de.studiocode.invui.virtualinventory.event.ItemUpdateEvent; import de.studiocode.invui.virtualinventory.event.PlayerUpdateReason; import de.studiocode.invui.virtualinventory.event.UpdateReason; -import de.studiocode.invui.window.Window; -import de.studiocode.invui.window.WindowManager; -import de.studiocode.invui.window.impl.merged.MergedWindow; -import de.studiocode.invui.window.impl.merged.split.SplitWindow; -import de.studiocode.invui.window.impl.single.SingleWindow; +import de.studiocode.invui.window.*; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.InventoryAction; @@ -38,7 +30,7 @@ import java.util.*; import java.util.function.Predicate; import java.util.stream.Collectors; -public abstract class BaseGUI implements GUI, Controllable { +public abstract class AbstractGUI implements GUI, GUIParent { private final int width; private final int height; @@ -51,14 +43,13 @@ public abstract class BaseGUI implements GUI, Controllable { private ItemProvider background; - public BaseGUI(int width, int height) { + public AbstractGUI(int width, int height) { this.width = width; this.height = height; this.size = width * height; slotElements = new SlotElement[size]; } - @Override public void handleClick(int slotNumber, Player player, ClickType clickType, InventoryClickEvent event) { if (animation != null) { // cancel all clicks if an animation is running @@ -69,7 +60,8 @@ public abstract class BaseGUI implements GUI, Controllable { SlotElement slotElement = slotElements[slotNumber]; if (slotElement instanceof LinkedSlotElement) { LinkedSlotElement linkedElement = (LinkedSlotElement) slotElement; - linkedElement.getGui().handleClick(linkedElement.getSlotIndex(), player, clickType, event); + AbstractGUI gui = (AbstractGUI) linkedElement.getGUI(); + gui.handleClick(linkedElement.getSlotIndex(), player, clickType, event); } else if (slotElement instanceof ItemSlotElement) { event.setCancelled(true); // if it is an Item, don't let the player move it ItemSlotElement itemElement = (ItemSlotElement) slotElement; @@ -215,17 +207,17 @@ public abstract class BaseGUI implements GUI, Controllable { if (!updateEvent.isCancelled()) { int leftOverAmount; - if (window instanceof MergedWindow) { + if (window instanceof AbstractDoubleWindow) { GUI otherGui; - if (window instanceof SplitWindow) { - SplitWindow splitWindow = (SplitWindow) window; - GUI[] guis = splitWindow.getGuis(); + if (window instanceof AbstractSplitWindow) { + AbstractSplitWindow splitWindow = (AbstractSplitWindow) window; + GUI[] guis = splitWindow.getGUIs(); otherGui = guis[0] == this ? guis[1] : guis[0]; } else { otherGui = this; } - leftOverAmount = ((BaseGUI) otherGui).putIntoFirstVirtualInventory(updateReason, clicked, inventory); + leftOverAmount = ((AbstractGUI) otherGui).putIntoFirstVirtualInventory(updateReason, clicked, inventory); } else { leftOverAmount = InventoryUtils.addItemCorrectly(event.getWhoClicked().getInventory(), inventory.getItemStack(slot)); } @@ -240,7 +232,7 @@ public abstract class BaseGUI implements GUI, Controllable { // TODO: add support for merged windows protected void handleVINumberKey(InventoryClickEvent event, VirtualInventory inventory, int slot, Player player, ItemStack clicked) { Window window = WindowManager.getInstance().getOpenWindow(player); - if (window instanceof SingleWindow) { + if (window instanceof AbstractSingleWindow) { Inventory playerInventory = player.getInventory(); int hotbarButton = event.getHotbarButton(); ItemStack hotbarItem = playerInventory.getItem(hotbarButton); @@ -256,7 +248,7 @@ public abstract class BaseGUI implements GUI, Controllable { // TODO: add support for merged windows protected void handleVIOffHandKey(InventoryClickEvent event, VirtualInventory inventory, int slot, Player player, ItemStack clicked) { Window window = WindowManager.getInstance().getOpenWindow(player); - if (window instanceof SingleWindow) { + if (window instanceof AbstractSingleWindow) { PlayerInventory playerInventory = player.getInventory(); ItemStack offhandItem = playerInventory.getItemInOffHand(); if (offhandItem != null && offhandItem.getType().isAir()) offhandItem = null; @@ -289,11 +281,10 @@ public abstract class BaseGUI implements GUI, Controllable { if (cursor == null) return; UpdateReason updateReason = new PlayerUpdateReason(player, event); - cursor.setAmount(inventory.collectToCursor(updateReason, cursor)); + cursor.setAmount(inventory.collectSimilar(updateReason, cursor)); event.setCursor(cursor); } - @Override public boolean handleItemDrag(UpdateReason updateReason, int slot, ItemStack oldStack, ItemStack newStack) { SlotElement element = getSlotElement(slot); if (element != null) element = element.getHoldingElement(); @@ -309,7 +300,6 @@ public abstract class BaseGUI implements GUI, Controllable { return false; } - @Override public void handleItemShift(InventoryClickEvent event) { event.setCancelled(true); @@ -361,23 +351,20 @@ public abstract class BaseGUI implements GUI, Controllable { SlotElement element = slotElements[index]; if (element instanceof LinkedSlotElement) { LinkedSlotElement linkedSlotElement = (LinkedSlotElement) element; - if (linkedSlotElement.getGui() == child && linkedSlotElement.getSlotIndex() == slotIndex) + if (linkedSlotElement.getGUI() == child && linkedSlotElement.getSlotIndex() == slotIndex) for (GUIParent parent : parents) parent.handleSlotElementUpdate(this, index); } } } - @Override public void addParent(@NotNull GUIParent parent) { parents.add(parent); } - @Override public void removeParent(@NotNull GUIParent parent) { parents.remove(parent); } - @Override public Set getParents() { return parents; } @@ -385,13 +372,13 @@ public abstract class BaseGUI implements GUI, Controllable { @Override public List findAllWindows() { List windows = new ArrayList<>(); - List parents = new ArrayList<>(this.parents); + List unexploredParents = new ArrayList<>(this.parents); - while (!parents.isEmpty()) { - List parents1 = new ArrayList<>(parents); - parents.clear(); - for (GUIParent parent : parents1) { - if (parent instanceof GUI) parents.addAll(((GUI) parent).getParents()); + while (!unexploredParents.isEmpty()) { + List parents = new ArrayList<>(unexploredParents); + unexploredParents.clear(); + for (GUIParent parent : parents) { + if (parent instanceof AbstractGUI) unexploredParents.addAll(((AbstractGUI) parent).getParents()); else if (parent instanceof Window) windows.add((Window) parent); } } @@ -453,7 +440,6 @@ public abstract class BaseGUI implements GUI, Controllable { } } - @Override public void updateControlItems() { for (SlotElement element : slotElements) { if (element instanceof ItemSlotElement) { @@ -475,14 +461,14 @@ public abstract class BaseGUI implements GUI, Controllable { if (slotElement instanceof ItemSlotElement) { Item item = ((ItemSlotElement) slotElement).getItem(); if (item instanceof ControlItem) - ((ControlItem) item).setGui(this); + ((ControlItem) item).setGUI(this); } // notify parents that a SlotElement has been changed parents.forEach(parent -> parent.handleSlotElementUpdate(this, index)); - GUI oldLink = oldElement instanceof LinkedSlotElement ? ((LinkedSlotElement) oldElement).getGui() : null; - GUI newLink = slotElement instanceof LinkedSlotElement ? ((LinkedSlotElement) slotElement).getGui() : null; + AbstractGUI oldLink = oldElement instanceof LinkedSlotElement ? (AbstractGUI) ((LinkedSlotElement) oldElement).getGUI() : null; + AbstractGUI newLink = slotElement instanceof LinkedSlotElement ? (AbstractGUI) ((LinkedSlotElement) slotElement).getGUI() : null; // if newLink is the same as oldLink, there isn't anything to be done if (newLink == oldLink) return; @@ -492,7 +478,7 @@ public abstract class BaseGUI implements GUI, Controllable { // If no other slot still links to that GUI, remove this GUI from parents if (Arrays.stream(slotElements) .filter(element -> element instanceof LinkedSlotElement) - .map(element -> ((LinkedSlotElement) element).getGui()) + .map(element -> ((LinkedSlotElement) element).getGUI()) .noneMatch(gui -> gui == oldLink)) oldLink.removeParent(this); } @@ -502,6 +488,15 @@ public abstract class BaseGUI implements GUI, Controllable { } } + @Override + public void addSlotElements(@NotNull SlotElement... slotElements) { + for (SlotElement element : slotElements) { + int emptyIndex = ArrayUtils.findFirstEmptyIndex(this.slotElements); + if (emptyIndex == -1) break; + setSlotElement(emptyIndex, element); + } + } + @Override public SlotElement getSlotElement(int index) { return slotElements[index]; @@ -513,12 +508,13 @@ public abstract class BaseGUI implements GUI, Controllable { } @Override - public SlotElement[] getSlotElements() { + @Nullable + public SlotElement @NotNull[] getSlotElements() { return slotElements.clone(); } @Override - public void setItem(int index, Item item) { + public void setItem(int index, @Nullable Item item) { remove(index); if (item != null) setSlotElement(index, new ItemSlotElement(item)); } @@ -533,7 +529,7 @@ public abstract class BaseGUI implements GUI, Controllable { } @Override - public Item getItem(int index) { + public @Nullable Item getItem(int index) { SlotElement slotElement = slotElements[index]; if (slotElement instanceof ItemSlotElement) { @@ -547,7 +543,7 @@ public abstract class BaseGUI implements GUI, Controllable { } @Override - public ItemProvider getBackground() { + public @Nullable ItemProvider getBackground() { return background; } @@ -562,7 +558,7 @@ public abstract class BaseGUI implements GUI, Controllable { } @Override - public void applyStructure(Structure structure) { + public void applyStructure(@NotNull Structure structure) { structure.getIngredientList().insertIntoGUI(this); } @@ -588,12 +584,12 @@ public abstract class BaseGUI implements GUI, Controllable { } @Override - public void setItem(int x, int y, Item item) { + public void setItem(int x, int y, @Nullable Item item) { setItem(convToIndex(x, y), item); } @Override - public Item getItem(int x, int y) { + public @Nullable Item getItem(int x, int y) { return getItem(convToIndex(x, y)); } diff --git a/invui/src/main/java/de/studiocode/invui/gui/AbstractPagedGUI.java b/invui/src/main/java/de/studiocode/invui/gui/AbstractPagedGUI.java new file mode 100644 index 0000000..9e8980b --- /dev/null +++ b/invui/src/main/java/de/studiocode/invui/gui/AbstractPagedGUI.java @@ -0,0 +1,138 @@ +package de.studiocode.invui.gui; + +import de.studiocode.invui.gui.builder.GUIBuilder; +import de.studiocode.invui.gui.impl.PageNestedGUIImpl; +import de.studiocode.invui.gui.impl.PagedItemsGUIImpl; +import de.studiocode.invui.gui.structure.Structure; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.BiConsumer; + +/** + * A {@link GUI} with pages. + * + * @see GUIBuilder + * @see PagedItemsGUIImpl + * @see PageNestedGUIImpl + */ +public abstract class AbstractPagedGUI extends AbstractGUI implements PagedGUI { + + private final boolean infinitePages; + private final int[] contentListSlots; + private int currentPage; + + private List> pageChangeHandlers; + + public AbstractPagedGUI(int width, int height, boolean infinitePages, int... contentListSlots) { + super(width, height); + this.infinitePages = infinitePages; + this.contentListSlots = contentListSlots; + } + + public AbstractPagedGUI(int width, int height, boolean infinitePages, Structure structure) { + this(width, height, infinitePages, structure.getIngredientList().findContentListSlots()); + applyStructure(structure); + } + + @Override + public void goForward() { + if (hasNextPage()) + setPage(currentPage + 1); + } + + @Override + public void goBack() { + if (hasPreviousPage()) + setPage(currentPage - 1); + } + + @Override + public void setPage(int page) { + int previous = currentPage; + currentPage = page; + update(); + if (previous != currentPage) { + pageChangeHandlers.forEach(handler -> handler.accept(previous, page)); + } + } + + @Override + public boolean hasNextPage() { + return currentPage < getPageAmount() - 1 || infinitePages; + } + + @Override + public boolean hasPreviousPage() { + return currentPage > 0; + } + + protected void update() { + correctPage(); + updateControlItems(); + updatePageContent(); + } + + private void correctPage() { + if (currentPage == 0 || infinitePages) return; + + int pageAmount = getPageAmount(); + if (currentPage < 0 || pageAmount <= 0) currentPage = 0; + else if (currentPage >= pageAmount) currentPage = pageAmount - 1; + } + + private void updatePageContent() { + List slotElements = getPageElements(currentPage); + + for (int i = 0; i < contentListSlots.length; i++) { + if (slotElements.size() > i) setSlotElement(contentListSlots[i], slotElements.get(i)); + else remove(contentListSlots[i]); + } + } + + @Override + public int getCurrentPage() { + return currentPage; + } + + @Override + public boolean hasInfinitePages() { + return infinitePages; + } + + @Override + public int[] getContentListSlots() { + return contentListSlots; + } + + @Override + public void registerPageChangeHandler(@NotNull BiConsumer pageChangeHandler) { + if (pageChangeHandlers == null) { + pageChangeHandlers = new ArrayList<>(); + } + + pageChangeHandlers.add(pageChangeHandler); + } + + @Override + public void unregisterPageChangeHandler(@NotNull BiConsumer pageChangeHandler) { + if (pageChangeHandlers != null) { + pageChangeHandlers.remove(pageChangeHandler); + } + } + + @Override + public void setPageChangeHandlers(@Nullable List> handlers) { + this.pageChangeHandlers = handlers; + } + + @Nullable + public List> getPageChangeHandlers() { + return pageChangeHandlers; + } + + protected abstract List getPageElements(int page); + +} diff --git a/invui/src/main/java/de/studiocode/invui/gui/impl/ScrollGUI.java b/invui/src/main/java/de/studiocode/invui/gui/AbstractScrollGUI.java similarity index 60% rename from invui/src/main/java/de/studiocode/invui/gui/impl/ScrollGUI.java rename to invui/src/main/java/de/studiocode/invui/gui/AbstractScrollGUI.java index b887458..d18024b 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/impl/ScrollGUI.java +++ b/invui/src/main/java/de/studiocode/invui/gui/AbstractScrollGUI.java @@ -1,7 +1,7 @@ -package de.studiocode.invui.gui.impl; +package de.studiocode.invui.gui; -import de.studiocode.invui.gui.GUI; -import de.studiocode.invui.gui.SlotElement; +import de.studiocode.invui.gui.impl.ScrollItemsGUIImpl; +import de.studiocode.invui.gui.impl.ScrollNestedGUIImpl; import de.studiocode.invui.gui.structure.Structure; import de.studiocode.invui.util.SlotUtils; @@ -10,35 +10,35 @@ import java.util.List; /** * A scrollable {@link GUI} * - * @see SimpleScrollItemsGUI - * @see SimpleScrollNestedGUI + * @see ScrollItemsGUIImpl + * @see ScrollNestedGUIImpl */ -public abstract class ScrollGUI extends BaseGUI { +public abstract class AbstractScrollGUI extends AbstractGUI implements ScrollGUI { private final boolean infiniteLines; private final int lineLength; private final int lineAmount; - private final int[] itemListSlots; + private final int[] contentListSlots; protected int offset; - public ScrollGUI(int width, int height, boolean infiniteLines, int... itemListSlots) { + public AbstractScrollGUI(int width, int height, boolean infiniteLines, int... contentListSlots) { super(width, height); this.infiniteLines = infiniteLines; - this.itemListSlots = itemListSlots; - this.lineLength = SlotUtils.getLongestLineLength(itemListSlots, width); - this.lineAmount = (int) Math.ceil((double) itemListSlots.length / (double) lineLength); + this.contentListSlots = contentListSlots; + this.lineLength = SlotUtils.getLongestLineLength(contentListSlots, width); + this.lineAmount = (int) Math.ceil((double) contentListSlots.length / (double) lineLength); - if (itemListSlots.length == 0) + if (contentListSlots.length == 0) throw new IllegalArgumentException("No item list slots provided"); if (lineLength == 0) throw new IllegalArgumentException("Line length can't be 0"); - if (itemListSlots.length % lineLength != 0) - throw new IllegalArgumentException("itemListSlots has to be a multiple of lineLength"); + if (contentListSlots.length % lineLength != 0) + throw new IllegalArgumentException("contentListSlots has to be a multiple of lineLength"); } - public ScrollGUI(int width, int height, boolean infiniteLines, Structure structure) { - this(width, height, infiniteLines, structure.getIngredientList().findItemListSlots()); + public AbstractScrollGUI(int width, int height, boolean infiniteLines, Structure structure) { + this(width, height, infiniteLines, structure.getIngredientList().findContentListSlots()); applyStructure(structure); } @@ -46,22 +46,26 @@ public abstract class ScrollGUI extends BaseGUI { return lineLength; } + @Override public int getCurrentLine() { return offset / lineLength; } + @Override public void setCurrentLine(int line) { this.offset = line * lineLength; } + @Override public boolean canScroll(int lines) { if (lines == 0 || (infiniteLines && lines > 0) || (lines < 0 && getCurrentLine() > 0)) return true; int line = getCurrentLine() + lines; - int maxLineIndex = getMaxLineIndex(); + int maxLineIndex = getMaxLine(); return line >= 0 && (line + lineAmount - 1) <= maxLineIndex; } + @Override public void scroll(int lines) { if (lines == 0) return; @@ -69,7 +73,7 @@ public abstract class ScrollGUI extends BaseGUI { setCurrentLine(getCurrentLine() + lines); update(); } else if (lines > 1) { - setCurrentLine(getMaxLineIndex()); + setCurrentLine(getMaxLine()); update(); } else if (lines < -1) { setCurrentLine(0); @@ -91,22 +95,20 @@ public abstract class ScrollGUI extends BaseGUI { offset = 0; } else { int currentLine = getCurrentLine(); - int maxLineIndex = getMaxLineIndex(); + int maxLineIndex = getMaxLine(); if (currentLine >= maxLineIndex) setCurrentLine(maxLineIndex); } } private void updateContent() { - List slotElements = getElements(offset, itemListSlots.length + offset); + List slotElements = getElements(offset, contentListSlots.length + offset); - for (int i = 0; i < itemListSlots.length; i++) { - if (slotElements.size() > i) setSlotElement(itemListSlots[i], slotElements.get(i)); - else remove(itemListSlots[i]); + for (int i = 0; i < contentListSlots.length; i++) { + if (slotElements.size() > i) setSlotElement(contentListSlots[i], slotElements.get(i)); + else remove(contentListSlots[i]); } } - protected abstract int getMaxLineIndex(); - protected abstract List getElements(int from, int to); } diff --git a/invui/src/main/java/de/studiocode/invui/gui/impl/TabGUI.java b/invui/src/main/java/de/studiocode/invui/gui/AbstractTabGUI.java similarity index 53% rename from invui/src/main/java/de/studiocode/invui/gui/impl/TabGUI.java rename to invui/src/main/java/de/studiocode/invui/gui/AbstractTabGUI.java index 5c9df6b..dcbbe1a 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/impl/TabGUI.java +++ b/invui/src/main/java/de/studiocode/invui/gui/AbstractTabGUI.java @@ -1,26 +1,30 @@ -package de.studiocode.invui.gui.impl; +package de.studiocode.invui.gui; -import de.studiocode.invui.gui.Controllable; -import de.studiocode.invui.gui.SlotElement; import de.studiocode.invui.gui.structure.Structure; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import java.util.ArrayList; import java.util.List; +import java.util.function.BiConsumer; -public abstract class TabGUI extends BaseGUI implements Controllable { +public abstract class AbstractTabGUI extends AbstractGUI implements TabGUI { private final int tabAmount; private final int[] listSlots; private int currentTab = -1; - public TabGUI(int width, int height, int tabAmount, int... listSlots) { + private List> tabChangeHandlers; + + public AbstractTabGUI(int width, int height, int tabAmount, int... listSlots) { super(width, height); this.tabAmount = tabAmount; this.listSlots = listSlots; } - public TabGUI(int width, int height, int tabAmount, Structure structure) { - this(width, height, tabAmount, structure.getIngredientList().findItemListSlots()); + public AbstractTabGUI(int width, int height, int tabAmount, Structure structure) { + this(width, height, tabAmount, structure.getIngredientList().findContentListSlots()); applyStructure(structure); } @@ -33,8 +37,10 @@ public abstract class TabGUI extends BaseGUI implements Controllable { int previous = currentTab; currentTab = tab; update(); - - handleTabChange(previous, currentTab); + + if (tabChangeHandlers != null) { + tabChangeHandlers.forEach(handler -> handler.accept(previous, tab)); + } } protected void update() { @@ -65,10 +71,31 @@ public abstract class TabGUI extends BaseGUI implements Controllable { return currentTab; } + + @Override + @Nullable + public List> getTabChangeHandlers() { + return tabChangeHandlers; + } + + @Override + public void setTabChangeHandlers(@Nullable List> tabChangeHandlers) { + this.tabChangeHandlers = tabChangeHandlers; + } + + public void registerTabChangeHandler(@NotNull BiConsumer tabChangeHandler) { + if (tabChangeHandlers == null) tabChangeHandlers = new ArrayList<>(); + tabChangeHandlers.add(tabChangeHandler); + } + + @Override + public void unregisterTabChangeHandler(@NotNull BiConsumer tabChangeHandler) { + if (tabChangeHandlers != null) tabChangeHandlers.remove(tabChangeHandler); + } + public abstract boolean isTabAvailable(int tab); protected abstract List getSlotElements(int tab); - protected abstract void handleTabChange(int previous, int now); } diff --git a/invui/src/main/java/de/studiocode/invui/gui/Controllable.java b/invui/src/main/java/de/studiocode/invui/gui/Controllable.java deleted file mode 100644 index b8f25a7..0000000 --- a/invui/src/main/java/de/studiocode/invui/gui/Controllable.java +++ /dev/null @@ -1,7 +0,0 @@ -package de.studiocode.invui.gui; - -public interface Controllable { - - void updateControlItems(); - -} \ No newline at end of file diff --git a/invui/src/main/java/de/studiocode/invui/gui/GUI.java b/invui/src/main/java/de/studiocode/invui/gui/GUI.java index b0d930a..ba0938b 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/GUI.java +++ b/invui/src/main/java/de/studiocode/invui/gui/GUI.java @@ -7,14 +7,10 @@ import de.studiocode.invui.gui.structure.Structure; import de.studiocode.invui.item.Item; import de.studiocode.invui.item.ItemProvider; import de.studiocode.invui.virtualinventory.VirtualInventory; -import de.studiocode.invui.virtualinventory.event.UpdateReason; import de.studiocode.invui.window.Window; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.ClickType; -import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryCloseEvent; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -23,24 +19,29 @@ import java.util.Set; import java.util.function.Predicate; /** - * A GUI is a container for width * height {@link SlotElement}s.
+ * A GUI is a container for width * height {@link SlotElement SlotElements}.
* Each {@link SlotElement} can either be an {@link Item}, * a reference to a {@link VirtualInventory}'s or another {@link GUI}'s * slot index.
* A {@link GUI} is not an {@link Inventory}, nor does - * it access one. It just contains {@link SlotElement}s and their positions.
+ * it access one. It just contains {@link SlotElement SlotElements} and their positions.
* In order to create an {@link Inventory} which is visible * to players, you will need to use a {@link Window}. * - * @see BaseGUI - * @see PagedGUI - * @see SimpleGUI - * @see SimplePagedItemsGUI - * @see SimplePagedNestedGUI - * @see SimpleTabGUI * @see GUIBuilder + * @see AbstractGUI + * @see AbstractPagedGUI + * @see AbstractScrollGUI + * @see AbstractTabGUI + * @see NormalGUIImpl + * @see PagedItemsGUIImpl + * @see PageNestedGUIImpl + * @see ScrollItemsGUIImpl + * @see ScrollNestedGUIImpl + * @see ScrollVIGUIImpl + * @see TabGUIImpl */ -public interface GUI extends GUIParent { +public interface GUI { /** * Gets the size of the {@link GUI}. @@ -82,6 +83,13 @@ public interface GUI extends GUIParent { */ void setSlotElement(int index, @Nullable SlotElement slotElement); + /** + * Adds {@link SlotElement SlotElements} to the {@link GUI}. + * + * @param slotElements The {@link SlotElement SlotElements} to add. + */ + void addSlotElements(@NotNull SlotElement... slotElements); + /** * Gets the {@link SlotElement} on these coordinates. * @@ -117,11 +125,12 @@ public interface GUI extends GUIParent { boolean hasSlotElement(int index); /** - * Gets all {@link SlotElement}s of this {@link GUI} in an Array. + * Gets all {@link SlotElement SlotElements} of this {@link GUI} in an Array. * - * @return All {@link SlotElement}s of this {@link GUI} + * @return All {@link SlotElement SlotElements} of this {@link GUI} */ - SlotElement[] getSlotElements(); + @Nullable + SlotElement @NotNull [] getSlotElements(); /** * Sets the {@link Item} on these coordinates. @@ -131,7 +140,7 @@ public interface GUI extends GUIParent { * @param item The {@link Item} that should be placed on these coordinates * or null to remove the {@link Item} that is currently there. */ - void setItem(int x, int y, Item item); + void setItem(int x, int y, @Nullable Item item); /** * Sets the {@link Item} on that slot @@ -140,7 +149,14 @@ public interface GUI extends GUIParent { * @param item The {@link Item} that should be placed on that slot or null * to remove the {@link Item} that is currently there. */ - void setItem(int index, Item item); + void setItem(int index, @Nullable Item item); + + /** + * Adds {@link Item Items} to the gui. + * + * @param items The {@link Item Items} that should be added to the gui + */ + void addItems(@NotNull Item... items); /** * Gets the {@link Item} on these coordinates. @@ -149,6 +165,7 @@ public interface GUI extends GUIParent { * @param y The y coordinate * @return The {@link Item} which is placed on that slot or null if there isn't one */ + @Nullable Item getItem(int x, int y); /** @@ -157,21 +174,16 @@ public interface GUI extends GUIParent { * @param index The slot index * @return The {@link Item} which is placed on that slot or null if there isn't one */ + @Nullable Item getItem(int index); - /** - * Adds {@link Item}s to the gui. - * - * @param items The {@link Item}s that should be added to the gui - */ - void addItems(@NotNull Item... items); - /** * Gets the {@link ItemProvider} that will be used if nothing else * is placed on a slot. * * @return The {@link ItemProvider} */ + @Nullable ItemProvider getBackground(); /** @@ -193,7 +205,7 @@ public interface GUI extends GUIParent { /** * Remove the {@link Item} which are placed on these slots. * - * @param index The slot index of the {@link Item}s that should be removed + * @param index The slot index of the {@link Item Items} that should be removed */ void remove(int index); @@ -202,76 +214,26 @@ public interface GUI extends GUIParent { * * @param structure The structure */ - void applyStructure(Structure structure); + void applyStructure(@NotNull Structure structure); /** - * A method called if a slot in the {@link Inventory} has been clicked. - * - * @param slot The slot that has been clicked - * @param player The {@link Player} that clicked - * @param clickType The {@link ClickType} - * @param event The {@link InventoryClickEvent} - */ - void handleClick(int slot, Player player, ClickType clickType, InventoryClickEvent event); - - /** - * A method called when an {@link ItemStack} has been shift-clicked into this - * {@link GUI}. - * - * @param event The {@link InventoryClickEvent} associated with this action - */ - void handleItemShift(InventoryClickEvent event); - - /** - * A method called when an {@link ItemStack} has been dragged over the {@link GUI}. - * - * @param updateReason The reason for this item update. - * @param slot The slot index - * @param oldStack The {@link ItemStack} that was previously on that slot - * @param newStack The new {@link ItemStack} that would be there if the action isn't cancelled - * @return If the action has been cancelled - */ - boolean handleItemDrag(UpdateReason updateReason, int slot, ItemStack oldStack, ItemStack newStack); - - /** - * Adds a {@link GUIParent} to the set of {@link GUIParent}s. - * - * @param parent The {@link GUIParent} to add - */ - void addParent(@NotNull GUIParent parent); - - /** - * Removes a {@link GUIParent} from the set of {@link GUIParent}s - * - * @param parent The {@link GUIParent} to remove - */ - void removeParent(@NotNull GUIParent parent); - - /** - * Gets all {@link GUIParent}s. - * - * @return The {@link GUIParent}s of this {@link GUI} - */ - Set getParents(); - - /** - * Finds all {@link Window}s that show this {@link GUI}. + * Finds all {@link Window Windows} that show this {@link GUI}. * * @return The list of {@link Window} that show this {@link GUI} */ List findAllWindows(); /** - * Finds all {@link Player}s that are currently seeing this {@link Window}. + * Finds all {@link Player Players} that are currently seeing this {@link Window}. * - * @return The list of {@link Player}s that are currently seeing this {@link Window} + * @return The list of {@link Player Players} that are currently seeing this {@link Window} */ Set findAllCurrentViewers(); /** - * Closes the open {@link Inventory} for all viewers of {@link Window}s + * Closes the open {@link Inventory} for all viewers of {@link Window Windows} * where this {@link GUI} is displayed. - * Does not actually call the {@link Window#close(boolean)} method, which will + * Does not actually call the {@link Window#remove(boolean)} method, which will * be indirectly invoked by the {@link InventoryCloseEvent} if the {@link Window} * is set to close on that event. */ @@ -281,7 +243,7 @@ public interface GUI extends GUIParent { * Plays an {@link Animation}. * * @param animation The {@link Animation} to play. - * @param filter The filter that selects which {@link SlotElement}s should be animated. + * @param filter The filter that selects which {@link SlotElement SlotElements} should be animated. */ void playAnimation(@NotNull Animation animation, @Nullable Predicate filter); @@ -290,23 +252,23 @@ public interface GUI extends GUIParent { */ void cancelAnimation(); - // ---- fill methods ---- + // /** - * Fills the {@link GUI} with {@link Item}s. + * Fills the {@link GUI} with {@link Item Items}. * * @param start The start index of the fill (inclusive) * @param end The end index of the fill (exclusive) * @param item The {@link Item} that should be used or null to remove an existing item. - * @param replaceExisting If existing {@link Item}s should be replaced. + * @param replaceExisting If existing {@link Item Items} should be replaced. */ void fill(int start, int end, @Nullable Item item, boolean replaceExisting); /** - * Fills the entire {@link GUI} with {@link Item}s. + * Fills the entire {@link GUI} with {@link Item Items}. * * @param item The {@link Item} that should be used or null to remove an existing item. - * @param replaceExisting If existing {@link Item}s should be replaced. + * @param replaceExisting If existing {@link Item Items} should be replaced. */ void fill(@Nullable Item item, boolean replaceExisting); @@ -315,7 +277,7 @@ public interface GUI extends GUIParent { * * @param row The row * @param item The {@link Item} that should be used or null to remove an existing item. - * @param replaceExisting If existing {@link Item}s should be replaced. + * @param replaceExisting If existing {@link Item Items} should be replaced. */ void fillRow(int row, @Nullable Item item, boolean replaceExisting); @@ -324,7 +286,7 @@ public interface GUI extends GUIParent { * * @param column The column * @param item The {@link Item} that should be used or null to remove an existing item. - * @param replaceExisting If existing {@link Item}s should be replaced. + * @param replaceExisting If existing {@link Item Items} should be replaced. */ void fillColumn(int column, @Nullable Item item, boolean replaceExisting); @@ -332,7 +294,7 @@ public interface GUI extends GUIParent { * Fills the borders of this {@link GUI} with a specific {@link Item} * * @param item The {@link Item} that should be used or null to remove an existing item. - * @param replaceExisting If existing {@link Item}s should be replaced. + * @param replaceExisting If existing {@link Item Items} should be replaced. */ void fillBorders(@Nullable Item item, boolean replaceExisting); @@ -344,41 +306,43 @@ public interface GUI extends GUIParent { * @param width The width of the rectangle. * @param height The height of the rectangle * @param item The {@link Item} that should be used or null to remove an existing item. - * @param replaceExisting If existing {@link Item}s should be replaced. + * @param replaceExisting If existing {@link Item Items} should be replaced. */ void fillRectangle(int x, int y, int width, int height, @Nullable Item item, boolean replaceExisting); /** - * Fills a rectangle of another {@link GUI} in this {@link GUI}. + * Fills a rectangle with another {@link GUI} in this {@link GUI}. * * @param x The x coordinate where the rectangle should start * @param y The y coordinate where the rectangle should start * @param gui The {@link GUI} to be put into this {@link GUI} - * @param replaceExisting If existing {@link SlotElement}s should be replaced. + * @param replaceExisting If existing {@link SlotElement SlotElements} should be replaced. */ void fillRectangle(int x, int y, @NotNull GUI gui, boolean replaceExisting); /** - * Fills a rectangle of a {@link VirtualInventory} in this {@link GUI}. + * Fills a rectangle with a {@link VirtualInventory} in this {@link GUI}. * * @param x The x coordinate where the rectangle should start * @param y The y coordinate where the rectangle should start * @param width The line length of the rectangle. (VirtualInventory does not define a width) * @param virtualInventory The {@link VirtualInventory} to be put into this {@link GUI}. - * @param replaceExisting If existing {@link SlotElement}s should be replaced. + * @param replaceExisting If existing {@link SlotElement SlotElements} should be replaced. */ void fillRectangle(int x, int y, int width, @NotNull VirtualInventory virtualInventory, boolean replaceExisting); /** - * Fills a rectangle of a {@link VirtualInventory} in this {@link GUI}. + * Fills a rectangle with a {@link VirtualInventory} in this {@link GUI}. * * @param x The x coordinate where the rectangle should start * @param y The y coordinate where the rectangle should start * @param width The line length of the rectangle. (VirtualInventory does not define a width) * @param virtualInventory The {@link VirtualInventory} to be put into this {@link GUI}. * @param background The {@link ItemProvider} for empty slots of the {@link VirtualInventory} - * @param replaceExisting If existing {@link SlotElement}s should be replaced. + * @param replaceExisting If existing {@link SlotElement SlotElements} should be replaced. */ void fillRectangle(int x, int y, int width, @NotNull VirtualInventory virtualInventory, @Nullable ItemProvider background, boolean replaceExisting); + // + } diff --git a/invui/src/main/java/de/studiocode/invui/gui/PagedGUI.java b/invui/src/main/java/de/studiocode/invui/gui/PagedGUI.java new file mode 100644 index 0000000..702ff22 --- /dev/null +++ b/invui/src/main/java/de/studiocode/invui/gui/PagedGUI.java @@ -0,0 +1,106 @@ +package de.studiocode.invui.gui; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.List; +import java.util.function.BiConsumer; + +public interface PagedGUI extends GUI { + + /** + * Gets the amount of pages this {@link PagedGUI} has. + * + * @return The amount of pages this {@link PagedGUI} has. + */ + int getPageAmount(); + + /** + * Gets the current page of this {@link PagedGUI} as an index. + * + * @return Gets the current page of this {@link PagedGUI} as an index. + */ + int getCurrentPage(); + + /** + * Sets the current page of this {@link PagedGUI}. + * + * @param page The page to set. + */ + void setPage(int page); + + /** + * Checks if there is a next page. + * + * @return Whether there is a next page. + */ + boolean hasNextPage(); + + /** + * Checks if there is a previous page. + * + * @return Whether there is a previous page. + */ + boolean hasPreviousPage(); + + /** + * Gets if there are infinite pages in this {@link PagedGUI}. + * + * @return Whether there are infinite pages in this {@link PagedGUI}. + */ + boolean hasInfinitePages(); + + /** + * Displays the next page if there is one. + */ + void goForward(); + + /** + * Displays the previous page if there is one. + */ + void goBack(); + + /** + * Gets the slot indices that are used to display content in this {@link PagedGUI}. + * + * @return The slot indices that are used to display content in this {@link PagedGUI}. + */ + int[] getContentListSlots(); + + /** + * Sets the content of this {@link PagedGUI} for all pages. + * + * @param content The content to set. + */ + void setContent(List<@Nullable C> content); + + /** + * Gets the registered page change handlers. + * + * @return The registered page change handlers. + */ + @Nullable + List> getPageChangeHandlers(); + + /** + * Replaces the currently registered page change handlers with the given list. + * + * @param handlers The new page change handlers. + */ + void setPageChangeHandlers(@Nullable List> handlers); + + /** + * Registers a page change handler. + * + * @param handler The handler to register. + */ + void registerPageChangeHandler(@NotNull BiConsumer handler); + + /** + * Unregisters a page change handler. + * + * @param handler The handler to unregister. + */ + void unregisterPageChangeHandler(@NotNull BiConsumer handler); + +} diff --git a/invui/src/main/java/de/studiocode/invui/gui/ScrollGUI.java b/invui/src/main/java/de/studiocode/invui/gui/ScrollGUI.java new file mode 100644 index 0000000..5fe63e5 --- /dev/null +++ b/invui/src/main/java/de/studiocode/invui/gui/ScrollGUI.java @@ -0,0 +1,49 @@ +package de.studiocode.invui.gui; + +import java.util.List; + +public interface ScrollGUI extends GUI { + + /** + * Gets the current line of this {@link ScrollGUI}. + * + * @return The current line of this {@link ScrollGUI}. + */ + int getCurrentLine(); + + /** + * Gets the max line index of this {@link ScrollGUI}. + * + * @return The max line index of this {@link ScrollGUI}. + */ + int getMaxLine(); + + /** + * Sets the current line of this {@link ScrollGUI}. + * + * @param line The line to set. + */ + void setCurrentLine(int line); + + /** + * Checks if it is possible to scroll the specified amount of lines. + * + * @return Whether it is possible to scroll the specified amount of lines. + */ + boolean canScroll(int lines); + + /** + * Scrolls the specified amount of lines. + * + * @param lines The amount of lines to scroll. + */ + void scroll(int lines); + + /** + * Sets the content of this {@link ScrollGUI} for all lines. + * + * @param content The content to set. + */ + void setContent(List content); + +} diff --git a/invui/src/main/java/de/studiocode/invui/gui/SlotElement.java b/invui/src/main/java/de/studiocode/invui/gui/SlotElement.java index c0845ef..05f6604 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/SlotElement.java +++ b/invui/src/main/java/de/studiocode/invui/gui/SlotElement.java @@ -99,11 +99,14 @@ public interface SlotElement { private final int slot; public LinkedSlotElement(GUI gui, int slot) { + if (!(gui instanceof AbstractGUI)) + throw new IllegalArgumentException("Illegal GUI implementation"); + this.gui = gui; this.slot = slot; } - public GUI getGui() { + public GUI getGUI() { return gui; } @@ -115,18 +118,18 @@ public interface SlotElement { public SlotElement getHoldingElement() { LinkedSlotElement element = this; while (true) { - SlotElement below = element.getGui().getSlotElement(element.getSlotIndex()); + SlotElement below = element.getGUI().getSlotElement(element.getSlotIndex()); if (below instanceof LinkedSlotElement) element = (LinkedSlotElement) below; else return below; } } - public List getGuiList() { + public List getGUIList() { ArrayList guis = new ArrayList<>(); LinkedSlotElement element = this; while (true) { - guis.add(element.getGui()); - SlotElement below = element.getGui().getSlotElement(element.getSlotIndex()); + guis.add(element.getGUI()); + SlotElement below = element.getGUI().getSlotElement(element.getSlotIndex()); if (below instanceof LinkedSlotElement) element = (LinkedSlotElement) below; else break; diff --git a/invui/src/main/java/de/studiocode/invui/gui/TabGUI.java b/invui/src/main/java/de/studiocode/invui/gui/TabGUI.java new file mode 100644 index 0000000..0dd6797 --- /dev/null +++ b/invui/src/main/java/de/studiocode/invui/gui/TabGUI.java @@ -0,0 +1,68 @@ +package de.studiocode.invui.gui; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.List; +import java.util.function.BiConsumer; + +public interface TabGUI extends GUI { + + /** + * Gets the current tab index. + * + * @return The current tab index. + */ + int getCurrentTab(); + + /** + * Sets the current tab. + * + * @param tab The index of the tab to show. + */ + void showTab(int tab); + + /** + * Checks if the given tab is available. + * + * @param tab The index of the tab to check. + * @return Whether the given tab is available. + */ + boolean isTabAvailable(int tab); + + /** + * Gets the configured tabs. + * @return The configured tabs. + */ + List getTabs(); + + /** + * Gets the registered tab change handlers. + * + * @return The registered tab change handlers. + */ + @Nullable + List> getTabChangeHandlers(); + + /** + * Replaces the currently registered tab change handlers with the given list. + * + * @param handlers The new page change handlers. + */ + void setTabChangeHandlers(@Nullable List> handlers); + + /** + * Registers a page change handler. + * + * @param handler The handler to register. + */ + void registerTabChangeHandler(@NotNull BiConsumer handler); + + /** + * Unregisters a page change handler. + * + * @param handler The handler to unregister. + */ + void unregisterTabChangeHandler(@NotNull BiConsumer handler); + +} diff --git a/invui/src/main/java/de/studiocode/invui/gui/builder/GUIBuilder.java b/invui/src/main/java/de/studiocode/invui/gui/builder/GUIBuilder.java index 555c277..93080e9 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/builder/GUIBuilder.java +++ b/invui/src/main/java/de/studiocode/invui/gui/builder/GUIBuilder.java @@ -23,119 +23,92 @@ import java.util.function.Supplier; * It provides similar functionality to Bukkit's {@link ShapedRecipe}, as it * allows for a structure String which defines the layout of the {@link GUI}. */ -public class GUIBuilder { +public class GUIBuilder { - private final GUIType guiType; - private final GUIContext context; + protected final GUIType guiType; + protected final GUIContext context; - public GUIBuilder(@NotNull GUIType guiType) { + public GUIBuilder(@NotNull GUIType guiType) { this.guiType = guiType; - this.context = new GUIContext(); + this.context = new GUIContext<>(); } - public GUIBuilder setStructure(int width, int height, @NotNull String structureData) { + public GUIBuilder setStructure(int width, int height, @NotNull String structureData) { context.setStructure(new Structure(width, height, structureData)); return this; } - public GUIBuilder setStructure(@NotNull String... structureData) { + public GUIBuilder setStructure(@NotNull String... structureData) { return setStructure(new Structure(structureData)); } - public GUIBuilder setStructure(@NotNull Structure structure) { + public GUIBuilder setStructure(@NotNull Structure structure) { context.setStructure(structure); return this; } - public GUIBuilder addIngredient(char key, @NotNull ItemStack itemStack) { + public GUIBuilder addIngredient(char key, @NotNull ItemStack itemStack) { context.getStructure().addIngredient(key, itemStack); return this; } - public GUIBuilder addIngredient(char key, @NotNull ItemProvider itemProvider) { + public GUIBuilder addIngredient(char key, @NotNull ItemProvider itemProvider) { context.getStructure().addIngredient(key, itemProvider); return this; } - public GUIBuilder addIngredient(char key, @NotNull Item item) { + public GUIBuilder addIngredient(char key, @NotNull Item item) { context.getStructure().addIngredient(key, item); return this; } - public GUIBuilder addIngredient(char key, @NotNull VirtualInventory inventory) { + public GUIBuilder addIngredient(char key, @NotNull VirtualInventory inventory) { context.getStructure().addIngredient(key, inventory); return this; } - public GUIBuilder addIngredient(char key, @NotNull VirtualInventory inventory, @Nullable ItemProvider background) { + public GUIBuilder addIngredient(char key, @NotNull VirtualInventory inventory, @Nullable ItemProvider background) { context.getStructure().addIngredient(key, inventory, background); return this; } - public GUIBuilder addIngredient(char key, @NotNull SlotElement element) { + public GUIBuilder addIngredient(char key, @NotNull SlotElement element) { context.getStructure().addIngredient(key, element); return this; } - public GUIBuilder addIngredient(char key, @NotNull Marker marker) { + public GUIBuilder addIngredient(char key, @NotNull Marker marker) { context.getStructure().addIngredient(key, marker); return this; } - public GUIBuilder addIngredient(char key, @NotNull Supplier itemSupplier) { + public GUIBuilder addIngredient(char key, @NotNull Supplier itemSupplier) { context.getStructure().addIngredient(key, itemSupplier); return this; } - public GUIBuilder addIngredientElementSupplier(char key, @NotNull Supplier elementSupplier) { + public GUIBuilder addIngredientElementSupplier(char key, @NotNull Supplier elementSupplier) { context.getStructure().addIngredientElementSupplier(key, elementSupplier); return this; } - public GUIBuilder setItems(@NotNull List items) { - if (!guiType.acceptsItems()) - throw new UnsupportedOperationException("Items cannot be set in this gui type."); - context.setItems(items); + public GUIBuilder setContent(@NotNull List content) { + context.setContent(content); return this; } - public GUIBuilder addItem(@NotNull Item item) { - if (!guiType.acceptsItems()) - throw new UnsupportedOperationException("Items cannot be set in this gui type."); - if (context.getItems() == null) context.setItems(new ArrayList<>()); - context.getItems().add(item); - return this; - } - - public GUIBuilder setGUIs(@NotNull List guis) { - if (!guiType.acceptsGUIs()) - throw new UnsupportedOperationException("GUIs cannot be set in this gui type."); - context.setGuis(guis); - return this; - } - - public GUIBuilder addGUI(@NotNull GUI gui) { - if (!guiType.acceptsGUIs()) - throw new UnsupportedOperationException("GUIs cannot be set in this gui type."); - if (context.getGuis() == null) context.setGuis(new ArrayList<>()); - context.getGuis().add(gui); - return this; - } - - public GUIBuilder setInventory(@NotNull VirtualInventory inventory) { - if (!guiType.acceptsInventory()) - throw new UnsupportedOperationException("An inventory cannot be set in this gui type."); - context.setInventory(inventory); - return this; - } - - public GUIBuilder setBackground(@Nullable ItemProvider background) { - context.setBackground(background); + public GUIBuilder addContent(@NotNull C content) { + if (context.getContent() == null) + context.setContent(new ArrayList<>()); + + context.getContent().add(content); return this; } public G build() { - if (context.getStructure() == null) throw new IllegalStateException("GUIContext has not been set yet."); + if (context.getStructure() == null) + throw new IllegalStateException("GUIContext has not been set yet."); + return guiType.createGUI(context); } diff --git a/invui/src/main/java/de/studiocode/invui/gui/builder/GUIContext.java b/invui/src/main/java/de/studiocode/invui/gui/builder/GUIContext.java index e37242d..3ce15a8 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/builder/GUIContext.java +++ b/invui/src/main/java/de/studiocode/invui/gui/builder/GUIContext.java @@ -3,9 +3,7 @@ package de.studiocode.invui.gui.builder; import de.studiocode.invui.gui.GUI; import de.studiocode.invui.gui.builder.guitype.GUIType; import de.studiocode.invui.gui.structure.Structure; -import de.studiocode.invui.item.Item; import de.studiocode.invui.item.ItemProvider; -import de.studiocode.invui.virtualinventory.VirtualInventory; import org.jetbrains.annotations.NotNull; import java.util.List; @@ -14,13 +12,11 @@ import java.util.List; * The {@link GUIContext} contains all information from the {@link GUIBuilder} to be passed to * an instance of {@link GUIType} to create a new {@link GUI}. */ -public class GUIContext { +public class GUIContext { private Structure structure; private ItemProvider background; - private List guis; - private List items; - private VirtualInventory inventory; + private List content; public Structure getStructure() { return structure; @@ -38,28 +34,12 @@ public class GUIContext { this.background = background; } - public List getGuis() { - return guis; + public void setContent(@NotNull List content) { + this.content = content; } - public void setGuis(@NotNull List guis) { - this.guis = guis; - } - - public List getItems() { - return items; - } - - public void setItems(@NotNull List items) { - this.items = items; - } - - public VirtualInventory getInventory() { - return inventory; - } - - public void setInventory(@NotNull VirtualInventory inventory) { - this.inventory = inventory; + public List getContent() { + return content; } } diff --git a/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/GUIType.java b/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/GUIType.java index c9dae42..5664bfb 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/GUIType.java +++ b/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/GUIType.java @@ -1,20 +1,22 @@ package de.studiocode.invui.gui.builder.guitype; import de.studiocode.invui.gui.GUI; +import de.studiocode.invui.gui.PagedGUI; +import de.studiocode.invui.gui.ScrollGUI; +import de.studiocode.invui.gui.TabGUI; import de.studiocode.invui.gui.builder.GUIContext; -import de.studiocode.invui.gui.impl.*; import de.studiocode.invui.item.Item; import de.studiocode.invui.virtualinventory.VirtualInventory; -public interface GUIType { +public interface GUIType { - GUIType NORMAL = new NormalGUIType(); - GUIType PAGED_ITEMS = new PagedItemsGUIType(); - GUIType PAGED_GUIs = new PagedGUIsGUIType(); - GUIType TAB = new TabGUIType(); - GUIType SCROLL_ITEMS = new ScrollItemsGUIType(); - GUIType SCROLL_GUIS = new ScrollGUIsGUIType(); - GUIType SCROLL_INVENTORY = new ScrollVIGUIType(); + GUIType NORMAL = new NormalGUIType(); + GUIType, Item> PAGED_ITEMS = new PagedItemsGUIType(); + GUIType, GUI> PAGED_GUIs = new PagedGUIsGUIType(); + GUIType TAB = new TabGUIType(); + GUIType, Item> SCROLL_ITEMS = new ScrollItemsGUIType(); + GUIType, GUI> SCROLL_GUIS = new ScrollGUIsGUIType(); + GUIType, VirtualInventory> SCROLL_INVENTORY = new ScrollVIGUIType(); /** * Creates a {@link GUI} of type {@link G} with the given {@link GUIContext} @@ -22,21 +24,6 @@ public interface GUIType { * @param context The {@link GUIContext} to create the {@link G} from. * @return The created {@link G} */ - G createGUI(GUIContext context); - - /** - * @return If this {@link GUIType} accepts {@link GUI GUIs} from the {@link GUIContext}. - */ - boolean acceptsGUIs(); - - /** - * @return If this {@link GUIType} accepts {@link Item Items} from the {@link GUIContext}. - */ - boolean acceptsItems(); - - /** - * @return If this {@link GUIType} accepts a {@link VirtualInventory} from the {@link GUIContext} - */ - boolean acceptsInventory(); + G createGUI(GUIContext context); } diff --git a/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/NormalGUIType.java b/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/NormalGUIType.java index d39b7b1..263d419 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/NormalGUIType.java +++ b/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/NormalGUIType.java @@ -1,30 +1,16 @@ package de.studiocode.invui.gui.builder.guitype; +import de.studiocode.invui.gui.GUI; import de.studiocode.invui.gui.builder.GUIContext; -import de.studiocode.invui.gui.impl.SimpleGUI; +import de.studiocode.invui.gui.impl.NormalGUIImpl; -class NormalGUIType implements GUIType { +class NormalGUIType implements GUIType { @Override - public SimpleGUI createGUI(GUIContext context) { - SimpleGUI gui = new SimpleGUI(context.getStructure()); + public NormalGUIImpl createGUI(GUIContext context) { + NormalGUIImpl gui = new NormalGUIImpl(context.getStructure()); gui.setBackground(context.getBackground()); return gui; } - @Override - public boolean acceptsGUIs() { - return false; - } - - @Override - public boolean acceptsItems() { - return false; - } - - @Override - public boolean acceptsInventory() { - return false; - } - } diff --git a/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/PagedGUIsGUIType.java b/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/PagedGUIsGUIType.java index f0fad67..c31f1d5 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/PagedGUIsGUIType.java +++ b/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/PagedGUIsGUIType.java @@ -1,30 +1,17 @@ package de.studiocode.invui.gui.builder.guitype; +import de.studiocode.invui.gui.GUI; +import de.studiocode.invui.gui.PagedGUI; import de.studiocode.invui.gui.builder.GUIContext; -import de.studiocode.invui.gui.impl.SimplePagedNestedGUI; +import de.studiocode.invui.gui.impl.PageNestedGUIImpl; -class PagedGUIsGUIType implements GUIType { +class PagedGUIsGUIType implements GUIType, GUI> { @Override - public SimplePagedNestedGUI createGUI(GUIContext context) { - SimplePagedNestedGUI gui = new SimplePagedNestedGUI(context.getGuis(), context.getStructure()); + public PageNestedGUIImpl createGUI(GUIContext context) { + PageNestedGUIImpl gui = new PageNestedGUIImpl(context.getContent(), context.getStructure()); gui.setBackground(context.getBackground()); return gui; } - @Override - public boolean acceptsGUIs() { - return true; - } - - @Override - public boolean acceptsItems() { - return false; - } - - @Override - public boolean acceptsInventory() { - return false; - } - } diff --git a/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/PagedItemsGUIType.java b/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/PagedItemsGUIType.java index 93d5289..02d83ce 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/PagedItemsGUIType.java +++ b/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/PagedItemsGUIType.java @@ -1,30 +1,17 @@ package de.studiocode.invui.gui.builder.guitype; +import de.studiocode.invui.gui.PagedGUI; import de.studiocode.invui.gui.builder.GUIContext; -import de.studiocode.invui.gui.impl.SimplePagedItemsGUI; +import de.studiocode.invui.gui.impl.PagedItemsGUIImpl; +import de.studiocode.invui.item.Item; -class PagedItemsGUIType implements GUIType { +class PagedItemsGUIType implements GUIType, Item> { @Override - public SimplePagedItemsGUI createGUI(GUIContext context) { - SimplePagedItemsGUI gui = new SimplePagedItemsGUI(context.getItems(), context.getStructure()); + public PagedItemsGUIImpl createGUI(GUIContext context) { + PagedItemsGUIImpl gui = new PagedItemsGUIImpl(context.getContent(), context.getStructure()); gui.setBackground(context.getBackground()); return gui; } - @Override - public boolean acceptsGUIs() { - return false; - } - - @Override - public boolean acceptsItems() { - return true; - } - - @Override - public boolean acceptsInventory() { - return false; - } - } diff --git a/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/ScrollGUIsGUIType.java b/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/ScrollGUIsGUIType.java index d21e74b..561f144 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/ScrollGUIsGUIType.java +++ b/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/ScrollGUIsGUIType.java @@ -1,30 +1,17 @@ package de.studiocode.invui.gui.builder.guitype; +import de.studiocode.invui.gui.GUI; +import de.studiocode.invui.gui.ScrollGUI; import de.studiocode.invui.gui.builder.GUIContext; -import de.studiocode.invui.gui.impl.SimpleScrollNestedGUI; +import de.studiocode.invui.gui.impl.ScrollNestedGUIImpl; -class ScrollGUIsGUIType implements GUIType { +class ScrollGUIsGUIType implements GUIType, GUI> { @Override - public SimpleScrollNestedGUI createGUI(GUIContext context) { - SimpleScrollNestedGUI gui = new SimpleScrollNestedGUI(context.getGuis(), context.getStructure()); + public ScrollNestedGUIImpl createGUI(GUIContext context) { + ScrollNestedGUIImpl gui = new ScrollNestedGUIImpl(context.getContent(), context.getStructure()); gui.setBackground(gui.getBackground()); return gui; } - @Override - public boolean acceptsGUIs() { - return true; - } - - @Override - public boolean acceptsItems() { - return false; - } - - @Override - public boolean acceptsInventory() { - return false; - } - } diff --git a/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/ScrollItemsGUIType.java b/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/ScrollItemsGUIType.java index fb7886b..ffc18f9 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/ScrollItemsGUIType.java +++ b/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/ScrollItemsGUIType.java @@ -1,30 +1,17 @@ package de.studiocode.invui.gui.builder.guitype; +import de.studiocode.invui.gui.ScrollGUI; import de.studiocode.invui.gui.builder.GUIContext; -import de.studiocode.invui.gui.impl.SimpleScrollItemsGUI; +import de.studiocode.invui.gui.impl.ScrollItemsGUIImpl; +import de.studiocode.invui.item.Item; -class ScrollItemsGUIType implements GUIType { +class ScrollItemsGUIType implements GUIType, Item> { @Override - public SimpleScrollItemsGUI createGUI(GUIContext context) { - SimpleScrollItemsGUI gui = new SimpleScrollItemsGUI(context.getItems(), context.getStructure()); + public ScrollItemsGUIImpl createGUI(GUIContext context) { + ScrollItemsGUIImpl gui = new ScrollItemsGUIImpl(context.getContent(), context.getStructure()); gui.setBackground(context.getBackground()); return gui; } - @Override - public boolean acceptsGUIs() { - return false; - } - - @Override - public boolean acceptsItems() { - return true; - } - - @Override - public boolean acceptsInventory() { - return false; - } - } \ No newline at end of file diff --git a/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/ScrollVIGUIType.java b/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/ScrollVIGUIType.java index 39e01a4..1320639 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/ScrollVIGUIType.java +++ b/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/ScrollVIGUIType.java @@ -1,30 +1,17 @@ package de.studiocode.invui.gui.builder.guitype; +import de.studiocode.invui.gui.ScrollGUI; import de.studiocode.invui.gui.builder.GUIContext; -import de.studiocode.invui.gui.impl.SimpleScrollVIGUI; +import de.studiocode.invui.gui.impl.ScrollVIGUIImpl; +import de.studiocode.invui.virtualinventory.VirtualInventory; -class ScrollVIGUIType implements GUIType { +class ScrollVIGUIType implements GUIType, VirtualInventory> { @Override - public SimpleScrollVIGUI createGUI(GUIContext context) { - SimpleScrollVIGUI gui = new SimpleScrollVIGUI(context.getInventory(), context.getStructure()); + public ScrollVIGUIImpl createGUI(GUIContext context) { + ScrollVIGUIImpl gui = new ScrollVIGUIImpl(context.getContent(), context.getStructure()); gui.setBackground(context.getBackground()); return gui; } - @Override - public boolean acceptsGUIs() { - return true; - } - - @Override - public boolean acceptsItems() { - return false; - } - - @Override - public boolean acceptsInventory() { - return true; - } - } diff --git a/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/TabGUIType.java b/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/TabGUIType.java index 410d0e3..6fb6949 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/TabGUIType.java +++ b/invui/src/main/java/de/studiocode/invui/gui/builder/guitype/TabGUIType.java @@ -1,30 +1,17 @@ package de.studiocode.invui.gui.builder.guitype; +import de.studiocode.invui.gui.GUI; +import de.studiocode.invui.gui.TabGUI; import de.studiocode.invui.gui.builder.GUIContext; -import de.studiocode.invui.gui.impl.SimpleTabGUI; +import de.studiocode.invui.gui.impl.TabGUIImpl; -class TabGUIType implements GUIType { +class TabGUIType implements GUIType { @Override - public SimpleTabGUI createGUI(GUIContext context) { - SimpleTabGUI gui = new SimpleTabGUI(context.getGuis(), context.getStructure()); + public TabGUIImpl createGUI(GUIContext context) { + TabGUIImpl gui = new TabGUIImpl(context.getContent(), context.getStructure()); gui.setBackground(context.getBackground()); return gui; } - @Override - public boolean acceptsGUIs() { - return true; - } - - @Override - public boolean acceptsItems() { - return false; - } - - @Override - public boolean acceptsInventory() { - return false; - } - } diff --git a/invui/src/main/java/de/studiocode/invui/gui/impl/SimpleGUI.java b/invui/src/main/java/de/studiocode/invui/gui/impl/NormalGUIImpl.java similarity index 65% rename from invui/src/main/java/de/studiocode/invui/gui/impl/SimpleGUI.java rename to invui/src/main/java/de/studiocode/invui/gui/impl/NormalGUIImpl.java index 9623de6..54afd58 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/impl/SimpleGUI.java +++ b/invui/src/main/java/de/studiocode/invui/gui/impl/NormalGUIImpl.java @@ -1,5 +1,6 @@ package de.studiocode.invui.gui.impl; +import de.studiocode.invui.gui.AbstractGUI; import de.studiocode.invui.gui.GUI; import de.studiocode.invui.gui.structure.Structure; import org.jetbrains.annotations.NotNull; @@ -7,13 +8,13 @@ import org.jetbrains.annotations.NotNull; /** * A normal {@link GUI} without any special features. */ -public class SimpleGUI extends BaseGUI { +public final class NormalGUIImpl extends AbstractGUI { - public SimpleGUI(int width, int height) { + public NormalGUIImpl(int width, int height) { super(width, height); } - public SimpleGUI(@NotNull Structure structure) { + public NormalGUIImpl(@NotNull Structure structure) { super(structure.getWidth(), structure.getHeight()); applyStructure(structure); } diff --git a/invui/src/main/java/de/studiocode/invui/gui/impl/PageNestedGUIImpl.java b/invui/src/main/java/de/studiocode/invui/gui/impl/PageNestedGUIImpl.java new file mode 100644 index 0000000..152834b --- /dev/null +++ b/invui/src/main/java/de/studiocode/invui/gui/impl/PageNestedGUIImpl.java @@ -0,0 +1,59 @@ +package de.studiocode.invui.gui.impl; + +import de.studiocode.invui.gui.AbstractPagedGUI; +import de.studiocode.invui.gui.GUI; +import de.studiocode.invui.gui.SlotElement; +import de.studiocode.invui.gui.builder.GUIBuilder; +import de.studiocode.invui.gui.structure.Structure; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +/** + * A {@link AbstractPagedGUI} where every page is its own {@link GUI}. + * + * @see GUIBuilder + * @see PagedItemsGUIImpl + */ +public final class PageNestedGUIImpl extends AbstractPagedGUI { + + private List guis; + + public PageNestedGUIImpl(int width, int height, @Nullable List guis, int... contentListSlots) { + super(width, height, false, contentListSlots); + setContent(guis); + } + + public PageNestedGUIImpl(@Nullable List guis, @NotNull Structure structure) { + super(structure.getWidth(), structure.getHeight(), false, structure); + setContent(guis); + } + + @Override + public int getPageAmount() { + return guis.size(); + } + + @Override + public void setContent(@Nullable List guis) { + this.guis = guis == null ? new ArrayList<>() : guis; + update(); + } + + @Override + protected List getPageElements(int page) { + if (guis.size() <= page) return new ArrayList<>(); + + GUI gui = guis.get(page); + int size = gui.getSize(); + + return IntStream.range(0, size) + .mapToObj(i -> new SlotElement.LinkedSlotElement(gui, i)) + .collect(Collectors.toList()); + } + +} diff --git a/invui/src/main/java/de/studiocode/invui/gui/impl/PagedGUI.java b/invui/src/main/java/de/studiocode/invui/gui/impl/PagedGUI.java deleted file mode 100644 index 19b3ff6..0000000 --- a/invui/src/main/java/de/studiocode/invui/gui/impl/PagedGUI.java +++ /dev/null @@ -1,101 +0,0 @@ -package de.studiocode.invui.gui.impl; - -import de.studiocode.invui.gui.GUI; -import de.studiocode.invui.gui.SlotElement; -import de.studiocode.invui.gui.builder.GUIBuilder; -import de.studiocode.invui.gui.structure.Structure; - -import java.util.List; - -/** - * A {@link GUI} with pages. - * - * @see GUIBuilder - * @see SimplePagedItemsGUI - * @see SimplePagedNestedGUI - */ -public abstract class PagedGUI extends BaseGUI { - - private final boolean infinitePages; - private final int[] itemListSlots; - private int currentPage; - - public PagedGUI(int width, int height, boolean infinitePages, int... itemListSlots) { - super(width, height); - this.infinitePages = infinitePages; - this.itemListSlots = itemListSlots; - } - - public PagedGUI(int width, int height, boolean infinitePages, Structure structure) { - this(width, height, infinitePages, structure.getIngredientList().findItemListSlots()); - applyStructure(structure); - } - - public void goForward() { - if (hasNextPage()) - setPage(currentPage + 1); - } - - public void goBack() { - if (hasPageBefore()) - setPage(currentPage - 1); - } - - public void setPage(int page) { - int previous = currentPage; - currentPage = page; - update(); - if (previous != currentPage) - handlePageChange(previous, currentPage); - } - - public boolean hasNextPage() { - return currentPage < getPageAmount() - 1 || infinitePages; - } - - public boolean hasPageBefore() { - return currentPage > 0; - } - - protected void update() { - correctPage(); - updateControlItems(); - updatePageContent(); - } - - private void correctPage() { - if (currentPage == 0 || infinitePages) return; - - int pageAmount = getPageAmount(); - if (currentPage < 0 || pageAmount <= 0) currentPage = 0; - else if (currentPage >= pageAmount) currentPage = pageAmount - 1; - } - - private void updatePageContent() { - List slotElements = getPageElements(currentPage); - - for (int i = 0; i < itemListSlots.length; i++) { - if (slotElements.size() > i) setSlotElement(itemListSlots[i], slotElements.get(i)); - else remove(itemListSlots[i]); - } - } - - public int getCurrentPageIndex() { - return currentPage; - } - - public boolean hasInfinitePages() { - return infinitePages; - } - - public int[] getItemListSlots() { - return itemListSlots; - } - - public abstract int getPageAmount(); - - protected abstract List getPageElements(int page); - - protected abstract void handlePageChange(int previous, int now); - -} diff --git a/invui/src/main/java/de/studiocode/invui/gui/impl/PagedItemsGUIImpl.java b/invui/src/main/java/de/studiocode/invui/gui/impl/PagedItemsGUIImpl.java new file mode 100644 index 0000000..cfd3b0d --- /dev/null +++ b/invui/src/main/java/de/studiocode/invui/gui/impl/PagedItemsGUIImpl.java @@ -0,0 +1,58 @@ +package de.studiocode.invui.gui.impl; + +import de.studiocode.invui.gui.AbstractPagedGUI; +import de.studiocode.invui.gui.SlotElement; +import de.studiocode.invui.gui.SlotElement.ItemSlotElement; +import de.studiocode.invui.gui.builder.GUIBuilder; +import de.studiocode.invui.gui.structure.Structure; +import de.studiocode.invui.item.Item; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.ArrayList; +import java.util.List; +import java.util.function.BiConsumer; +import java.util.stream.Collectors; + +/** + * A {@link AbstractPagedGUI} that is filled with {@link Item}s. + * + * @see GUIBuilder + * @see PageNestedGUIImpl + */ +public final class PagedItemsGUIImpl extends AbstractPagedGUI { + + private List items; + private List> pageChangeHandlers; + + public PagedItemsGUIImpl(int width, int height, @Nullable List items, int... contentListSlots) { + super(width, height, false, contentListSlots); + setContent(items); + } + + public PagedItemsGUIImpl(@Nullable List items, @NotNull Structure structure) { + super(structure.getWidth(), structure.getHeight(), false, structure); + setContent(items); + } + + @Override + public int getPageAmount() { + return (int) Math.ceil((double) items.size() / (double) getContentListSlots().length); + } + + @Override + public void setContent(List<@Nullable Item> content) { + this.items = items != null ? items : new ArrayList<>(); + update(); + } + + @Override + protected List getPageElements(int page) { + int length = getContentListSlots().length; + int from = page * length; + int to = Math.min(from + length, items.size()); + + return items.subList(from, to).stream().map(ItemSlotElement::new).collect(Collectors.toList()); + } + +} diff --git a/invui/src/main/java/de/studiocode/invui/gui/impl/SimpleScrollItemsGUI.java b/invui/src/main/java/de/studiocode/invui/gui/impl/ScrollItemsGUIImpl.java similarity index 64% rename from invui/src/main/java/de/studiocode/invui/gui/impl/SimpleScrollItemsGUI.java rename to invui/src/main/java/de/studiocode/invui/gui/impl/ScrollItemsGUIImpl.java index 25eef1b..9331995 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/impl/SimpleScrollItemsGUI.java +++ b/invui/src/main/java/de/studiocode/invui/gui/impl/ScrollItemsGUIImpl.java @@ -1,5 +1,6 @@ package de.studiocode.invui.gui.impl; +import de.studiocode.invui.gui.AbstractScrollGUI; import de.studiocode.invui.gui.SlotElement; import de.studiocode.invui.gui.structure.Structure; import de.studiocode.invui.item.Item; @@ -10,21 +11,22 @@ import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; -public class SimpleScrollItemsGUI extends ScrollGUI { +public final class ScrollItemsGUIImpl extends AbstractScrollGUI { private List items; - public SimpleScrollItemsGUI(int width, int height, @Nullable List items, int... itemListSlots) { - super(width, height, false, itemListSlots); - setItems(items); + public ScrollItemsGUIImpl(int width, int height, @Nullable List items, int... contentListSlots) { + super(width, height, false, contentListSlots); + setContent(items); } - public SimpleScrollItemsGUI(@Nullable List items, @NotNull Structure structure) { + public ScrollItemsGUIImpl(@Nullable List items, @NotNull Structure structure) { super(structure.getWidth(), structure.getHeight(), false, structure); - setItems(items); + setContent(items); } - public void setItems(@Nullable List items) { + @Override + public void setContent(@Nullable List items) { this.items = items != null ? items : new ArrayList<>(); update(); } @@ -37,7 +39,7 @@ public class SimpleScrollItemsGUI extends ScrollGUI { } @Override - protected int getMaxLineIndex() { + public int getMaxLine() { return (int) Math.ceil((double) items.size() / (double) getLineLength()) - 1; } diff --git a/invui/src/main/java/de/studiocode/invui/gui/impl/SimpleScrollNestedGUI.java b/invui/src/main/java/de/studiocode/invui/gui/impl/ScrollNestedGUIImpl.java similarity index 62% rename from invui/src/main/java/de/studiocode/invui/gui/impl/SimpleScrollNestedGUI.java rename to invui/src/main/java/de/studiocode/invui/gui/impl/ScrollNestedGUIImpl.java index 6352d58..4b21a49 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/impl/SimpleScrollNestedGUI.java +++ b/invui/src/main/java/de/studiocode/invui/gui/impl/ScrollNestedGUIImpl.java @@ -1,5 +1,6 @@ package de.studiocode.invui.gui.impl; +import de.studiocode.invui.gui.AbstractScrollGUI; import de.studiocode.invui.gui.GUI; import de.studiocode.invui.gui.SlotElement; import de.studiocode.invui.gui.structure.Structure; @@ -9,22 +10,23 @@ import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.List; -public class SimpleScrollNestedGUI extends ScrollGUI { +public final class ScrollNestedGUIImpl extends AbstractScrollGUI { private List guis; private List elements; - public SimpleScrollNestedGUI(int width, int height, @Nullable List guis, int... itemListSlots) { - super(width, height, false, itemListSlots); - setGuis(guis); + public ScrollNestedGUIImpl(int width, int height, @Nullable List guis, int... contentListSlots) { + super(width, height, false, contentListSlots); + setContent(guis); } - public SimpleScrollNestedGUI(@Nullable List guis, @NotNull Structure structure) { + public ScrollNestedGUIImpl(@Nullable List guis, @NotNull Structure structure) { super(structure.getWidth(), structure.getHeight(), false, structure); - setGuis(guis); + setContent(guis); } - public void setGuis(@Nullable List guis) { + @Override + public void setContent(@Nullable List guis) { this.guis = guis != null ? guis : new ArrayList<>(); updateElements(); update(); @@ -45,8 +47,9 @@ public class SimpleScrollNestedGUI extends ScrollGUI { } @Override - protected int getMaxLineIndex() { - return guis.size() - 1; + public int getMaxLine() { + if (elements == null) return 0; + return (int) Math.ceil((double) elements.size() / (double) getLineLength()) - 1; } } diff --git a/invui/src/main/java/de/studiocode/invui/gui/impl/ScrollVIGUIImpl.java b/invui/src/main/java/de/studiocode/invui/gui/impl/ScrollVIGUIImpl.java new file mode 100644 index 0000000..ec37d30 --- /dev/null +++ b/invui/src/main/java/de/studiocode/invui/gui/impl/ScrollVIGUIImpl.java @@ -0,0 +1,54 @@ +package de.studiocode.invui.gui.impl; + +import de.studiocode.invui.gui.AbstractScrollGUI; +import de.studiocode.invui.gui.SlotElement; +import de.studiocode.invui.gui.structure.Structure; +import de.studiocode.invui.virtualinventory.VirtualInventory; +import org.jetbrains.annotations.NotNull; + +import java.util.ArrayList; +import java.util.List; + +public final class ScrollVIGUIImpl extends AbstractScrollGUI { + + private List inventories; + private List elements; + + public ScrollVIGUIImpl(int width, int height, @NotNull List inventories, int... contentListSlots) { + super(width, height, false, contentListSlots); + setContent(inventories); + } + + public ScrollVIGUIImpl(@NotNull List inventories, @NotNull Structure structure) { + super(structure.getWidth(), structure.getHeight(), false, structure); + setContent(inventories); + } + + @Override + public void setContent(List inventory) { + this.inventories = inventory; + updateElements(); + update(); + } + + private void updateElements() { + elements = new ArrayList<>(); + for (VirtualInventory inventory : inventories) { + for (int i = 0; i < inventory.getSize(); i++) { + elements.add(new SlotElement.VISlotElement(inventory, i)); + } + } + } + + @Override + protected List getElements(int from, int to) { + return elements.subList(from, Math.min(elements.size(), to)); + } + + @Override + public int getMaxLine() { + if (elements == null) return 0; + return (int) Math.ceil((double) elements.size() / (double) getLineLength()) - 1; + } + +} diff --git a/invui/src/main/java/de/studiocode/invui/gui/impl/SimplePagedItemsGUI.java b/invui/src/main/java/de/studiocode/invui/gui/impl/SimplePagedItemsGUI.java deleted file mode 100644 index 4cd2944..0000000 --- a/invui/src/main/java/de/studiocode/invui/gui/impl/SimplePagedItemsGUI.java +++ /dev/null @@ -1,79 +0,0 @@ -package de.studiocode.invui.gui.impl; - -import de.studiocode.invui.gui.SlotElement; -import de.studiocode.invui.gui.SlotElement.ItemSlotElement; -import de.studiocode.invui.gui.builder.GUIBuilder; -import de.studiocode.invui.gui.structure.Structure; -import de.studiocode.invui.item.Item; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.ArrayList; -import java.util.List; -import java.util.function.BiConsumer; -import java.util.stream.Collectors; - -/** - * A {@link PagedGUI} that is filled with {@link Item}s. - * - * @see GUIBuilder - * @see SimplePagedNestedGUI - */ -public class SimplePagedItemsGUI extends PagedGUI { - - private List items; - private List> pageChangeHandlers; - - public SimplePagedItemsGUI(int width, int height, @Nullable List items, int... itemListSlots) { - super(width, height, false, itemListSlots); - setItems(items); - } - - public SimplePagedItemsGUI(@Nullable List items, @NotNull Structure structure) { - super(structure.getWidth(), structure.getHeight(), false, structure); - setItems(items); - } - - @Override - public int getPageAmount() { - return (int) Math.ceil((double) items.size() / (double) getItemListSlots().length); - } - - public void setItems(@Nullable List items) { - this.items = items != null ? items : new ArrayList<>(); - update(); - } - - public void addPageChangeHandler(@NotNull BiConsumer pageChangeHandler) { - if (pageChangeHandlers == null) pageChangeHandlers = new ArrayList<>(); - pageChangeHandlers.add(pageChangeHandler); - } - - public void removePageChangeHandler(@NotNull BiConsumer pageChangeHandler) { - if (pageChangeHandlers != null) pageChangeHandlers.remove(pageChangeHandler); - } - - @Nullable - public List> getPageChangeHandlers() { - return pageChangeHandlers; - } - - public void setPageChangeHandlers(@Nullable List> pageChangeHandlers) { - this.pageChangeHandlers = pageChangeHandlers; - } - - @Override - protected List getPageElements(int page) { - int length = getItemListSlots().length; - int from = page * length; - int to = Math.min(from + length, items.size()); - - return items.subList(from, to).stream().map(ItemSlotElement::new).collect(Collectors.toList()); - } - - @Override - protected void handlePageChange(int previous, int now) { - if (pageChangeHandlers != null) pageChangeHandlers.forEach(handler -> handler.accept(previous, now)); - } - -} diff --git a/invui/src/main/java/de/studiocode/invui/gui/impl/SimplePagedNestedGUI.java b/invui/src/main/java/de/studiocode/invui/gui/impl/SimplePagedNestedGUI.java deleted file mode 100644 index 222a51a..0000000 --- a/invui/src/main/java/de/studiocode/invui/gui/impl/SimplePagedNestedGUI.java +++ /dev/null @@ -1,82 +0,0 @@ -package de.studiocode.invui.gui.impl; - -import de.studiocode.invui.gui.GUI; -import de.studiocode.invui.gui.SlotElement; -import de.studiocode.invui.gui.builder.GUIBuilder; -import de.studiocode.invui.gui.structure.Structure; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.ArrayList; -import java.util.List; -import java.util.function.BiConsumer; -import java.util.stream.Collectors; -import java.util.stream.IntStream; - -/** - * A {@link PagedGUI} where every page is its own {@link GUI}. - * - * @see GUIBuilder - * @see SimplePagedItemsGUI - */ -public class SimplePagedNestedGUI extends PagedGUI { - - private List guis; - private List> pageChangeHandlers; - - public SimplePagedNestedGUI(int width, int height, @Nullable List guis, int... itemListSlots) { - super(width, height, false, itemListSlots); - setGuis(guis); - } - - public SimplePagedNestedGUI(@Nullable List guis, @NotNull Structure structure) { - super(structure.getWidth(), structure.getHeight(), false, structure); - setGuis(guis); - } - - @Override - public int getPageAmount() { - return guis.size(); - } - - public void setGuis(@Nullable List guis) { - this.guis = guis == null ? new ArrayList<>() : guis; - update(); - } - - public void addPageChangeHandler(@NotNull BiConsumer pageChangeHandler) { - if (pageChangeHandlers == null) pageChangeHandlers = new ArrayList<>(); - pageChangeHandlers.add(pageChangeHandler); - } - - public void removePageChangeHandler(@NotNull BiConsumer pageChangeHandler) { - if (pageChangeHandlers != null) pageChangeHandlers.remove(pageChangeHandler); - } - - @Nullable - public List> getPageChangeHandlers() { - return pageChangeHandlers; - } - - public void setPageChangeHandlers(@Nullable List> pageChangeHandlers) { - this.pageChangeHandlers = pageChangeHandlers; - } - - @Override - protected void handlePageChange(int previous, int now) { - if (pageChangeHandlers != null) pageChangeHandlers.forEach(handler -> handler.accept(previous, now)); - } - - @Override - protected List getPageElements(int page) { - if (guis.size() <= page) return new ArrayList<>(); - - GUI gui = guis.get(page); - int size = gui.getSize(); - - return IntStream.range(0, size) - .mapToObj(i -> new SlotElement.LinkedSlotElement(gui, i)) - .collect(Collectors.toList()); - } - -} diff --git a/invui/src/main/java/de/studiocode/invui/gui/impl/SimpleScrollVIGUI.java b/invui/src/main/java/de/studiocode/invui/gui/impl/SimpleScrollVIGUI.java deleted file mode 100644 index db839e1..0000000 --- a/invui/src/main/java/de/studiocode/invui/gui/impl/SimpleScrollVIGUI.java +++ /dev/null @@ -1,53 +0,0 @@ -package de.studiocode.invui.gui.impl; - -import de.studiocode.invui.gui.SlotElement; -import de.studiocode.invui.gui.structure.Structure; -import de.studiocode.invui.virtualinventory.VirtualInventory; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.ArrayList; -import java.util.List; - -public class SimpleScrollVIGUI extends ScrollGUI { - - private VirtualInventory inventory; - - public SimpleScrollVIGUI(int width, int height, @Nullable VirtualInventory inventory, int... itemListSlots) { - super(width, height, false, itemListSlots); - this.inventory = inventory; - - update(); - } - - public SimpleScrollVIGUI(@Nullable VirtualInventory inventory, @NotNull Structure structure) { - super(structure.getWidth(), structure.getHeight(), false, structure); - this.inventory = inventory; - - update(); - } - - public void setInventory(VirtualInventory inventory) { - this.inventory = inventory; - update(); - } - - @Override - protected List getElements(int from, int to) { - ArrayList elements = new ArrayList<>(); - if (inventory != null) { - for (int i = from; i < to && i < inventory.getSize(); i++) { - elements.add(new SlotElement.VISlotElement(inventory, i)); - } - } - - return elements; - } - - @Override - protected int getMaxLineIndex() { - if (inventory == null) return 0; - return (int) Math.ceil((double) inventory.getSize() / (double) getLineLength()) - 1; - } - -} diff --git a/invui/src/main/java/de/studiocode/invui/gui/impl/SimpleTabGUI.java b/invui/src/main/java/de/studiocode/invui/gui/impl/TabGUIImpl.java similarity index 59% rename from invui/src/main/java/de/studiocode/invui/gui/impl/SimpleTabGUI.java rename to invui/src/main/java/de/studiocode/invui/gui/impl/TabGUIImpl.java index 878236c..34cb054 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/impl/SimpleTabGUI.java +++ b/invui/src/main/java/de/studiocode/invui/gui/impl/TabGUIImpl.java @@ -1,17 +1,16 @@ package de.studiocode.invui.gui.impl; +import de.studiocode.invui.gui.AbstractTabGUI; import de.studiocode.invui.gui.GUI; import de.studiocode.invui.gui.SlotElement; import de.studiocode.invui.gui.SlotElement.LinkedSlotElement; import de.studiocode.invui.gui.builder.GUIBuilder; import de.studiocode.invui.gui.structure.Structure; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.function.BiConsumer; import java.util.stream.Collectors; /** @@ -19,13 +18,12 @@ import java.util.stream.Collectors; * * @see GUIBuilder */ -public class SimpleTabGUI extends TabGUI { +public final class TabGUIImpl extends AbstractTabGUI { private final List tabs; private final List> linkingElements; - private List> tabChangeHandlers; - public SimpleTabGUI(int width, int height, @NotNull List tabs, int[] listSlots) { + public TabGUIImpl(int width, int height, @NotNull List tabs, int[] listSlots) { super(width, height, tabs.size(), listSlots); this.linkingElements = tabs.stream().map(this::getLinkingElements).collect(Collectors.toList()); this.tabs = tabs; @@ -33,7 +31,7 @@ public class SimpleTabGUI extends TabGUI { update(); } - public SimpleTabGUI(@NotNull List tabs, @NotNull Structure structure) { + public TabGUIImpl(@NotNull List tabs, @NotNull Structure structure) { super(structure.getWidth(), structure.getHeight(), tabs.size(), structure); this.linkingElements = tabs.stream().map(this::getLinkingElements).collect(Collectors.toList()); this.tabs = tabs; @@ -62,29 +60,6 @@ public class SimpleTabGUI extends TabGUI { return tabs.get(tab) != null; } - public void addTabChangeHandler(@NotNull BiConsumer tabChangeHandler) { - if (tabChangeHandlers == null) tabChangeHandlers = new ArrayList<>(); - tabChangeHandlers.add(tabChangeHandler); - } - - public void removeTabChangeHandler(@NotNull BiConsumer tabChangeHandler) { - if (tabChangeHandlers != null) tabChangeHandlers.remove(tabChangeHandler); - } - - @Nullable - public List> getTabChangeHandlers() { - return tabChangeHandlers; - } - - public void setTabChangeHandlers(@Nullable List> tabChangeHandlers) { - this.tabChangeHandlers = tabChangeHandlers; - } - - @Override - protected void handleTabChange(int previous, int now) { - if (tabChangeHandlers != null) tabChangeHandlers.forEach(handler -> handler.accept(previous, now)); - } - @Override protected List getSlotElements(int tab) { return linkingElements.get(tab); diff --git a/invui/src/main/java/de/studiocode/invui/gui/structure/IngredientList.java b/invui/src/main/java/de/studiocode/invui/gui/structure/IngredientList.java index 95c9207..c13a948 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/structure/IngredientList.java +++ b/invui/src/main/java/de/studiocode/invui/gui/structure/IngredientList.java @@ -72,10 +72,10 @@ public class IngredientList extends ArrayList { return indices.stream().mapToInt(Integer::intValue).toArray(); } - public int[] findItemListSlots() { + public int[] findContentListSlots() { return Stream.concat( - findIndicesOfHorizontalMarker(Markers.ITEM_LIST_SLOT_HORIZONTAL).stream(), - findIndicesOfVerticalMarker(Markers.ITEM_LIST_SLOT_VERTICAL).stream() + findIndicesOfHorizontalMarker(Markers.CONTENT_LIST_SLOT_HORIZONTAL).stream(), + findIndicesOfVerticalMarker(Markers.CONTENT_LIST_SLOT_VERTICAL).stream() ).mapToInt(Integer::intValue).toArray(); } diff --git a/invui/src/main/java/de/studiocode/invui/gui/structure/Markers.java b/invui/src/main/java/de/studiocode/invui/gui/structure/Markers.java index bd9aa53..9d4ed94 100644 --- a/invui/src/main/java/de/studiocode/invui/gui/structure/Markers.java +++ b/invui/src/main/java/de/studiocode/invui/gui/structure/Markers.java @@ -1,8 +1,8 @@ package de.studiocode.invui.gui.structure; -import de.studiocode.invui.gui.impl.PagedGUI; -import de.studiocode.invui.gui.impl.ScrollGUI; -import de.studiocode.invui.gui.impl.TabGUI; +import de.studiocode.invui.gui.AbstractPagedGUI; +import de.studiocode.invui.gui.AbstractScrollGUI; +import de.studiocode.invui.gui.AbstractTabGUI; /** * Registry class for default markers @@ -10,15 +10,15 @@ import de.studiocode.invui.gui.impl.TabGUI; public class Markers { /** - * The marker for horizontal item list slots in {@link PagedGUI PagedGUIs}, - * {@link ScrollGUI ScrollGUIs} and {@link TabGUI TabGUIs} + * The marker for horizontal content list slots in {@link AbstractPagedGUI PagedGUIs}, + * {@link AbstractScrollGUI ScrollGUIs} and {@link AbstractTabGUI TabGUIs} */ - public static final Marker ITEM_LIST_SLOT_HORIZONTAL = new Marker(true); + public static final Marker CONTENT_LIST_SLOT_HORIZONTAL = new Marker(true); /** - * The marker for vertical item list slots in {@link PagedGUI PagedGUIs}, - * {@link ScrollGUI ScrollGUIs} and {@link TabGUI TabGUIs} + * The marker for vertical content list slots in {@link AbstractPagedGUI PagedGUIs}, + * {@link AbstractScrollGUI ScrollGUIs} and {@link AbstractTabGUI TabGUIs} */ - public static final Marker ITEM_LIST_SLOT_VERTICAL = new Marker(false); + public static final Marker CONTENT_LIST_SLOT_VERTICAL = new Marker(false); } diff --git a/invui/src/main/java/de/studiocode/invui/item/ItemProvider.java b/invui/src/main/java/de/studiocode/invui/item/ItemProvider.java index bd6c898..9c81f0f 100644 --- a/invui/src/main/java/de/studiocode/invui/item/ItemProvider.java +++ b/invui/src/main/java/de/studiocode/invui/item/ItemProvider.java @@ -1,6 +1,6 @@ package de.studiocode.invui.item; -import de.studiocode.invui.window.impl.BaseWindow; +import de.studiocode.invui.window.AbstractWindow; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -22,7 +22,7 @@ public interface ItemProvider extends Supplier, Cloneable { /** * Gets the {@link ItemStack} for a specific player. - * This is the method called by {@link BaseWindow} which gives you + * This is the method called by {@link AbstractWindow} which gives you * the option to (for example) create a subclass of {@link ItemProvider} that automatically * translates the item's name into the player's language. * diff --git a/invui/src/main/java/de/studiocode/invui/item/builder/BaseItemBuilder.java b/invui/src/main/java/de/studiocode/invui/item/builder/BaseItemBuilder.java index 48b9d94..85d1974 100644 --- a/invui/src/main/java/de/studiocode/invui/item/builder/BaseItemBuilder.java +++ b/invui/src/main/java/de/studiocode/invui/item/builder/BaseItemBuilder.java @@ -1,12 +1,12 @@ package de.studiocode.invui.item.builder; +import de.studiocode.inventoryaccess.InventoryAccess; import de.studiocode.inventoryaccess.component.BaseComponentWrapper; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.inventoryaccess.version.InventoryAccess; import de.studiocode.invui.item.ItemProvider; import de.studiocode.invui.util.ComponentUtils; import de.studiocode.invui.util.Pair; -import de.studiocode.invui.window.impl.BaseWindow; +import de.studiocode.invui.window.AbstractWindow; import net.md_5.bungee.api.chat.BaseComponent; import org.bukkit.Material; import org.bukkit.enchantments.Enchantment; @@ -21,7 +21,7 @@ import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; -abstract class BaseItemBuilder implements ItemProvider { +public abstract class BaseItemBuilder implements ItemProvider { protected ItemStack base; protected Material material; @@ -129,7 +129,7 @@ abstract class BaseItemBuilder implements ItemProvider { /** * Builds the {@link ItemStack} for a specific player. - * This is the method called by {@link BaseWindow} which gives you + * This is the method called by {@link AbstractWindow} which gives you * the option to (for example) create a subclass of {@link BaseItemBuilder} that automatically * translates the item's name into the player's language. * @@ -142,41 +142,6 @@ abstract class BaseItemBuilder implements ItemProvider { return get(); } - public T setLegacyLore(@NotNull List lore) { - this.lore = lore.stream() - .map(line -> new BaseComponentWrapper(ComponentUtils.withoutPreFormatting(line))) - .collect(Collectors.toList()); - return getThis(); - } - - public T addLoreLines(@NotNull String... lines) { - if (lore == null) lore = new ArrayList<>(); - - for (String line : lines) - lore.add(new BaseComponentWrapper(ComponentUtils.withoutPreFormatting(line))); - return getThis(); - } - - public T addLoreLines(@NotNull BaseComponent[]... lines) { - if (lore == null) lore = new ArrayList<>(); - - lore.addAll( - Arrays.stream(lines) - .map(line -> new BaseComponentWrapper(ComponentUtils.withoutPreFormatting(line))) - .collect(Collectors.toList()) - ); - - return getThis(); - } - - public T addLoreLines(@NotNull ComponentWrapper... lines) { - if (lore == null) lore = new ArrayList<>(); - - lore.addAll(Arrays.asList(lines)); - - return getThis(); - } - public T removeLoreLine(int index) { if (lore != null) lore.remove(index); return getThis(); @@ -187,51 +152,6 @@ abstract class BaseItemBuilder implements ItemProvider { return getThis(); } - public T addItemFlags(@NotNull ItemFlag... itemFlags) { - if (this.itemFlags == null) this.itemFlags = new ArrayList<>(); - this.itemFlags.addAll(Arrays.asList(itemFlags)); - return getThis(); - } - - public T removeItemFlags(@NotNull ItemFlag... itemFlags) { - if (this.itemFlags != null) - this.itemFlags.removeAll(Arrays.asList(itemFlags)); - return getThis(); - } - - public T clearItemFlags() { - if (itemFlags != null) itemFlags.clear(); - return getThis(); - } - - public T addEnchantment(Enchantment enchantment, int level, boolean ignoreLevelRestriction) { - if (enchantments == null) enchantments = new HashMap<>(); - enchantments.put(enchantment, new Pair<>(level, ignoreLevelRestriction)); - return getThis(); - } - - public T removeEnchantment(Enchantment enchantment) { - if (enchantments == null) enchantments = new HashMap<>(); - enchantments.remove(enchantment); - return getThis(); - } - - public T clearEnchantments() { - if (enchantments != null) enchantments.clear(); - return getThis(); - } - - public T addModifier(Function modifier) { - if (modifiers == null) modifiers = new ArrayList<>(); - modifiers.add(modifier); - return getThis(); - } - - public T clearModifiers() { - if (modifiers != null) modifiers.clear(); - return getThis(); - } - public ItemStack getBase() { return base; } @@ -291,6 +211,7 @@ abstract class BaseItemBuilder implements ItemProvider { return getThis(); } + // public List getLore() { return lore; } @@ -300,6 +221,43 @@ abstract class BaseItemBuilder implements ItemProvider { return getThis(); } + public T setLegacyLore(@NotNull List lore) { + this.lore = lore.stream() + .map(line -> new BaseComponentWrapper(ComponentUtils.withoutPreFormatting(line))) + .collect(Collectors.toList()); + return getThis(); + } + + public T addLoreLines(@NotNull String... lines) { + if (lore == null) lore = new ArrayList<>(); + + for (String line : lines) + lore.add(new BaseComponentWrapper(ComponentUtils.withoutPreFormatting(line))); + return getThis(); + } + + public T addLoreLines(@NotNull BaseComponent[]... lines) { + if (lore == null) lore = new ArrayList<>(); + + lore.addAll( + Arrays.stream(lines) + .map(line -> new BaseComponentWrapper(ComponentUtils.withoutPreFormatting(line))) + .collect(Collectors.toList()) + ); + + return getThis(); + } + + public T addLoreLines(@NotNull ComponentWrapper... lines) { + if (lore == null) lore = new ArrayList<>(); + + lore.addAll(Arrays.asList(lines)); + + return getThis(); + } + // + + // public List getItemFlags() { return itemFlags; } @@ -309,6 +267,25 @@ abstract class BaseItemBuilder implements ItemProvider { return getThis(); } + public T addItemFlags(@NotNull ItemFlag... itemFlags) { + if (this.itemFlags == null) this.itemFlags = new ArrayList<>(); + this.itemFlags.addAll(Arrays.asList(itemFlags)); + return getThis(); + } + + public T removeItemFlags(@NotNull ItemFlag... itemFlags) { + if (this.itemFlags != null) + this.itemFlags.removeAll(Arrays.asList(itemFlags)); + return getThis(); + } + + public T clearItemFlags() { + if (itemFlags != null) itemFlags.clear(); + return getThis(); + } + // + + // public HashMap> getEnchantments() { return enchantments; } @@ -318,10 +295,41 @@ abstract class BaseItemBuilder implements ItemProvider { return getThis(); } + public T addEnchantment(Enchantment enchantment, int level, boolean ignoreLevelRestriction) { + if (enchantments == null) enchantments = new HashMap<>(); + enchantments.put(enchantment, new Pair<>(level, ignoreLevelRestriction)); + return getThis(); + } + + public T removeEnchantment(Enchantment enchantment) { + if (enchantments == null) enchantments = new HashMap<>(); + enchantments.remove(enchantment); + return getThis(); + } + + public T clearEnchantments() { + if (enchantments != null) enchantments.clear(); + return getThis(); + } + // + + // public List> getModifiers() { return modifiers; } + public T addModifier(Function modifier) { + if (modifiers == null) modifiers = new ArrayList<>(); + modifiers.add(modifier); + return getThis(); + } + + public T clearModifiers() { + if (modifiers != null) modifiers.clear(); + return getThis(); + } + // + @SuppressWarnings("unchecked") @Override public T clone() { diff --git a/invui/src/main/java/de/studiocode/invui/item/impl/BaseItem.java b/invui/src/main/java/de/studiocode/invui/item/impl/BaseItem.java index 9f4c8a0..cc5367b 100644 --- a/invui/src/main/java/de/studiocode/invui/item/impl/BaseItem.java +++ b/invui/src/main/java/de/studiocode/invui/item/impl/BaseItem.java @@ -1,6 +1,7 @@ package de.studiocode.invui.item.impl; import de.studiocode.invui.item.Item; +import de.studiocode.invui.window.AbstractWindow; import de.studiocode.invui.window.Window; import java.util.Collections; @@ -12,15 +13,21 @@ import java.util.Set; */ public abstract class BaseItem implements Item { - private final Set windows = new HashSet<>(); + private final Set windows = new HashSet<>(); @Override public void addWindow(Window window) { - windows.add(window); + if (!(window instanceof AbstractWindow)) + throw new IllegalArgumentException("Illegal window implementation"); + + windows.add((AbstractWindow) window); } @Override public void removeWindow(Window window) { + if (!(window instanceof AbstractWindow)) + throw new IllegalArgumentException("Illegal window implementation"); + windows.remove(window); } diff --git a/invui/src/main/java/de/studiocode/invui/item/impl/controlitem/ControlItem.java b/invui/src/main/java/de/studiocode/invui/item/impl/controlitem/ControlItem.java index 80c0add..25c3381 100644 --- a/invui/src/main/java/de/studiocode/invui/item/impl/controlitem/ControlItem.java +++ b/invui/src/main/java/de/studiocode/invui/item/impl/controlitem/ControlItem.java @@ -21,12 +21,12 @@ public abstract class ControlItem extends BaseItem { return getItemProvider(gui); } - public G getGui() { + public G getGUI() { return gui; } @SuppressWarnings("unchecked") - public void setGui(Object gui) { + public void setGUI(Object gui) { if (this.gui == null) this.gui = (G) gui; } diff --git a/invui/src/main/java/de/studiocode/invui/item/impl/controlitem/PageItem.java b/invui/src/main/java/de/studiocode/invui/item/impl/controlitem/PageItem.java index d16f035..315ead6 100644 --- a/invui/src/main/java/de/studiocode/invui/item/impl/controlitem/PageItem.java +++ b/invui/src/main/java/de/studiocode/invui/item/impl/controlitem/PageItem.java @@ -1,15 +1,16 @@ package de.studiocode.invui.item.impl.controlitem; -import de.studiocode.invui.gui.impl.PagedGUI; +import de.studiocode.invui.gui.AbstractPagedGUI; +import de.studiocode.invui.gui.PagedGUI; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.InventoryClickEvent; import org.jetbrains.annotations.NotNull; /** - * Switches between pages in a {@link PagedGUI} + * Switches between pages in a {@link AbstractPagedGUI} */ -public abstract class PageItem extends ControlItem { +public abstract class PageItem extends ControlItem> { private final boolean forward; @@ -20,8 +21,8 @@ public abstract class PageItem extends ControlItem { @Override public void handleClick(@NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) { if (clickType == ClickType.LEFT) { - if (forward) getGui().goForward(); - else getGui().goBack(); + if (forward) getGUI().goForward(); + else getGUI().goBack(); } } diff --git a/invui/src/main/java/de/studiocode/invui/item/impl/controlitem/ScrollItem.java b/invui/src/main/java/de/studiocode/invui/item/impl/controlitem/ScrollItem.java index 6542cbf..d1b08ae 100644 --- a/invui/src/main/java/de/studiocode/invui/item/impl/controlitem/ScrollItem.java +++ b/invui/src/main/java/de/studiocode/invui/item/impl/controlitem/ScrollItem.java @@ -1,6 +1,7 @@ package de.studiocode.invui.item.impl.controlitem; -import de.studiocode.invui.gui.impl.ScrollGUI; +import de.studiocode.invui.gui.AbstractScrollGUI; +import de.studiocode.invui.gui.ScrollGUI; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.InventoryClickEvent; @@ -9,9 +10,9 @@ import org.jetbrains.annotations.NotNull; import java.util.HashMap; /** - * Scrolls in a {@link ScrollGUI} + * Scrolls in a {@link AbstractScrollGUI} */ -public abstract class ScrollItem extends ControlItem { +public abstract class ScrollItem extends ControlItem> { private final HashMap scroll; @@ -26,7 +27,7 @@ public abstract class ScrollItem extends ControlItem { @Override public void handleClick(@NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) { - if (scroll.containsKey(clickType)) getGui().scroll(scroll.get(clickType)); + if (scroll.containsKey(clickType)) getGUI().scroll(scroll.get(clickType)); } } diff --git a/invui/src/main/java/de/studiocode/invui/item/impl/controlitem/TabItem.java b/invui/src/main/java/de/studiocode/invui/item/impl/controlitem/TabItem.java index b392d97..4ed2199 100644 --- a/invui/src/main/java/de/studiocode/invui/item/impl/controlitem/TabItem.java +++ b/invui/src/main/java/de/studiocode/invui/item/impl/controlitem/TabItem.java @@ -1,13 +1,14 @@ package de.studiocode.invui.item.impl.controlitem; -import de.studiocode.invui.gui.impl.TabGUI; +import de.studiocode.invui.gui.AbstractTabGUI; +import de.studiocode.invui.gui.TabGUI; import org.bukkit.entity.Player; import org.bukkit.event.inventory.ClickType; import org.bukkit.event.inventory.InventoryClickEvent; import org.jetbrains.annotations.NotNull; /** - * Switches between tabs in a {@link TabGUI} + * Switches between tabs in a {@link AbstractTabGUI} */ public abstract class TabItem extends ControlItem { @@ -19,7 +20,7 @@ public abstract class TabItem extends ControlItem { @Override public void handleClick(@NotNull ClickType clickType, @NotNull Player player, @NotNull InventoryClickEvent event) { - if (clickType == ClickType.LEFT) getGui().showTab(tab); + if (clickType == ClickType.LEFT) getGUI().showTab(tab); } } diff --git a/invui/src/main/java/de/studiocode/invui/map/ColorPalette.java b/invui/src/main/java/de/studiocode/invui/util/ColorPalette.java similarity index 94% rename from invui/src/main/java/de/studiocode/invui/map/ColorPalette.java rename to invui/src/main/java/de/studiocode/invui/util/ColorPalette.java index a93ef72..e7ff674 100644 --- a/invui/src/main/java/de/studiocode/invui/map/ColorPalette.java +++ b/invui/src/main/java/de/studiocode/invui/util/ColorPalette.java @@ -1,6 +1,4 @@ -package de.studiocode.invui.map; - -import de.studiocode.invui.util.IOUtils; +package de.studiocode.invui.util; import java.awt.*; import java.awt.image.BufferedImage; diff --git a/invui/src/main/java/de/studiocode/invui/util/MojangApiUtils.java b/invui/src/main/java/de/studiocode/invui/util/MojangApiUtils.java index 2b54760..d8ec7fb 100644 --- a/invui/src/main/java/de/studiocode/invui/util/MojangApiUtils.java +++ b/invui/src/main/java/de/studiocode/invui/util/MojangApiUtils.java @@ -11,6 +11,7 @@ import java.io.Reader; import java.net.URL; import java.util.UUID; +@SuppressWarnings("deprecation") public class MojangApiUtils { private static final String SKIN_DATA_URL = "https://sessionserver.mojang.com/session/minecraft/profile/%s?unsigned=%s"; diff --git a/invui/src/main/java/de/studiocode/invui/virtualinventory/VirtualInventory.java b/invui/src/main/java/de/studiocode/invui/virtualinventory/VirtualInventory.java index 5052bbd..14f3119 100644 --- a/invui/src/main/java/de/studiocode/invui/virtualinventory/VirtualInventory.java +++ b/invui/src/main/java/de/studiocode/invui/virtualinventory/VirtualInventory.java @@ -1,11 +1,12 @@ package de.studiocode.invui.virtualinventory; import de.studiocode.invui.gui.GUI; -import de.studiocode.invui.util.ArrayUtils; import de.studiocode.invui.util.InventoryUtils; +import de.studiocode.invui.util.ArrayUtils; import de.studiocode.invui.virtualinventory.event.InventoryUpdatedEvent; import de.studiocode.invui.virtualinventory.event.ItemUpdateEvent; import de.studiocode.invui.virtualinventory.event.UpdateReason; +import de.studiocode.invui.window.AbstractWindow; import de.studiocode.invui.window.Window; import org.bukkit.Material; import org.bukkit.inventory.ItemStack; @@ -16,6 +17,7 @@ import org.jetbrains.annotations.Nullable; import java.io.OutputStream; import java.util.*; import java.util.function.Consumer; +import java.util.function.Predicate; import java.util.stream.Stream; import static java.lang.Math.max; @@ -24,7 +26,7 @@ import static java.lang.Math.min; public class VirtualInventory { private final UUID uuid; - private final Set windows = new HashSet<>(); + private final Set windows = new HashSet<>(); private int size; private ItemStack[] items; private int[] stackSizes; @@ -81,7 +83,10 @@ public class VirtualInventory { * @param window The {@link Window} to be added. */ public void addWindow(Window window) { - windows.add(window); + if (!(window instanceof AbstractWindow)) + throw new IllegalArgumentException("Illegal window implementation"); + + windows.add((AbstractWindow) window); } /** @@ -91,6 +96,9 @@ public class VirtualInventory { * @param window The {@link Window} to be removed. */ public void removeWindow(Window window) { + if (!(window instanceof AbstractWindow)) + throw new IllegalArgumentException("Illegal window implementation"); + windows.remove(window); } @@ -253,17 +261,106 @@ public class VirtualInventory { } /** - * Checks if the {@link VirtualInventory} is empty. + * Checks if all slots have an {@link ItemStack} with their max stack size on them. * - * @return If there are no {@link ItemStack ItemStacks} in this {@link VirtualInventory} + * @return Whether this {@link VirtualInventory} is full. */ - public boolean isEmpty() { - for (ItemStack itemStack : items) - if (itemStack != null) return false; + public boolean isFull() { + for (int slot = 0; slot < size; slot++) { + ItemStack item = items[slot]; + if (item == null || item.getAmount() < getMaxStackSize(slot, -1)) + return false; + } return true; } + /** + * Checks if there are no {@link ItemStack ItemStacks} in this {@link VirtualInventory}. + * + * @return Whether this {@link VirtualInventory} is empty. + */ + public boolean isEmpty() { + for (ItemStack item : items) + if (item != null) return false; + + return true; + } + + /** + * Checks whether this {@link VirtualInventory} has at least one empty slot. + * + * @return Whether this {@link VirtualInventory} has at least one empty slot. + */ + public boolean hasEmptySlot() { + for (ItemStack item : items) + if (item == null) return true; + + return false; + } + + /** + * Checks if there is any {@link ItemStack} in this {@link VirtualInventory} matching the given {@link Predicate}. + * + * @param predicate The {@link Predicate} to check. + * @return Whether there is any {@link ItemStack} in this {@link VirtualInventory} matching the given {@link Predicate}. + */ + public boolean contains(Predicate predicate) { + for (ItemStack item : items) { + if (item != null && predicate.test(item.clone())) + return true; + } + + return false; + } + + /** + * Checks if there is any {@link ItemStack} in this {@link VirtualInventory} similar to the given {@link ItemStack}. + * + * @param itemStack The {@link ItemStack} to match against. + * @return Whether there is any {@link ItemStack} in this {@link VirtualInventory} similar to the given {@link ItemStack}. + */ + public boolean containsSimilar(ItemStack itemStack) { + for (ItemStack item : items) { + if (item != null && item.isSimilar(itemStack)) + return true; + } + + return false; + } + + /** + * Counts the amount of {@link ItemStack ItemStacks} in this {@link VirtualInventory} matching the given {@link Predicate}. + * + * @param predicate The {@link Predicate} to check. + * @return The amount of {@link ItemStack ItemStacks} in this {@link VirtualInventory} matching the given {@link Predicate}. + */ + public int count(Predicate predicate) { + int count = 0; + for (ItemStack item : items) { + if (item != null && predicate.test(item.clone())) + count++; + } + + return count; + } + + /** + * Counts the amount of {@link ItemStack ItemStacks} in this {@link VirtualInventory} similar to the given {@link ItemStack}. + * + * @param itemStack The {@link ItemStack} to match against. + * @return The amount of {@link ItemStack ItemStacks} in this {@link VirtualInventory} similar to the given {@link ItemStack}. + */ + public int countSimilar(ItemStack itemStack) { + int count = 0; + for (ItemStack item : items) { + if (item != null && item.isSimilar(itemStack)) + count++; + } + + return count; + } + /** * Gets the maximum stack size for a specific slot. If there is an {@link ItemStack} on that * slot, the returned value will be the minimum of both the slot limit and {@link Material#getMaxStackSize()}. @@ -616,11 +713,11 @@ public class VirtualInventory { * * @return If all provided {@link ItemStack}s would fit if added. */ - public boolean canHold(@NotNull ItemStack itemStack, @NotNull ItemStack... itemStacks) { - if (itemStacks.length == 0) { - return simulateSingleAdd(itemStack) == 0; + public boolean canHold(@NotNull ItemStack first, @NotNull ItemStack... rest) { + if (rest.length == 0) { + return simulateSingleAdd(first) == 0; } else { - ItemStack[] allStacks = Stream.concat(Stream.of(itemStack), Arrays.stream(itemStacks)).toArray(ItemStack[]::new); + ItemStack[] allStacks = Stream.concat(Stream.of(first), Arrays.stream(rest)).toArray(ItemStack[]::new); return Arrays.stream(simulateMultiAdd(Arrays.asList(allStacks))).allMatch(i -> i == 0); } } @@ -698,7 +795,7 @@ public class VirtualInventory { * @param itemStack The {@link ItemStack} to find matches to * @return The amount of collected items */ - public int collectToCursor(@Nullable UpdateReason updateReason, ItemStack itemStack) { + public int collectSimilar(@Nullable UpdateReason updateReason, ItemStack itemStack) { int amount = itemStack.getAmount(); int maxStackSize = itemStack.getMaxStackSize(); if (amount < itemStack.getMaxStackSize()) { @@ -718,6 +815,86 @@ public class VirtualInventory { return amount; } + /** + * Removes all {@link ItemStack ItemStacks} matching the given {@link Predicate}. + * + * @param updateReason The reason used in the {@link ItemUpdateEvent}. + * @param predicate The {@link Predicate} to use. + * @return The amount of items that were removed. + */ + public int removeIf(@Nullable UpdateReason updateReason, @NotNull Predicate<@NotNull ItemStack> predicate) { + int removed = 0; + for (int slot = 0; slot < items.length; slot++) { + ItemStack item = items[slot]; + if (item != null && predicate.test(item.clone()) && setItemStack(updateReason, slot, null)) { + removed += item.getAmount(); + } + } + + return removed; + } + + /** + * Removes the first n {@link ItemStack ItemStacks} matching the given {@link Predicate}. + * + * @param updateReason The reason used in the {@link ItemUpdateEvent}. + * @param amount The maximum amount of {@link ItemStack ItemStacks} to remove. + * @param predicate The {@link Predicate} to use. + * @return The amount of items that were removed. + */ + public int removeFirst(@Nullable UpdateReason updateReason, int amount, @NotNull Predicate<@NotNull ItemStack> predicate) { + int leftOver = amount; + for (int slot = 0; slot < items.length; slot++) { + ItemStack item = items[slot]; + if (item != null && predicate.test(item.clone())) { + leftOver -= takeFrom(updateReason, slot, leftOver); + if (leftOver == 0) return 0; + } + } + + return amount - leftOver; + } + + /** + * Removes all {@link ItemStack ItemStacks} that are similar to the specified {@link ItemStack}. + * + * @param updateReason The reason used in the {@link ItemUpdateEvent}. + * @param itemStack The {@link ItemStack} to match against. + * @return The amount of items that were removed. + */ + public int removeSimilar(@Nullable UpdateReason updateReason, @NotNull ItemStack itemStack) { + int removed = 0; + for (int slot = 0; slot < items.length; slot++) { + ItemStack item = items[slot]; + if (item != null && item.isSimilar(itemStack) && setItemStack(updateReason, slot, null)) { + removed += item.getAmount(); + } + } + + return removed; + } + + /** + * Removes the first n {@link ItemStack ItemStacks} that are similar to the specified {@link ItemStack}. + * + * @param updateReason The reason used in the {@link ItemUpdateEvent}. + * @param amount The maximum amount of {@link ItemStack ItemStacks} to remove. + * @param itemStack The {@link ItemStack} to match against. + * @return The amount of items that were removed. + */ + public int removeFirstSimilar(@Nullable UpdateReason updateReason, int amount, @NotNull ItemStack itemStack) { + int leftOver = amount; + for (int slot = 0; slot < items.length; slot++) { + ItemStack item = items[slot]; + if (item != null && item.isSimilar(itemStack)) { + leftOver -= takeFrom(updateReason, slot, leftOver); + if (leftOver == 0) return 0; + } + } + + return amount - leftOver; + } + private List findPartialSlots(ItemStack itemStack) { List partialSlots = new ArrayList<>(); for (int slot = 0; slot < size; slot++) { diff --git a/invui/src/main/java/de/studiocode/invui/virtualinventory/VirtualInventoryManager.java b/invui/src/main/java/de/studiocode/invui/virtualinventory/VirtualInventoryManager.java index a198d0c..4048baf 100644 --- a/invui/src/main/java/de/studiocode/invui/virtualinventory/VirtualInventoryManager.java +++ b/invui/src/main/java/de/studiocode/invui/virtualinventory/VirtualInventoryManager.java @@ -1,6 +1,6 @@ package de.studiocode.invui.virtualinventory; -import de.studiocode.inventoryaccess.version.InventoryAccess; +import de.studiocode.inventoryaccess.InventoryAccess; import de.studiocode.invui.InvUI; import de.studiocode.invui.util.DataUtils; import org.bukkit.inventory.ItemStack; diff --git a/invui/src/main/java/de/studiocode/invui/window/impl/merged/MergedWindow.java b/invui/src/main/java/de/studiocode/invui/window/AbstractDoubleWindow.java similarity index 87% rename from invui/src/main/java/de/studiocode/invui/window/impl/merged/MergedWindow.java rename to invui/src/main/java/de/studiocode/invui/window/AbstractDoubleWindow.java index a6be0aa..026701a 100644 --- a/invui/src/main/java/de/studiocode/invui/window/impl/merged/MergedWindow.java +++ b/invui/src/main/java/de/studiocode/invui/window/AbstractDoubleWindow.java @@ -1,13 +1,11 @@ -package de.studiocode.invui.window.impl.merged; +package de.studiocode.invui.window; +import de.studiocode.inventoryaccess.InventoryAccess; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.inventoryaccess.version.InventoryAccess; -import de.studiocode.invui.gui.GUI; +import de.studiocode.invui.gui.AbstractGUI; import de.studiocode.invui.gui.SlotElement; import de.studiocode.invui.util.Pair; import de.studiocode.invui.util.SlotUtils; -import de.studiocode.invui.window.Window; -import de.studiocode.invui.window.impl.BaseWindow; import org.bukkit.entity.Player; import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.inventory.InventoryClickEvent; @@ -21,15 +19,15 @@ import java.util.Objects; /** * A {@link Window} that uses both top and player {@link Inventory}. */ -public abstract class MergedWindow extends BaseWindow { +public abstract class AbstractDoubleWindow extends AbstractWindow { private final Inventory playerInventory; private final ItemStack[] playerItems = new ItemStack[36]; protected Inventory upperInventory; private boolean isCurrentlyOpened; - public MergedWindow(Player player, ComponentWrapper title, int size, Inventory upperInventory, boolean closeable, boolean removeOnClose) { - super(player.getUniqueId(), title, size, closeable, removeOnClose); + public AbstractDoubleWindow(Player player, ComponentWrapper title, int size, Inventory upperInventory, boolean closeable, boolean retain) { + super(player.getUniqueId(), title, size, closeable, retain); this.upperInventory = upperInventory; this.playerInventory = player.getInventory(); } @@ -122,7 +120,7 @@ public abstract class MergedWindow extends BaseWindow { @Override public void handleClick(InventoryClickEvent event) { - Pair clicked = getWhereClicked(event); + Pair clicked = getWhereClicked(event); clicked.getFirst().handleClick(clicked.getSecond(), (Player) event.getWhoClicked(), event.getClick(), event); } @@ -151,6 +149,6 @@ public abstract class MergedWindow extends BaseWindow { protected abstract SlotElement getSlotElement(int index); - protected abstract Pair getWhereClicked(InventoryClickEvent event); + protected abstract Pair getWhereClicked(InventoryClickEvent event); } diff --git a/invui/src/main/java/de/studiocode/invui/window/impl/merged/combined/CombinedWindow.java b/invui/src/main/java/de/studiocode/invui/window/AbstractMergedWindow.java similarity index 69% rename from invui/src/main/java/de/studiocode/invui/window/impl/merged/combined/CombinedWindow.java rename to invui/src/main/java/de/studiocode/invui/window/AbstractMergedWindow.java index 06b5a55..94956f4 100644 --- a/invui/src/main/java/de/studiocode/invui/window/impl/merged/combined/CombinedWindow.java +++ b/invui/src/main/java/de/studiocode/invui/window/AbstractMergedWindow.java @@ -1,12 +1,11 @@ -package de.studiocode.invui.window.impl.merged.combined; +package de.studiocode.invui.window; import de.studiocode.inventoryaccess.component.ComponentWrapper; +import de.studiocode.invui.gui.AbstractGUI; import de.studiocode.invui.gui.GUI; import de.studiocode.invui.gui.SlotElement; import de.studiocode.invui.util.Pair; import de.studiocode.invui.util.SlotUtils; -import de.studiocode.invui.window.Window; -import de.studiocode.invui.window.impl.merged.MergedWindow; import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.inventory.Inventory; @@ -14,12 +13,12 @@ import org.bukkit.inventory.Inventory; /** * A {@link Window} where top and player {@link Inventory} are affected by the same {@link GUI}. */ -public abstract class CombinedWindow extends MergedWindow { +public abstract class AbstractMergedWindow extends AbstractDoubleWindow { - private final GUI gui; + private final AbstractGUI gui; - public CombinedWindow(Player player, ComponentWrapper title, GUI gui, Inventory upperInventory, boolean closeable, boolean removeOnClose) { - super(player, title, gui.getSize(), upperInventory, closeable, removeOnClose); + public AbstractMergedWindow(Player player, ComponentWrapper title, AbstractGUI gui, Inventory upperInventory, boolean closeable, boolean retain) { + super(player, title, gui.getSize(), upperInventory, closeable, retain); this.gui = gui; gui.addParent(this); @@ -37,7 +36,7 @@ public abstract class CombinedWindow extends MergedWindow { } @Override - protected Pair getWhereClicked(InventoryClickEvent event) { + protected Pair getWhereClicked(InventoryClickEvent event) { Inventory clicked = event.getClickedInventory(); int slot = event.getSlot(); int clickedIndex = clicked == getUpperInventory() ? slot @@ -46,13 +45,13 @@ public abstract class CombinedWindow extends MergedWindow { } @Override - protected Pair getGuiAt(int index) { + protected Pair getGUIAt(int index) { return index < gui.getSize() ? new Pair<>(gui, index) : null; } @Override - public GUI[] getGuis() { - return new GUI[] {gui}; + public AbstractGUI[] getGUIs() { + return new AbstractGUI[] {gui}; } } diff --git a/invui/src/main/java/de/studiocode/invui/window/impl/single/SingleWindow.java b/invui/src/main/java/de/studiocode/invui/window/AbstractSingleWindow.java similarity index 81% rename from invui/src/main/java/de/studiocode/invui/window/impl/single/SingleWindow.java rename to invui/src/main/java/de/studiocode/invui/window/AbstractSingleWindow.java index 4904d7d..7cb34de 100644 --- a/invui/src/main/java/de/studiocode/invui/window/impl/single/SingleWindow.java +++ b/invui/src/main/java/de/studiocode/invui/window/AbstractSingleWindow.java @@ -1,12 +1,11 @@ -package de.studiocode.invui.window.impl.single; +package de.studiocode.invui.window; import de.studiocode.inventoryaccess.component.ComponentWrapper; +import de.studiocode.invui.gui.AbstractGUI; import de.studiocode.invui.gui.GUI; import de.studiocode.invui.gui.SlotElement; import de.studiocode.invui.util.InventoryUtils; import de.studiocode.invui.util.Pair; -import de.studiocode.invui.window.Window; -import de.studiocode.invui.window.impl.BaseWindow; import org.bukkit.entity.Player; import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.inventory.InventoryClickEvent; @@ -18,14 +17,14 @@ import java.util.UUID; /** * A {@link Window} that just uses the top {@link Inventory}. */ -public abstract class SingleWindow extends BaseWindow { +public abstract class AbstractSingleWindow extends AbstractWindow { - private final GUI gui; + private final AbstractGUI gui; private final int size; protected Inventory inventory; - public SingleWindow(UUID viewerUUID, ComponentWrapper title, GUI gui, Inventory inventory, boolean initItems, boolean closeable, boolean removeOnClose) { - super(viewerUUID, title, gui.getSize(), closeable, removeOnClose); + public AbstractSingleWindow(UUID viewerUUID, ComponentWrapper title, AbstractGUI gui, Inventory inventory, boolean initItems, boolean closeable, boolean retain) { + super(viewerUUID, title, gui.getSize(), closeable, retain); this.gui = gui; this.size = gui.getSize(); this.inventory = inventory; @@ -79,7 +78,7 @@ public abstract class SingleWindow extends BaseWindow { } @Override - protected Pair getGuiAt(int index) { + protected Pair getGUIAt(int index) { return index < gui.getSize() ? new Pair<>(gui, index) : null; } @@ -99,11 +98,12 @@ public abstract class SingleWindow extends BaseWindow { } @Override - public GUI[] getGuis() { - return new GUI[] {gui}; + public AbstractGUI[] getGUIs() { + return new AbstractGUI[] {gui}; } - public GUI getGui() { + public AbstractGUI getGUI() { return gui; } + } diff --git a/invui/src/main/java/de/studiocode/invui/window/impl/merged/split/SplitWindow.java b/invui/src/main/java/de/studiocode/invui/window/AbstractSplitWindow.java similarity index 71% rename from invui/src/main/java/de/studiocode/invui/window/impl/merged/split/SplitWindow.java rename to invui/src/main/java/de/studiocode/invui/window/AbstractSplitWindow.java index 21fa73b..e56a330 100644 --- a/invui/src/main/java/de/studiocode/invui/window/impl/merged/split/SplitWindow.java +++ b/invui/src/main/java/de/studiocode/invui/window/AbstractSplitWindow.java @@ -1,12 +1,11 @@ -package de.studiocode.invui.window.impl.merged.split; +package de.studiocode.invui.window; import de.studiocode.inventoryaccess.component.ComponentWrapper; +import de.studiocode.invui.gui.AbstractGUI; import de.studiocode.invui.gui.GUI; import de.studiocode.invui.gui.SlotElement; import de.studiocode.invui.util.Pair; import de.studiocode.invui.util.SlotUtils; -import de.studiocode.invui.window.Window; -import de.studiocode.invui.window.impl.merged.MergedWindow; import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.inventory.Inventory; @@ -14,13 +13,13 @@ import org.bukkit.inventory.Inventory; /** * A {@link Window} where top and player {@link Inventory} are affected by different {@link GUI}s. */ -public abstract class SplitWindow extends MergedWindow { +public abstract class AbstractSplitWindow extends AbstractDoubleWindow { - private final GUI upperGui; - private final GUI lowerGui; + private final AbstractGUI upperGui; + private final AbstractGUI lowerGui; - public SplitWindow(Player player, ComponentWrapper title, GUI upperGui, GUI lowerGui, Inventory upperInventory, boolean initItems, boolean closeable, boolean removeOnClose) { - super(player, title, upperGui.getSize() + lowerGui.getSize(), upperInventory, closeable, removeOnClose); + public AbstractSplitWindow(Player player, ComponentWrapper title, AbstractGUI upperGui, AbstractGUI lowerGui, Inventory upperInventory, boolean initItems, boolean closeable, boolean retain) { + super(player, title, upperGui.getSize() + lowerGui.getSize(), upperInventory, closeable, retain); this.upperGui = upperGui; this.lowerGui = lowerGui; @@ -42,7 +41,7 @@ public abstract class SplitWindow extends MergedWindow { } @Override - protected Pair getWhereClicked(InventoryClickEvent event) { + protected Pair getWhereClicked(InventoryClickEvent event) { Inventory clicked = event.getClickedInventory(); if (clicked == getUpperInventory()) { return new Pair<>(upperGui, event.getSlot()); @@ -53,7 +52,7 @@ public abstract class SplitWindow extends MergedWindow { } @Override - protected Pair getGuiAt(int index) { + protected Pair getGUIAt(int index) { if (index < upperGui.getSize()) return new Pair<>(upperGui, index); else if (index < (upperGui.getSize() + lowerGui.getSize())) return new Pair<>(lowerGui, index - upperGui.getSize()); @@ -61,8 +60,8 @@ public abstract class SplitWindow extends MergedWindow { } @Override - public GUI[] getGuis() { - return new GUI[] {upperGui, lowerGui}; + public AbstractGUI[] getGUIs() { + return new AbstractGUI[] {upperGui, lowerGui}; } } diff --git a/invui/src/main/java/de/studiocode/invui/window/impl/BaseWindow.java b/invui/src/main/java/de/studiocode/invui/window/AbstractWindow.java similarity index 83% rename from invui/src/main/java/de/studiocode/invui/window/impl/BaseWindow.java rename to invui/src/main/java/de/studiocode/invui/window/AbstractWindow.java index c1ebd8d..d4532c2 100644 --- a/invui/src/main/java/de/studiocode/invui/window/impl/BaseWindow.java +++ b/invui/src/main/java/de/studiocode/invui/window/AbstractWindow.java @@ -1,23 +1,23 @@ -package de.studiocode.invui.window.impl; +package de.studiocode.invui.window; +import de.studiocode.inventoryaccess.InventoryAccess; import de.studiocode.inventoryaccess.component.BaseComponentWrapper; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.inventoryaccess.version.InventoryAccess; import de.studiocode.invui.InvUI; +import de.studiocode.invui.gui.AbstractGUI; import de.studiocode.invui.gui.GUI; +import de.studiocode.invui.gui.GUIParent; import de.studiocode.invui.gui.SlotElement; import de.studiocode.invui.gui.SlotElement.ItemSlotElement; import de.studiocode.invui.gui.SlotElement.LinkedSlotElement; import de.studiocode.invui.gui.SlotElement.VISlotElement; import de.studiocode.invui.item.Item; import de.studiocode.invui.item.ItemProvider; -import de.studiocode.invui.util.ArrayUtils; import de.studiocode.invui.util.Pair; +import de.studiocode.invui.util.ArrayUtils; import de.studiocode.invui.virtualinventory.VirtualInventory; import de.studiocode.invui.virtualinventory.event.PlayerUpdateReason; import de.studiocode.invui.virtualinventory.event.UpdateReason; -import de.studiocode.invui.window.Window; -import de.studiocode.invui.window.WindowManager; import net.md_5.bungee.api.chat.BaseComponent; import net.md_5.bungee.api.chat.TextComponent; import org.bukkit.Bukkit; @@ -25,32 +25,36 @@ import org.bukkit.Material; import org.bukkit.NamespacedKey; import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; +import org.bukkit.event.entity.PlayerDeathEvent; +import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryDragEvent; import org.bukkit.event.inventory.InventoryOpenEvent; +import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.persistence.PersistentDataType; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.*; -public abstract class BaseWindow implements Window { +public abstract class AbstractWindow implements Window, GUIParent { private static final NamespacedKey SLOT_KEY = new NamespacedKey(InvUI.getInstance().getPlugin(), "slot"); private final UUID viewerUUID; - private final boolean removeOnClose; + private final boolean retain; private final SlotElement[] elementsDisplayed; private final ArrayList closeHandlers = new ArrayList<>(); private ComponentWrapper title; private boolean closeable; - private boolean closed; + private boolean removed; - public BaseWindow(UUID viewerUUID, ComponentWrapper title, int size, boolean closeable, boolean removeOnClose) { + public AbstractWindow(UUID viewerUUID, ComponentWrapper title, int size, boolean closeable, boolean retain) { this.viewerUUID = viewerUUID; this.title = title; this.closeable = closeable; - this.removeOnClose = removeOnClose; + this.retain = retain; this.elementsDisplayed = new SlotElement[size]; } @@ -66,13 +70,13 @@ public abstract class BaseWindow implements Window { // put ItemStack in inventory ItemStack itemStack; if (element == null || (element instanceof VISlotElement && element.getItemStack(viewerUUID) == null)) { - ItemProvider background = getGuiAt(index).getFirst().getBackground(); + ItemProvider background = getGUIAt(index).getFirst().getBackground(); itemStack = background == null ? null : background.getFor(viewerUUID); } else if (element instanceof LinkedSlotElement && element.getHoldingElement() == null) { ItemProvider background = null; - List guis = ((LinkedSlotElement) element).getGuiList(); - guis.add(0, getGuiAt(index).getFirst()); + List guis = ((LinkedSlotElement) element).getGUIList(); + guis.add(0, getGUIAt(index).getFirst()); for (int i = guis.size() - 1; i >= 0; i--) { background = guis.get(i).getBackground(); @@ -132,7 +136,6 @@ public abstract class BaseWindow implements Window { } } - @Override public void handleDrag(InventoryDragEvent event) { Player player = ((Player) event.getWhoClicked()).getPlayer(); UpdateReason updateReason = new PlayerUpdateReason(player, event); @@ -144,7 +147,7 @@ public abstract class BaseWindow implements Window { if (currentStack != null && currentStack.getType() == Material.AIR) currentStack = null; // get the GUI at that slot and ask for permission to drag an Item there - Pair pair = getGuiAt(rawSlot); + Pair pair = getGUIAt(rawSlot); if (pair != null && !pair.getFirst().handleItemDrag(updateReason, pair.getSecond(), currentStack, newItems.get(rawSlot))) { // the drag was cancelled int currentAmount = currentStack == null ? 0 : currentStack.getAmount(); @@ -157,7 +160,7 @@ public abstract class BaseWindow implements Window { // Redraw all items after the event so there won't be any Items that aren't actually there Bukkit.getScheduler().runTask(InvUI.getInstance().getPlugin(), () -> event.getRawSlots().forEach(rawSlot -> { - if (getGuiAt(rawSlot) != null) redrawItem(rawSlot); + if (getGUIAt(rawSlot) != null) redrawItem(rawSlot); }) ); @@ -167,17 +170,18 @@ public abstract class BaseWindow implements Window { event.setCursor(cursorStack); } - @Override public void handleOpen(InventoryOpenEvent event) { if (!event.getPlayer().equals(getViewer())) event.setCancelled(true); else handleOpened(); } - @Override public void handleClose(Player player) { if (closeable) { - if (removeOnClose) close(false); + if (!retain) { + remove(false); + } + handleClosed(); closeHandlers.forEach(Runnable::run); } else { @@ -186,13 +190,11 @@ public abstract class BaseWindow implements Window { } } - @Override public void handleItemProviderUpdate(Item item) { getItemSlotElements(item).forEach((index, slotElement) -> redrawItem(index, slotElement, false)); } - @Override public void handleVirtualInventoryUpdate(VirtualInventory virtualInventory) { getVISlotElements(virtualInventory).forEach((index, slotElement) -> redrawItem(index, slotElement, false)); @@ -208,11 +210,14 @@ public abstract class BaseWindow implements Window { && ((VISlotElement) element).getVirtualInventory() == virtualInventory); } - @Override - public void close(boolean closeForViewer) { - if (closed) return; - - closed = true; + public void remove() { + remove(true); + } + + public void remove(boolean closeForViewer) { + if (removed) + return; + removed = true; WindowManager.getInstance().removeWindow(this); @@ -227,14 +232,14 @@ public abstract class BaseWindow implements Window { } }); - Arrays.stream(getGuis()) + Arrays.stream(getGUIs()) .forEach(gui -> gui.removeParent(this)); - if (closeForViewer) closeForViewer(); + if (closeForViewer) close(); } @Override - public void closeForViewer() { + public void close() { closeable = true; Player viewer = getCurrentViewer(); @@ -246,7 +251,7 @@ public abstract class BaseWindow implements Window { @Override public void show() { - if (closed) throw new IllegalStateException("The Window has already been closed."); + if (removed) throw new IllegalStateException("The Window has already been closed."); Player viewer = getViewer(); if (viewer == null) throw new IllegalStateException("The player is not online."); @@ -273,28 +278,28 @@ public abstract class BaseWindow implements Window { } @Override - public void addCloseHandler(Runnable closeHandler) { + public void addCloseHandler(@NotNull Runnable closeHandler) { closeHandlers.add(closeHandler); } @Override - public void removeCloseHandler(Runnable closeHandler) { + public void removeCloseHandler(@NotNull Runnable closeHandler) { closeHandlers.remove(closeHandler); } @Override - public Player getCurrentViewer() { + public @Nullable Player getCurrentViewer() { List viewers = getInventories()[0].getViewers(); return viewers.isEmpty() ? null : (Player) viewers.get(0); } @Override - public Player getViewer() { + public @Nullable Player getViewer() { return Bukkit.getPlayer(viewerUUID); } @Override - public UUID getViewerUUID() { + public @NotNull UUID getViewerUUID() { return viewerUUID; } @@ -309,18 +314,30 @@ public abstract class BaseWindow implements Window { } @Override - public boolean isClosed() { - return closed; + public boolean isRemoved() { + return removed; } protected abstract void setInvItem(int slot, ItemStack itemStack); protected abstract SlotElement getSlotElement(int index); - protected abstract Pair getGuiAt(int index); + protected abstract Pair getGUIAt(int index); + + protected abstract AbstractGUI[] getGUIs(); + + protected abstract Inventory[] getInventories(); protected abstract void handleOpened(); protected abstract void handleClosed(); + public abstract void handleClick(InventoryClickEvent event); + + public abstract void handleItemShift(InventoryClickEvent event); + + public abstract void handleCursorCollect(InventoryClickEvent event); + + public abstract void handleViewerDeath(PlayerDeathEvent event); + } \ No newline at end of file diff --git a/invui/src/main/java/de/studiocode/invui/window/AnvilWindow.java b/invui/src/main/java/de/studiocode/invui/window/AnvilWindow.java new file mode 100644 index 0000000..20bf2ba --- /dev/null +++ b/invui/src/main/java/de/studiocode/invui/window/AnvilWindow.java @@ -0,0 +1,7 @@ +package de.studiocode.invui.window; + +public interface AnvilWindow extends Window { + + String getRenameText(); + +} diff --git a/invui/src/main/java/de/studiocode/invui/window/CartographyWindow.java b/invui/src/main/java/de/studiocode/invui/window/CartographyWindow.java new file mode 100644 index 0000000..385a88f --- /dev/null +++ b/invui/src/main/java/de/studiocode/invui/window/CartographyWindow.java @@ -0,0 +1,23 @@ +package de.studiocode.invui.window; + +import de.studiocode.inventoryaccess.map.MapIcon; +import de.studiocode.inventoryaccess.map.MapPatch; +import org.jetbrains.annotations.Nullable; + +import java.util.List; + +public interface CartographyWindow extends Window { + + void updateMap(@Nullable MapPatch patch, @Nullable List icons); + + default void updateMap(@Nullable MapPatch patch) { + updateMap(patch, null); + } + + default void updateMap(@Nullable List icons) { + updateMap(null, icons); + } + + void resetMap(); + +} diff --git a/invui/src/main/java/de/studiocode/invui/window/Window.java b/invui/src/main/java/de/studiocode/invui/window/Window.java index 67253cd..0abeb0c 100644 --- a/invui/src/main/java/de/studiocode/invui/window/Window.java +++ b/invui/src/main/java/de/studiocode/invui/window/Window.java @@ -1,162 +1,41 @@ package de.studiocode.invui.window; import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.invui.gui.GUI; -import de.studiocode.invui.gui.GUIParent; -import de.studiocode.invui.item.Item; -import de.studiocode.invui.item.ItemProvider; -import de.studiocode.invui.virtualinventory.VirtualInventory; -import de.studiocode.invui.window.impl.merged.MergedWindow; -import de.studiocode.invui.window.impl.merged.combined.SimpleCombinedWindow; -import de.studiocode.invui.window.impl.merged.split.SimpleSplitWindow; -import de.studiocode.invui.window.impl.single.SimpleWindow; +import de.studiocode.invui.window.impl.AnvilSingleWindowImpl; +import de.studiocode.invui.window.impl.AnvilSplitWindowImpl; +import de.studiocode.invui.window.impl.CartographySingleWindowImpl; +import de.studiocode.invui.window.impl.CartographySplitWindowImpl; +import de.studiocode.invui.window.impl.NormalMergedWindowImpl; +import de.studiocode.invui.window.impl.NormalSingleWindowImpl; +import de.studiocode.invui.window.impl.NormalSplitWindowImpl; +import de.studiocode.invui.window.type.WindowType; import net.md_5.bungee.api.chat.BaseComponent; import org.bukkit.entity.Player; -import org.bukkit.event.entity.PlayerDeathEvent; -import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.event.inventory.InventoryDragEvent; -import org.bukkit.event.inventory.InventoryOpenEvent; import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.UUID; /** - * A window is the way to show a player a GUI. - * Windows can only have one viewer. + * A Window is the way to show a player a GUI. Windows can only have one viewer. + * The default Window implementations can be instantiated using {@link WindowType}. * - * @see SimpleWindow - * @see SimpleCombinedWindow - * @see SimpleSplitWindow + * @see WindowType + * @see AbstractWindow + * @see AbstractSingleWindow + * @see AbstractDoubleWindow + * @see AbstractSplitWindow + * @see AbstractMergedWindow + * @see NormalSingleWindowImpl + * @see NormalSplitWindowImpl + * @see NormalMergedWindowImpl + * @see AnvilSingleWindowImpl + * @see AnvilSplitWindowImpl + * @see CartographySingleWindowImpl + * @see CartographySplitWindowImpl */ -public interface Window extends GUIParent { - - /** - * Gets the underlying {@link Inventory}s. - * - * @return The underlying {@link Inventory}s. - */ - Inventory[] getInventories(); - - /** - * Gets the underlying {@link GUI}s. - * - * @return The underlying {@link GUI}s. - */ - GUI[] getGuis(); - - /** - * A method called by the {@link WindowManager} to notify the {@link Window} - * that one of its {@link Item}s has been clicked. - * - * @param event The {@link InventoryClickEvent} associated with this action. - */ - void handleClick(InventoryClickEvent event); - - /** - * A method called by the {@link WindowManager} to notify the {@link Window} - * that {@link ItemStack}s have been dragged inside it. - * - * @param event The {@link InventoryDragEvent} associated with this action. - */ - void handleDrag(InventoryDragEvent event); - - /** - * A method called by the {@link WindowManager} to notify the {@link Window} - * that {@link ItemStack}s have been shift-clicked from the lower - * {@link Inventory} to this {@link Window} - * - * @param event The {@link InventoryClickEvent} associated with this action. - */ - void handleItemShift(InventoryClickEvent event); - - /** - * A method called by the {@link WindowManager} to notify the {@link Window} - * that a {@link Player} is trying to collect {@link ItemStack} to the cursor - * by double-clicking in the player inventory. - * This method is not called when the player inventory is also part of the - * {@link Window}. ({@link MergedWindow}) - * - * @param event The {@link InventoryClickEvent} associated with this action. - */ - void handleCursorCollect(InventoryClickEvent event); - - /** - * A method called by the {@link WindowManager} to notify the {@link Window} - * that its underlying {@link Inventory} is being opened. - * - * @param event The {@link InventoryOpenEvent} associated with this action. - */ - void handleOpen(InventoryOpenEvent event); - - /** - * A method called by the {@link WindowManager} to notify the {@link Window} - * that its underlying {@link Inventory} is being closed. - * - * @param player The {@link Player} who closed this inventory. - */ - void handleClose(Player player); - - /** - * A method called by the {@link WindowManager} to notify the {@link Window} - * that it's viewer has died. - * - * @param event The {@link PlayerDeathEvent} associated with this action. - */ - void handleViewerDeath(PlayerDeathEvent event); - - /** - * A method called by the {@link Item} itself to notify the {@link Window} - * that its {@link ItemProvider} has been updated and the {@link ItemStack} - * in the {@link Inventory} should be replaced. - * - * @param item The {@link Item} whose {@link ItemProvider} has been updated. - */ - void handleItemProviderUpdate(Item item); - - /** - * A method called by the {@link VirtualInventory} to notify the - * {@link Window} that one if it's contents has been updated and the {@link ItemStack}'s - * displayed in the {@link Inventory} should be replaced. - * - * @param virtualInventory The {@link VirtualInventory} - */ - void handleVirtualInventoryUpdate(VirtualInventory virtualInventory); - - /** - * Adds a close handler that will be called when this window gets closed. - * - * @param closeHandler The close handler to add - */ - void addCloseHandler(Runnable closeHandler); - - /** - * Removes a close handler that has been added previously. - * - * @param closeHandler The close handler to remove - */ - void removeCloseHandler(Runnable closeHandler); - - /** - * Removes the {@link Window} from the {@link WindowManager} list. - * If this method is called, the {@link Window} can't be shown again. - * - * @param closeForViewer If the underlying {@link Inventory} should be closed for the viewer. - */ - void close(boolean closeForViewer); - - /** - * Gets if the {@link Window} is closed and can't be shown again. - * - * @return If the {@link Window} is closed. - */ - boolean isClosed(); - - /** - * Closes the underlying {@link Inventory} for its viewer. - */ - void closeForViewer(); +public interface Window { /** * Shows the window to the player. @@ -177,6 +56,24 @@ public interface Window extends GUIParent { */ void setCloseable(boolean closeable); + /** + * Closes the underlying {@link Inventory} for its viewer. + */ + void close(); + + /** + * Gets if the {@link Window} is closed and can't be shown again. + * + * @return If the {@link Window} is closed. + */ + boolean isRemoved(); + + /** + * Removes the {@link Window} from the {@link WindowManager} list. + * If this method is called, the {@link Window} can't be shown again. + */ + void remove(); + /** * Changes the title of the {@link Inventory}. * @@ -203,7 +100,7 @@ public interface Window extends GUIParent { * * @return The viewer of this window. */ - Player getViewer(); + @Nullable Player getViewer(); /** * Gets the current {@link Player} that is viewing this @@ -211,13 +108,27 @@ public interface Window extends GUIParent { * * @return The current viewer of this {@link Window} (can be null) */ - Player getCurrentViewer(); + @Nullable Player getCurrentViewer(); /** * Gets the viewer's {@link UUID} * * @return The viewer's {@link UUID} */ - UUID getViewerUUID(); + @NotNull UUID getViewerUUID(); + + /** + * Adds a close handler that will be called when this window gets closed. + * + * @param closeHandler The close handler to add + */ + void addCloseHandler(@NotNull Runnable closeHandler); + + /** + * Removes a close handler that has been added previously. + * + * @param closeHandler The close handler to remove + */ + void removeCloseHandler(@NotNull Runnable closeHandler); } diff --git a/invui/src/main/java/de/studiocode/invui/window/WindowManager.java b/invui/src/main/java/de/studiocode/invui/window/WindowManager.java index 68780b1..2753ae2 100644 --- a/invui/src/main/java/de/studiocode/invui/window/WindowManager.java +++ b/invui/src/main/java/de/studiocode/invui/window/WindowManager.java @@ -1,7 +1,6 @@ package de.studiocode.invui.window; import de.studiocode.invui.InvUI; -import de.studiocode.invui.window.impl.merged.MergedWindow; import org.bukkit.Bukkit; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; @@ -27,12 +26,12 @@ public class WindowManager implements Listener { private static WindowManager instance; - private final Map windows = new HashMap<>(); - private final Map openWindows = new HashMap<>(); + private final Map windows = new HashMap<>(); + private final Map openWindows = new HashMap<>(); private WindowManager() { Bukkit.getPluginManager().registerEvents(this, InvUI.getInstance().getPlugin()); - InvUI.getInstance().addDisableHandler(() -> getWindows().forEach(window -> window.close(true))); + InvUI.getInstance().addDisableHandler(() -> windows.values().forEach(window -> window.remove(true))); } /** @@ -51,7 +50,11 @@ public class WindowManager implements Listener { * @param window The {@link Window} to add */ public void addWindow(Window window) { - windows.put(window.getInventories()[0], window); + if (!(window instanceof AbstractWindow)) + throw new IllegalArgumentException("Illegal window implementation"); + + AbstractWindow abstractWindow = (AbstractWindow) window; + windows.put(abstractWindow.getInventories()[0], abstractWindow); } /** @@ -61,7 +64,11 @@ public class WindowManager implements Listener { * @param window The {@link Window} to remove */ public void removeWindow(Window window) { - windows.remove(window.getInventories()[0]); + if (!(window instanceof AbstractWindow)) + throw new IllegalArgumentException("Illegal window implementation"); + + AbstractWindow abstractWindow = (AbstractWindow) window; + windows.remove(abstractWindow.getInventories()[0]); } /** @@ -107,7 +114,7 @@ public class WindowManager implements Listener { @EventHandler private void handleInventoryClick(InventoryClickEvent event) { Player player = (Player) event.getWhoClicked(); - Window window = getOpenWindow(player); + AbstractWindow window = (AbstractWindow) getOpenWindow(player); if (window != null) { Inventory clicked = event.getClickedInventory(); @@ -133,7 +140,7 @@ public class WindowManager implements Listener { @EventHandler private void handleInventoryDrag(InventoryDragEvent event) { - Window window = getOpenWindow((Player) event.getWhoClicked()); + AbstractWindow window = (AbstractWindow) getOpenWindow((Player) event.getWhoClicked()); if (window != null) { window.handleDrag(event); } @@ -143,7 +150,7 @@ public class WindowManager implements Listener { private void handleInventoryClose(InventoryCloseEvent event) { Player player = (Player) event.getPlayer(); - Window window = getWindow(event.getInventory()); + AbstractWindow window = (AbstractWindow) getWindow(event.getInventory()); if (window != null) window.handleClose(player); @@ -152,7 +159,7 @@ public class WindowManager implements Listener { @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) private void handleInventoryOpen(InventoryOpenEvent event) { - Window window = getWindow(event.getInventory()); + AbstractWindow window = (AbstractWindow) getWindow(event.getInventory()); if (window != null) { window.handleOpen(event); openWindows.put((Player) event.getPlayer(), window); @@ -162,7 +169,7 @@ public class WindowManager implements Listener { @EventHandler private void handlePlayerQuit(PlayerQuitEvent event) { Player player = event.getPlayer(); - Window window = getOpenWindow(player); + AbstractWindow window = (AbstractWindow) getOpenWindow(player); if (window != null) { window.handleClose(player); openWindows.remove(player); @@ -172,7 +179,7 @@ public class WindowManager implements Listener { @EventHandler private void handlePlayerDeath(PlayerDeathEvent event) { Player player = event.getEntity(); - Window window = getOpenWindow(player); + AbstractWindow window = (AbstractWindow) getOpenWindow(player); if (window != null) { window.handleViewerDeath(event); } @@ -183,7 +190,7 @@ public class WindowManager implements Listener { Entity entity = event.getEntity(); if (entity instanceof Player) { Window window = getOpenWindow((Player) entity); - if (window instanceof MergedWindow) + if (window instanceof AbstractDoubleWindow) event.setCancelled(true); } } diff --git a/invui/src/main/java/de/studiocode/invui/window/impl/AnvilSingleWindowImpl.java b/invui/src/main/java/de/studiocode/invui/window/impl/AnvilSingleWindowImpl.java new file mode 100644 index 0000000..4a3ecd1 --- /dev/null +++ b/invui/src/main/java/de/studiocode/invui/window/impl/AnvilSingleWindowImpl.java @@ -0,0 +1,46 @@ +package de.studiocode.invui.window.impl; + +import de.studiocode.inventoryaccess.InventoryAccess; +import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory; +import de.studiocode.inventoryaccess.component.ComponentWrapper; +import de.studiocode.invui.gui.AbstractGUI; +import de.studiocode.invui.window.AbstractSingleWindow; +import de.studiocode.invui.window.AnvilWindow; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import java.util.function.Consumer; + +public final class AnvilSingleWindowImpl extends AbstractSingleWindow implements AnvilWindow { + + private final AnvilInventory anvilInventory; + + public AnvilSingleWindowImpl(Player player, ComponentWrapper title, AbstractGUI gui, Consumer renameHandler, boolean closable, boolean retain) { + super(player.getUniqueId(), title, gui, null, false, closable, retain); + anvilInventory = InventoryAccess.createAnvilInventory(player, title, renameHandler); + inventory = anvilInventory.getBukkitInventory(); + + initItems(); + register(); + } + + @Override + protected void setInvItem(int slot, ItemStack itemStack) { + anvilInventory.setItem(slot, itemStack); + } + + @Override + public void show() { + if (isRemoved()) throw new IllegalStateException("The Window has already been closed."); + + Player viewer = getViewer(); + if (viewer == null) throw new IllegalStateException("The player is not online."); + anvilInventory.open(); + } + + @Override + public String getRenameText() { + return anvilInventory.getRenameText(); + } + +} diff --git a/invui/src/main/java/de/studiocode/invui/window/impl/AnvilSplitWindowImpl.java b/invui/src/main/java/de/studiocode/invui/window/impl/AnvilSplitWindowImpl.java new file mode 100644 index 0000000..7f13199 --- /dev/null +++ b/invui/src/main/java/de/studiocode/invui/window/impl/AnvilSplitWindowImpl.java @@ -0,0 +1,47 @@ +package de.studiocode.invui.window.impl; + +import de.studiocode.inventoryaccess.InventoryAccess; +import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory; +import de.studiocode.inventoryaccess.component.ComponentWrapper; +import de.studiocode.invui.gui.AbstractGUI; +import de.studiocode.invui.window.AbstractSplitWindow; +import de.studiocode.invui.window.AnvilWindow; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import java.util.function.Consumer; + +public final class AnvilSplitWindowImpl extends AbstractSplitWindow implements AnvilWindow { + + private final AnvilInventory anvilInventory; + + public AnvilSplitWindowImpl(Player player, ComponentWrapper title, AbstractGUI upperGui, AbstractGUI lowerGui, Consumer renameHandler, boolean closeable, boolean retain) { + super(player, title, upperGui, lowerGui, null, false, closeable, retain); + + anvilInventory = InventoryAccess.createAnvilInventory(player, title, renameHandler); + upperInventory = anvilInventory.getBukkitInventory(); + + initUpperItems(); + register(); + } + + @Override + protected void setUpperInvItem(int slot, ItemStack itemStack) { + anvilInventory.setItem(slot, itemStack); + } + + @Override + public void show() { + if (isRemoved()) throw new IllegalStateException("The Window has already been closed."); + + Player viewer = getViewer(); + if (viewer == null) throw new IllegalStateException("The player is not online."); + anvilInventory.open(); + } + + @Override + public String getRenameText() { + return anvilInventory.getRenameText(); + } + +} diff --git a/invui/src/main/java/de/studiocode/invui/window/impl/single/CartographyWindow.java b/invui/src/main/java/de/studiocode/invui/window/impl/CartographySingleWindowImpl.java similarity index 56% rename from invui/src/main/java/de/studiocode/invui/window/impl/single/CartographyWindow.java rename to invui/src/main/java/de/studiocode/invui/window/impl/CartographySingleWindowImpl.java index de1b9c3..6d30715 100644 --- a/invui/src/main/java/de/studiocode/invui/window/impl/single/CartographyWindow.java +++ b/invui/src/main/java/de/studiocode/invui/window/impl/CartographySingleWindowImpl.java @@ -1,15 +1,14 @@ -package de.studiocode.invui.window.impl.single; +package de.studiocode.invui.window.impl; +import de.studiocode.inventoryaccess.InventoryAccess; import de.studiocode.inventoryaccess.abstraction.inventory.CartographyInventory; -import de.studiocode.inventoryaccess.component.BaseComponentWrapper; import de.studiocode.inventoryaccess.component.ComponentWrapper; import de.studiocode.inventoryaccess.map.MapIcon; import de.studiocode.inventoryaccess.map.MapPatch; -import de.studiocode.inventoryaccess.version.InventoryAccess; -import de.studiocode.invui.gui.GUI; +import de.studiocode.invui.gui.AbstractGUI; import de.studiocode.invui.util.MathUtils; -import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.api.chat.TextComponent; +import de.studiocode.invui.window.AbstractSingleWindow; +import de.studiocode.invui.window.CartographyWindow; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryClickEvent; @@ -20,13 +19,13 @@ import org.jetbrains.annotations.Nullable; import java.util.List; @SuppressWarnings("deprecation") -public final class CartographyWindow extends SingleWindow { +public final class CartographySingleWindowImpl extends AbstractSingleWindow implements CartographyWindow { private final CartographyInventory cartographyInventory; private int mapId; - public CartographyWindow(Player player, ComponentWrapper title, GUI gui, boolean closeable) { - super(player.getUniqueId(), title, gui, null, false, closeable, true); + public CartographySingleWindowImpl(Player player, ComponentWrapper title, AbstractGUI gui, boolean closeable, boolean retain) { + super(player.getUniqueId(), title, gui, null, false, closeable, retain); if (gui.getWidth() != 2 || gui.getHeight() != 1) throw new IllegalArgumentException("GUI has to be 2x1"); cartographyInventory = InventoryAccess.createCartographyInventory(player, title); @@ -37,39 +36,13 @@ public final class CartographyWindow extends SingleWindow { register(); } - public CartographyWindow(Player player, ComponentWrapper title, GUI gui) { - this(player, title, gui, true); - } - - public CartographyWindow(Player player, BaseComponent[] title, GUI gui) { - this(player, new BaseComponentWrapper(title), gui, true); - } - - public CartographyWindow(Player player, BaseComponent[] title, GUI gui, boolean closeable) { - this(player, new BaseComponentWrapper(title), gui, closeable); - } - - public CartographyWindow(Player player, String title, GUI gui) { - this(player, TextComponent.fromLegacyText(title), gui, true); - } - - public CartographyWindow(Player player, String title, GUI gui, boolean closeable) { - this(player, TextComponent.fromLegacyText(title), gui, closeable); - } - + @Override public void updateMap(@Nullable MapPatch patch, @Nullable List icons) { InventoryAccess.getPlayerUtils().sendMapUpdate(getViewer(), mapId, (byte) 0, false, patch, icons); } - public void updateMap(MapPatch patch) { - updateMap(patch, null); - } - - public void updateMap(List icons) { - updateMap(null, icons); - } - @SuppressWarnings("deprecation") + @Override public void resetMap() { mapId = -MathUtils.RANDOM.nextInt(Integer.MAX_VALUE); ItemStack map = new ItemStack(Material.FILLED_MAP); @@ -87,7 +60,7 @@ public final class CartographyWindow extends SingleWindow { @Override public void handleClick(InventoryClickEvent event) { if (event.getSlot() != 0) { - getGui().handleClick(event.getSlot() - 1, (Player) event.getWhoClicked(), event.getClick(), event); + getGUI().handleClick(event.getSlot() - 1, (Player) event.getWhoClicked(), event.getClick(), event); } else { event.setCancelled(true); } @@ -95,10 +68,12 @@ public final class CartographyWindow extends SingleWindow { @Override public void show() { - if (isClosed()) throw new IllegalStateException("The Window has already been closed."); + if (isRemoved()) + throw new IllegalStateException("The Window has already been closed."); Player viewer = getViewer(); - if (viewer == null) throw new IllegalStateException("The player is not online."); + if (viewer == null) + throw new IllegalStateException("The player is not online."); cartographyInventory.open(); } diff --git a/invui/src/main/java/de/studiocode/invui/window/impl/CartographySplitWindowImpl.java b/invui/src/main/java/de/studiocode/invui/window/impl/CartographySplitWindowImpl.java new file mode 100644 index 0000000..5eb7af1 --- /dev/null +++ b/invui/src/main/java/de/studiocode/invui/window/impl/CartographySplitWindowImpl.java @@ -0,0 +1,74 @@ +package de.studiocode.invui.window.impl; + +import de.studiocode.inventoryaccess.InventoryAccess; +import de.studiocode.inventoryaccess.abstraction.inventory.CartographyInventory; +import de.studiocode.inventoryaccess.component.ComponentWrapper; +import de.studiocode.inventoryaccess.map.MapIcon; +import de.studiocode.inventoryaccess.map.MapPatch; +import de.studiocode.invui.gui.AbstractGUI; +import de.studiocode.invui.gui.GUI; +import de.studiocode.invui.gui.impl.NormalGUIImpl; +import de.studiocode.invui.util.MathUtils; +import de.studiocode.invui.window.AbstractSplitWindow; +import de.studiocode.invui.window.CartographyWindow; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.MapMeta; +import org.jetbrains.annotations.Nullable; + +import java.util.List; + +public final class CartographySplitWindowImpl extends AbstractSplitWindow implements CartographyWindow { + + private final CartographyInventory cartographyInventory; + private int mapId; + + public CartographySplitWindowImpl(Player player, ComponentWrapper title, AbstractGUI upperGui, AbstractGUI lowerGui, boolean closeable, boolean retain) { + super(player, title, createWrappingGUI(upperGui), lowerGui, null, false, closeable, retain); + + cartographyInventory = InventoryAccess.createCartographyInventory(player, title); + upperInventory = cartographyInventory.getBukkitInventory(); + + initUpperItems(); + resetMap(); + register(); + } + + private static AbstractGUI createWrappingGUI(GUI upperGui) { + if (upperGui.getWidth() != 2 || upperGui.getHeight() != 1) + throw new IllegalArgumentException("GUI has to be 2x1"); + + NormalGUIImpl wrapperGUI = new NormalGUIImpl(3, 1); + wrapperGUI.fillRectangle(1, 0, upperGui, true); + return wrapperGUI; + } + + @Override + public void updateMap(@Nullable MapPatch patch, @Nullable List icons) { + InventoryAccess.getPlayerUtils().sendMapUpdate(getViewer(), mapId, (byte) 0, false, patch, icons); + } + + @Override + @SuppressWarnings("deprecation") + public void resetMap() { + mapId = -MathUtils.RANDOM.nextInt(Integer.MAX_VALUE); + ItemStack map = new ItemStack(Material.FILLED_MAP); + MapMeta mapMeta = (MapMeta) map.getItemMeta(); + mapMeta.setMapId(mapId); + map.setItemMeta(mapMeta); + cartographyInventory.setItem(0, map); + } + + @Override + public void show() { + if (isRemoved()) + throw new IllegalStateException("The Window has already been closed."); + + Player viewer = getViewer(); + if (viewer == null) + throw new IllegalStateException("The player is not online."); + cartographyInventory.open(); + } + +} diff --git a/invui/src/main/java/de/studiocode/invui/window/impl/NormalMergedWindowImpl.java b/invui/src/main/java/de/studiocode/invui/window/impl/NormalMergedWindowImpl.java new file mode 100644 index 0000000..d62ca07 --- /dev/null +++ b/invui/src/main/java/de/studiocode/invui/window/impl/NormalMergedWindowImpl.java @@ -0,0 +1,27 @@ +package de.studiocode.invui.window.impl; + +import de.studiocode.inventoryaccess.component.ComponentWrapper; +import de.studiocode.invui.gui.AbstractGUI; +import de.studiocode.invui.gui.GUI; +import de.studiocode.invui.window.AbstractMergedWindow; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; + +public final class NormalMergedWindowImpl extends AbstractMergedWindow { + + public NormalMergedWindowImpl(Player player, ComponentWrapper title, AbstractGUI gui, boolean closeable, boolean retain) { + super(player, title, gui, createInventory(gui), closeable, retain); + register(); + } + + private static Inventory createInventory(GUI gui) { + if (gui.getWidth() != 9) + throw new IllegalArgumentException("GUI width has to be 9"); + if (gui.getHeight() <= 4) + throw new IllegalArgumentException("GUI height has to be bigger than 4"); + + return Bukkit.createInventory(null, gui.getSize() - 36); + } + +} diff --git a/invui/src/main/java/de/studiocode/invui/window/impl/NormalSingleWindowImpl.java b/invui/src/main/java/de/studiocode/invui/window/impl/NormalSingleWindowImpl.java new file mode 100644 index 0000000..40b7205 --- /dev/null +++ b/invui/src/main/java/de/studiocode/invui/window/impl/NormalSingleWindowImpl.java @@ -0,0 +1,17 @@ +package de.studiocode.invui.window.impl; + +import de.studiocode.inventoryaccess.component.ComponentWrapper; +import de.studiocode.invui.gui.AbstractGUI; +import de.studiocode.invui.util.InventoryUtils; +import de.studiocode.invui.window.AbstractSingleWindow; + +import java.util.UUID; + +public final class NormalSingleWindowImpl extends AbstractSingleWindow { + + public NormalSingleWindowImpl(UUID viewerUUID, ComponentWrapper title, AbstractGUI gui, boolean closeable, boolean retain) { + super(viewerUUID, title, gui, InventoryUtils.createMatchingInventory(gui, ""), true, closeable, retain); + register(); + } + +} diff --git a/invui/src/main/java/de/studiocode/invui/window/impl/NormalSplitWindowImpl.java b/invui/src/main/java/de/studiocode/invui/window/impl/NormalSplitWindowImpl.java new file mode 100644 index 0000000..8f97629 --- /dev/null +++ b/invui/src/main/java/de/studiocode/invui/window/impl/NormalSplitWindowImpl.java @@ -0,0 +1,16 @@ +package de.studiocode.invui.window.impl; + +import de.studiocode.inventoryaccess.component.ComponentWrapper; +import de.studiocode.invui.gui.AbstractGUI; +import de.studiocode.invui.util.InventoryUtils; +import de.studiocode.invui.window.AbstractSplitWindow; +import org.bukkit.entity.Player; + +public final class NormalSplitWindowImpl extends AbstractSplitWindow { + + public NormalSplitWindowImpl(Player player, ComponentWrapper title, AbstractGUI upperGui, AbstractGUI lowerGui, boolean closeable, boolean retain) { + super(player, title, upperGui, lowerGui, InventoryUtils.createMatchingInventory(upperGui, ""), true, closeable, retain); + register(); + } + +} diff --git a/invui/src/main/java/de/studiocode/invui/window/impl/merged/combined/SimpleCombinedWindow.java b/invui/src/main/java/de/studiocode/invui/window/impl/merged/combined/SimpleCombinedWindow.java deleted file mode 100644 index cf63d97..0000000 --- a/invui/src/main/java/de/studiocode/invui/window/impl/merged/combined/SimpleCombinedWindow.java +++ /dev/null @@ -1,48 +0,0 @@ -package de.studiocode.invui.window.impl.merged.combined; - -import de.studiocode.inventoryaccess.component.BaseComponentWrapper; -import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.invui.gui.GUI; -import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.api.chat.TextComponent; -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; - -public final class SimpleCombinedWindow extends CombinedWindow { - - public SimpleCombinedWindow(Player player, ComponentWrapper title, GUI gui, boolean closeable, boolean removeOnClose) { - super(player, title, gui, createInventory(gui), closeable, removeOnClose); - register(); - } - - public SimpleCombinedWindow(Player player, ComponentWrapper title, GUI gui) { - this(player, title, gui, true, true); - } - - public SimpleCombinedWindow(Player player, BaseComponent[] title, GUI gui, boolean closeable, boolean removeOnClose) { - this(player, new BaseComponentWrapper(title), gui, closeable, removeOnClose); - } - - public SimpleCombinedWindow(Player player, BaseComponent[] title, GUI gui) { - this(player, title, gui, true, true); - } - - public SimpleCombinedWindow(Player player, String title, GUI gui, boolean closeable, boolean removeOnClose) { - this(player, TextComponent.fromLegacyText(title), gui, closeable, removeOnClose); - } - - public SimpleCombinedWindow(Player player, String title, GUI gui) { - this(player, title, gui, true, true); - } - - private static Inventory createInventory(GUI gui) { - if (gui.getWidth() != 9) - throw new IllegalArgumentException("GUI width has to be 9"); - if (gui.getHeight() <= 4) - throw new IllegalArgumentException("GUI height has to be bigger than 4"); - - return Bukkit.createInventory(null, gui.getSize() - 36); - } - -} diff --git a/invui/src/main/java/de/studiocode/invui/window/impl/merged/split/AnvilSplitWindow.java b/invui/src/main/java/de/studiocode/invui/window/impl/merged/split/AnvilSplitWindow.java deleted file mode 100644 index 2fbac93..0000000 --- a/invui/src/main/java/de/studiocode/invui/window/impl/merged/split/AnvilSplitWindow.java +++ /dev/null @@ -1,67 +0,0 @@ -package de.studiocode.invui.window.impl.merged.split; - -import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory; -import de.studiocode.inventoryaccess.component.BaseComponentWrapper; -import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.inventoryaccess.version.InventoryAccess; -import de.studiocode.invui.gui.GUI; -import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.api.chat.TextComponent; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; - -import java.util.function.Consumer; - -public final class AnvilSplitWindow extends SplitWindow { - - private final AnvilInventory anvilInventory; - - public AnvilSplitWindow(Player player, ComponentWrapper title, GUI upperGui, GUI lowerGui, boolean closeable, Consumer renameHandler) { - super(player, title, upperGui, lowerGui, null, false, closeable, true); - - anvilInventory = InventoryAccess.createAnvilInventory(player, title, renameHandler); - upperInventory = anvilInventory.getBukkitInventory(); - - initUpperItems(); - register(); - } - - public AnvilSplitWindow(Player player, ComponentWrapper title, GUI upperGui, GUI lowerGui, Consumer renameHandler) { - this(player, title, upperGui, lowerGui, true, renameHandler); - } - - public AnvilSplitWindow(Player player, BaseComponent[] title, GUI upperGui, GUI lowerGui, boolean closeable, Consumer renameHandler) { - this(player, new BaseComponentWrapper(title), upperGui, lowerGui, closeable, renameHandler); - } - - public AnvilSplitWindow(Player player, BaseComponent[] title, GUI upperGui, GUI lowerGui, Consumer renameHandler) { - this(player, title, upperGui, lowerGui, true, renameHandler); - } - - public AnvilSplitWindow(Player player, String title, GUI upperGui, GUI lowerGui, boolean closeable, Consumer renameHandler) { - this(player, TextComponent.fromLegacyText(title), upperGui, lowerGui, closeable, renameHandler); - } - - public AnvilSplitWindow(Player player, String title, GUI upperGui, GUI lowerGui, Consumer renameHandler) { - this(player, title, upperGui, lowerGui, true, renameHandler); - } - - @Override - protected void setUpperInvItem(int slot, ItemStack itemStack) { - anvilInventory.setItem(slot, itemStack); - } - - @Override - public void show() { - if (isClosed()) throw new IllegalStateException("The Window has already been closed."); - - Player viewer = getViewer(); - if (viewer == null) throw new IllegalStateException("The player is not online."); - anvilInventory.open(); - } - - public String getRenameText() { - return anvilInventory.getRenameText(); - } - -} diff --git a/invui/src/main/java/de/studiocode/invui/window/impl/merged/split/CartographySplitWindow.java b/invui/src/main/java/de/studiocode/invui/window/impl/merged/split/CartographySplitWindow.java deleted file mode 100644 index 2e9d18f..0000000 --- a/invui/src/main/java/de/studiocode/invui/window/impl/merged/split/CartographySplitWindow.java +++ /dev/null @@ -1,98 +0,0 @@ -package de.studiocode.invui.window.impl.merged.split; - -import de.studiocode.inventoryaccess.abstraction.inventory.CartographyInventory; -import de.studiocode.inventoryaccess.component.BaseComponentWrapper; -import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.inventoryaccess.map.MapIcon; -import de.studiocode.inventoryaccess.map.MapPatch; -import de.studiocode.inventoryaccess.version.InventoryAccess; -import de.studiocode.invui.gui.GUI; -import de.studiocode.invui.gui.impl.SimpleGUI; -import de.studiocode.invui.util.MathUtils; -import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.api.chat.TextComponent; -import org.bukkit.Material; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.MapMeta; -import org.jetbrains.annotations.Nullable; - -import java.util.List; - -public final class CartographySplitWindow extends SplitWindow { - - private final CartographyInventory cartographyInventory; - private int mapId; - - public CartographySplitWindow(Player player, ComponentWrapper title, GUI upperGui, GUI lowerGui, boolean closeable) { - super(player, title, createWrappingGUI(upperGui), lowerGui, null, false, closeable, true); - - cartographyInventory = InventoryAccess.createCartographyInventory(player, title); - upperInventory = cartographyInventory.getBukkitInventory(); - - initUpperItems(); - resetMap(); - register(); - } - - public CartographySplitWindow(Player player, ComponentWrapper title, GUI upperGui, GUI lowerGui) { - this(player, title, upperGui, lowerGui, true); - } - - public CartographySplitWindow(Player player, BaseComponent[] title, GUI upperGui, GUI lowerGui) { - this(player, new BaseComponentWrapper(title), upperGui, lowerGui, true); - } - - public CartographySplitWindow(Player player, BaseComponent[] title, GUI upperGui, GUI lowerGui, boolean closeable) { - this(player, new BaseComponentWrapper(title), upperGui, lowerGui, closeable); - } - - public CartographySplitWindow(Player player, String title, GUI upperGui, GUI lowerGui) { - this(player, TextComponent.fromLegacyText(title), upperGui, lowerGui, true); - } - - public CartographySplitWindow(Player player, String title, GUI upperGui, GUI lowerGui, boolean closeable) { - this(player, TextComponent.fromLegacyText(title), upperGui, lowerGui, closeable); - } - - private static GUI createWrappingGUI(GUI upperGui) { - if (upperGui.getWidth() != 2 || upperGui.getHeight() != 1) - throw new IllegalArgumentException("GUI has to be 2x1"); - - GUI wrapperGUI = new SimpleGUI(3, 1); - wrapperGUI.fillRectangle(1, 0, upperGui, true); - return wrapperGUI; - } - - public void updateMap(@Nullable MapPatch patch, @Nullable List icons) { - InventoryAccess.getPlayerUtils().sendMapUpdate(getViewer(), mapId, (byte) 0, false, patch, icons); - } - - public void updateMap(MapPatch patch) { - updateMap(patch, null); - } - - public void updateMap(List icons) { - updateMap(null, icons); - } - - @SuppressWarnings("deprecation") - public void resetMap() { - mapId = -MathUtils.RANDOM.nextInt(Integer.MAX_VALUE); - ItemStack map = new ItemStack(Material.FILLED_MAP); - MapMeta mapMeta = (MapMeta) map.getItemMeta(); - mapMeta.setMapId(mapId); - map.setItemMeta(mapMeta); - cartographyInventory.setItem(0, map); - } - - @Override - public void show() { - if (isClosed()) throw new IllegalStateException("The Window has already been closed."); - - Player viewer = getViewer(); - if (viewer == null) throw new IllegalStateException("The player is not online."); - cartographyInventory.open(); - } - -} diff --git a/invui/src/main/java/de/studiocode/invui/window/impl/merged/split/SimpleSplitWindow.java b/invui/src/main/java/de/studiocode/invui/window/impl/merged/split/SimpleSplitWindow.java deleted file mode 100644 index a933a78..0000000 --- a/invui/src/main/java/de/studiocode/invui/window/impl/merged/split/SimpleSplitWindow.java +++ /dev/null @@ -1,38 +0,0 @@ -package de.studiocode.invui.window.impl.merged.split; - -import de.studiocode.inventoryaccess.component.BaseComponentWrapper; -import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.invui.gui.GUI; -import de.studiocode.invui.util.InventoryUtils; -import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.api.chat.TextComponent; -import org.bukkit.entity.Player; - -public final class SimpleSplitWindow extends SplitWindow { - - public SimpleSplitWindow(Player player, ComponentWrapper title, GUI upperGui, GUI lowerGui, boolean closeable, boolean removeOnClose) { - super(player, title, upperGui, lowerGui, InventoryUtils.createMatchingInventory(upperGui, ""), true, closeable, removeOnClose); - register(); - } - - public SimpleSplitWindow(Player player, ComponentWrapper title, GUI upperGui, GUI lowerGui) { - this(player, title, upperGui, lowerGui, true, true); - } - - public SimpleSplitWindow(Player player, BaseComponent[] title, GUI upperGui, GUI lowerGui, boolean closeable, boolean removeOnClose) { - this(player, new BaseComponentWrapper(title), upperGui, lowerGui, closeable, removeOnClose); - } - - public SimpleSplitWindow(Player player, BaseComponent[] title, GUI upperGui, GUI lowerGui) { - this(player, title, upperGui, lowerGui, true, true); - } - - public SimpleSplitWindow(Player player, String title, GUI upperGui, GUI lowerGui, boolean closeable, boolean removeOnClose) { - this(player, TextComponent.fromLegacyText(title), upperGui, lowerGui, closeable, removeOnClose); - } - - public SimpleSplitWindow(Player player, String title, GUI upperGui, GUI lowerGui) { - this(player, title, upperGui, lowerGui, true, true); - } - -} diff --git a/invui/src/main/java/de/studiocode/invui/window/impl/single/AnvilWindow.java b/invui/src/main/java/de/studiocode/invui/window/impl/single/AnvilWindow.java deleted file mode 100644 index fe51b77..0000000 --- a/invui/src/main/java/de/studiocode/invui/window/impl/single/AnvilWindow.java +++ /dev/null @@ -1,66 +0,0 @@ -package de.studiocode.invui.window.impl.single; - -import de.studiocode.inventoryaccess.abstraction.inventory.AnvilInventory; -import de.studiocode.inventoryaccess.component.BaseComponentWrapper; -import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.inventoryaccess.version.InventoryAccess; -import de.studiocode.invui.gui.GUI; -import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.api.chat.TextComponent; -import org.bukkit.entity.Player; -import org.bukkit.inventory.ItemStack; - -import java.util.function.Consumer; - -public final class AnvilWindow extends SingleWindow { - - private final AnvilInventory anvilInventory; - - public AnvilWindow(Player player, ComponentWrapper title, GUI gui, boolean closable, Consumer renameHandler) { - super(player.getUniqueId(), title, gui, null, false, closable, true); - anvilInventory = InventoryAccess.createAnvilInventory(player, title, renameHandler); - inventory = anvilInventory.getBukkitInventory(); - - initItems(); - register(); - } - - public AnvilWindow(Player player, ComponentWrapper title, GUI gui, Consumer renameHandler) { - this(player, title, gui, true, renameHandler); - } - - public AnvilWindow(Player player, BaseComponent[] title, GUI gui, boolean closeable, Consumer renameHandler) { - this(player, new BaseComponentWrapper(title), gui, closeable, renameHandler); - } - - public AnvilWindow(Player player, BaseComponent[] title, GUI gui, Consumer renameHandler) { - this(player, title, gui, true, renameHandler); - } - - public AnvilWindow(Player player, String title, GUI gui, boolean closeable, Consumer renameHandler) { - this(player, TextComponent.fromLegacyText(title), gui, closeable, renameHandler); - } - - public AnvilWindow(Player player, String title, GUI gui, Consumer renameHandler) { - this(player, title, gui, true, renameHandler); - } - - @Override - protected void setInvItem(int slot, ItemStack itemStack) { - anvilInventory.setItem(slot, itemStack); - } - - @Override - public void show() { - if (isClosed()) throw new IllegalStateException("The Window has already been closed."); - - Player viewer = getViewer(); - if (viewer == null) throw new IllegalStateException("The player is not online."); - anvilInventory.open(); - } - - public String getRenameText() { - return anvilInventory.getRenameText(); - } - -} diff --git a/invui/src/main/java/de/studiocode/invui/window/impl/single/SimpleWindow.java b/invui/src/main/java/de/studiocode/invui/window/impl/single/SimpleWindow.java deleted file mode 100644 index 611cb0d..0000000 --- a/invui/src/main/java/de/studiocode/invui/window/impl/single/SimpleWindow.java +++ /dev/null @@ -1,64 +0,0 @@ -package de.studiocode.invui.window.impl.single; - -import de.studiocode.inventoryaccess.component.BaseComponentWrapper; -import de.studiocode.inventoryaccess.component.ComponentWrapper; -import de.studiocode.invui.gui.GUI; -import de.studiocode.invui.util.InventoryUtils; -import net.md_5.bungee.api.chat.BaseComponent; -import net.md_5.bungee.api.chat.TextComponent; -import org.bukkit.entity.Player; - -import java.util.UUID; - -public final class SimpleWindow extends SingleWindow { - - public SimpleWindow(UUID viewerUUID, ComponentWrapper title, GUI gui, boolean closeable, boolean removeOnClose) { - super(viewerUUID, title, gui, InventoryUtils.createMatchingInventory(gui, ""), true, closeable, removeOnClose); - register(); - } - - public SimpleWindow(UUID viewerUUID, ComponentWrapper title, GUI gui) { - this(viewerUUID, title, gui, true, true); - } - - public SimpleWindow(Player player, ComponentWrapper title, GUI gui, boolean closeable, boolean removeOnClose) { - this(player.getUniqueId(), title, gui, closeable, removeOnClose); - } - - public SimpleWindow(Player player, ComponentWrapper title, GUI gui) { - this(player, title, gui, true, true); - } - - public SimpleWindow(UUID viewerUUID, BaseComponent[] title, GUI gui, boolean closeable, boolean removeOnClose) { - this(viewerUUID, new BaseComponentWrapper(title), gui, closeable, removeOnClose); - } - - public SimpleWindow(UUID viewerUUID, BaseComponent[] title, GUI gui) { - this(viewerUUID, new BaseComponentWrapper(title), gui); - } - - public SimpleWindow(Player player, BaseComponent[] title, GUI gui, boolean closeable, boolean removeOnClose) { - this(player, new BaseComponentWrapper(title), gui, closeable, removeOnClose); - } - - public SimpleWindow(Player player, BaseComponent[] title, GUI gui) { - this(player, new BaseComponentWrapper(title), gui); - } - - public SimpleWindow(UUID viewerUUID, String title, GUI gui, boolean closeable, boolean removeOnClose) { - this(viewerUUID, TextComponent.fromLegacyText(title), gui, closeable, removeOnClose); - } - - public SimpleWindow(UUID viewerUUID, String title, GUI gui) { - this(viewerUUID, title, gui, true, true); - } - - public SimpleWindow(Player player, String title, GUI gui, boolean closeable, boolean removeOnClose) { - this(player.getUniqueId(), title, gui, closeable, removeOnClose); - } - - public SimpleWindow(Player player, String title, GUI gui) { - this(player, title, gui, true, true); - } - -} diff --git a/invui/src/main/java/de/studiocode/invui/window/type/WindowType.java b/invui/src/main/java/de/studiocode/invui/window/type/WindowType.java new file mode 100644 index 0000000..21e6b2f --- /dev/null +++ b/invui/src/main/java/de/studiocode/invui/window/type/WindowType.java @@ -0,0 +1,170 @@ +package de.studiocode.invui.window.type; + +import de.studiocode.invui.gui.AbstractGUI; +import de.studiocode.invui.window.AnvilWindow; +import de.studiocode.invui.window.CartographyWindow; +import de.studiocode.invui.window.Window; +import de.studiocode.invui.window.impl.*; +import de.studiocode.invui.window.type.context.*; +import org.jetbrains.annotations.NotNull; + +import java.util.function.Consumer; + +public interface WindowType { + + WindowType NORMAL = new WindowType<>() { + + @Override + public @NotNull NormalSingleWindowContext createContext() { + return new NormalSingleWindowContext(); + } + + @Override + public @NotNull Window createWindow(@NotNull NormalSingleWindowContext context) { + return new NormalSingleWindowImpl( + context.getViewer(), + context.getTitle(), + (AbstractGUI) context.getGUI(), + context.isCloseable(), + context.isRetain() + ); + } + + }; + + WindowType NORMAL_MERGED = new WindowType<>() { + + @Override + public @NotNull NormalCombinedWindowContext createContext() { + return new NormalCombinedWindowContext(); + } + + @Override + public @NotNull Window createWindow(@NotNull NormalCombinedWindowContext context) { + return new NormalMergedWindowImpl( + context.getViewer(), + context.getTitle(), + (AbstractGUI) context.getGUI(), + context.isCloseable(), + context.isRetain() + ); + } + + }; + + WindowType NORMAL_SPLIT = new WindowType<>() { + + @Override + public @NotNull NormalSplitWindowContext createContext() { + return new NormalSplitWindowContext(); + } + + @Override + public @NotNull Window createWindow(@NotNull NormalSplitWindowContext context) { + return new NormalSplitWindowImpl( + context.getViewer(), + context.getTitle(), + (AbstractGUI) context.getUpperGUI(), + (AbstractGUI) context.getLowerGUI(), + context.isCloseable(), + context.isRetain() + ); + } + + }; + + WindowType ANVIL = new WindowType<>() { + + @Override + public @NotNull AnvilSingleWindowContext createContext() { + return new AnvilSingleWindowContext(); + } + + @Override + public @NotNull AnvilWindow createWindow(@NotNull AnvilSingleWindowContext context) { + return new AnvilSingleWindowImpl( + context.getViewer(), + context.getTitle(), + (AbstractGUI) context.getGUI(), + context.getRenameHandler(), + context.isCloseable(), + context.isRetain() + ); + } + + }; + + WindowType ANVIL_SPLIT = new WindowType<>() { + + @Override + public @NotNull AnvilSplitWindowContext createContext() { + return new AnvilSplitWindowContext(); + } + + @Override + public @NotNull AnvilWindow createWindow(@NotNull AnvilSplitWindowContext context) { + return new AnvilSplitWindowImpl( + context.getViewer(), + context.getTitle(), + (AbstractGUI) context.getUpperGUI(), + (AbstractGUI) context.getLowerGUI(), + context.getRenameHandler(), + context.isCloseable(), + context.isRetain() + ); + } + + }; + + WindowType CARTOGRAPHY = new WindowType<>() { + + @Override + public @NotNull CartographySingleWindowContext createContext() { + return new CartographySingleWindowContext(); + } + + @Override + public @NotNull CartographyWindow createWindow(@NotNull CartographySingleWindowContext context) { + return new CartographySingleWindowImpl( + context.getViewer(), + context.getTitle(), + (AbstractGUI) context.getGUI(), + context.isCloseable(), + context.isRetain() + ); + } + + }; + + WindowType CARTOGRAPHY_SPLIT = new WindowType<>() { + + @Override + public @NotNull CartographySplitWindowContext createContext() { + return new CartographySplitWindowContext(); + } + + @Override + public @NotNull CartographyWindow createWindow(@NotNull CartographySplitWindowContext context) { + return new CartographySplitWindowImpl( + context.getViewer(), + context.getTitle(), + (AbstractGUI) context.getUpperGUI(), + (AbstractGUI) context.getLowerGUI(), + context.isCloseable(), + context.isRetain() + ); + } + + }; + + @NotNull C createContext(); + + @NotNull W createWindow(@NotNull C context); + + default @NotNull W createWindow(Consumer contextConsumer) { + C context = createContext(); + contextConsumer.accept(context); + return createWindow(context); + } + +} diff --git a/invui/src/main/java/de/studiocode/invui/window/type/context/AbstractWindowContext.java b/invui/src/main/java/de/studiocode/invui/window/type/context/AbstractWindowContext.java new file mode 100644 index 0000000..139fb48 --- /dev/null +++ b/invui/src/main/java/de/studiocode/invui/window/type/context/AbstractWindowContext.java @@ -0,0 +1,59 @@ +package de.studiocode.invui.window.type.context; + +import de.studiocode.inventoryaccess.component.BaseComponentWrapper; +import de.studiocode.inventoryaccess.component.ComponentWrapper; +import net.md_5.bungee.api.chat.BaseComponent; +import net.md_5.bungee.api.chat.TextComponent; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public abstract class AbstractWindowContext implements WindowContext { + + protected boolean closeable = true; + protected boolean retain = false; + protected ComponentWrapper title; + protected V viewer; + + public boolean isCloseable() { + return closeable; + } + + public void setCloseable(boolean closeable) { + this.closeable = closeable; + } + + public boolean isRetain() { + return retain; + } + + public void setRetain(boolean retain) { + this.retain = retain; + } + + @Nullable + public ComponentWrapper getTitle() { + return title; + } + + public void setTitle(@NotNull ComponentWrapper title) { + this.title = title; + } + + public void setTitle(@NotNull BaseComponent @NotNull[] title) { + this.title = new BaseComponentWrapper(title); + } + + public void setTitle(@NotNull String title) { + this.title = new BaseComponentWrapper(TextComponent.fromLegacyText(title)); + } + + @Nullable + public V getViewer() { + return viewer; + } + + public void setViewer(@NotNull V viewer) { + this.viewer = viewer; + } + +} diff --git a/invui/src/main/java/de/studiocode/invui/window/type/context/AnvilSingleWindowContext.java b/invui/src/main/java/de/studiocode/invui/window/type/context/AnvilSingleWindowContext.java new file mode 100644 index 0000000..8fbd6dd --- /dev/null +++ b/invui/src/main/java/de/studiocode/invui/window/type/context/AnvilSingleWindowContext.java @@ -0,0 +1,41 @@ +package de.studiocode.invui.window.type.context; + +import de.studiocode.invui.gui.GUI; +import de.studiocode.invui.gui.builder.GUIBuilder; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.function.Consumer; +import java.util.function.Supplier; + +public final class AnvilSingleWindowContext extends AbstractWindowContext { + + private Supplier guiSupplier; + private Consumer renameHandler; + + public @Nullable GUI getGUI() { + return guiSupplier.get(); + } + + public void setGUI(@NotNull Supplier guiSupplier) { + this.guiSupplier = guiSupplier; + } + + public void setGUI(@NotNull GUI gui) { + this.guiSupplier = () -> gui; + } + + public void setGUI(@NotNull GUIBuilder builder) { + this.guiSupplier = builder::build; + } + + public @Nullable Consumer getRenameHandler() { + return renameHandler; + } + + public void setRenameHandler(@NotNull Consumer renameHandler) { + this.renameHandler = renameHandler; + } + +} diff --git a/invui/src/main/java/de/studiocode/invui/window/type/context/AnvilSplitWindowContext.java b/invui/src/main/java/de/studiocode/invui/window/type/context/AnvilSplitWindowContext.java new file mode 100644 index 0000000..7c58ca2 --- /dev/null +++ b/invui/src/main/java/de/studiocode/invui/window/type/context/AnvilSplitWindowContext.java @@ -0,0 +1,58 @@ +package de.studiocode.invui.window.type.context; + +import de.studiocode.invui.gui.GUI; +import de.studiocode.invui.gui.builder.GUIBuilder; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.function.Consumer; +import java.util.function.Supplier; + +public final class AnvilSplitWindowContext extends AbstractWindowContext { + + private Supplier upperGuiSupplier; + private Supplier lowerGuiSupplier; + private Consumer renameHandler; + + public @Nullable GUI getUpperGUI() { + return upperGuiSupplier.get(); + } + + public void setUpperGUI(@NotNull Supplier guiSupplier) { + this.upperGuiSupplier = guiSupplier; + } + + public void setUpperGUI(@NotNull GUI gui) { + this.upperGuiSupplier = () -> gui; + } + + public void setUpperGUI(@NotNull GUIBuilder builder) { + this.upperGuiSupplier = builder::build; + } + + public @Nullable GUI getLowerGUI() { + return lowerGuiSupplier.get(); + } + + public void setLowerGUI(@NotNull Supplier guiSupplier) { + this.lowerGuiSupplier = guiSupplier; + } + + public void setLowerGUI(@NotNull GUI gui) { + this.lowerGuiSupplier = () -> gui; + } + + public void setLowerGUI(@NotNull GUIBuilder builder) { + this.lowerGuiSupplier = builder::build; + } + + public @Nullable Consumer getRenameHandler() { + return renameHandler; + } + + public void setRenameHandler(@NotNull Consumer renameHandler) { + this.renameHandler = renameHandler; + } + +} diff --git a/invui/src/main/java/de/studiocode/invui/window/type/context/CartographySingleWindowContext.java b/invui/src/main/java/de/studiocode/invui/window/type/context/CartographySingleWindowContext.java new file mode 100644 index 0000000..fd1a0a2 --- /dev/null +++ b/invui/src/main/java/de/studiocode/invui/window/type/context/CartographySingleWindowContext.java @@ -0,0 +1,31 @@ +package de.studiocode.invui.window.type.context; + +import de.studiocode.invui.gui.GUI; +import de.studiocode.invui.gui.builder.GUIBuilder; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.function.Supplier; + +public final class CartographySingleWindowContext extends AbstractWindowContext { + + private Supplier guiSupplier; + + public @Nullable GUI getGUI() { + return guiSupplier.get(); + } + + public void setGUI(@NotNull Supplier guiSupplier) { + this.guiSupplier = guiSupplier; + } + + public void setGUI(@NotNull GUI gui) { + this.guiSupplier = () -> gui; + } + + public void setGUI(@NotNull GUIBuilder builder) { + this.guiSupplier = builder::build; + } + +} diff --git a/invui/src/main/java/de/studiocode/invui/window/type/context/CartographySplitWindowContext.java b/invui/src/main/java/de/studiocode/invui/window/type/context/CartographySplitWindowContext.java new file mode 100644 index 0000000..9da1a48 --- /dev/null +++ b/invui/src/main/java/de/studiocode/invui/window/type/context/CartographySplitWindowContext.java @@ -0,0 +1,48 @@ +package de.studiocode.invui.window.type.context; + +import de.studiocode.invui.gui.GUI; +import de.studiocode.invui.gui.builder.GUIBuilder; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.function.Supplier; + +public final class CartographySplitWindowContext extends AbstractWindowContext { + + private Supplier upperGuiSupplier; + private Supplier lowerGuiSupplier; + + public @Nullable GUI getUpperGUI() { + return upperGuiSupplier.get(); + } + + public void setUpperGUI(@NotNull Supplier guiSupplier) { + this.upperGuiSupplier = guiSupplier; + } + + public void setUpperGUI(@NotNull GUI gui) { + this.upperGuiSupplier = () -> gui; + } + + public void setUpperGUI(@NotNull GUIBuilder builder) { + this.upperGuiSupplier = builder::build; + } + + public @Nullable GUI getLowerGUI() { + return lowerGuiSupplier.get(); + } + + public void setLowerGUI(@NotNull Supplier guiSupplier) { + this.lowerGuiSupplier = guiSupplier; + } + + public void setLowerGUI(@NotNull GUI gui) { + this.lowerGuiSupplier = () -> gui; + } + + public void setLowerGUI(@NotNull GUIBuilder builder) { + this.lowerGuiSupplier = builder::build; + } + +} diff --git a/invui/src/main/java/de/studiocode/invui/window/type/context/NormalCombinedWindowContext.java b/invui/src/main/java/de/studiocode/invui/window/type/context/NormalCombinedWindowContext.java new file mode 100644 index 0000000..074c920 --- /dev/null +++ b/invui/src/main/java/de/studiocode/invui/window/type/context/NormalCombinedWindowContext.java @@ -0,0 +1,31 @@ +package de.studiocode.invui.window.type.context; + +import de.studiocode.invui.gui.GUI; +import de.studiocode.invui.gui.builder.GUIBuilder; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.function.Supplier; + +public final class NormalCombinedWindowContext extends AbstractWindowContext { + + private Supplier guiSupplier; + + public @Nullable GUI getGUI() { + return guiSupplier.get(); + } + + public void setGUI(@NotNull Supplier guiSupplier) { + this.guiSupplier = guiSupplier; + } + + public void setGUI(@NotNull GUI gui) { + this.guiSupplier = () -> gui; + } + + public void setGUI(@NotNull GUIBuilder builder) { + this.guiSupplier = builder::build; + } + +} diff --git a/invui/src/main/java/de/studiocode/invui/window/type/context/NormalSingleWindowContext.java b/invui/src/main/java/de/studiocode/invui/window/type/context/NormalSingleWindowContext.java new file mode 100644 index 0000000..9c7ecc6 --- /dev/null +++ b/invui/src/main/java/de/studiocode/invui/window/type/context/NormalSingleWindowContext.java @@ -0,0 +1,36 @@ +package de.studiocode.invui.window.type.context; + +import de.studiocode.invui.gui.GUI; +import de.studiocode.invui.gui.builder.GUIBuilder; +import org.bukkit.OfflinePlayer; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.UUID; +import java.util.function.Supplier; + +public final class NormalSingleWindowContext extends AbstractWindowContext { + + private Supplier guiSupplier; + + public @Nullable GUI getGUI() { + return guiSupplier.get(); + } + + public void setGUI(@NotNull Supplier guiSupplier) { + this.guiSupplier = guiSupplier; + } + + public void setGUI(@NotNull GUI gui) { + this.guiSupplier = () -> gui; + } + + public void setGUI(@NotNull GUIBuilder builder) { + this.guiSupplier = builder::build; + } + + public void setViewer(@NotNull OfflinePlayer player) { + this.viewer = player.getUniqueId(); + } + +} diff --git a/invui/src/main/java/de/studiocode/invui/window/type/context/NormalSplitWindowContext.java b/invui/src/main/java/de/studiocode/invui/window/type/context/NormalSplitWindowContext.java new file mode 100644 index 0000000..078d371 --- /dev/null +++ b/invui/src/main/java/de/studiocode/invui/window/type/context/NormalSplitWindowContext.java @@ -0,0 +1,48 @@ +package de.studiocode.invui.window.type.context; + +import de.studiocode.invui.gui.GUI; +import de.studiocode.invui.gui.builder.GUIBuilder; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.function.Supplier; + +public final class NormalSplitWindowContext extends AbstractWindowContext { + + private Supplier upperGuiSupplier; + private Supplier lowerGuiSupplier; + + public @Nullable GUI getUpperGUI() { + return upperGuiSupplier.get(); + } + + public void setUpperGUI(@NotNull Supplier guiSupplier) { + this.upperGuiSupplier = guiSupplier; + } + + public void setUpperGUI(@NotNull GUI gui) { + this.upperGuiSupplier = () -> gui; + } + + public void setUpperGUI(@NotNull GUIBuilder builder) { + this.upperGuiSupplier = builder::build; + } + + public @Nullable GUI getLowerGUI() { + return lowerGuiSupplier.get(); + } + + public void setLowerGUI(@NotNull Supplier guiSupplier) { + this.lowerGuiSupplier = guiSupplier; + } + + public void setLowerGUI(@NotNull GUI gui) { + this.lowerGuiSupplier = () -> gui; + } + + public void setLowerGUI(@NotNull GUIBuilder builder) { + this.lowerGuiSupplier = builder::build; + } + +} diff --git a/invui/src/main/java/de/studiocode/invui/window/type/context/WindowContext.java b/invui/src/main/java/de/studiocode/invui/window/type/context/WindowContext.java new file mode 100644 index 0000000..591c67f --- /dev/null +++ b/invui/src/main/java/de/studiocode/invui/window/type/context/WindowContext.java @@ -0,0 +1,4 @@ +package de.studiocode.invui.window.type.context; + +public interface WindowContext { +} diff --git a/pom.xml b/pom.xml index bd1039e..b7e192c 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ de.studiocode.invui InvUI-Parent - 0.10.2 + 1.0-SNAPSHOT pom @@ -51,8 +51,7 @@ org.jetbrains annotations - 23.1.0 - compile + 24.0.0 @@ -77,6 +76,16 @@ + + org.apache.maven.plugins + maven-compiler-plugin + 3.10.1 + + + org.apache.maven.plugins + maven-jar-plugin + 3.3.0 + org.apache.maven.plugins maven-source-plugin @@ -90,19 +99,6 @@ - - org.apache.maven.plugins - maven-javadoc-plugin - 3.3.1 - - - attach-javadocs - - jar - - - -