ResizableGUI.java
package it.fulminazzo.yagl.guis;
import it.fulminazzo.yagl.Metadatable;
import it.fulminazzo.yagl.actions.BiGUIAction;
import it.fulminazzo.yagl.actions.GUIAction;
import it.fulminazzo.yagl.contents.GUIContent;
import it.fulminazzo.yagl.contents.ItemGUIContent;
import it.fulminazzo.yagl.items.Item;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Collection;
/**
* Represents a "chest" GUI that can be resized.
* This GUI can start with any value in bounds and multiple of 9 and can grow if necessary.
*/
@NoArgsConstructor(access = AccessLevel.PACKAGE)
public class ResizableGUI extends DefaultGUI {
/**
* Instantiates a new Gui.
*
* @param size the size
*/
ResizableGUI(int size) {
super(size);
}
@Override
public @NotNull ResizableGUI setContents(int slot, GUIContent @NotNull ... contents) {
if (slot >= size() && slot < MAX_SIZE) resize((slot / 9 + 1) * 9);
return (ResizableGUI) super.setContents(slot, contents);
}
@Override
public @NotNull ResizableGUI setContents(int slot, @NotNull Collection<GUIContent> contents) {
return (ResizableGUI) super.setContents(slot, contents);
}
@Override
public @NotNull ResizableGUI addContent(GUIContent @NotNull ... contents) {
int j = 0;
for (int i = 0; i < contents.length; i++) {
GUIContent content = contents[i];
j = addSingle(content, j);
if (j < size()) continue;
if (size() < MAX_SIZE) {
resize(size() + 9);
this.contents.set(j, new Contents(content));
} else throw new IllegalArgumentException(String.format("Could not set content at index %s because contents are already full", i));
}
return this;
}
/**
* Resizes the current GUI to the new size.
* Must be a multiple of 9 not higher than {@link #MAX_SIZE}.
*
* @param size the size
*/
public void resize(int size) {
checkSize(size);
this.contents = createContents(size, this.contents);
}
@Override
public @NotNull ResizableGUI setTitle(@Nullable String title) {
return (ResizableGUI) super.setTitle(title);
}
@Override
public @NotNull ResizableGUI setMovable(int slot, boolean movable) {
return (ResizableGUI) super.setMovable(slot, movable);
}
@Override
public @NotNull ResizableGUI unsetContent(int slot) {
return (ResizableGUI) super.unsetContent(slot);
}
@Override
public @NotNull ResizableGUI clear() {
return (ResizableGUI) super.clear();
}
@Override
public @NotNull ResizableGUI setAllSides(Item @NotNull ... contents) {
return (ResizableGUI) super.setAllSides(contents);
}
@Override
public @NotNull ResizableGUI setAllSides(ItemGUIContent @NotNull ... contents) {
return (ResizableGUI) super.setAllSides(contents);
}
@Override
public @NotNull ResizableGUI setAllSides(GUIContent @NotNull ... contents) {
return (ResizableGUI) super.setAllSides(contents);
}
@Override
public @NotNull ResizableGUI setAllSides(@NotNull Collection<GUIContent> contents) {
return (ResizableGUI) super.setAllSides(contents);
}
@Override
public @NotNull ResizableGUI unsetAllSides() {
return (ResizableGUI) super.unsetAllSides();
}
@Override
public @NotNull ResizableGUI setTopAndBottomSides(Item @NotNull ... contents) {
return (ResizableGUI) super.setTopAndBottomSides(contents);
}
@Override
public @NotNull ResizableGUI setTopAndBottomSides(ItemGUIContent @NotNull ... contents) {
return (ResizableGUI) super.setTopAndBottomSides(contents);
}
@Override
public @NotNull ResizableGUI setTopAndBottomSides(GUIContent @NotNull ... contents) {
return (ResizableGUI) super.setTopAndBottomSides(contents);
}
@Override
public @NotNull ResizableGUI setTopAndBottomSides(@NotNull Collection<GUIContent> contents) {
return (ResizableGUI) super.setTopAndBottomSides(contents);
}
@Override
public @NotNull ResizableGUI unsetTopAndBottomSides() {
return (ResizableGUI) super.unsetTopAndBottomSides();
}
@Override
public @NotNull ResizableGUI setLeftAndRightSides(Item @NotNull ... contents) {
return (ResizableGUI) super.setLeftAndRightSides(contents);
}
@Override
public @NotNull ResizableGUI setLeftAndRightSides(ItemGUIContent @NotNull ... contents) {
return (ResizableGUI) super.setLeftAndRightSides(contents);
}
@Override
public @NotNull ResizableGUI setLeftAndRightSides(GUIContent @NotNull ... contents) {
return (ResizableGUI) super.setLeftAndRightSides(contents);
}
@Override
public @NotNull ResizableGUI setLeftAndRightSides(@NotNull Collection<GUIContent> contents) {
return (ResizableGUI) super.setLeftAndRightSides(contents);
}
@Override
public @NotNull ResizableGUI unsetLeftAndRightSides() {
return (ResizableGUI) super.unsetLeftAndRightSides();
}
@Override
public @NotNull ResizableGUI setTopSide(Item @NotNull ... contents) {
return (ResizableGUI) super.setTopSide(contents);
}
@Override
public @NotNull ResizableGUI setTopSide(ItemGUIContent @NotNull ... contents) {
return (ResizableGUI) super.setTopSide(contents);
}
@Override
public @NotNull ResizableGUI setTopSide(GUIContent @NotNull ... contents) {
return (ResizableGUI) super.setTopSide(contents);
}
@Override
public @NotNull ResizableGUI setTopSide(@NotNull Collection<GUIContent> contents) {
return (ResizableGUI) super.setTopSide(contents);
}
@Override
public @NotNull ResizableGUI unsetTopSide() {
return (ResizableGUI) super.unsetTopSide();
}
@Override
public @NotNull ResizableGUI setLeftSide(Item @NotNull ... contents) {
return (ResizableGUI) super.setLeftSide(contents);
}
@Override
public @NotNull ResizableGUI setLeftSide(ItemGUIContent @NotNull ... contents) {
return (ResizableGUI) super.setLeftSide(contents);
}
@Override
public @NotNull ResizableGUI setLeftSide(GUIContent @NotNull ... contents) {
return (ResizableGUI) super.setLeftSide(contents);
}
@Override
public @NotNull ResizableGUI setLeftSide(@NotNull Collection<GUIContent> contents) {
return (ResizableGUI) super.setLeftSide(contents);
}
@Override
public @NotNull ResizableGUI unsetLeftSide() {
return (ResizableGUI) super.unsetLeftSide();
}
@Override
public @NotNull ResizableGUI setBottomSide(Item @NotNull ... contents) {
return (ResizableGUI) super.setBottomSide(contents);
}
@Override
public @NotNull ResizableGUI setBottomSide(ItemGUIContent @NotNull ... contents) {
return (ResizableGUI) super.setBottomSide(contents);
}
@Override
public @NotNull ResizableGUI setBottomSide(GUIContent @NotNull ... contents) {
return (ResizableGUI) super.setBottomSide(contents);
}
@Override
public @NotNull ResizableGUI setBottomSide(@NotNull Collection<GUIContent> contents) {
return (ResizableGUI) super.setBottomSide(contents);
}
@Override
public @NotNull ResizableGUI unsetBottomSide() {
return (ResizableGUI) super.unsetBottomSide();
}
@Override
public @NotNull ResizableGUI setRightSide(Item @NotNull ... contents) {
return (ResizableGUI) super.setRightSide(contents);
}
@Override
public @NotNull ResizableGUI setRightSide(ItemGUIContent @NotNull ... contents) {
return (ResizableGUI) super.setRightSide(contents);
}
@Override
public @NotNull ResizableGUI setRightSide(GUIContent @NotNull ... contents) {
return (ResizableGUI) super.setRightSide(contents);
}
@Override
public @NotNull ResizableGUI setRightSide(@NotNull Collection<GUIContent> contents) {
return (ResizableGUI) super.setRightSide(contents);
}
@Override
public @NotNull ResizableGUI unsetRightSide() {
return (ResizableGUI) super.unsetRightSide();
}
@Override
public @NotNull ResizableGUI setNorthWest(Item @NotNull ... contents) {
return (ResizableGUI) super.setNorthWest(contents);
}
@Override
public @NotNull ResizableGUI setNorthWest(ItemGUIContent @NotNull ... contents) {
return (ResizableGUI) super.setNorthWest(contents);
}
@Override
public @NotNull ResizableGUI setNorthWest(GUIContent @NotNull ... contents) {
return (ResizableGUI) super.setNorthWest(contents);
}
@Override
public @NotNull ResizableGUI unsetNorthWest() {
return (ResizableGUI) super.unsetNorthWest();
}
@Override
public @NotNull ResizableGUI setNorth(Item @NotNull ... contents) {
return (ResizableGUI) super.setNorth(contents);
}
@Override
public @NotNull ResizableGUI setNorth(ItemGUIContent @NotNull ... contents) {
return (ResizableGUI) super.setNorth(contents);
}
@Override
public @NotNull ResizableGUI setNorth(GUIContent @NotNull ... contents) {
return (ResizableGUI) super.setNorth(contents);
}
@Override
public @NotNull ResizableGUI unsetNorth() {
return (ResizableGUI) super.unsetNorth();
}
@Override
public @NotNull ResizableGUI setNorthEast(Item @NotNull ... contents) {
return (ResizableGUI) super.setNorthEast(contents);
}
@Override
public @NotNull ResizableGUI setNorthEast(ItemGUIContent @NotNull ... contents) {
return (ResizableGUI) super.setNorthEast(contents);
}
@Override
public @NotNull ResizableGUI setNorthEast(GUIContent @NotNull ... contents) {
return (ResizableGUI) super.setNorthEast(contents);
}
@Override
public @NotNull ResizableGUI unsetNorthEast() {
return (ResizableGUI) super.unsetNorthEast();
}
@Override
public @NotNull ResizableGUI setMiddleWest(Item @NotNull ... contents) {
return (ResizableGUI) super.setMiddleWest(contents);
}
@Override
public @NotNull ResizableGUI setMiddleWest(ItemGUIContent @NotNull ... contents) {
return (ResizableGUI) super.setMiddleWest(contents);
}
@Override
public @NotNull ResizableGUI setMiddleWest(GUIContent @NotNull ... contents) {
return (ResizableGUI) super.setMiddleWest(contents);
}
@Override
public @NotNull ResizableGUI unsetMiddleWest() {
return (ResizableGUI) super.unsetMiddleWest();
}
@Override
public @NotNull ResizableGUI setMiddle(Item @NotNull ... contents) {
return (ResizableGUI) super.setMiddle(contents);
}
@Override
public @NotNull ResizableGUI setMiddle(ItemGUIContent @NotNull ... contents) {
return (ResizableGUI) super.setMiddle(contents);
}
@Override
public @NotNull ResizableGUI setMiddle(GUIContent @NotNull ... contents) {
return (ResizableGUI) super.setMiddle(contents);
}
@Override
public @NotNull ResizableGUI unsetMiddle() {
return (ResizableGUI) super.unsetMiddle();
}
@Override
public @NotNull ResizableGUI setMiddleEast(Item @NotNull ... contents) {
return (ResizableGUI) super.setMiddleEast(contents);
}
@Override
public @NotNull ResizableGUI setMiddleEast(ItemGUIContent @NotNull ... contents) {
return (ResizableGUI) super.setMiddleEast(contents);
}
@Override
public @NotNull ResizableGUI setMiddleEast(GUIContent @NotNull ... contents) {
return (ResizableGUI) super.setMiddleEast(contents);
}
@Override
public @NotNull ResizableGUI unsetMiddleEast() {
return (ResizableGUI) super.unsetMiddleEast();
}
@Override
public @NotNull ResizableGUI setSouthWest(Item @NotNull ... contents) {
return (ResizableGUI) super.setSouthWest(contents);
}
@Override
public @NotNull ResizableGUI setSouthWest(ItemGUIContent @NotNull ... contents) {
return (ResizableGUI) super.setSouthWest(contents);
}
@Override
public @NotNull ResizableGUI setSouthWest(GUIContent @NotNull ... contents) {
return (ResizableGUI) super.setSouthWest(contents);
}
@Override
public @NotNull ResizableGUI unsetSouthWest() {
return (ResizableGUI) super.unsetSouthWest();
}
@Override
public @NotNull ResizableGUI setSouth(Item @NotNull ... contents) {
return (ResizableGUI) super.setSouth(contents);
}
@Override
public @NotNull ResizableGUI setSouth(ItemGUIContent @NotNull ... contents) {
return (ResizableGUI) super.setSouth(contents);
}
@Override
public @NotNull ResizableGUI setSouth(GUIContent @NotNull ... contents) {
return (ResizableGUI) super.setSouth(contents);
}
@Override
public @NotNull ResizableGUI unsetSouth() {
return (ResizableGUI) super.unsetSouth();
}
@Override
public @NotNull ResizableGUI setSouthEast(Item @NotNull ... contents) {
return (ResizableGUI) super.setSouthEast(contents);
}
@Override
public @NotNull ResizableGUI setSouthEast(ItemGUIContent @NotNull ... contents) {
return (ResizableGUI) super.setSouthEast(contents);
}
@Override
public @NotNull ResizableGUI setSouthEast(GUIContent @NotNull ... contents) {
return (ResizableGUI) super.setSouthEast(contents);
}
@Override
public @NotNull ResizableGUI unsetSouthEast() {
return (ResizableGUI) super.unsetSouthEast();
}
@Override
public @NotNull ResizableGUI onClickOutside(@NotNull GUIAction action) {
return (ResizableGUI) super.onClickOutside(action);
}
@Override
public @NotNull ResizableGUI onOpenGUI(@NotNull GUIAction action) {
return (ResizableGUI) super.onOpenGUI(action);
}
@Override
public @NotNull ResizableGUI onCloseGUI(@NotNull GUIAction action) {
return (ResizableGUI) super.onCloseGUI(action);
}
@Override
public @NotNull ResizableGUI onChangeGUI(@NotNull BiGUIAction action) {
return (ResizableGUI) super.onChangeGUI(action);
}
@Override
public @NotNull ResizableGUI setAllMovable() {
return (ResizableGUI) super.setAllMovable();
}
@Override
public @NotNull ResizableGUI setAllUnmovable() {
return (ResizableGUI) super.setAllUnmovable();
}
@Override
public @NotNull ResizableGUI addContent(Item @NotNull ... contents) {
return (ResizableGUI) super.addContent(contents);
}
@Override
public @NotNull ResizableGUI addContent(ItemGUIContent @NotNull ... contents) {
return (ResizableGUI) super.addContent(contents);
}
@Override
public @NotNull ResizableGUI setContents(int slot, Item @NotNull ... contents) {
return (ResizableGUI) super.setContents(slot, contents);
}
@Override
public @NotNull ResizableGUI setContents(int slot, ItemGUIContent @NotNull ... contents) {
return (ResizableGUI) super.setContents(slot, contents);
}
@Override
public @NotNull ResizableGUI fill(@NotNull Item content) {
return (ResizableGUI) super.fill(content);
}
@Override
public @NotNull ResizableGUI fill(@NotNull ItemGUIContent content) {
return (ResizableGUI) super.fill(content);
}
@Override
public @NotNull ResizableGUI fill(@NotNull GUIContent content) {
return (ResizableGUI) super.fill(content);
}
@Override
public @NotNull ResizableGUI onClickOutside(@NotNull String command) {
return (ResizableGUI) super.onClickOutside(command);
}
@Override
public @NotNull ResizableGUI onOpenGUI(@NotNull String command) {
return (ResizableGUI) super.onOpenGUI(command);
}
@Override
public @NotNull ResizableGUI copyAll(@NotNull GUI other, boolean replace) {
return (ResizableGUI) super.copyAll(other, replace);
}
@Override
public @NotNull ResizableGUI copyFrom(@NotNull GUI other, boolean replace) {
return (ResizableGUI) super.copyFrom(other, replace);
}
@Override
public ResizableGUI copy() {
return (ResizableGUI) super.copy();
}
@Override
public @NotNull ResizableGUI onCloseGUI(@NotNull String command) {
return (ResizableGUI) super.onCloseGUI(command);
}
@Override
public @NotNull ResizableGUI onChangeGUI(@NotNull String command) {
return (ResizableGUI) super.onChangeGUI(command);
}
@Override
public @NotNull ResizableGUI setVariable(@NotNull String name, @NotNull String value) {
return (ResizableGUI) super.setVariable(name, value);
}
@Override
public @NotNull ResizableGUI unsetVariable(@NotNull String name) {
return (ResizableGUI) super.unsetVariable(name);
}
@Override
public @NotNull ResizableGUI copyAll(@NotNull Metadatable other, boolean replace) {
return (ResizableGUI) super.copyAll(other, replace);
}
@Override
public @NotNull ResizableGUI copyFrom(@NotNull Metadatable other, boolean replace) {
return (ResizableGUI) super.copyFrom(other, replace);
}
}