From 0ef6a00aa79f022e5bd56b3f77e6861bbecf6d94 Mon Sep 17 00:00:00 2001 From: OnyxDarkKnight Date: Thu, 13 Aug 2015 21:12:11 +0100 Subject: Added a new structure, a new curse, achievements, challenges, curses entry in the guide; reworked liquids to be tile entities, cleaned the structures code, potion code and... you know what? I improved and changed so much stuff that I literally forgot what I did... --- .../jewelrycraft/client/gui/GuiCurseInfo.java | 202 +++++++++++++++------ 1 file changed, 146 insertions(+), 56 deletions(-) (limited to 'src/main/java/darkknight/jewelrycraft/client/gui/GuiCurseInfo.java') diff --git a/src/main/java/darkknight/jewelrycraft/client/gui/GuiCurseInfo.java b/src/main/java/darkknight/jewelrycraft/client/gui/GuiCurseInfo.java index 59f5e91..752a2a7 100644 --- a/src/main/java/darkknight/jewelrycraft/client/gui/GuiCurseInfo.java +++ b/src/main/java/darkknight/jewelrycraft/client/gui/GuiCurseInfo.java @@ -1,26 +1,36 @@ package darkknight.jewelrycraft.client.gui; -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.inventory.GuiContainer; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.Container; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.ResourceLocation; -import net.minecraft.world.World; +import java.util.List; +import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.GL11; +import darkknight.jewelrycraft.JewelrycraftMod; import darkknight.jewelrycraft.api.Curse; import darkknight.jewelrycraft.client.TabCurses; import darkknight.jewelrycraft.client.TabRegistry; import darkknight.jewelrycraft.events.KeyBindings; +import darkknight.jewelrycraft.network.PacketSendClientPlayerInfo; +import darkknight.jewelrycraft.network.PacketSendServerPlayerInfo; +import darkknight.jewelrycraft.network.PacketSendServerPlayersInfo; import darkknight.jewelrycraft.util.PlayerUtils; import darkknight.jewelrycraft.util.Variables; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.inventory.Container; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; +import scala.swing.event.Key; public class GuiCurseInfo extends GuiContainer { World world; EntityPlayer player; ResourceLocation texture; + int page = 0, maxPages = 1; + String selectedCurse = ""; public GuiCurseInfo(Container container, World world, EntityPlayer player, ResourceLocation texture) { super(container); @@ -33,35 +43,6 @@ public class GuiCurseInfo extends GuiContainer { public void drawScreen(int x, int y, float size) { super.drawScreen(x, y, size); - // this.drawGradientRect(0, 0, this.width, this.height, -1072689136, - // -804253680); - // int ind = 0; - // if (player != null){ - // NBTTagCompound playerInfo = - // PlayerUtils.getModPlayerPersistTag(player, Variables.MODID); - // if (!playerInfo.hasNoTags()){ - // for(Curse curse: Curse.getCurseList()) - // if (playerInfo.getInteger(curse.getName()) > 0){ - // int halfDescrSize = - // fontRendererObj.getStringWidth(curse.getDescription()) / 2; - // mc.renderEngine.bindTexture(Variables.MISC_TEXTURE); - // this.drawRect(0, 12 + ind * 34, this.width, 10 + (ind + 1) * 34, - // 0xff000000); - // mc.renderEngine.bindTexture(new ResourceLocation(Variables.MODID, - // "textures/gui/" + curse.getTexturePack() + ".png")); - // int tag = curse.getTextureID(); - // GL11.glColor3f(1F, 1F, 1F); - // drawTexturedModalRect(this.width/2 - halfDescrSize - 35, 12 + ind * - // 34, tag % 8 * 32, tag / 8 * 32, 32, 32); - // this.drawString(fontRendererObj, - // curse.getName().substring(curse.getName().indexOf(':') + 1), - // this.width/2 - halfDescrSize, 20 + ind * 34, 0xffff00); - // this.drawCenteredString(fontRendererObj, curse.getDescription(), - // this.width/2, 30 + ind * 34, 0xffffff); - // ind++; - // } - // } - // } } @Override @@ -69,21 +50,50 @@ public class GuiCurseInfo extends GuiContainer { GL11.glColor3f(1, 1, 1); Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); - int ind = 0; - int size = 32; if (player != null) { NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, Variables.MODID); - if (!playerInfo.hasNoTags()) { - for (Curse curse : Curse.getCurseList()) - if (playerInfo.getInteger(curse.getName()) > 0) { + if (!player.capabilities.isCreativeMode) maxPages = playerInfo.getInteger("activeCurses") / 5 - (playerInfo.getInteger("activeCurses") % 5 == 0 ? 1 : 0); + else maxPages = Curse.getCurseList().size() / 5 - (Curse.getCurseList().size() % 5 == 0 ? 1 : 0); + if (!player.capabilities.isCreativeMode) survivalCurses(playerInfo); + else creativeCurses(playerInfo); + if (playerInfo.hasKey("cursePoints")) this.drawString(fontRendererObj, "Curse points: " + playerInfo.getInteger("cursePoints") + " | Active curses: " + playerInfo.getInteger("activeCurses"), guiLeft, guiTop - 10, 0xffffff); + } + this.drawString(fontRendererObj, page + "/" + maxPages, guiLeft + 90, guiTop + 153, 0xffffff); + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + drawTexturedModalRect(guiLeft + 5, guiTop + ySize - 14, 0, ySize, 13, 11); + drawTexturedModalRect(guiLeft + xSize - 38, guiTop + ySize - 14, 13, ySize, 13, 11); + } + + private void survivalCurses(NBTTagCompound playerInfo) { + int size = 32; + int ind = 0; + if (!playerInfo.hasNoTags()) { + for (Curse curse : Curse.getCurseList()) { + if (playerInfo.getInteger(curse.getName()) > 0) { + if (ind >= page * 5 && ind < (page + 1) * 5) { + if (ind == page * 5 && selectedCurse == "") selectedCurse = curse.getName(); mc.renderEngine.bindTexture(Variables.MISC_TEXTURE); - drawTexturedModalRect(guiLeft + 43, guiTop + 5 + (size - 8) * ind, 0, 32, 112, 22); + drawTexturedModalRect(guiLeft + 43, guiTop + 8 + (size - 8) * (ind - page * 5), 0, 32, 112, 22); + if (selectedCurse == curse.getName()) { + GL11.glPushMatrix(); + GL11.glScalef(1.2f, 1.5f, 0f); + drawTexturedModalRect((int) (guiLeft / (1.2)) + 126, (int) (guiTop / (1.5)) + 7 + (size - 16) * (ind - page * 5), 48, 16, 32, 16); + drawTexturedModalRect((int) (guiLeft / (1.2)) + 5, (int) (guiTop / (1.5)) + 7 + (size - 16) * (ind - page * 5), 80, 16, 32, 16); + GL11.glPopMatrix(); + GL11.glPushMatrix(); + List descr = fontRendererObj.listFormattedStringToWidth(curse.getDescription(), 238); + GL11.glScalef(0.75F, 0.75F, 0F); + for (int i = 0; i < descr.size(); i++) + this.drawString(fontRendererObj, descr.get(i).toString(), (int) (guiLeft / 0.75F) + 12, (int) (guiTop / 0.75F) + 184 + i * 12 - (descr.size() > 1 ? 6 : 0), 0xffffff); + GL11.glPopMatrix(); + } if (playerInfo.getInteger(curse.getName()) == 2) { + mc.renderEngine.bindTexture(Variables.MISC_TEXTURE); GL11.glPushMatrix(); GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); GL11.glColor4f(1f, 1f, 1f, 0.5f); - drawTexturedModalRect(guiLeft + 134, guiTop + 8 + (size - 8) * ind, 3 * 16, 0, 16, 16); + drawTexturedModalRect(guiLeft + 134, guiTop + 11 + (size - 8) * (ind - page * 5), 3 * 16, 0, 16, 16); GL11.glDisable(GL11.GL_BLEND); GL11.glPopMatrix(); } @@ -94,28 +104,72 @@ public class GuiCurseInfo extends GuiContainer { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glDisable(GL11.GL_LIGHTING); GL11.glScalef(0.5f, 0.5f, 0.0f); - drawTexturedModalRect(guiLeft*2 + 100, guiTop*2 + 16 + ind * 48, tag % 8 * 32, tag / 8 * 32, 32, 32); + drawTexturedModalRect(guiLeft * 2 + 100, guiTop * 2 + 22 + (ind - page * 5) * 48, tag % 8 * 32, tag / 8 * 32, 32, 32); GL11.glPopMatrix(); - this.drawString(fontRendererObj, curse.getDisplayName(), guiLeft + 70, guiTop + 12 + ind * (size - 8), 0xffffff); - // this.drawCenteredString(fontRendererObj, - // curse.getDescription(), this.width/2, 30 + ind * 34, - // 0xffffff); - ind++; + this.drawString(fontRendererObj, curse.getDisplayName(), guiLeft + 70, guiTop + 15 + (ind - page * 5) * (size - 8), 0xffffff); } + ind++; + } } } } + private void creativeCurses(NBTTagCompound playerInfo) { + int size = 32; + int ind = 0; + for (Curse curse : Curse.getCurseList()) { + if (ind >= page * 5 && ind < (page + 1) * 5) { + if (ind == page * 5 && selectedCurse == "") selectedCurse = curse.getName(); + if (playerInfo.getInteger(curse.getName()) <= 0) { + GL11.glPushMatrix(); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + GL11.glColor4f(1f, 1f, 1f, 0.5f); + } + mc.renderEngine.bindTexture(Variables.MISC_TEXTURE); + drawTexturedModalRect(guiLeft + 43, guiTop + 8 + (size - 8) * (ind - page * 5), 0, 32, 112, 22); + if (selectedCurse == curse.getName()) { + GL11.glPushMatrix(); + GL11.glScalef(1.2f, 1.5f, 0f); + drawTexturedModalRect((int) (guiLeft / (1.2)) + 126, (int) (guiTop / (1.5)) + 7 + (size - 16) * (ind - page * 5), 48, 16, 32, 16); + drawTexturedModalRect((int) (guiLeft / (1.2)) + 5, (int) (guiTop / (1.5)) + 7 + (size - 16) * (ind - page * 5), 80, 16, 32, 16); + GL11.glPopMatrix(); + GL11.glPushMatrix(); + List descr = fontRendererObj.listFormattedStringToWidth(curse.getDescription(), 238); + GL11.glScalef(0.75F, 0.75F, 0F); + for (int i = 0; i < descr.size(); i++) + this.drawString(fontRendererObj, descr.get(i).toString(), (int) (guiLeft / 0.75F) + 12, (int) (guiTop / 0.75F) + 184 + i * 12 - (descr.size() > 1 ? 6 : 0), 0xffffff); + GL11.glPopMatrix(); + } + int halfDescrSize = fontRendererObj.getStringWidth(curse.getDescription()) / 2; + mc.renderEngine.bindTexture(new ResourceLocation(Variables.MODID, "textures/gui/" + curse.getTexturePack() + ".png")); + int tag = curse.getTextureID(); + GL11.glPushMatrix(); + if (playerInfo.getInteger(curse.getName()) <= 0) GL11.glColor4f(1.0F, 1.0F, 1.0F, 0.5F); + else GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glScalef(0.5f, 0.5f, 0.0f); + drawTexturedModalRect(guiLeft * 2 + 100, guiTop * 2 + 22 + (ind - page * 5) * 48, tag % 8 * 32, tag / 8 * 32, 32, 32); + GL11.glPopMatrix(); + this.drawString(fontRendererObj, curse.getDisplayName(), guiLeft + 70, guiTop + 15 + (ind - page * 5) * (size - 8), playerInfo.getInteger(curse.getName()) > 0 ? 0xffffffff : 0xaaffffff); + if (playerInfo.getInteger(curse.getName()) <= 0) { + GL11.glDisable(GL11.GL_BLEND); + GL11.glPopMatrix(); + } + } + ind++; + } + } + @Override public void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { } - - @Override - protected void keyTyped(char charecter, int key) - { - super.keyTyped(charecter, key); - if (key == KeyBindings.curses.getKeyCode()) mc.thePlayer.closeScreen(); - } + + @Override + protected void keyTyped(char charecter, int key) { + super.keyTyped(charecter, key); + if (key == KeyBindings.curses.getKeyCode()) mc.thePlayer.closeScreen(); + } @Override public void initGui() { @@ -129,5 +183,41 @@ public class GuiCurseInfo extends GuiContainer { protected void mouseClicked(int x, int y, int id) { super.mouseClicked(x, y, id); + int ind = 0; + int size = 32; + if (player != null) { + NBTTagCompound playerInfo = PlayerUtils.getModPlayerPersistTag(player, Variables.MODID); + for (Curse curse : Curse.getCurseList()) { + if (player.capabilities.isCreativeMode) { + if (x > (guiLeft + 43) && y > (guiTop + 8 + (size - 8) * (ind - page * 5)) && x < (guiLeft + 43 + 112) && y < (guiTop + 40 + (size - 8) * (ind - page * 5)) && ind >= page * 5 && ind < (page + 1) * 5) { + if (player.capabilities.isCreativeMode && isCtrlKeyDown() && playerInfo.getInteger(curse.getName()) > 0) { + playerInfo.setInteger(curse.getName(), 0); + playerInfo.setInteger("activeCurses", playerInfo.getInteger("activeCurses") - 1); + Curse.availableCurses.add(curse); + JewelrycraftMod.netWrapper.sendToServer(new PacketSendServerPlayerInfo("remove", curse.getName(), playerInfo)); + JewelrycraftMod.netWrapper.sendToAll(new PacketSendServerPlayersInfo()); + } else if (player.capabilities.isCreativeMode && isCtrlKeyDown() && playerInfo.getInteger(curse.getName()) <= 0) { + playerInfo.setInteger(curse.getName(), 1); + playerInfo.setInteger("activeCurses", playerInfo.getInteger("activeCurses") + 1); + Curse.availableCurses.remove(curse); + JewelrycraftMod.netWrapper.sendToServer(new PacketSendServerPlayerInfo("add", curse.getName(), playerInfo)); + JewelrycraftMod.netWrapper.sendToAll(new PacketSendServerPlayersInfo()); + } else selectedCurse = curse.getName(); + } + ind++; + } else if (playerInfo.getInteger(curse.getName()) > 0) { + if (x > (guiLeft + 43) && y > (guiTop + 8 + (size - 8) * (ind - page * 5)) && x < (guiLeft + 43 + 112) && y < (guiTop + 40 + (size - 8) * (ind - page * 5)) && ind >= page * 5 && ind < (page + 1) * 5) selectedCurse = curse.getName(); + ind++; + } + } + } + if (page > 0 && x > guiLeft + 5 && x < guiLeft + 18 && y > guiTop + ySize - 14 && y < guiTop + ySize - 3) { + page--; + selectedCurse = ""; + } + if (page < maxPages && x > guiLeft + xSize - 38 && x < guiLeft + xSize - 25 && y > guiTop + ySize - 14 && y < guiTop + ySize - 3) { + page++; + selectedCurse = ""; + } } } \ No newline at end of file -- cgit v1.2.3