120 lines
3.6 KiB
Java
120 lines
3.6 KiB
Java
//
|
|
// Created by BONNe
|
|
// Copyright - 2021
|
|
//
|
|
|
|
|
|
package world.bentobox.bentobox.api.panels.reader;
|
|
|
|
|
|
import java.util.Arrays;
|
|
import java.util.Objects;
|
|
|
|
import org.bukkit.inventory.ItemStack;
|
|
import org.eclipse.jdt.annotation.NonNull;
|
|
import org.eclipse.jdt.annotation.Nullable;
|
|
|
|
import world.bentobox.bentobox.api.panels.Panel;
|
|
|
|
/**
|
|
* This is template object for the panel reader. It contains data that can exist in the panel.
|
|
* PanelBuilder will use this to build panel.
|
|
*
|
|
* @param type the type of GUI
|
|
* @param title the title of GUI
|
|
* @param border the border block for GUI
|
|
* @param background the background block for GUI.
|
|
* @param forcedRows the array of boolean that indicate which rows must be force loaded.
|
|
* @param content The 2D array of ItemTemplateRecords
|
|
*
|
|
* @since 1.17.3
|
|
*/
|
|
public record PanelTemplateRecord(Panel.Type type,
|
|
@Nullable String title,
|
|
@Nullable TemplateItem border,
|
|
@Nullable TemplateItem background,
|
|
boolean[] forcedRows,
|
|
@NonNull ItemTemplateRecord[][] content)
|
|
{
|
|
/**
|
|
* Instantiates a new Panel template record with empty content.
|
|
*
|
|
* @param type the type
|
|
* @param title the title
|
|
* @param border the border
|
|
* @param background the background
|
|
* @param forcedRows the forced rows array
|
|
*/
|
|
public PanelTemplateRecord(Panel.Type type, String title, TemplateItem border, TemplateItem background, boolean[] forcedRows)
|
|
{
|
|
this(type, title, border, background, forcedRows, new ItemTemplateRecord[6][9]);
|
|
}
|
|
|
|
|
|
/**
|
|
* This method adds give item template record in given slot.
|
|
* @param rowIndex row index of content array
|
|
* @param columnIndex column index of content array.
|
|
* @param panelItemTemplate item template record that must be added.
|
|
*/
|
|
public void addButtonTemplate(int rowIndex, int columnIndex, ItemTemplateRecord panelItemTemplate)
|
|
{
|
|
this.content[rowIndex][columnIndex] = panelItemTemplate;
|
|
}
|
|
|
|
|
|
// ---------------------------------------------------------------------
|
|
// Section: Classes
|
|
// ---------------------------------------------------------------------
|
|
|
|
|
|
/**
|
|
* This record contains info about border and background item.
|
|
*/
|
|
public record TemplateItem(ItemStack icon, String title, String description)
|
|
{
|
|
public TemplateItem(ItemStack icon)
|
|
{
|
|
this(icon, null, null);
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
public int hashCode() {
|
|
final int prime = 31;
|
|
int result = 1;
|
|
result = prime * result + Arrays.deepHashCode(content);
|
|
result = prime * result + Arrays.hashCode(forcedRows);
|
|
result = prime * result + Objects.hash(background, border, title, type);
|
|
return result;
|
|
}
|
|
|
|
|
|
@Override
|
|
public boolean equals(Object obj) {
|
|
if (this == obj) {
|
|
return true;
|
|
}
|
|
if (!(obj instanceof PanelTemplateRecord other)) {
|
|
return false;
|
|
}
|
|
return Objects.equals(background, other.background) && Objects.equals(border, other.border)
|
|
&& Arrays.deepEquals(content, other.content) && Arrays.equals(forcedRows, other.forcedRows)
|
|
&& Objects.equals(title, other.title) && type == other.type;
|
|
}
|
|
|
|
|
|
@Override
|
|
public String toString() {
|
|
return "PanelTemplateRecord {type=" + type +
|
|
", title=" + title +
|
|
", border=" + border +
|
|
", background=" + background +
|
|
", forcedRows=" + Arrays.toString(forcedRows) +
|
|
", content=" + Arrays.toString(content) + "}";
|
|
}
|
|
|
|
|
|
}
|