Posted February 14, 201510 yr I have 2 problems with my GUI. I'm new to this so I need some help with it. Problem 1 (solved): When I draw a text overlay, the buttons on my GUI turn darker. when the overlay disappear, the buttons get their normal color back. Problem 2: I use the forge GuiScrollingList but the slots are rendered out of the list. they only disappear when the top and the bottom are completely out of the list by scrolling the list. (I saw this problem by a couple other mods.)
February 14, 201510 yr 1. You are probably Enabling some GL11 property and not disablig it, ot disabling it where you shouldn't, we need code. 2. That's how anything using GuiListExtended works - they are designed to render everything that is inside or partially-inside list, when element is out of list in 100% then the renderer stops rendering it. You would need custom implementation of GuiSlot (or maybe a bit less, like GuiListExtended) to change it, and trust me, writing good logic for this will take time. Edit: I am a LIAR! Sorry, there were changes in 1.8 regarding those lists (or maybe I just derped with names). GuiScrollingList is not an implementation of GuiListExtended. But I think they are using same logic, gotta check it 1.7.10 is no longer supported by forge, you are on your own.
February 14, 201510 yr Author here is some code. @Override public void drawScreen(int mouseX, int mouseY, float par3) { this.List.drawScreen(mouseX, mouseY, par3); if(selectedMod != null && ListSwitchButton.displayString == "Modlist") { this.offset = this.listWidth + 20; int TotalPlayers = Players.size(); int TotalPlayersPlayedWithThisMod = ((ArrayList) ModUsers.get(selectedMod.get("Modid"))).size(); Float PercentagePlayedWithThisMod = round((float) (((float)TotalPlayersPlayedWithThisMod/TotalPlayers)*100.0), 2); this.drawString(this.fontRendererObj, "ModName: "+selectedMod.get("ModName"), offset, 35, 0xFFFFFF); this.drawString(this.fontRendererObj, "ModID: "+selectedMod.get("Modid"), offset, 45, 0xFFFFFF); this.drawString(this.fontRendererObj, TotalPlayersPlayedWithThisMod+" Players have this mod. ("+PercentagePlayedWithThisMod+"%)", offset, 55, 0xFFFFFF); PlayerHoverText(mouseX,mouseY,(ArrayList) ModUsers.get(selectedMod.get("Modid"))); } if (this.hoveringText != null) { this.drawHoveringText(Lists.newArrayList(Splitter.on("\n").split(this.hoveringText)), mouseX, mouseY); } super.drawScreen(mouseX, mouseY, par3); } private void PlayersHoverText(int MouseX,int MouseY, ArrayList <String> Players){ if(MouseX >= offset && MouseX <= offset+10 && MouseY >= 55 && MouseY <= 65){ if(Players.size()>=1){ int x = 0; this.hoveringText = ""; while( x < Players.size()){ this.hoveringText = this.hoveringText+ Players.get(x) +((x+1)>=Players.size() ?"":"\n"); x++; } } }else{ this.hoveringText = null; } }
February 14, 201510 yr Author should the part of the slot that is not in the list be rendered in the background so its only half visible?
February 14, 201510 yr Yup. #Paint MAD SKILLZ Brown - rest of GUI White - visible part of list Orange - hidden part of list - a "cape" When element leaves visible part of list partially it' s being hidden behind "cape" and when it leaves visible list fully rendering stops. Lists are designed to be put from top to bottom, and only be limited by those "capes" for fake visual effect. In fact - under those capes, part of element is still being rendered. Cape border can be set in constructor (or by method directly) 1.7.10 is no longer supported by forge, you are on your own.
February 14, 201510 yr Author how can I render the orange part? as shown in the screenshot from the previous post the cape aren't there or they aren't rendered properly.
February 14, 201510 yr How are you declaring your list? protected final int top; protected final int bottom; Inside GuiScrollingList stand for number of pixels counting from top of screen for your top-border and bottom-border. Note: I was playing with it on 1.7.10. It might be different now. 1.7.10 is no longer supported by forge, you are on your own.
February 14, 201510 yr Author declaring list in initGui(): this.List=new ScrollList(this, Data, listWidth, true); this.List.registerScrollButtons(this.buttonList, 7, ; constructor of the List: public ScrollList(TestGui parent, ArrayList Data, int listWidth, Boolean isPlayerList) { super(parent.getMinecraftInstance(), listWidth, //width parent.height-66, //height 32, //top parent.height - 66 + 4, //bottom 10, //left 35); //slot height // System.out.println(parent.width+"-"+parent.height); this.parent=parent; this.Data=Data; this.isPlayerList = isPlayerList; } I had this problem too in 1.7
February 14, 201510 yr Author for problem 1: I don't enable or disable any GL11 property in my code. the drawHoveringText method does it but that's not my code. maybe the order of my code does something strange?
February 15, 201510 yr Author Problem 1 solved! used code in drawscreen(): RenderHelper.disableStandardItemLighting(); super.drawScreen(mouseX, mouseY, par3); RenderHelper.enableStandardItemLighting();
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.