mirror of
https://github.com/KAMKEEL/CustomNPC-Plus.git
synced 2026-11-12 20:07:32 +00:00
9 files changed
+858
-802
No files matched your search
@@ -75,6 +75,8 @@ public class GuiCustom extends GuiScreen implements ICustomScrollListener, IGuiD
|
||||
private boolean field_146993_M;
|
||||
private ItemStack field_146994_N;
|
||||
|
||||
public boolean closeOnEsc = true;
|
||||
|
||||
public GuiCustom(ContainerCustomGui container) {
|
||||
this.inventorySlots = container;
|
||||
this.field_146995_H = true;
|
||||
@@ -508,7 +510,7 @@ public class GuiCustom extends GuiScreen implements ICustomScrollListener, IGuiD
|
||||
}
|
||||
|
||||
protected void keyTyped(char typedChar, int keyCode) {
|
||||
if (keyCode == 1)
|
||||
if (keyCode == 1 && closeOnEsc)
|
||||
{
|
||||
this.mc.thePlayer.closeScreen();
|
||||
}
|
||||
@@ -654,6 +656,7 @@ public class GuiCustom extends GuiScreen implements ICustomScrollListener, IGuiD
|
||||
this.gui = gui;
|
||||
this.xSize = gui.getWidth();
|
||||
this.ySize = gui.getHeight();
|
||||
this.closeOnEsc = gui.doesCloseOnEscape();
|
||||
if (!gui.getBackgroundTexture().isEmpty()) {
|
||||
this.background = new ResourceLocation(gui.getBackgroundTexture());
|
||||
}
|
||||
|
||||
@@ -33,10 +33,7 @@ public class GuiNPCGlobalMainMenu extends GuiNPCInterface2{
|
||||
y = guiTop + 10;
|
||||
this.addButton(new GuiNpcButton(18, guiLeft + 210, y, "menu.animations"));
|
||||
this.addButton(new GuiNpcButton(17, guiLeft + 210, y += 22, "menu.tags"));
|
||||
if(Loader.isModLoaded("npcdbc")){
|
||||
this.addButton(new GuiNpcButton(200, guiLeft + 210, y + 154, 99, 20, "global.customforms"));
|
||||
this.addButton(new GuiNpcButton(201, guiLeft + 210 + 99 + 3, y + 154, 99, 20, "global.customauras"));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -76,13 +73,7 @@ public class GuiNPCGlobalMainMenu extends GuiNPCInterface2{
|
||||
NoppesUtil.requestOpenGUI(EnumGuiType.ManageLinked);
|
||||
}
|
||||
|
||||
// DBC Addon
|
||||
if (id == 200) {
|
||||
NoppesUtil.requestOpenGUI(EnumGuiType.ManageCustomForms);
|
||||
}
|
||||
if (id == 201) {
|
||||
NoppesUtil.requestOpenGUI(EnumGuiType.ManageCustomAuras);
|
||||
}
|
||||
|
||||
}
|
||||
@Override
|
||||
public void save() {
|
||||
|
||||
@@ -13,77 +13,117 @@ import org.lwjgl.input.Mouse;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
import org.lwjgl.opengl.GL12;
|
||||
|
||||
public class GuiModelInterface extends GuiNPCInterface{
|
||||
public ModelData playerdata;
|
||||
public class GuiModelInterface extends GuiNPCInterface {
|
||||
public ModelData playerdata;
|
||||
|
||||
private static float rotation = 0;
|
||||
private static float rotation = 0;
|
||||
|
||||
private GuiNpcButton left,right,zoom,unzoom;
|
||||
private GuiNpcButton left, right, zoom, unzoom;
|
||||
|
||||
private static float zoomed = 60;
|
||||
private static float zoomed = 60;
|
||||
public float minSize = 10, maxSize = 100;
|
||||
|
||||
public int xOffset = 0;
|
||||
public int yOffset = 0;
|
||||
public boolean followMouse = true;
|
||||
public int xOffset = 0, xOffsetButton = 0;
|
||||
public int yOffset = 0, yOffsetButton = 0;
|
||||
public boolean followMouse = true, drawNPConSub = true;
|
||||
|
||||
public EntityCustomNpc npc;
|
||||
public boolean drawRenderButtons = true, drawXButton = true;
|
||||
|
||||
public GuiModelInterface(EntityCustomNpc npc){
|
||||
this.npc = npc;
|
||||
playerdata = npc.modelData;
|
||||
xSize = 380;
|
||||
drawDefaultBackground = false;
|
||||
}
|
||||
public EntityCustomNpc npc;
|
||||
|
||||
public GuiModelInterface(EntityCustomNpc npc) {
|
||||
this.npc = npc;
|
||||
playerdata = npc.modelData;
|
||||
xSize = 380;
|
||||
drawDefaultBackground = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initGui() {
|
||||
super.initGui();
|
||||
super.initGui();
|
||||
|
||||
addButton(unzoom = new GuiNpcButton(666, guiLeft + 148 + xOffset, guiTop + 200 + yOffset, 20, 20, "-"));
|
||||
addButton(zoom = new GuiNpcButton(667, guiLeft + 214 + xOffset, guiTop + 200 + yOffset, 20, 20, "+"));
|
||||
addButton(left = new GuiNpcButton(668, guiLeft + 170 + xOffset, guiTop + 200 + yOffset, 20, 20, "<"));
|
||||
addButton(right = new GuiNpcButton(669, guiLeft + 192 + xOffset, guiTop + 200 + yOffset, 20, 20, ">"));
|
||||
|
||||
addButton(new GuiNpcButton(670, width - 22, 2, 20, 20, "X"));
|
||||
if (drawRenderButtons) {
|
||||
addButton(unzoom = new GuiNpcButton(666, guiLeft + 148 + xOffset + xOffsetButton, guiTop + 200 + yOffset + yOffsetButton, 20, 20, "-"));
|
||||
addButton(zoom = new GuiNpcButton(667, guiLeft + 214 + xOffset + xOffsetButton, guiTop + 200 + yOffset + yOffsetButton, 20, 20, "+"));
|
||||
addButton(left = new GuiNpcButton(668, guiLeft + 170 + xOffset + xOffsetButton, guiTop + 200 + yOffset + yOffsetButton, 20, 20, "<"));
|
||||
addButton(right = new GuiNpcButton(669, guiLeft + 192 + xOffset + xOffsetButton, guiTop + 200 + yOffset + yOffsetButton, 20, 20, ">"));
|
||||
}
|
||||
|
||||
if (drawXButton) {
|
||||
addButton(new GuiNpcButton(670, width - 22, 2, 20, 20, "X"));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void actionPerformed(GuiButton btn) {
|
||||
if(btn.id == 670){
|
||||
close();
|
||||
}
|
||||
super.actionPerformed(btn);
|
||||
if (btn.id == 670) {
|
||||
close();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean doesGuiPauseGame()
|
||||
{
|
||||
public boolean doesGuiPauseGame() {
|
||||
return false;
|
||||
}
|
||||
private long start = -1;
|
||||
@Override
|
||||
public void drawScreen(int par1, int par2, float par3)
|
||||
{
|
||||
if(Mouse.isButtonDown(0)){
|
||||
if(left.mousePressed(mc, par1, par2))
|
||||
rotation+=par3 * 2;
|
||||
else if(right.mousePressed(mc, par1, par2))
|
||||
rotation-=par3 * 2;
|
||||
else if(zoom.mousePressed(mc, par1, par2))
|
||||
zoomed+=par3 * 2;
|
||||
else if(unzoom.mousePressed(mc, par1, par2) && zoomed > 10)
|
||||
zoomed-=par3 * 2;
|
||||
|
||||
}
|
||||
private long start = -1;
|
||||
|
||||
public boolean isMouseOverRenderer(int x, int y) {
|
||||
return x >= guiLeft + xOffset + 40 && x <= guiLeft + xOffset + 330 && y >= guiTop + yOffset - 50 && y <= guiTop + yOffset + 250;
|
||||
}
|
||||
|
||||
|
||||
public void preRender(EntityLivingBase entity) {
|
||||
EntityUtil.Copy(npc, entity);
|
||||
|
||||
}
|
||||
|
||||
public void postRender(EntityLivingBase entity) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawScreen(int par1, int par2, float par3) {
|
||||
if (Mouse.isButtonDown(0)) {
|
||||
if (this.left.mousePressed(this.mc, par1, par2)) {
|
||||
rotation += par3 * 1.5F;
|
||||
} else if (this.right.mousePressed(this.mc, par1, par2)) {
|
||||
rotation -= par3 * 1.5F;
|
||||
} else if (this.zoom.mousePressed(this.mc, par1, par2) && zoomed < maxSize) {
|
||||
zoomed += par3 * 1.0F;
|
||||
} else if (this.unzoom.mousePressed(this.mc, par1, par2) && zoomed > minSize) {
|
||||
zoomed -= par3 * 1.0F;
|
||||
}
|
||||
}
|
||||
|
||||
if (isMouseOverRenderer(par1, par2)) {
|
||||
zoomed += Mouse.getDWheel() * 0.035f;
|
||||
if (Mouse.isButtonDown(0) || Mouse.isButtonDown(1)) {
|
||||
rotation -= Mouse.getDX() * 0.75f;
|
||||
}
|
||||
}
|
||||
|
||||
if (zoomed > maxSize)
|
||||
zoomed = maxSize;
|
||||
if (zoomed < minSize)
|
||||
zoomed = minSize;
|
||||
|
||||
if (hasSubGui() && !drawNPConSub)
|
||||
return;
|
||||
|
||||
this.drawDefaultBackground();
|
||||
GL11.glColor4f(1, 1, 1, 1);
|
||||
|
||||
EntityLivingBase entity = playerdata.getEntity(npc);
|
||||
if(entity == null)
|
||||
entity = this.npc;
|
||||
EntityLivingBase entity = playerdata.getEntity(npc);
|
||||
if (entity == null)
|
||||
entity = this.npc;
|
||||
|
||||
EntityUtil.Copy(npc, entity);
|
||||
preRender(entity);
|
||||
|
||||
int l = guiLeft + 190 + xOffset;
|
||||
int i1 = guiTop + 180 + yOffset;
|
||||
int l = guiLeft + 190 + xOffset;
|
||||
int i1 = guiTop + 180 + yOffset;
|
||||
GL11.glEnable(GL11.GL_COLOR_MATERIAL);
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslatef(l, i1, 60F);
|
||||
@@ -95,24 +135,23 @@ public class GuiModelInterface extends GuiNPCInterface{
|
||||
float f3 = entity.rotationYaw;
|
||||
float f4 = entity.rotationPitch;
|
||||
float f7 = entity.rotationYawHead;
|
||||
float f5 = (float)(l) - par1;
|
||||
float f6 = (float)(i1 - 50) - par2;
|
||||
float f5 = (float) (l) - par1;
|
||||
float f6 = (float) (i1 - 50) - par2;
|
||||
GL11.glRotatef(135F, 0.0F, 1.0F, 0.0F);
|
||||
RenderHelper.enableStandardItemLighting();
|
||||
GL11.glRotatef(-135F, 0.0F, 1.0F, 0.0F);
|
||||
GL11.glRotatef(-(float)Math.atan(f6 / 80F) * 20F, 1.0F, 0.0F, 0.0F);
|
||||
GL11.glRotatef(-(float) Math.atan(f6 / 800F) * 20F, 1.0F, 0.0F, 0.0F);
|
||||
entity.prevRenderYawOffset = entity.renderYawOffset = rotation;
|
||||
entity.prevRotationYaw = entity.rotationYaw = (float)Math.atan(f5 / 80F) * 40F + rotation;
|
||||
entity.rotationPitch = followMouse ? -(float)Math.atan(f6 / 80F) * 20F : 0;
|
||||
entity.prevRotationYaw = entity.rotationYaw = (float) Math.atan(f5 / 80F) * 40F + rotation;
|
||||
entity.rotationPitch = followMouse ? -(float) Math.atan(f6 / 40F) * 20F : 0;
|
||||
entity.prevRotationYawHead = entity.rotationYawHead = followMouse ? entity.rotationYaw : rotation;
|
||||
GL11.glTranslatef(0.0F, entity.yOffset, 0.0F);
|
||||
GL11.glTranslatef(0.0F, entity.yOffset, 1F);
|
||||
RenderManager.instance.playerViewY = 180F;
|
||||
|
||||
try{
|
||||
try {
|
||||
RenderManager.instance.renderEntityWithPosYaw(entity, 0.0D, 0.0D, 0.0D, 0.0F, 1.0F);
|
||||
}
|
||||
catch(Exception e){
|
||||
playerdata.setEntityClass(null);
|
||||
} catch (Exception e) {
|
||||
playerdata.setEntityClass(null);
|
||||
}
|
||||
entity.prevRenderYawOffset = entity.renderYawOffset = f2;
|
||||
entity.prevRotationYaw = entity.rotationYaw = f3;
|
||||
@@ -126,27 +165,25 @@ public class GuiModelInterface extends GuiNPCInterface{
|
||||
OpenGlHelper.setActiveTexture(OpenGlHelper.defaultTexUnit);
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslatef(0.0F, 0f, 500.065F);
|
||||
super.drawScreen(par1, par2, par3);
|
||||
super.drawScreen(par1, par2, par3);
|
||||
GL11.glPopMatrix();
|
||||
|
||||
postRender(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void keyTyped(char par1, int par2)
|
||||
{
|
||||
super.keyTyped(par1, par2);
|
||||
if (par2 == 1)
|
||||
{
|
||||
close();
|
||||
}
|
||||
public void keyTyped(char par1, int par2) {
|
||||
super.keyTyped(par1, par2);
|
||||
}
|
||||
public void close(){
|
||||
this.mc.displayGuiScreen((GuiScreen)null);
|
||||
|
||||
public void close() {
|
||||
this.mc.displayGuiScreen((GuiScreen) null);
|
||||
this.mc.setIngameFocus();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void save() {
|
||||
// TODO Auto-generated method stub
|
||||
@Override
|
||||
public void save() {
|
||||
// TODO Auto-generated method stub
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -23,59 +23,61 @@ import java.net.URI;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
|
||||
public abstract class GuiNPCInterface extends GuiScreen
|
||||
{
|
||||
public EntityClientPlayerMP player;
|
||||
public boolean drawDefaultBackground = true;
|
||||
public EntityNPCInterface npc;
|
||||
protected HashMap<Integer,GuiNpcButton> buttons = new HashMap<Integer,GuiNpcButton>();
|
||||
protected HashMap<Integer,GuiMenuTopButton> topbuttons = new HashMap<Integer,GuiMenuTopButton>();
|
||||
protected HashMap<Integer,GuiMenuSideButton> sidebuttons = new HashMap<Integer,GuiMenuSideButton>();
|
||||
protected HashMap<Integer,GuiNpcTextField> textfields = new HashMap<Integer,GuiNpcTextField>();
|
||||
protected HashMap<Integer,GuiNpcLabel> labels = new HashMap<Integer,GuiNpcLabel>();
|
||||
protected HashMap<Integer,GuiCustomScroll> scrolls = new HashMap<Integer,GuiCustomScroll>();
|
||||
protected HashMap<Integer,GuiNpcSlider> sliders = new HashMap<Integer,GuiNpcSlider>();
|
||||
protected HashMap<Integer,GuiScreen> extra = new HashMap<Integer,GuiScreen>();
|
||||
public abstract class GuiNPCInterface extends GuiScreen {
|
||||
public EntityClientPlayerMP player;
|
||||
public boolean drawDefaultBackground = true;
|
||||
public EntityNPCInterface npc;
|
||||
protected HashMap<Integer, GuiNpcButton> buttons = new HashMap<Integer, GuiNpcButton>();
|
||||
protected HashMap<Integer, GuiMenuTopButton> topbuttons = new HashMap<Integer, GuiMenuTopButton>();
|
||||
protected HashMap<Integer, GuiMenuSideButton> sidebuttons = new HashMap<Integer, GuiMenuSideButton>();
|
||||
protected HashMap<Integer, GuiNpcTextField> textfields = new HashMap<Integer, GuiNpcTextField>();
|
||||
protected HashMap<Integer, GuiNpcLabel> labels = new HashMap<Integer, GuiNpcLabel>();
|
||||
protected HashMap<Integer, GuiCustomScroll> scrolls = new HashMap<Integer, GuiCustomScroll>();
|
||||
protected HashMap<Integer, GuiNpcSlider> sliders = new HashMap<Integer, GuiNpcSlider>();
|
||||
protected HashMap<Integer, GuiScreen> extra = new HashMap<Integer, GuiScreen>();
|
||||
protected HashMap<Integer, GuiScrollWindow> scrollWindows = new HashMap<>();
|
||||
|
||||
public String title;
|
||||
private ResourceLocation background = null;
|
||||
public boolean closeOnEsc = false;
|
||||
public int guiLeft,guiTop,xSize,ySize;
|
||||
private SubGuiInterface subgui;
|
||||
public int mouseX, mouseY, mouseScroll;
|
||||
public float bgScale = 1;
|
||||
public float bgScaleX = 1;
|
||||
public float bgScaleY = 1;
|
||||
public float bgScaleZ = 1;
|
||||
public String title;
|
||||
private ResourceLocation background = null;
|
||||
public boolean closeOnEsc = false;
|
||||
public int guiLeft, guiTop, xSize, ySize;
|
||||
private SubGuiInterface subgui;
|
||||
public int mouseX, mouseY, mouseScroll;
|
||||
public float bgScale = 1;
|
||||
public float bgScaleX = 1;
|
||||
public float bgScaleY = 1;
|
||||
public float bgScaleZ = 1;
|
||||
public long timeClosedSubGui;
|
||||
|
||||
public GuiNPCInterface(EntityNPCInterface npc)
|
||||
{
|
||||
this.player = Minecraft.getMinecraft().thePlayer;
|
||||
this.npc = npc;
|
||||
title = "";
|
||||
xSize = 200;
|
||||
ySize = 222;
|
||||
public GuiNPCInterface(EntityNPCInterface npc) {
|
||||
this.player = Minecraft.getMinecraft().thePlayer;
|
||||
this.npc = npc;
|
||||
title = "";
|
||||
xSize = 200;
|
||||
ySize = 222;
|
||||
}
|
||||
public GuiNPCInterface()
|
||||
{
|
||||
this(null);
|
||||
|
||||
public GuiNPCInterface() {
|
||||
this(null);
|
||||
}
|
||||
public void setBackground(String texture){
|
||||
background = new ResourceLocation("customnpcs","textures/gui/" + texture);
|
||||
|
||||
public void setBackground(String texture) {
|
||||
background = new ResourceLocation("customnpcs", "textures/gui/" + texture);
|
||||
}
|
||||
public ResourceLocation getResource(String texture){
|
||||
return new ResourceLocation("customnpcs","textures/gui/" + texture);
|
||||
|
||||
public ResourceLocation getResource(String texture) {
|
||||
return new ResourceLocation("customnpcs", "textures/gui/" + texture);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initGui(){
|
||||
super.initGui();
|
||||
GuiNpcTextField.unfocus();
|
||||
if(subgui != null){
|
||||
subgui.setWorldAndResolution(mc, width, height);
|
||||
subgui.initGui();
|
||||
}
|
||||
guiLeft = (width- xSize)/2;
|
||||
public void initGui() {
|
||||
super.initGui();
|
||||
GuiNpcTextField.unfocus();
|
||||
if (subgui != null) {
|
||||
subgui.setWorldAndResolution(mc, width, height);
|
||||
subgui.initGui();
|
||||
}
|
||||
guiLeft = (width - xSize) / 2;
|
||||
guiTop = (height - ySize) / 2;
|
||||
buttonList.clear();
|
||||
labels.clear();
|
||||
@@ -88,329 +90,352 @@ public abstract class GuiNPCInterface extends GuiScreen
|
||||
scrollWindows.clear();
|
||||
Keyboard.enableRepeatEvents(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateScreen(){
|
||||
if(subgui != null)
|
||||
subgui.updateScreen();
|
||||
else{
|
||||
for(GuiNpcTextField tf : textfields.values()){
|
||||
if(tf.enabled)
|
||||
tf.updateCursorCounter();
|
||||
}
|
||||
super.updateScreen();
|
||||
}
|
||||
public void updateScreen() {
|
||||
if (subgui != null)
|
||||
subgui.updateScreen();
|
||||
else {
|
||||
for (GuiNpcTextField tf : textfields.values()) {
|
||||
if (tf.enabled)
|
||||
tf.updateCursorCounter();
|
||||
}
|
||||
super.updateScreen();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void addExtra(GuiHoverText gui) {
|
||||
gui.setWorldAndResolution(mc, 350, 250);
|
||||
extra.put(gui.id, gui);
|
||||
}
|
||||
public void addExtra(GuiHoverText gui) {
|
||||
gui.setWorldAndResolution(mc, 350, 250);
|
||||
extra.put(gui.id, gui);
|
||||
}
|
||||
|
||||
public void addScrollableGui(int id, GuiScrollWindow gui){
|
||||
public void addScrollableGui(int id, GuiScrollWindow gui) {
|
||||
gui.setWorldAndResolution(mc, width, height);
|
||||
gui.initGui();
|
||||
scrollWindows.put(id, gui);
|
||||
}
|
||||
|
||||
public void mouseClicked(int i, int j, int k)
|
||||
{
|
||||
if(subgui != null)
|
||||
subgui.mouseClicked(i,j,k);
|
||||
else{
|
||||
for(GuiNpcTextField tf : new ArrayList<GuiNpcTextField>(textfields.values()))
|
||||
if(tf.enabled)
|
||||
tf.mouseClicked(i, j, k);
|
||||
public void mouseClicked(int i, int j, int k) {
|
||||
if (subgui != null)
|
||||
subgui.mouseClicked(i, j, k);
|
||||
else {
|
||||
for (GuiNpcTextField tf : new ArrayList<GuiNpcTextField>(textfields.values()))
|
||||
if (tf.enabled)
|
||||
tf.mouseClicked(i, j, k);
|
||||
|
||||
for(GuiScrollWindow guiScrollableComponent : scrollWindows.values()) {
|
||||
if(guiScrollableComponent.isMouseOver(i, j))
|
||||
for (GuiScrollWindow guiScrollableComponent : scrollWindows.values()) {
|
||||
if (guiScrollableComponent.isMouseOver(i, j))
|
||||
guiScrollableComponent.mouseClicked(i, j, k);
|
||||
}
|
||||
|
||||
if (k == 0){
|
||||
for(GuiCustomScroll scroll : new ArrayList<GuiCustomScroll>(scrolls.values())){
|
||||
scroll.mouseClicked(i, j, k);
|
||||
}
|
||||
}
|
||||
mouseEvent(i,j,k);
|
||||
super.mouseClicked(i, j, k);
|
||||
}
|
||||
if (k == 0) {
|
||||
for (GuiCustomScroll scroll : new ArrayList<GuiCustomScroll>(scrolls.values())) {
|
||||
scroll.mouseClicked(i, j, k);
|
||||
}
|
||||
}
|
||||
mouseEvent(i, j, k);
|
||||
super.mouseClicked(i, j, k);
|
||||
}
|
||||
}
|
||||
|
||||
public void mouseEvent(int i, int j, int k){};
|
||||
public void mouseEvent(int i, int j, int k){}
|
||||
|
||||
@Override
|
||||
protected void actionPerformed(GuiButton guibutton) {
|
||||
if(subgui != null)
|
||||
subgui.buttonEvent(guibutton);
|
||||
else{
|
||||
buttonEvent(guibutton);
|
||||
}
|
||||
}
|
||||
public void buttonEvent(GuiButton guibutton){};
|
||||
protected void actionPerformed(GuiButton guibutton) {
|
||||
if (subgui != null)
|
||||
subgui.buttonEvent(guibutton);
|
||||
else {
|
||||
buttonEvent(guibutton);
|
||||
}
|
||||
}
|
||||
|
||||
public void buttonEvent(GuiButton guibutton){}
|
||||
|
||||
@Override
|
||||
public void keyTyped(char c, int i){
|
||||
if(subgui != null)
|
||||
subgui.keyTyped(c,i);
|
||||
for(GuiNpcTextField tf : textfields.values())
|
||||
tf.textboxKeyTyped(c, i);
|
||||
public void keyTyped(char c, int i) {
|
||||
if (subgui != null)
|
||||
subgui.keyTyped(c, i);
|
||||
for (GuiNpcTextField tf : textfields.values())
|
||||
tf.textboxKeyTyped(c, i);
|
||||
|
||||
for(GuiScrollWindow guiScrollableComponent : scrollWindows.values()) {
|
||||
for (GuiScrollWindow guiScrollableComponent : scrollWindows.values()) {
|
||||
guiScrollableComponent.keyTyped(c, i);
|
||||
}
|
||||
|
||||
if (closeOnEsc && (i == 1 || !GuiNpcTextField.isFieldActive() && isInventoryKey(i))){
|
||||
close();
|
||||
//Fixes closing sub with escape closes all of it's parents
|
||||
boolean enoughTimeSinceSubClosed = Minecraft.getSystemTime() - timeClosedSubGui > 50;
|
||||
|
||||
if (closeOnEsc && enoughTimeSinceSubClosed && (i == 1 || !GuiNpcTextField.isFieldActive() && isInventoryKey(i))) {
|
||||
close();
|
||||
}
|
||||
}
|
||||
public void onGuiClosed(){
|
||||
GuiNpcTextField.unfocus();
|
||||
|
||||
public void onGuiClosed() {
|
||||
GuiNpcTextField.unfocus();
|
||||
}
|
||||
public void close(){
|
||||
Keyboard.enableRepeatEvents(false);
|
||||
|
||||
public void close() {
|
||||
Keyboard.enableRepeatEvents(false);
|
||||
displayGuiScreen(null);
|
||||
mc.setIngameFocus();
|
||||
save();
|
||||
}
|
||||
public void addButton(GuiNpcButton button){
|
||||
buttons.put(button.id,button);
|
||||
buttonList.add(button);
|
||||
|
||||
public void addButton(GuiNpcButton button) {
|
||||
buttons.put(button.id, button);
|
||||
buttonList.add(button);
|
||||
}
|
||||
public void addTopButton(GuiMenuTopButton button){
|
||||
topbuttons.put(button.id,button);
|
||||
buttonList.add(button);
|
||||
|
||||
public void addTopButton(GuiMenuTopButton button) {
|
||||
topbuttons.put(button.id, button);
|
||||
buttonList.add(button);
|
||||
}
|
||||
public void addSideButton(GuiMenuSideButton button){
|
||||
sidebuttons.put(button.id,button);
|
||||
buttonList.add(button);
|
||||
|
||||
public void addSideButton(GuiMenuSideButton button) {
|
||||
sidebuttons.put(button.id, button);
|
||||
buttonList.add(button);
|
||||
}
|
||||
public GuiNpcButton getButton(int i) {
|
||||
return buttons.get(i);
|
||||
}
|
||||
public GuiMenuSideButton getSideButton(int i) {
|
||||
return sidebuttons.get(i);
|
||||
}
|
||||
public GuiMenuTopButton getTopButton(int i) {
|
||||
return topbuttons.get(i);
|
||||
}
|
||||
public void addTextField(GuiNpcTextField tf){
|
||||
textfields.put(tf.id,tf);
|
||||
|
||||
public GuiNpcButton getButton(int i) {
|
||||
return buttons.get(i);
|
||||
}
|
||||
public GuiNpcTextField getTextField(int i){
|
||||
return textfields.get(i);
|
||||
|
||||
public GuiMenuSideButton getSideButton(int i) {
|
||||
return sidebuttons.get(i);
|
||||
}
|
||||
|
||||
public GuiMenuTopButton getTopButton(int i) {
|
||||
return topbuttons.get(i);
|
||||
}
|
||||
|
||||
public void addTextField(GuiNpcTextField tf) {
|
||||
textfields.put(tf.id, tf);
|
||||
}
|
||||
|
||||
public GuiNpcTextField getTextField(int i) {
|
||||
return textfields.get(i);
|
||||
}
|
||||
|
||||
public void addLabel(GuiNpcLabel label) {
|
||||
labels.put(label.id, label);
|
||||
}
|
||||
public GuiNpcLabel getLabel(int i){
|
||||
return labels.get(i);
|
||||
labels.put(label.id, label);
|
||||
}
|
||||
|
||||
public GuiNpcLabel getLabel(int i) {
|
||||
return labels.get(i);
|
||||
}
|
||||
|
||||
public GuiScrollWindow getScrollableGui(int i) {
|
||||
return scrollWindows.get(i);
|
||||
}
|
||||
|
||||
public void addSlider(GuiNpcSlider slider){
|
||||
sliders.put(slider.id,slider);
|
||||
buttonList.add(slider);
|
||||
public void addSlider(GuiNpcSlider slider) {
|
||||
sliders.put(slider.id, slider);
|
||||
buttonList.add(slider);
|
||||
}
|
||||
public GuiNpcSlider getSlider(int i) {
|
||||
return sliders.get(i);
|
||||
}
|
||||
public void addScroll(GuiCustomScroll scroll) {
|
||||
|
||||
public GuiNpcSlider getSlider(int i) {
|
||||
return sliders.get(i);
|
||||
}
|
||||
|
||||
public void addScroll(GuiCustomScroll scroll) {
|
||||
scroll.setWorldAndResolution(mc, 350, 250);
|
||||
scrolls.put(scroll.id, scroll);
|
||||
}
|
||||
public GuiCustomScroll getScroll(int id){
|
||||
return scrolls.get(id);
|
||||
}
|
||||
}
|
||||
|
||||
public GuiCustomScroll getScroll(int id) {
|
||||
return scrolls.get(id);
|
||||
}
|
||||
|
||||
public abstract void save();
|
||||
|
||||
@Override
|
||||
public void drawScreen(int i, int j, float f){
|
||||
mouseX = i;
|
||||
mouseY = j;
|
||||
if(drawDefaultBackground && subgui == null)
|
||||
drawDefaultBackground();
|
||||
public void drawScreen(int i, int j, float f) {
|
||||
mouseX = i;
|
||||
mouseY = j;
|
||||
if (drawDefaultBackground && subgui == null)
|
||||
drawDefaultBackground();
|
||||
|
||||
if(background != null && mc.renderEngine != null){
|
||||
drawBackground();
|
||||
}
|
||||
if (background != null && mc.renderEngine != null) {
|
||||
drawBackground();
|
||||
}
|
||||
|
||||
boolean subGui = hasSubGui();
|
||||
drawCenteredString(fontRendererObj, title, width / 2, guiTop + 4, 0xffffff);
|
||||
for(GuiNpcLabel label : labels.values())
|
||||
label.drawLabel(this,fontRendererObj);
|
||||
for(GuiNpcTextField tf : textfields.values()){
|
||||
tf.drawTextBox(i, j);
|
||||
}
|
||||
for(GuiCustomScroll scroll : scrolls.values()){
|
||||
scroll.updateSubGUI(subGui);
|
||||
scroll.drawScreen(i, j, f, !subGui && scroll.isMouseOver(i, j)? Mouse.getDWheel():0);
|
||||
for (GuiNpcLabel label : labels.values())
|
||||
label.drawLabel(this, fontRendererObj);
|
||||
for (GuiNpcTextField tf : textfields.values()) {
|
||||
tf.drawTextBox(i, j);
|
||||
}
|
||||
for(GuiScreen gui : extra.values())
|
||||
gui.drawScreen(i, j, f);
|
||||
for (GuiCustomScroll scroll : scrolls.values()) {
|
||||
scroll.updateSubGUI(subGui);
|
||||
scroll.drawScreen(i, j, f, !subGui && scroll.isMouseOver(i, j) ? Mouse.getDWheel() : 0);
|
||||
}
|
||||
for (GuiScreen gui : extra.values())
|
||||
gui.drawScreen(i, j, f);
|
||||
super.drawScreen(i, j, f);
|
||||
for(GuiCustomScroll scroll : scrolls.values())
|
||||
if(scroll.hoverableText){
|
||||
scroll.drawHover(i, j);
|
||||
}
|
||||
for(GuiNpcButton button : buttons.values()){
|
||||
for (GuiCustomScroll scroll : scrolls.values())
|
||||
if (scroll.hoverableText) {
|
||||
scroll.drawHover(i, j);
|
||||
}
|
||||
for (GuiNpcButton button : buttons.values()) {
|
||||
button.updateSubGUI(subGui);
|
||||
if(!button.hoverableText.isEmpty()){
|
||||
if (!button.hoverableText.isEmpty()) {
|
||||
button.drawHover(i, j, subGui);
|
||||
}
|
||||
}
|
||||
for(GuiScrollWindow guiScrollableComponent : scrollWindows.values()){
|
||||
guiScrollableComponent.drawScreen(i, j, f, !subGui && guiScrollableComponent.isMouseOver(i,j)?Mouse.getDWheel():0);
|
||||
for (GuiScrollWindow guiScrollableComponent : scrollWindows.values()) {
|
||||
guiScrollableComponent.drawScreen(i, j, f, !subGui && guiScrollableComponent.isMouseOver(i, j) ? Mouse.getDWheel() : 0);
|
||||
}
|
||||
|
||||
if(subgui != null){
|
||||
subgui.drawScreen(i,j,f);
|
||||
if (subgui != null) {
|
||||
subgui.drawScreen(i, j, f);
|
||||
}
|
||||
}
|
||||
|
||||
protected void drawBackground() {
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslatef(guiLeft, guiTop, 0);
|
||||
GL11.glScalef(bgScale*bgScaleX, bgScale*bgScaleY, bgScale*bgScaleZ);
|
||||
mc.renderEngine.bindTexture(background);
|
||||
if(xSize > 256){
|
||||
drawTexturedModalRect(0, 0, 0, 0, 250, ySize);
|
||||
drawTexturedModalRect(250, 0, 256 - (xSize - 250), 0, xSize - 250, ySize);
|
||||
}
|
||||
else
|
||||
drawTexturedModalRect(0, 0, 0, 0, xSize, ySize);
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
protected void drawBackground() {
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslatef(guiLeft, guiTop, 0);
|
||||
GL11.glScalef(bgScale * bgScaleX, bgScale * bgScaleY, bgScale * bgScaleZ);
|
||||
mc.renderEngine.bindTexture(background);
|
||||
if (xSize > 256) {
|
||||
drawTexturedModalRect(0, 0, 0, 0, 250, ySize);
|
||||
drawTexturedModalRect(250, 0, 256 - (xSize - 250), 0, xSize - 250, ySize);
|
||||
} else
|
||||
drawTexturedModalRect(0, 0, 0, 0, xSize, ySize);
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
protected void drawTextBlock(String text, int x, int y, int lineWidth) {
|
||||
TextBlockClient block = new TextBlockClient(StatCollector.translateToLocal(text), lineWidth, true, player);
|
||||
for(int line = 0; line < block.lines.size(); line++){
|
||||
for (int line = 0; line < block.lines.size(); line++) {
|
||||
String lineText = block.lines.get(line).getFormattedText();
|
||||
fontRendererObj.drawString(lineText, x, y + (line * fontRendererObj.FONT_HEIGHT), CustomNpcResourceListener.DefaultTextColor);
|
||||
}
|
||||
}
|
||||
|
||||
public FontRenderer getFontRenderer() {
|
||||
return this.fontRendererObj;
|
||||
}
|
||||
public FontRenderer getFontRenderer() {
|
||||
return this.fontRendererObj;
|
||||
}
|
||||
|
||||
public void elementClicked() {
|
||||
if(subgui != null)
|
||||
subgui.elementClicked();
|
||||
}
|
||||
@Override
|
||||
public boolean doesGuiPauseGame(){
|
||||
public void elementClicked() {
|
||||
if (subgui != null)
|
||||
subgui.elementClicked();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean doesGuiPauseGame() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void doubleClicked() {
|
||||
}
|
||||
|
||||
public boolean isInventoryKey(int i){
|
||||
return i == mc.gameSettings.keyBindInventory.getKeyCode(); //inventory key
|
||||
}
|
||||
@Override
|
||||
public void drawDefaultBackground() {
|
||||
super.drawDefaultBackground();
|
||||
}
|
||||
|
||||
public void displayGuiScreen(GuiScreen gui) {
|
||||
mc.displayGuiScreen(gui);
|
||||
}
|
||||
|
||||
public void setSubGui(SubGuiInterface gui){
|
||||
subgui = gui;
|
||||
subgui.setWorldAndResolution(mc, width, height);
|
||||
subgui.parent = this;
|
||||
initGui();
|
||||
public void doubleClicked() {
|
||||
}
|
||||
public void closeSubGui(SubGuiInterface gui) {
|
||||
subgui = null;
|
||||
}
|
||||
public boolean hasSubGui() {
|
||||
return subgui != null;
|
||||
}
|
||||
public SubGuiInterface getSubGui() {
|
||||
if(hasSubGui() && subgui.hasSubGui())
|
||||
return subgui.getSubGui();
|
||||
return subgui;
|
||||
}
|
||||
|
||||
public void drawNpc(int x, int y){
|
||||
public boolean isInventoryKey(int i) {
|
||||
return i == mc.gameSettings.keyBindInventory.getKeyCode(); //inventory key
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawDefaultBackground() {
|
||||
super.drawDefaultBackground();
|
||||
}
|
||||
|
||||
public void displayGuiScreen(GuiScreen gui) {
|
||||
mc.displayGuiScreen(gui);
|
||||
}
|
||||
|
||||
public void setSubGui(SubGuiInterface gui) {
|
||||
subgui = gui;
|
||||
subgui.setWorldAndResolution(mc, width, height);
|
||||
subgui.parent = this;
|
||||
initGui();
|
||||
}
|
||||
|
||||
public void closeSubGui(SubGuiInterface gui) {
|
||||
subgui = null;
|
||||
timeClosedSubGui = Minecraft.getSystemTime();
|
||||
initGui();
|
||||
}
|
||||
|
||||
public boolean hasSubGui() {
|
||||
return subgui != null;
|
||||
}
|
||||
|
||||
public SubGuiInterface getSubGui() {
|
||||
if (hasSubGui() && subgui.hasSubGui())
|
||||
return subgui.getSubGui();
|
||||
return subgui;
|
||||
}
|
||||
|
||||
public void drawNpc(int x, int y) {
|
||||
drawNpc(npc, x, y, 1, 0);
|
||||
}
|
||||
|
||||
public void drawNpc(EntityLivingBase entity, int x, int y, float zoomed, int rotation){
|
||||
public void drawNpc(EntityLivingBase entity, int x, int y, float zoomed, int rotation) {
|
||||
EntityNPCInterface npc = null;
|
||||
if(entity instanceof EntityNPCInterface)
|
||||
if (entity instanceof EntityNPCInterface)
|
||||
npc = (EntityNPCInterface) entity;
|
||||
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
if(npc != null)
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
if (npc != null)
|
||||
npc.isDrawn = true;
|
||||
GL11.glEnable(GL11.GL_COLOR_MATERIAL);
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslatef(guiLeft + x, guiTop + y, 50F);
|
||||
GL11.glEnable(GL11.GL_COLOR_MATERIAL);
|
||||
GL11.glPushMatrix();
|
||||
GL11.glTranslatef(guiLeft + x, guiTop + y, 50F);
|
||||
float scale = 1;
|
||||
if(entity.height > 2.4)
|
||||
scale = 2 / npc.height;
|
||||
if (entity.height > 2.4)
|
||||
scale = 2 / npc.height;
|
||||
|
||||
GL11.glScalef(-30 * scale * zoomed, 30 * scale * zoomed, 30 * scale * zoomed);
|
||||
GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F);
|
||||
GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F);
|
||||
|
||||
float f2 = entity.renderYawOffset;
|
||||
float f3 = entity.rotationYaw;
|
||||
float f4 = entity.rotationPitch;
|
||||
float f7 = entity.rotationYawHead;
|
||||
float f5 = (float) (guiLeft + x) - mouseX;
|
||||
float f2 = entity.renderYawOffset;
|
||||
float f3 = entity.rotationYaw;
|
||||
float f4 = entity.rotationPitch;
|
||||
float f7 = entity.rotationYawHead;
|
||||
float f5 = (float) (guiLeft + x) - mouseX;
|
||||
float f6 = (float) ((guiTop + y) - 50 * scale * zoomed) - mouseY;
|
||||
int orientation = 0;
|
||||
if(npc != null){
|
||||
if (npc != null) {
|
||||
orientation = npc.ai.orientation;
|
||||
npc.ai.orientation = rotation;
|
||||
}
|
||||
|
||||
GL11.glRotatef(135F, 0.0F, 1.0F, 0.0F);
|
||||
RenderHelper.enableStandardItemLighting();
|
||||
GL11.glRotatef(-135F, 0.0F, 1.0F, 0.0F);
|
||||
GL11.glRotatef(-(float) Math.atan(f6 / 40F) * 20F, 1.0F, 0.0F, 0.0F);
|
||||
GL11.glRotatef(135F, 0.0F, 1.0F, 0.0F);
|
||||
RenderHelper.enableStandardItemLighting();
|
||||
GL11.glRotatef(-135F, 0.0F, 1.0F, 0.0F);
|
||||
GL11.glRotatef(-(float) Math.atan(f6 / 40F) * 20F, 1.0F, 0.0F, 0.0F);
|
||||
entity.renderYawOffset = rotation;
|
||||
entity.rotationYaw = (float)Math.atan(f5 / 80F) * 40F + rotation;
|
||||
entity.rotationYaw = (float) Math.atan(f5 / 80F) * 40F + rotation;
|
||||
entity.rotationPitch = -(float) Math.atan(f6 / 40F) * 20F;
|
||||
entity.rotationYawHead = entity.rotationYaw;
|
||||
GL11.glTranslatef(0.0F, entity.yOffset, 0.0F);
|
||||
RenderManager.instance.playerViewY = 180F;
|
||||
RenderManager.instance.renderEntityWithPosYaw(entity, 0, 0, 0, 0, 1);
|
||||
GL11.glTranslatef(0.0F, entity.yOffset, 0.0F);
|
||||
RenderManager.instance.playerViewY = 180F;
|
||||
RenderManager.instance.renderEntityWithPosYaw(entity, 0, 0, 0, 0, 1);
|
||||
entity.prevRenderYawOffset = entity.renderYawOffset = f2;
|
||||
entity.prevRotationYaw = entity.rotationYaw = f3;
|
||||
entity.prevRotationPitch = entity.rotationPitch = f4;
|
||||
entity.prevRotationYawHead = entity.rotationYawHead = f7;
|
||||
if(npc != null){
|
||||
if (npc != null) {
|
||||
npc.ai.orientation = orientation;
|
||||
}
|
||||
GL11.glPopMatrix();
|
||||
RenderHelper.disableStandardItemLighting();
|
||||
GL11.glDisable(GL12.GL_RESCALE_NORMAL);
|
||||
if(npc != null)
|
||||
GL11.glPopMatrix();
|
||||
RenderHelper.disableStandardItemLighting();
|
||||
GL11.glDisable(GL12.GL_RESCALE_NORMAL);
|
||||
if (npc != null)
|
||||
npc.isDrawn = false;
|
||||
OpenGlHelper.setActiveTexture(OpenGlHelper.lightmapTexUnit);
|
||||
GL11.glDisable(GL11.GL_TEXTURE_2D);
|
||||
OpenGlHelper.setActiveTexture(OpenGlHelper.defaultTexUnit);
|
||||
}
|
||||
OpenGlHelper.setActiveTexture(OpenGlHelper.lightmapTexUnit);
|
||||
GL11.glDisable(GL11.GL_TEXTURE_2D);
|
||||
OpenGlHelper.setActiveTexture(OpenGlHelper.defaultTexUnit);
|
||||
}
|
||||
|
||||
public void openLink(String link){
|
||||
try{
|
||||
public void openLink(String link) {
|
||||
try {
|
||||
Class oclass = Class.forName("java.awt.Desktop");
|
||||
Object object = oclass.getMethod("getDesktop", new Class[0]).invoke((Object)null, new Object[0]);
|
||||
oclass.getMethod("browse", new Class[] {URI.class}).invoke(object, new Object[] {new URI(link)});
|
||||
}
|
||||
catch (Throwable throwable)
|
||||
{
|
||||
Object object = oclass.getMethod("getDesktop", new Class[0]).invoke((Object) null, new Object[0]);
|
||||
oclass.getMethod("browse", new Class[]{URI.class}).invoke(object, new Object[]{new URI(link)});
|
||||
} catch (Throwable throwable) {
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -14,141 +14,129 @@ import noppes.npcs.constants.EnumPacketServer;
|
||||
import noppes.npcs.entity.EntityNPCInterface;
|
||||
import org.lwjgl.input.Keyboard;
|
||||
|
||||
public class GuiNpcMenu implements GuiYesNoCallback{
|
||||
|
||||
private GuiScreen parent;
|
||||
private GuiMenuTopButton[] topButtons;
|
||||
public class GuiNpcMenu implements GuiYesNoCallback {
|
||||
|
||||
private int activeMenu;
|
||||
private EntityNPCInterface npc;
|
||||
public boolean saveNPC = true;
|
||||
private GuiScreen parent;
|
||||
public GuiMenuTopButton[] topButtons;
|
||||
|
||||
public GuiNpcMenu(GuiScreen parent, int activeMenu, EntityNPCInterface npc) {
|
||||
this.parent = parent;
|
||||
this.activeMenu = activeMenu;
|
||||
this.npc = npc;
|
||||
}
|
||||
private int activeMenu;
|
||||
private EntityNPCInterface npc;
|
||||
public boolean saveNPC = true;
|
||||
|
||||
public void initGui(int guiLeft, int guiTop, int width)
|
||||
{
|
||||
public GuiNpcMenu(GuiScreen parent, int activeMenu, EntityNPCInterface npc) {
|
||||
this.parent = parent;
|
||||
this.activeMenu = activeMenu;
|
||||
this.npc = npc;
|
||||
}
|
||||
|
||||
public void initGui(int guiLeft, int guiTop, int width) {
|
||||
Keyboard.enableRepeatEvents(true);
|
||||
|
||||
GuiMenuTopButton close = new GuiMenuTopButton(0,guiLeft + width - 22, guiTop - 17, "X");
|
||||
if (npc != null) {
|
||||
GuiMenuTopButton display = new GuiMenuTopButton(1, guiLeft + 4, guiTop - 17, "menu.display");
|
||||
GuiMenuTopButton stats = new GuiMenuTopButton(2, display.xPosition + display.getWidth(), guiTop - 17, "menu.stats");
|
||||
GuiMenuTopButton ai = new GuiMenuTopButton(6, stats.xPosition + stats.getWidth(), guiTop - 17, "menu.ai");
|
||||
GuiMenuTopButton inv = new GuiMenuTopButton(3, ai.xPosition + ai.getWidth(), guiTop - 17, "menu.inventory");
|
||||
GuiMenuTopButton advanced = new GuiMenuTopButton(4, inv.xPosition + inv.getWidth(), guiTop - 17, "menu.advanced");
|
||||
GuiMenuTopButton global = new GuiMenuTopButton(5, advanced.xPosition + advanced.getWidth(), guiTop - 17, "menu.global");
|
||||
GuiMenuTopButton delete = new GuiMenuTopButton(66,guiLeft + width - 72, guiTop - 17,"selectWorld.deleteButton");
|
||||
delete.xPosition = close.xPosition - delete.getWidth();
|
||||
topButtons = new GuiMenuTopButton[]{display,stats,ai,inv,advanced,global,close,delete};
|
||||
} else {
|
||||
topButtons = new GuiMenuTopButton[]{close};
|
||||
}
|
||||
|
||||
for(GuiMenuTopButton button : topButtons)
|
||||
button.active = button.id == activeMenu;
|
||||
}
|
||||
|
||||
private void topButtonPressed(GuiMenuTopButton button) {
|
||||
if(button.displayString.equals(activeMenu))
|
||||
return;
|
||||
Minecraft mc = Minecraft.getMinecraft();
|
||||
NoppesUtil.clickSound();
|
||||
GuiMenuTopButton close = new GuiMenuTopButton(0, guiLeft + width - 22, guiTop - 17, "X");
|
||||
if (npc != null) {
|
||||
GuiMenuTopButton display = new GuiMenuTopButton(1, guiLeft + 4, guiTop - 17, "menu.display");
|
||||
GuiMenuTopButton stats = new GuiMenuTopButton(2, display.xPosition + display.getWidth(), guiTop - 17, "menu.stats");
|
||||
GuiMenuTopButton ai = new GuiMenuTopButton(6, stats.xPosition + stats.getWidth(), guiTop - 17, "menu.ai");
|
||||
GuiMenuTopButton inv = new GuiMenuTopButton(3, ai.xPosition + ai.getWidth(), guiTop - 17, "menu.inventory");
|
||||
GuiMenuTopButton advanced = new GuiMenuTopButton(4, inv.xPosition + inv.getWidth(), guiTop - 17, "menu.advanced");
|
||||
GuiMenuTopButton global = new GuiMenuTopButton(5, advanced.xPosition + advanced.getWidth(), guiTop - 17, "menu.global");
|
||||
GuiMenuTopButton delete = new GuiMenuTopButton(66, guiLeft + width - 72, guiTop - 17, "selectWorld.deleteButton");
|
||||
delete.xPosition = close.xPosition - delete.getWidth();
|
||||
topButtons = new GuiMenuTopButton[]{display, stats, ai, inv, advanced, global, close, delete};
|
||||
} else {
|
||||
topButtons = new GuiMenuTopButton[]{close};
|
||||
}
|
||||
|
||||
int id = button.id;
|
||||
if(id == 0){
|
||||
close();
|
||||
return;
|
||||
}
|
||||
else if(id == 66){
|
||||
for (GuiMenuTopButton button : topButtons)
|
||||
button.active = button.id == activeMenu;
|
||||
}
|
||||
|
||||
private void topButtonPressed(GuiMenuTopButton button) {
|
||||
if (button.displayString.equals(activeMenu))
|
||||
return;
|
||||
Minecraft mc = Minecraft.getMinecraft();
|
||||
NoppesUtil.clickSound();
|
||||
|
||||
int id = button.id;
|
||||
if (id == 0) {
|
||||
close();
|
||||
return;
|
||||
} else if (id == 66) {
|
||||
GuiYesNo guiyesno = new GuiYesNo(this, "Confirm", StatCollector.translateToLocal("gui.delete"), 0);
|
||||
mc.displayGuiScreen(guiyesno);
|
||||
return;
|
||||
}
|
||||
save();
|
||||
if(id == 1){
|
||||
CustomNpcs.proxy.openGui(npc, EnumGuiType.MainMenuDisplay);
|
||||
}
|
||||
else if(id == 2){
|
||||
CustomNpcs.proxy.openGui(npc, EnumGuiType.MainMenuStats);
|
||||
}
|
||||
else if(id == 3){
|
||||
NoppesUtil.requestOpenGUI(EnumGuiType.MainMenuInv);
|
||||
}
|
||||
else if(id == 4){
|
||||
CustomNpcs.proxy.openGui(npc, EnumGuiType.MainMenuAdvanced);
|
||||
}
|
||||
else if(id == 5){
|
||||
CustomNpcs.proxy.openGui(npc, EnumGuiType.MainMenuGlobal);
|
||||
}
|
||||
else if(id == 6){
|
||||
CustomNpcs.proxy.openGui(npc, EnumGuiType.MainMenuAI);
|
||||
}
|
||||
activeMenu = id;
|
||||
}
|
||||
}
|
||||
save();
|
||||
if (id == 1) {
|
||||
CustomNpcs.proxy.openGui(npc, EnumGuiType.MainMenuDisplay);
|
||||
} else if (id == 2) {
|
||||
CustomNpcs.proxy.openGui(npc, EnumGuiType.MainMenuStats);
|
||||
} else if (id == 3) {
|
||||
NoppesUtil.requestOpenGUI(EnumGuiType.MainMenuInv);
|
||||
} else if (id == 4) {
|
||||
CustomNpcs.proxy.openGui(npc, EnumGuiType.MainMenuAdvanced);
|
||||
} else if (id == 5) {
|
||||
CustomNpcs.proxy.openGui(npc, EnumGuiType.MainMenuGlobal);
|
||||
} else if (id == 6) {
|
||||
CustomNpcs.proxy.openGui(npc, EnumGuiType.MainMenuAI);
|
||||
}
|
||||
activeMenu = id;
|
||||
}
|
||||
|
||||
private void save() {
|
||||
GuiNpcTextField.unfocus();
|
||||
|
||||
if(parent instanceof GuiContainerNPCInterface2)
|
||||
((GuiContainerNPCInterface2)parent).save();
|
||||
|
||||
if(parent instanceof GuiNPCInterface2)
|
||||
((GuiNPCInterface2)parent).save();
|
||||
}
|
||||
private void save() {
|
||||
GuiNpcTextField.unfocus();
|
||||
|
||||
private void close() {
|
||||
Keyboard.enableRepeatEvents(false);
|
||||
if (parent instanceof GuiContainerNPCInterface2)
|
||||
((GuiContainerNPCInterface2) parent).save();
|
||||
|
||||
if(parent instanceof GuiContainerNPCInterface2)
|
||||
((GuiContainerNPCInterface2)parent).close();
|
||||
|
||||
if(parent instanceof GuiNPCInterface2)
|
||||
((GuiNPCInterface2)parent).close();
|
||||
if(npc != null){
|
||||
npc.reset();
|
||||
if(saveNPC)
|
||||
Client.sendData(EnumPacketServer.NpcMenuClose);
|
||||
}
|
||||
}
|
||||
if (parent instanceof GuiNPCInterface2)
|
||||
((GuiNPCInterface2) parent).save();
|
||||
}
|
||||
|
||||
public void mouseClicked(int i, int j, int k) {
|
||||
|
||||
if (k == 0)
|
||||
{
|
||||
Minecraft mc = Minecraft.getMinecraft();
|
||||
for (GuiMenuTopButton button : topButtons)
|
||||
{
|
||||
if (button.mousePressed(mc, i, j))
|
||||
{
|
||||
private void close() {
|
||||
Keyboard.enableRepeatEvents(false);
|
||||
|
||||
if (parent instanceof GuiContainerNPCInterface2)
|
||||
((GuiContainerNPCInterface2) parent).close();
|
||||
|
||||
if (parent instanceof GuiNPCInterface2)
|
||||
((GuiNPCInterface2) parent).close();
|
||||
if (npc != null) {
|
||||
npc.reset();
|
||||
if (saveNPC)
|
||||
Client.sendData(EnumPacketServer.NpcMenuClose);
|
||||
}
|
||||
}
|
||||
|
||||
public void mouseClicked(int i, int j, int k) {
|
||||
|
||||
if (k == 0) {
|
||||
Minecraft mc = Minecraft.getMinecraft();
|
||||
for (GuiMenuTopButton button : topButtons) {
|
||||
if (button.mousePressed(mc, i, j)) {
|
||||
topButtonPressed(button);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void drawElements(FontRenderer fontRenderer, int i, int j,
|
||||
Minecraft mc, float f) {
|
||||
for(GuiMenuTopButton button: topButtons)
|
||||
button.drawButton(mc, i, j);
|
||||
|
||||
}
|
||||
public void drawElements(FontRenderer fontRenderer, int i, int j, Minecraft mc, float f) {
|
||||
for (GuiMenuTopButton button : topButtons)
|
||||
button.drawButton(mc, i, j);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public void confirmClicked(boolean flag, int i){
|
||||
Minecraft mc = Minecraft.getMinecraft();
|
||||
if(flag){
|
||||
Client.sendData(EnumPacketServer.Delete);
|
||||
mc.displayGuiScreen(null);
|
||||
mc.setIngameFocus();
|
||||
}
|
||||
else{
|
||||
NoppesUtil.openGUI(mc.thePlayer, parent);
|
||||
}
|
||||
public void confirmClicked(boolean flag, int i) {
|
||||
Minecraft mc = Minecraft.getMinecraft();
|
||||
if (flag) {
|
||||
Client.sendData(EnumPacketServer.Delete);
|
||||
mc.displayGuiScreen(null);
|
||||
mc.setIngameFocus();
|
||||
} else {
|
||||
NoppesUtil.openGUI(mc.thePlayer, parent);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,199 +5,200 @@ import net.minecraft.client.gui.FontRenderer;
|
||||
import net.minecraft.client.gui.GuiScreen;
|
||||
import net.minecraft.client.gui.GuiTextField;
|
||||
|
||||
public class GuiNpcTextField extends GuiTextField{
|
||||
public boolean enabled = true;
|
||||
public boolean inMenu = true;
|
||||
public boolean integersOnly = false;
|
||||
public boolean doublesOnly = false;
|
||||
public boolean floatsOnly = false;
|
||||
private ITextfieldListener listener;
|
||||
public class GuiNpcTextField extends GuiTextField {
|
||||
public boolean enabled = true;
|
||||
public boolean inMenu = true;
|
||||
public boolean integersOnly = false;
|
||||
public boolean doublesOnly = false;
|
||||
public boolean floatsOnly = false;
|
||||
private ITextfieldListener listener;
|
||||
public int id;
|
||||
public int min = 0,max = Integer.MAX_VALUE,def = 0;
|
||||
public double minDouble = 0, maxDouble = Double.MAX_VALUE, defDouble = 0;
|
||||
public float minFloat = 0, maxFloat = Float.MAX_VALUE, defFloat = 0;
|
||||
public int min = 0, max = Integer.MAX_VALUE, def = 0;
|
||||
public double minDouble = 0, maxDouble = Double.MAX_VALUE, defDouble = 0;
|
||||
public float minFloat = 0, maxFloat = Float.MAX_VALUE, defFloat = 0;
|
||||
protected static GuiNpcTextField activeTextfield = null;
|
||||
public boolean canEdit = true;
|
||||
|
||||
private final int[] allowedSpecialChars = {14,211,203,205};
|
||||
|
||||
public GuiNpcTextField(int id,GuiScreen parent, FontRenderer fontRenderer,
|
||||
int i, int j, int k, int l, String s) {
|
||||
super(fontRenderer, i, j, k, l);
|
||||
setMaxStringLength(500);
|
||||
this.setText(s);
|
||||
this.id = id;
|
||||
if(parent instanceof ITextfieldListener)
|
||||
listener = (ITextfieldListener) parent;
|
||||
}
|
||||
|
||||
public static boolean isFieldActive(){
|
||||
return activeTextfield != null;
|
||||
}
|
||||
|
||||
public GuiNpcTextField(int id,GuiScreen parent,
|
||||
int i, int j, int k, int l, String s) {
|
||||
this(id, parent, Minecraft.getMinecraft().fontRenderer, i, j, k, l, s);
|
||||
}
|
||||
public boolean canEdit = true;
|
||||
|
||||
protected boolean charAllowed(char c, int i){
|
||||
if(!integersOnly || Character.isDigit(c))
|
||||
return true;
|
||||
private final int[] allowedSpecialChars = {14, 211, 203, 205};
|
||||
|
||||
if(integersOnly && getText().isEmpty() && c == '-')
|
||||
return true;
|
||||
|
||||
for(int j : allowedSpecialChars)
|
||||
if(j == i)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean textboxKeyTyped(char c, int i)
|
||||
{
|
||||
if(!charAllowed(c,i) || !canEdit)
|
||||
return false;
|
||||
return super.textboxKeyTyped(c, i);
|
||||
}
|
||||
|
||||
public boolean isEmpty(){
|
||||
return getText().trim().length() == 0;
|
||||
public GuiNpcTextField(int id, GuiScreen parent, FontRenderer fontRenderer, int i, int j, int k, int l, String s) {
|
||||
super(fontRenderer, i, j, k, l);
|
||||
setMaxStringLength(500);
|
||||
this.setText(s);
|
||||
setCursorPositionZero();
|
||||
this.id = id;
|
||||
if (parent instanceof ITextfieldListener)
|
||||
listener = (ITextfieldListener) parent;
|
||||
}
|
||||
|
||||
public int getInteger(){
|
||||
return Integer.parseInt(getText());
|
||||
public static boolean isFieldActive() {
|
||||
return activeTextfield != null;
|
||||
}
|
||||
|
||||
public boolean isInteger(){
|
||||
try{
|
||||
Integer.parseInt(getText());
|
||||
return true;
|
||||
}catch(NumberFormatException e){
|
||||
return false;
|
||||
}
|
||||
public GuiNpcTextField(int id, GuiScreen parent, int i, int j, int k, int l, String s) {
|
||||
this(id, parent, Minecraft.getMinecraft().fontRenderer, i, j, k, l, s);
|
||||
}
|
||||
|
||||
public double getDouble(){
|
||||
return Double.parseDouble(getText());
|
||||
}
|
||||
protected boolean charAllowed(char c, int i) {
|
||||
if (!integersOnly || Character.isDigit(c))
|
||||
return true;
|
||||
|
||||
public boolean isDouble() {
|
||||
try{
|
||||
Double.parseDouble(getText());
|
||||
return true;
|
||||
}catch(NumberFormatException e){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (integersOnly && getText().isEmpty() && c == '-')
|
||||
return true;
|
||||
|
||||
public float getFloat(){
|
||||
return Float.parseFloat(getText());
|
||||
}
|
||||
for (int j : allowedSpecialChars)
|
||||
if (j == i)
|
||||
return true;
|
||||
|
||||
public boolean isFloat() {
|
||||
try{
|
||||
Float.parseFloat(getText());
|
||||
return true;
|
||||
}catch(NumberFormatException e){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseClicked(int i, int j, int k){
|
||||
if(!canEdit)
|
||||
return;
|
||||
boolean wasFocused = this.isFocused();
|
||||
super.mouseClicked(i, j, k);
|
||||
if(wasFocused != isFocused()){
|
||||
if(wasFocused){
|
||||
unFocused();
|
||||
}
|
||||
}
|
||||
if(isFocused())
|
||||
activeTextfield = this;
|
||||
return false;
|
||||
}
|
||||
|
||||
public void unFocused(){
|
||||
if(integersOnly && !doublesOnly && !floatsOnly){
|
||||
if(isEmpty() || !isInteger())
|
||||
setText(def+"");
|
||||
else if(getInteger() < min)
|
||||
setText(min+"");
|
||||
else if(getInteger() > max)
|
||||
setText(max+"");
|
||||
}
|
||||
else if(doublesOnly && !floatsOnly){
|
||||
if (isEmpty() || !isDouble())
|
||||
setText(defDouble + "");
|
||||
else if (getDouble() < minDouble)
|
||||
setText(minDouble + "");
|
||||
else if (getDouble() > maxDouble)
|
||||
setText(maxDouble + "");
|
||||
}
|
||||
else if(floatsOnly){
|
||||
if(isEmpty() || !isFloat())
|
||||
setText(defFloat +"");
|
||||
else if(getFloat() < minFloat)
|
||||
setText(minFloat +"");
|
||||
else if(getFloat() > maxFloat)
|
||||
setText(maxFloat +"");
|
||||
}
|
||||
|
||||
if(listener != null)
|
||||
listener.unFocused(this);
|
||||
|
||||
if(this == activeTextfield)
|
||||
activeTextfield = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawTextBox()
|
||||
{
|
||||
if(enabled)
|
||||
super.drawTextBox();
|
||||
@Override
|
||||
public boolean textboxKeyTyped(char c, int i) {
|
||||
if (!charAllowed(c, i) || !canEdit)
|
||||
return false;
|
||||
return super.textboxKeyTyped(c, i);
|
||||
}
|
||||
public void setMinMaxDefault(int min, int max, int def) {
|
||||
this.min = min;
|
||||
this.max = max;
|
||||
this.def = def;
|
||||
}
|
||||
public void setMinMaxDefaultDouble(double min, double max, double def) {
|
||||
minDouble = min;
|
||||
maxDouble = max;
|
||||
defDouble = def;
|
||||
}
|
||||
public void setMinMaxDefaultFloat(float min, float max, float def) {
|
||||
minFloat = min;
|
||||
maxFloat = max;
|
||||
defFloat = def;
|
||||
}
|
||||
public static void unfocus() {
|
||||
GuiNpcTextField prev = activeTextfield;
|
||||
activeTextfield = null;
|
||||
if(prev != null){
|
||||
prev.unFocused();
|
||||
}
|
||||
}
|
||||
|
||||
public void drawTextBox(int mousX, int mousY) {
|
||||
drawTextBox();
|
||||
}
|
||||
public boolean isEmpty() {
|
||||
return getText().trim().length() == 0;
|
||||
}
|
||||
|
||||
public GuiNpcTextField setIntegersOnly() {
|
||||
integersOnly = true;
|
||||
return this;
|
||||
}
|
||||
public int getInteger() {
|
||||
return Integer.parseInt(getText());
|
||||
}
|
||||
|
||||
public boolean isInteger() {
|
||||
try {
|
||||
Integer.parseInt(getText());
|
||||
return true;
|
||||
} catch (NumberFormatException e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public double getDouble() {
|
||||
return Double.parseDouble(getText());
|
||||
}
|
||||
|
||||
public boolean isDouble() {
|
||||
try {
|
||||
Double.parseDouble(getText());
|
||||
return true;
|
||||
} catch (NumberFormatException e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public float getFloat() {
|
||||
return Float.parseFloat(getText());
|
||||
}
|
||||
|
||||
public boolean isFloat() {
|
||||
try {
|
||||
Float.parseFloat(getText());
|
||||
return true;
|
||||
} catch (NumberFormatException e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseClicked(int i, int j, int k) {
|
||||
if (!canEdit)
|
||||
return;
|
||||
boolean wasFocused = this.isFocused();
|
||||
super.mouseClicked(i, j, k);
|
||||
if (wasFocused != isFocused()) {
|
||||
if (wasFocused) {
|
||||
unFocused();
|
||||
}
|
||||
}
|
||||
if (isFocused())
|
||||
activeTextfield = this;
|
||||
}
|
||||
|
||||
public void unFocused() {
|
||||
if (integersOnly && !doublesOnly && !floatsOnly) {
|
||||
if (isEmpty() || !isInteger())
|
||||
setText(def + "");
|
||||
else if (getInteger() < min)
|
||||
setText(min + "");
|
||||
else if (getInteger() > max)
|
||||
setText(max + "");
|
||||
} else if (doublesOnly && !floatsOnly) {
|
||||
if (isEmpty() || !isDouble())
|
||||
setText(defDouble + "");
|
||||
else if (getDouble() < minDouble)
|
||||
setText(minDouble + "");
|
||||
else if (getDouble() > maxDouble)
|
||||
setText(maxDouble + "");
|
||||
} else if (floatsOnly) {
|
||||
if (isEmpty() || !isFloat())
|
||||
setText(defFloat + "");
|
||||
else if (getFloat() < minFloat)
|
||||
setText(minFloat + "");
|
||||
else if (getFloat() > maxFloat)
|
||||
setText(maxFloat + "");
|
||||
}
|
||||
setCursorPositionZero();
|
||||
if (listener != null)
|
||||
listener.unFocused(this);
|
||||
|
||||
if (this == activeTextfield)
|
||||
activeTextfield = null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawTextBox() {
|
||||
if (enabled)
|
||||
super.drawTextBox();
|
||||
}
|
||||
|
||||
public void setMinMaxDefault(int min, int max, int def) {
|
||||
this.min = min;
|
||||
this.max = max;
|
||||
this.def = def;
|
||||
}
|
||||
|
||||
public void setMinMaxDefaultDouble(double min, double max, double def) {
|
||||
minDouble = min;
|
||||
maxDouble = max;
|
||||
defDouble = def;
|
||||
}
|
||||
|
||||
public void setMinMaxDefaultFloat(float min, float max, float def) {
|
||||
minFloat = min;
|
||||
maxFloat = max;
|
||||
defFloat = def;
|
||||
}
|
||||
|
||||
public static void unfocus() {
|
||||
GuiNpcTextField prev = activeTextfield;
|
||||
activeTextfield = null;
|
||||
if (prev != null) {
|
||||
prev.unFocused();
|
||||
}
|
||||
}
|
||||
|
||||
public void drawTextBox(int mousX, int mousY) {
|
||||
drawTextBox();
|
||||
}
|
||||
|
||||
public GuiNpcTextField setIntegersOnly() {
|
||||
integersOnly = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
public GuiNpcTextField setDoublesOnly() {
|
||||
doublesOnly = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
public GuiNpcTextField setFloatsOnly() {
|
||||
floatsOnly = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
public GuiNpcTextField setDoublesOnly() {
|
||||
doublesOnly = true;
|
||||
return this;
|
||||
}
|
||||
public GuiNpcTextField setFloatsOnly() {
|
||||
floatsOnly = true;
|
||||
return this;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -9,21 +9,21 @@ import noppes.npcs.entity.EntityNPCInterface;
|
||||
import org.lwjgl.input.Keyboard;
|
||||
import org.lwjgl.input.Mouse;
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class GuiScrollWindow extends GuiScreen implements ITextfieldListener, ICustomScrollListener, GuiYesNoCallback
|
||||
{
|
||||
public static final ResourceLocation resource = new ResourceLocation("customnpcs","textures/gui/misc.png");
|
||||
public class GuiScrollWindow extends GuiScreen implements ITextfieldListener, ICustomScrollListener, GuiYesNoCallback {
|
||||
public static final ResourceLocation resource = new ResourceLocation("customnpcs", "textures/gui/misc.png");
|
||||
|
||||
protected GuiNPCInterface parent;
|
||||
public boolean drawDefaultBackground = true;
|
||||
public EntityNPCInterface npc;
|
||||
protected HashMap<Integer,GuiNpcButton> buttons = new HashMap<Integer,GuiNpcButton>();
|
||||
protected HashMap<Integer,GuiNpcTextField> textfields = new HashMap<Integer,GuiNpcTextField>();
|
||||
protected HashMap<Integer,GuiNpcLabel> labels = new HashMap<Integer,GuiNpcLabel>();
|
||||
protected HashMap<Integer,GuiCustomScroll> scrolls = new HashMap<Integer,GuiCustomScroll>();
|
||||
protected HashMap<Integer,GuiNpcSlider> sliders = new HashMap<Integer,GuiNpcSlider>();
|
||||
public boolean drawDefaultBackground = true;
|
||||
public EntityNPCInterface npc;
|
||||
protected HashMap<Integer, GuiNpcButton> buttons = new HashMap<Integer, GuiNpcButton>();
|
||||
protected HashMap<Integer, GuiNpcTextField> textfields = new HashMap<Integer, GuiNpcTextField>();
|
||||
protected HashMap<Integer, GuiNpcLabel> labels = new HashMap<Integer, GuiNpcLabel>();
|
||||
protected HashMap<Integer, GuiCustomScroll> scrolls = new HashMap<Integer, GuiCustomScroll>();
|
||||
protected HashMap<Integer, GuiNpcSlider> sliders = new HashMap<Integer, GuiNpcSlider>();
|
||||
|
||||
protected ScaledResolution scaledResolution;
|
||||
|
||||
@@ -38,18 +38,20 @@ public class GuiScrollWindow extends GuiScreen implements ITextfieldListener, IC
|
||||
public int maxScrollY = 0;
|
||||
public float scrollY = 0;
|
||||
public float nextScrollY = 0;
|
||||
public float scrollSpeed = 7;
|
||||
public int mouseScroll;
|
||||
boolean isScrolling;
|
||||
|
||||
/**
|
||||
* Scrollable GUI component :P?
|
||||
* @param posX the X Position of the gui element on the screen
|
||||
* @param posY the Y Position of the GUI element on the screen
|
||||
* @param clipWidth width of the element
|
||||
*
|
||||
* @param posX the X Position of the gui element on the screen
|
||||
* @param posY the Y Position of the GUI element on the screen
|
||||
* @param clipWidth width of the element
|
||||
* @param clipHeight height of the element
|
||||
* @param maxScroll extra Y area displayed through the scrollbar.
|
||||
* @param maxScroll extra Y area displayed through the scrollbar.
|
||||
*/
|
||||
public GuiScrollWindow(GuiNPCInterface parent, int posX, int posY, int clipWidth, int clipHeight, int maxScroll){
|
||||
public GuiScrollWindow(GuiNPCInterface parent, int posX, int posY, int clipWidth, int clipHeight, int maxScroll) {
|
||||
this.parent = parent;
|
||||
this.xPos = posX;
|
||||
this.yPos = posY;
|
||||
@@ -60,19 +62,19 @@ public class GuiScrollWindow extends GuiScreen implements ITextfieldListener, IC
|
||||
|
||||
|
||||
@Override
|
||||
public void initGui(){
|
||||
super.initGui();
|
||||
public void initGui() {
|
||||
super.initGui();
|
||||
|
||||
scaledResolution = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight);
|
||||
|
||||
float scrollPerc = 0;
|
||||
if((yPos+clipHeight) != 0){
|
||||
if ((yPos + clipHeight) != 0) {
|
||||
scrollPerc = (nextScrollY) / (clipHeight);
|
||||
}
|
||||
|
||||
nextScrollY = scrollPerc * (clipHeight);
|
||||
|
||||
GuiNpcTextField.unfocus();
|
||||
GuiNpcTextField.unfocus();
|
||||
buttonList.clear();
|
||||
labels.clear();
|
||||
textfields.clear();
|
||||
@@ -81,88 +83,100 @@ public class GuiScrollWindow extends GuiScreen implements ITextfieldListener, IC
|
||||
sliders.clear();
|
||||
Keyboard.enableRepeatEvents(true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateScreen(){
|
||||
for(GuiNpcTextField tf : textfields.values()){
|
||||
if(tf.enabled)
|
||||
public void updateScreen() {
|
||||
for (GuiNpcTextField tf : textfields.values()) {
|
||||
if (tf.enabled)
|
||||
tf.updateCursorCounter();
|
||||
}
|
||||
super.updateScreen();
|
||||
}
|
||||
|
||||
public void mouseClicked(int i, int j, int k)
|
||||
{
|
||||
public void mouseClicked(int i, int j, int k) {
|
||||
|
||||
i = i - xPos;
|
||||
j = (int) (j-yPos+scrollY);
|
||||
j = (int) (j - yPos + scrollY);
|
||||
|
||||
for(GuiNpcTextField tf : new ArrayList<GuiNpcTextField>(textfields.values()))
|
||||
if(tf.enabled)
|
||||
for (GuiNpcTextField tf : new ArrayList<GuiNpcTextField>(textfields.values()))
|
||||
if (tf.enabled)
|
||||
tf.mouseClicked(i, j, k);
|
||||
|
||||
if (k == 0){
|
||||
for(GuiCustomScroll scroll : new ArrayList<GuiCustomScroll>(scrolls.values())){
|
||||
if (k == 0) {
|
||||
for (GuiCustomScroll scroll : new ArrayList<GuiCustomScroll>(scrolls.values())) {
|
||||
scroll.mouseClicked(i, j, k);
|
||||
}
|
||||
}
|
||||
mouseEvent(i,j,k);
|
||||
mouseEvent(i, j, k);
|
||||
super.mouseClicked(i, j, k);
|
||||
}
|
||||
|
||||
public void mouseEvent(int i, int j, int k){};
|
||||
public void mouseEvent(int i, int j, int k) {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void actionPerformed(GuiButton guibutton) {
|
||||
protected void actionPerformed(GuiButton guibutton) {
|
||||
parent.actionPerformed(guibutton);
|
||||
}
|
||||
|
||||
public void buttonEvent(GuiButton guibutton) {
|
||||
parent.buttonEvent(guibutton);
|
||||
}
|
||||
public void buttonEvent(GuiButton guibutton){
|
||||
parent.buttonEvent(guibutton);
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void keyTyped(char c, int i){
|
||||
for(GuiNpcTextField tf : textfields.values())
|
||||
tf.textboxKeyTyped(c, i);
|
||||
public void keyTyped(char c, int i) {
|
||||
for (GuiNpcTextField tf : textfields.values())
|
||||
tf.textboxKeyTyped(c, i);
|
||||
}
|
||||
|
||||
|
||||
public void addButton(GuiNpcButton button){
|
||||
buttons.put(button.id,button);
|
||||
buttonList.add(button);
|
||||
public void addButton(GuiNpcButton button) {
|
||||
buttons.put(button.id, button);
|
||||
buttonList.add(button);
|
||||
}
|
||||
public GuiNpcButton getButton(int i) {
|
||||
return buttons.get(i);
|
||||
}
|
||||
public void addTextField(GuiNpcTextField tf){
|
||||
textfields.put(tf.id,tf);
|
||||
|
||||
public GuiNpcButton getButton(int i) {
|
||||
return buttons.get(i);
|
||||
}
|
||||
public GuiNpcTextField getTextField(int i){
|
||||
return textfields.get(i);
|
||||
|
||||
public void addTextField(GuiNpcTextField tf) {
|
||||
textfields.put(tf.id, tf);
|
||||
}
|
||||
|
||||
public GuiNpcTextField getTextField(int i) {
|
||||
return textfields.get(i);
|
||||
}
|
||||
|
||||
public void addLabel(GuiNpcLabel label) {
|
||||
labels.put(label.id, label);
|
||||
}
|
||||
public GuiNpcLabel getLabel(int i){
|
||||
return labels.get(i);
|
||||
labels.put(label.id, label);
|
||||
}
|
||||
|
||||
public void addSlider(GuiNpcSlider slider){
|
||||
sliders.put(slider.id,slider);
|
||||
buttonList.add(slider);
|
||||
public GuiNpcLabel getLabel(int i) {
|
||||
return labels.get(i);
|
||||
}
|
||||
public GuiNpcSlider getSlider(int i) {
|
||||
return sliders.get(i);
|
||||
}
|
||||
public void addScroll(GuiCustomScroll scroll) {
|
||||
|
||||
public void addSlider(GuiNpcSlider slider) {
|
||||
sliders.put(slider.id, slider);
|
||||
buttonList.add(slider);
|
||||
}
|
||||
|
||||
public GuiNpcSlider getSlider(int i) {
|
||||
return sliders.get(i);
|
||||
}
|
||||
|
||||
public void addScroll(GuiCustomScroll scroll) {
|
||||
scroll.setWorldAndResolution(mc, 350, 250);
|
||||
scrolls.put(scroll.id, scroll);
|
||||
}
|
||||
public GuiCustomScroll getScroll(int id){
|
||||
return scrolls.get(id);
|
||||
}
|
||||
}
|
||||
|
||||
public GuiCustomScroll getScroll(int id) {
|
||||
return scrolls.get(id);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawScreen(int mouseX, int mouseY, float partialTicks){
|
||||
public void drawScreen(int mouseX, int mouseY, float partialTicks) {
|
||||
scrollY = (float) lerp(scrollY, nextScrollY, partialTicks);
|
||||
boolean drawBackground = this.drawDefaultBackground;
|
||||
|
||||
@@ -173,181 +187,179 @@ public class GuiScrollWindow extends GuiScreen implements ITextfieldListener, IC
|
||||
setClip(xPos, yPos, clipWidth, clipHeight);
|
||||
|
||||
this.drawDefaultBackground = false;
|
||||
if(drawBackground)
|
||||
if (drawBackground)
|
||||
this.drawGradientRect(0, 0, this.width, this.height, 0x66000000, 0x88000000);
|
||||
|
||||
|
||||
if(maxScrollY > 0)
|
||||
setClip(xPos, yPos, clipWidth-13, clipHeight);
|
||||
if (maxScrollY > 0)
|
||||
setClip(xPos, yPos, clipWidth - 13, clipHeight);
|
||||
|
||||
GL11.glTranslatef(xPos, yPos-scrollY, 0);
|
||||
GL11.glTranslatef(xPos, yPos - scrollY, 0);
|
||||
|
||||
|
||||
this.drawComponents(mouseX -xPos, (int) (mouseY +scrollY-yPos), partialTicks);
|
||||
this.drawComponents(mouseX - xPos, (int) (mouseY + scrollY - yPos), partialTicks);
|
||||
|
||||
|
||||
this.drawDefaultBackground = drawBackground;
|
||||
|
||||
//Disable clipping (VERY IMPORTANT)
|
||||
GL11.glDisable(GL11.GL_SCISSOR_TEST);
|
||||
GL11.glTranslatef(-xPos, -yPos+scrollY, 0);
|
||||
GL11.glTranslatef(-xPos, -yPos + scrollY, 0);
|
||||
|
||||
if(maxScrollY > 0){
|
||||
if (maxScrollY > 0) {
|
||||
drawScrollBar();
|
||||
}
|
||||
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
public void drawScreen(int mouseX, int mouseY, float partialTicks, int mouseScroll){
|
||||
public void drawScreen(int mouseX, int mouseY, float partialTicks, int mouseScroll) {
|
||||
adjustScroll(mouseX, mouseY, mouseScroll);
|
||||
this.mouseScroll = mouseScroll;
|
||||
this.drawScreen(mouseX, mouseY, partialTicks);
|
||||
}
|
||||
|
||||
public void drawComponents(int i, int j, float f){
|
||||
if(drawDefaultBackground)
|
||||
public void drawComponents(int i, int j, float f) {
|
||||
if (drawDefaultBackground)
|
||||
drawDefaultBackground();
|
||||
|
||||
boolean subGui = parent.hasSubGui();
|
||||
for(GuiNpcLabel label : labels.values())
|
||||
label.drawLabel(this,fontRendererObj);
|
||||
for(GuiNpcTextField tf : textfields.values()){
|
||||
for (GuiNpcLabel label : labels.values())
|
||||
label.drawLabel(this, fontRendererObj);
|
||||
for (GuiNpcTextField tf : textfields.values()) {
|
||||
tf.drawTextBox(i, j);
|
||||
}
|
||||
for(GuiCustomScroll scroll : scrolls.values()){
|
||||
for (GuiCustomScroll scroll : scrolls.values()) {
|
||||
scroll.updateSubGUI(subGui);
|
||||
scroll.drawScreen(i, j, f, !subGui && scroll.isMouseOver(i, j)?mouseScroll:0);
|
||||
scroll.drawScreen(i, j, f, !subGui && scroll.isMouseOver(i, j) ? mouseScroll : 0);
|
||||
}
|
||||
super.drawScreen(i, j, f);
|
||||
for(GuiCustomScroll scroll : scrolls.values())
|
||||
if(scroll.hoverableText){
|
||||
for (GuiCustomScroll scroll : scrolls.values())
|
||||
if (scroll.hoverableText) {
|
||||
scroll.drawHover(i, j);
|
||||
}
|
||||
for(GuiNpcButton button : buttons.values()){
|
||||
for (GuiNpcButton button : buttons.values()) {
|
||||
button.updateSubGUI(subGui);
|
||||
if(!button.hoverableText.isEmpty()){
|
||||
if (!button.hoverableText.isEmpty()) {
|
||||
button.drawHover(i, j, subGui);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void elementClicked() {
|
||||
public void elementClicked() {
|
||||
parent.elementClicked();
|
||||
}
|
||||
@Override
|
||||
public boolean doesGuiPauseGame(){
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean doesGuiPauseGame() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public void doubleClicked() {}
|
||||
public void doubleClicked() {
|
||||
}
|
||||
|
||||
public boolean isInventoryKey(int i){
|
||||
public boolean isInventoryKey(int i) {
|
||||
return i == mc.gameSettings.keyBindInventory.getKeyCode(); //inventory key
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawDefaultBackground() {
|
||||
super.drawDefaultBackground();
|
||||
}
|
||||
public void drawDefaultBackground() {
|
||||
super.drawDefaultBackground();
|
||||
}
|
||||
|
||||
protected void setClip(int x, int y, int width, int height){
|
||||
if(scaledResolution == null)
|
||||
protected void setClip(int x, int y, int width, int height) {
|
||||
if (scaledResolution == null)
|
||||
return;
|
||||
int scaleFactor = scaledResolution.getScaleFactor();
|
||||
|
||||
|
||||
// Correct the positions for Screen Space in OpenGL
|
||||
x*=scaleFactor;
|
||||
y*=scaleFactor;
|
||||
width*=scaleFactor;
|
||||
height*=scaleFactor;
|
||||
x *= scaleFactor;
|
||||
y *= scaleFactor;
|
||||
width *= scaleFactor;
|
||||
height *= scaleFactor;
|
||||
|
||||
// Adjust position to Top-Left origin (OpenGL window/screen space uses bottom-left origin)
|
||||
y=mc.displayHeight-y;
|
||||
y = mc.displayHeight - y;
|
||||
|
||||
// Set clip
|
||||
GL11.glScissor(x, y-height, width, height);
|
||||
GL11.glScissor(x, y - height, width, height);
|
||||
}
|
||||
|
||||
public boolean isMouseOver(int mouseX, int mouseY){
|
||||
return mouseX >= xPos && mouseX <= clipWidth+xPos && mouseY >= yPos && mouseY <= clipHeight+yPos;
|
||||
public boolean isMouseOver(int mouseX, int mouseY) {
|
||||
return mouseX >= xPos && mouseX <= clipWidth + xPos && mouseY >= yPos && mouseY <= clipHeight + yPos;
|
||||
}
|
||||
|
||||
public void adjustScroll(int mouseX, int mouseY, int mouseScroll) {
|
||||
mouseX -= xPos;
|
||||
mouseY -= yPos;
|
||||
if(Mouse.isButtonDown(0)){
|
||||
if(mouseX >= clipWidth-9 && mouseX < clipWidth-4 && mouseY >= 4 && mouseY < clipHeight){
|
||||
if (Mouse.isButtonDown(0)) {
|
||||
if (mouseX >= clipWidth - 9 && mouseX < clipWidth - 4 && mouseY >= 4 && mouseY < clipHeight) {
|
||||
isScrolling = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
} else
|
||||
isScrolling = false;
|
||||
|
||||
if(isScrolling){
|
||||
if (isScrolling) {
|
||||
// This Scroll Y is wrong
|
||||
float proportion = (mouseY - 4) / (float) (clipHeight - 8);
|
||||
nextScrollY = (int) (proportion * maxScrollY);
|
||||
if(nextScrollY < 0){
|
||||
nextScrollY = 0;
|
||||
}
|
||||
if(nextScrollY > maxScrollY){
|
||||
nextScrollY = maxScrollY;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if(!parent.hasSubGui()){
|
||||
for(GuiCustomScroll guiCustomScroll : scrolls.values()) {
|
||||
if (!parent.hasSubGui()) {
|
||||
for (GuiCustomScroll guiCustomScroll : scrolls.values()) {
|
||||
if (guiCustomScroll.isMouseOver(mouseX, (int) (mouseY + scrollY))) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(mouseScroll != 0){
|
||||
nextScrollY -= (float) mouseScroll/15;
|
||||
if(nextScrollY > maxScrollY)
|
||||
nextScrollY = maxScrollY;
|
||||
if(nextScrollY < 0)
|
||||
nextScrollY = 0;
|
||||
if (mouseScroll != 0)
|
||||
nextScrollY -= (float) mouseScroll / scrollSpeed;
|
||||
|
||||
|
||||
if (nextScrollY < 0) {
|
||||
nextScrollY = 0;
|
||||
}
|
||||
if (nextScrollY > maxScrollY) {
|
||||
nextScrollY = maxScrollY;
|
||||
}
|
||||
}
|
||||
|
||||
private void drawScrollBar()
|
||||
{
|
||||
private void drawScrollBar() {
|
||||
mc.renderEngine.bindTexture(resource);
|
||||
GL11.glColor4f(1, 1, 1, 1);
|
||||
|
||||
int maxSize = (int) ((clipHeight) * ( (double) (clipHeight)/ (clipHeight + maxScrollY)));
|
||||
int maxSize = (int) ((clipHeight) * ((double) (clipHeight) / (clipHeight + maxScrollY)));
|
||||
int x = xPos + clipWidth - 9;
|
||||
int y = (int) (yPos + 4 + (scrollY/maxScrollY * (clipHeight-maxSize-8)));
|
||||
int y = (int) (yPos + 4 + (scrollY / maxScrollY * (clipHeight - maxSize - 8)));
|
||||
|
||||
for(int k = y; k < y+maxSize && k-clipHeight+maxSize < clipHeight + yPos;k++){
|
||||
for (int k = y; k < y + maxSize && k - clipHeight + maxSize < clipHeight + yPos; k++) {
|
||||
drawTexturedModalRect(x, k, 176, 9, 5, 1);
|
||||
}
|
||||
}
|
||||
|
||||
private double lerp(double a, double b, double lambda){
|
||||
private double lerp(double a, double b, double lambda) {
|
||||
return a + lambda * (b - a);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void customScrollClicked(int i, int j, int k, GuiCustomScroll guiCustomScroll) {
|
||||
if(parent instanceof ICustomScrollListener)
|
||||
if (parent instanceof ICustomScrollListener)
|
||||
((ICustomScrollListener) parent).customScrollClicked(i, j, k, guiCustomScroll);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void customScrollDoubleClicked(String selection, GuiCustomScroll scroll) {
|
||||
if(parent instanceof ICustomScrollListener)
|
||||
if (parent instanceof ICustomScrollListener)
|
||||
((ICustomScrollListener) parent).customScrollDoubleClicked(selection, scroll);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unFocused(GuiNpcTextField textfield) {
|
||||
if(parent instanceof ITextfieldListener)
|
||||
if (parent instanceof ITextfieldListener)
|
||||
((ITextfieldListener) parent).unFocused(textfield);
|
||||
}
|
||||
}
|
||||
@@ -730,7 +730,7 @@ public class ModelMPM extends ModelNPCMale{
|
||||
to.rotationPointZ = from.rotationPointZ;
|
||||
}
|
||||
|
||||
private void renderHead(EntityCustomNpc entity, float f) {
|
||||
public void renderHead(EntityCustomNpc entity, float f) {
|
||||
loadPlayerTexture(entity);
|
||||
float x = 0;
|
||||
float y = entity.modelData.getBodyY();
|
||||
@@ -765,7 +765,7 @@ public class ModelMPM extends ModelNPCMale{
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
private void renderBody(EntityCustomNpc entity, float f) {
|
||||
public void renderBody(EntityCustomNpc entity, float f) {
|
||||
loadPlayerTexture(entity);
|
||||
float x = 0;
|
||||
float y = entity.modelData.getBodyY();
|
||||
@@ -872,7 +872,7 @@ public class ModelMPM extends ModelNPCMale{
|
||||
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
private void renderLegs(EntityCustomNpc entity, float f) {
|
||||
public void renderLegs(EntityCustomNpc entity, float f) {
|
||||
loadPlayerTexture(entity);
|
||||
ModelScalePart legs = entity.modelData.modelScale.legs;
|
||||
|
||||
|
||||
@@ -23,8 +23,9 @@ public class ScriptGui implements ICustomGui {
|
||||
int playerInvY;
|
||||
boolean pauseGame;
|
||||
boolean showPlayerInv;
|
||||
boolean closeOnEsc = true;
|
||||
String backgroundTexture = "";
|
||||
HashMap<Integer,ICustomGuiComponent> components = new HashMap<>();
|
||||
HashMap<Integer, ICustomGuiComponent> components = new HashMap<>();
|
||||
List<IItemSlot> slots = new ArrayList();
|
||||
|
||||
public ScriptGui() {
|
||||
@@ -71,6 +72,14 @@ public class ScriptGui implements ICustomGui {
|
||||
this.height = height;
|
||||
}
|
||||
|
||||
public void setCloseOnEscape(boolean close) {
|
||||
this.closeOnEsc = close;
|
||||
}
|
||||
|
||||
public boolean doesCloseOnEscape() {
|
||||
return this.closeOnEsc;
|
||||
}
|
||||
|
||||
public void setDoesPauseGame(boolean pauseGame) {
|
||||
this.pauseGame = pauseGame;
|
||||
}
|
||||
@@ -90,67 +99,67 @@ public class ScriptGui implements ICustomGui {
|
||||
public IButton addButton(int id, String label, int x, int y) {
|
||||
ScriptGuiButton component = new ScriptGuiButton(id, label, x, y);
|
||||
this.updateComponent(component);
|
||||
return (IButton)this.getComponent(id);
|
||||
return (IButton) this.getComponent(id);
|
||||
}
|
||||
|
||||
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);
|
||||
this.updateComponent(component);
|
||||
return (IButton)this.getComponent(id);
|
||||
return (IButton) this.getComponent(id);
|
||||
}
|
||||
|
||||
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);
|
||||
this.updateComponent(component);
|
||||
return (IButton)this.getComponent(id);
|
||||
return (IButton) this.getComponent(id);
|
||||
}
|
||||
|
||||
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);
|
||||
this.updateComponent(component);
|
||||
return (IButton)this.getComponent(id);
|
||||
return (IButton) this.getComponent(id);
|
||||
}
|
||||
|
||||
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);
|
||||
this.updateComponent(component);
|
||||
return (ILabel)this.getComponent(id);
|
||||
return (ILabel) this.getComponent(id);
|
||||
}
|
||||
|
||||
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);
|
||||
this.updateComponent(component);
|
||||
return (ILabel)this.getComponent(id);
|
||||
return (ILabel) this.getComponent(id);
|
||||
}
|
||||
|
||||
public ITextField addTextField(int id, int x, int y, int width, int height) {
|
||||
ScriptGuiTextField component = new ScriptGuiTextField(id, x, y, width, height);
|
||||
this.updateComponent(component);
|
||||
return (ITextField)this.getComponent(id);
|
||||
return (ITextField) this.getComponent(id);
|
||||
}
|
||||
|
||||
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);
|
||||
this.updateComponent(component);
|
||||
return (ITexturedRect)this.getComponent(id);
|
||||
return (ITexturedRect) this.getComponent(id);
|
||||
}
|
||||
|
||||
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);
|
||||
this.updateComponent(component);
|
||||
return (ITexturedRect)this.getComponent(id);
|
||||
return (ITexturedRect) this.getComponent(id);
|
||||
}
|
||||
|
||||
public IItemSlot addItemSlot(int id, int x, int y) {
|
||||
ScriptGuiItemSlot slot = new ScriptGuiItemSlot(id, x, y);
|
||||
this.updateComponent(slot);
|
||||
return (IItemSlot)this.getComponent(id);
|
||||
return (IItemSlot) this.getComponent(id);
|
||||
}
|
||||
|
||||
public IItemSlot addItemSlot(int id, int x, int y, IItemStack stack) {
|
||||
ScriptGuiItemSlot slot = new ScriptGuiItemSlot(id, x, y, stack);
|
||||
this.updateComponent(slot);
|
||||
return (IItemSlot)this.getComponent(id);
|
||||
return (IItemSlot) this.getComponent(id);
|
||||
}
|
||||
|
||||
public IItemSlot addItemSlot(int x, int y) {
|
||||
@@ -164,7 +173,7 @@ public class ScriptGui implements ICustomGui {
|
||||
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);
|
||||
this.updateComponent(component);
|
||||
return (IScroll)this.getComponent(id);
|
||||
return (IScroll) this.getComponent(id);
|
||||
}
|
||||
|
||||
public ILine addLine(int id, int x1, int y1, int x2, int y2, int color, int thickness) {
|
||||
@@ -246,40 +255,34 @@ public class ScriptGui implements ICustomGui {
|
||||
this.height = tag.getIntArray("size")[1];
|
||||
this.pauseGame = tag.getBoolean("pause");
|
||||
this.backgroundTexture = tag.getString("bgTexture");
|
||||
|
||||
this.closeOnEsc = tag.getBoolean("closeOnEsc");
|
||||
NBTTagList list = tag.getTagList("components", 10);
|
||||
for(int i = 0; i < list.tagCount(); i++){
|
||||
for (int i = 0; i < list.tagCount(); i++) {
|
||||
NBTBase b = list.getCompoundTagAt(i);
|
||||
ScriptGuiComponent component = ScriptGuiComponent.createFromNBT((NBTTagCompound)b);
|
||||
ScriptGuiComponent component = ScriptGuiComponent.createFromNBT((NBTTagCompound) b);
|
||||
if (component != null && !(component instanceof ScriptGuiItemSlot)) {
|
||||
components.put(component.getID(), component);
|
||||
}
|
||||
}
|
||||
|
||||
List<IItemSlot> slots = new ArrayList<>();
|
||||
list = tag.getTagList("slots", 10);
|
||||
|
||||
for(int i = 0; i < list.tagCount(); i++){
|
||||
for (int i = 0; i < list.tagCount(); i++) {
|
||||
NBTTagCompound slotNbt = list.getCompoundTagAt(i);
|
||||
|
||||
int id = slotNbt.getInteger("id");
|
||||
if (!components.containsKey(id)) {
|
||||
components.put(id, ScriptGuiComponent.createFromNBT(slotNbt));
|
||||
} else {
|
||||
components.get(id).fromNBT(slotNbt);
|
||||
}
|
||||
|
||||
ScriptGuiItemSlot slot = (ScriptGuiItemSlot) components.get(id);
|
||||
slots.add(slot);
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -289,33 +292,29 @@ public class ScriptGui implements ICustomGui {
|
||||
tag.setIntArray("size", new int[]{this.width, this.height});
|
||||
tag.setBoolean("pause", this.pauseGame);
|
||||
tag.setString("bgTexture", this.backgroundTexture);
|
||||
tag.setBoolean("closeOnEsc", this.closeOnEsc);
|
||||
NBTTagList list = new NBTTagList();
|
||||
Iterator var3 = this.components.values().iterator();
|
||||
|
||||
ICustomGuiComponent c;
|
||||
while(var3.hasNext()) {
|
||||
c = (ICustomGuiComponent)var3.next();
|
||||
list.appendTag(((ScriptGuiComponent)c).toNBT(new NBTTagCompound()));
|
||||
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();
|
||||
while (var3.hasNext()) {
|
||||
c = (ICustomGuiComponent) var3.next();
|
||||
if (c.getID() == -1) {
|
||||
c.setID(this.getMaxId()+1);
|
||||
c.setID(this.getMaxId() + 1);
|
||||
}
|
||||
list.appendTag(((ScriptGuiComponent)c).toNBT(new NBTTagCompound()));
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user