2022-01-12 04:44:08 -06:00
|
|
|
//
|
|
|
|
|
// Source code recreated from a .class file by IntelliJ IDEA
|
|
|
|
|
// (powered by FernFlower decompiler)
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
package noppes.npcs.scripted.gui;
|
|
|
|
|
|
|
|
|
|
import net.minecraft.nbt.NBTBase;
|
|
|
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
|
|
|
import net.minecraft.nbt.NBTTagList;
|
2022-11-15 15:25:53 -05:00
|
|
|
import noppes.npcs.api.entity.IPlayer;
|
2023-01-12 21:33:06 -05:00
|
|
|
import noppes.npcs.api.gui.*;
|
2022-11-15 15:25:53 -05:00
|
|
|
import noppes.npcs.api.item.IItemStack;
|
2023-01-12 21:33:06 -05:00
|
|
|
import noppes.npcs.controllers.CustomGuiController;
|
|
|
|
|
import noppes.npcs.controllers.ScriptController;
|
|
|
|
|
import noppes.npcs.controllers.data.PlayerDataScript;
|
2023-03-18 15:52:50 -05:00
|
|
|
import scala.actors.threadpool.Arrays;
|
2023-01-12 21:33:06 -05:00
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
2023-03-18 15:52:50 -05:00
|
|
|
import java.util.HashMap;
|
2023-01-12 21:33:06 -05:00
|
|
|
import java.util.Iterator;
|
|
|
|
|
import java.util.List;
|
2022-01-12 04:44:08 -06:00
|
|
|
|
|
|
|
|
public class ScriptGui implements ICustomGui {
|
|
|
|
|
int id;
|
|
|
|
|
int width;
|
|
|
|
|
int height;
|
|
|
|
|
int playerInvX;
|
|
|
|
|
int playerInvY;
|
|
|
|
|
boolean pauseGame;
|
|
|
|
|
boolean showPlayerInv;
|
|
|
|
|
String backgroundTexture = "";
|
2023-03-18 15:52:50 -05:00
|
|
|
HashMap<Integer,ICustomGuiComponent> components = new HashMap<>();
|
2022-01-12 04:44:08 -06:00
|
|
|
List<IItemSlot> slots = new ArrayList();
|
|
|
|
|
|
|
|
|
|
public ScriptGui() {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public ScriptGui(int id, int width, int height, boolean pauseGame) {
|
|
|
|
|
this.id = id;
|
|
|
|
|
this.width = width;
|
|
|
|
|
this.height = height;
|
|
|
|
|
this.pauseGame = pauseGame;
|
|
|
|
|
//this.scriptHandler = ScriptContainer.Current;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public int getID() {
|
|
|
|
|
return this.id;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public int getWidth() {
|
|
|
|
|
return this.width;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public int getHeight() {
|
|
|
|
|
return this.height;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public List<ICustomGuiComponent> getComponents() {
|
2023-03-18 15:52:50 -05:00
|
|
|
return Arrays.asList(this.components.values().toArray());
|
2022-01-12 04:44:08 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public List<IItemSlot> getSlots() {
|
|
|
|
|
return this.slots;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public PlayerDataScript getScriptHandler() {
|
|
|
|
|
return ScriptController.Instance.playerScripts;//this.scriptHandler;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void setSize(int width, int height) {
|
|
|
|
|
this.width = width;
|
|
|
|
|
this.height = height;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void setDoesPauseGame(boolean pauseGame) {
|
|
|
|
|
this.pauseGame = pauseGame;
|
|
|
|
|
}
|
|
|
|
|
|
2023-03-18 15:52:50 -05:00
|
|
|
public boolean doesPauseGame() {
|
2022-01-12 04:44:08 -06:00
|
|
|
return this.pauseGame;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void setBackgroundTexture(String resourceLocation) {
|
|
|
|
|
this.backgroundTexture = resourceLocation;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public String getBackgroundTexture() {
|
|
|
|
|
return this.backgroundTexture;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public IButton addButton(int id, String label, int x, int y) {
|
|
|
|
|
ScriptGuiButton component = new ScriptGuiButton(id, label, x, y);
|
2023-03-18 15:52:50 -05:00
|
|
|
this.updateComponent(component);
|
|
|
|
|
return (IButton)this.getComponent(id);
|
2022-01-12 04:44:08 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public IButton addButton(int id, String label, int x, int y, int width, int height) {
|
|
|
|
|
ScriptGuiButton component = new ScriptGuiButton(id, label, x, y, width, height);
|
2023-03-18 15:52:50 -05:00
|
|
|
this.updateComponent(component);
|
|
|
|
|
return (IButton)this.getComponent(id);
|
2022-01-12 04:44:08 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public IButton addTexturedButton(int id, String label, int x, int y, int width, int height, String texture) {
|
|
|
|
|
ScriptGuiButton component = new ScriptGuiButton(id, label, x, y, width, height, texture);
|
2023-03-18 15:52:50 -05:00
|
|
|
this.updateComponent(component);
|
|
|
|
|
return (IButton)this.getComponent(id);
|
2022-01-12 04:44:08 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public IButton addTexturedButton(int id, String label, int x, int y, int width, int height, String texture, int textureX, int textureY) {
|
|
|
|
|
ScriptGuiButton component = new ScriptGuiButton(id, label, x, y, width, height, texture, textureX, textureY);
|
2023-03-18 15:52:50 -05:00
|
|
|
this.updateComponent(component);
|
|
|
|
|
return (IButton)this.getComponent(id);
|
2022-01-12 04:44:08 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public ILabel addLabel(int id, String label, int x, int y, int width, int height) {
|
|
|
|
|
ScriptGuiLabel component = new ScriptGuiLabel(id, label, x, y, width, height);
|
2023-03-18 15:52:50 -05:00
|
|
|
this.updateComponent(component);
|
|
|
|
|
return (ILabel)this.getComponent(id);
|
2022-01-12 04:44:08 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public ILabel addLabel(int id, String label, int x, int y, int width, int height, int color) {
|
|
|
|
|
ScriptGuiLabel component = new ScriptGuiLabel(id, label, x, y, width, height, color);
|
2023-03-18 15:52:50 -05:00
|
|
|
this.updateComponent(component);
|
|
|
|
|
return (ILabel)this.getComponent(id);
|
2022-01-12 04:44:08 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public ITextField addTextField(int id, int x, int y, int width, int height) {
|
|
|
|
|
ScriptGuiTextField component = new ScriptGuiTextField(id, x, y, width, height);
|
2023-03-18 15:52:50 -05:00
|
|
|
this.updateComponent(component);
|
|
|
|
|
return (ITextField)this.getComponent(id);
|
2022-01-12 04:44:08 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public ITexturedRect addTexturedRect(int id, String texture, int x, int y, int width, int height) {
|
|
|
|
|
ScriptGuiTexturedRect component = new ScriptGuiTexturedRect(id, texture, x, y, width, height);
|
2023-03-18 15:52:50 -05:00
|
|
|
this.updateComponent(component);
|
|
|
|
|
return (ITexturedRect)this.getComponent(id);
|
2022-01-12 04:44:08 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public ITexturedRect addTexturedRect(int id, String texture, int x, int y, int width, int height, int textureX, int textureY) {
|
|
|
|
|
ScriptGuiTexturedRect component = new ScriptGuiTexturedRect(id, texture, x, y, width, height, textureX, textureY);
|
2023-03-18 15:52:50 -05:00
|
|
|
this.updateComponent(component);
|
|
|
|
|
return (ITexturedRect)this.getComponent(id);
|
2023-03-18 03:04:46 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public IItemSlot addItemSlot(int id, int x, int y) {
|
|
|
|
|
ScriptGuiItemSlot slot = new ScriptGuiItemSlot(id, x, y);
|
2023-03-18 15:52:50 -05:00
|
|
|
this.updateComponent(slot);
|
|
|
|
|
return (IItemSlot)this.getComponent(id);
|
2023-03-18 03:04:46 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public IItemSlot addItemSlot(int id, int x, int y, IItemStack stack) {
|
|
|
|
|
ScriptGuiItemSlot slot = new ScriptGuiItemSlot(id, x, y, stack);
|
2023-03-18 15:52:50 -05:00
|
|
|
this.updateComponent(slot);
|
|
|
|
|
return (IItemSlot)this.getComponent(id);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public IItemSlot addItemSlot(int x, int y) {
|
|
|
|
|
return this.addItemSlot(-1, x, y);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public IItemSlot addItemSlot(int x, int y, IItemStack stack) {
|
|
|
|
|
return this.addItemSlot(-1, x, y, stack);
|
2022-01-12 04:44:08 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public IScroll addScroll(int id, int x, int y, int width, int height, String[] list) {
|
|
|
|
|
ScriptGuiScroll component = new ScriptGuiScroll(id, x, y, width, height, list);
|
2023-03-18 15:52:50 -05:00
|
|
|
this.updateComponent(component);
|
|
|
|
|
return (IScroll)this.getComponent(id);
|
2022-01-12 04:44:08 -06:00
|
|
|
}
|
|
|
|
|
|
2022-01-28 03:21:00 -06:00
|
|
|
public ILine addLine(int id, int x1, int y1, int x2, int y2, int color, int thickness) {
|
2023-03-18 15:52:50 -05:00
|
|
|
ScriptGuiLine component = new ScriptGuiLine(id, x1, y1, x2, y2, color, thickness);
|
|
|
|
|
this.updateComponent(component);
|
|
|
|
|
return (ILine) this.getComponent(id);
|
2022-01-28 03:21:00 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public ILine addLine(int id, int x1, int y1, int x2, int y2) {
|
2023-03-18 15:52:50 -05:00
|
|
|
ScriptGuiLine component = new ScriptGuiLine(id, x1, y1, x2, y2);
|
|
|
|
|
this.updateComponent(component);
|
|
|
|
|
return (ILine) this.getComponent(id);
|
2022-01-28 03:21:00 -06:00
|
|
|
}
|
|
|
|
|
|
2022-01-12 04:44:08 -06:00
|
|
|
public void showPlayerInventory(int x, int y) {
|
|
|
|
|
this.showPlayerInv = true;
|
|
|
|
|
this.playerInvX = x;
|
|
|
|
|
this.playerInvY = y;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public ICustomGuiComponent getComponent(int componentID) {
|
2023-03-18 15:52:50 -05:00
|
|
|
return this.components.get(componentID);
|
2022-01-12 04:44:08 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void removeComponent(int componentID) {
|
2023-03-18 15:52:50 -05:00
|
|
|
if (this.components.containsKey(componentID)) {
|
|
|
|
|
ICustomGuiComponent component = this.getComponent(componentID);
|
|
|
|
|
if (component instanceof IItemSlot) {
|
|
|
|
|
for (IItemSlot slot : this.slots) {
|
|
|
|
|
if (slot.getID() == componentID) {
|
|
|
|
|
this.slots.remove(slot);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
2022-01-12 04:44:08 -06:00
|
|
|
}
|
2023-03-18 15:52:50 -05:00
|
|
|
this.components.remove(componentID);
|
2022-01-12 04:44:08 -06:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void updateComponent(ICustomGuiComponent component) {
|
2023-03-18 15:52:50 -05:00
|
|
|
if (component != null) {
|
|
|
|
|
this.removeComponent(component.getID());
|
|
|
|
|
this.components.put(component.getID(), component);
|
|
|
|
|
if (component instanceof IItemSlot) {
|
|
|
|
|
this.slots.add((IItemSlot) component);
|
2022-01-12 04:44:08 -06:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void update(IPlayer player) {
|
2022-05-11 22:08:31 -05:00
|
|
|
CustomGuiController.updateGui(player, this);
|
2022-01-12 04:44:08 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public boolean getShowPlayerInv() {
|
|
|
|
|
return this.showPlayerInv;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public int getPlayerInvX() {
|
|
|
|
|
return this.playerInvX;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public int getPlayerInvY() {
|
|
|
|
|
return this.playerInvY;
|
|
|
|
|
}
|
|
|
|
|
|
2023-03-18 03:04:46 -05:00
|
|
|
private int getMaxId() {
|
|
|
|
|
int max = 0;
|
|
|
|
|
for (ICustomGuiComponent component : this.getComponents()) {
|
|
|
|
|
if (component.getID() >= max) {
|
|
|
|
|
max = component.getID();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return max;
|
|
|
|
|
}
|
|
|
|
|
|
2022-01-12 04:44:08 -06:00
|
|
|
public ICustomGui fromNBT(NBTTagCompound tag) {
|
|
|
|
|
this.id = tag.getInteger("id");
|
|
|
|
|
this.width = tag.getIntArray("size")[0];
|
|
|
|
|
this.height = tag.getIntArray("size")[1];
|
|
|
|
|
this.pauseGame = tag.getBoolean("pause");
|
|
|
|
|
this.backgroundTexture = tag.getString("bgTexture");
|
|
|
|
|
|
|
|
|
|
NBTTagList list = tag.getTagList("components", 10);
|
|
|
|
|
for(int i = 0; i < list.tagCount(); i++){
|
|
|
|
|
NBTBase b = list.getCompoundTagAt(i);
|
|
|
|
|
ScriptGuiComponent component = ScriptGuiComponent.createFromNBT((NBTTagCompound)b);
|
2023-03-18 15:52:50 -05:00
|
|
|
if (component != null) {
|
|
|
|
|
components.put(component.getID(), component);
|
|
|
|
|
}
|
2022-01-12 04:44:08 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
List<IItemSlot> slots = new ArrayList();
|
|
|
|
|
list = tag.getTagList("slots", 10);
|
|
|
|
|
|
|
|
|
|
for(int i = 0; i < list.tagCount(); i++){
|
|
|
|
|
NBTBase b = list.getCompoundTagAt(i);
|
|
|
|
|
ScriptGuiItemSlot component = (ScriptGuiItemSlot)ScriptGuiComponent.createFromNBT((NBTTagCompound)b);
|
|
|
|
|
slots.add(component);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
this.slots = slots;
|
|
|
|
|
this.showPlayerInv = tag.getBoolean("showPlayerInv");
|
|
|
|
|
if (this.showPlayerInv) {
|
|
|
|
|
this.playerInvX = tag.getIntArray("pInvPos")[0];
|
|
|
|
|
this.playerInvY = tag.getIntArray("pInvPos")[1];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return this;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public NBTTagCompound toNBT() {
|
|
|
|
|
NBTTagCompound tag = new NBTTagCompound();
|
|
|
|
|
tag.setInteger("id", this.id);
|
|
|
|
|
tag.setIntArray("size", new int[]{this.width, this.height});
|
|
|
|
|
tag.setBoolean("pause", this.pauseGame);
|
|
|
|
|
tag.setString("bgTexture", this.backgroundTexture);
|
|
|
|
|
NBTTagList list = new NBTTagList();
|
2023-03-18 15:52:50 -05:00
|
|
|
Iterator var3 = this.components.values().iterator();
|
2022-01-12 04:44:08 -06:00
|
|
|
|
|
|
|
|
ICustomGuiComponent c;
|
|
|
|
|
while(var3.hasNext()) {
|
|
|
|
|
c = (ICustomGuiComponent)var3.next();
|
|
|
|
|
list.appendTag(((ScriptGuiComponent)c).toNBT(new NBTTagCompound()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
tag.setTag("components", list);
|
|
|
|
|
list = new NBTTagList();
|
|
|
|
|
var3 = this.slots.iterator();
|
|
|
|
|
|
|
|
|
|
while(var3.hasNext()) {
|
|
|
|
|
c = (ICustomGuiComponent)var3.next();
|
2023-03-18 03:47:24 -05:00
|
|
|
if (c.getID() == -1) {
|
|
|
|
|
c.setID(this.getMaxId()+1);
|
|
|
|
|
}
|
2022-01-12 04:44:08 -06:00
|
|
|
list.appendTag(((ScriptGuiComponent)c).toNBT(new NBTTagCompound()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
tag.setTag("slots", list);
|
|
|
|
|
tag.setBoolean("showPlayerInv", this.showPlayerInv);
|
|
|
|
|
if (this.showPlayerInv) {
|
|
|
|
|
tag.setIntArray("pInvPos", new int[]{this.playerInvX, this.playerInvY});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return tag;
|
|
|
|
|
}
|
|
|
|
|
}
|