Posted August 2, 20205 yr @Override protected void init() { super.init(); Button.IPressable onPress; int offsetX = (this.width - this.xSize) / 2, offsetY = (this.height - this.ySize) / 2; this.buttons.add(new Button(offsetX+153,offsetY+17,20,20,"start",(p_212984_1_) -> { this.minecraft.displayGuiScreen(this.getMinecraft().currentScreen);}) { @Override public void onPress() { //TODO } }); I have made a screen,I want to add a button to do something ,I used anonymous inner classes,but whatever I write in “todo”,when I pressen the button it didn't work.Did I use the wrong method?Please help me .
August 2, 20205 yr Here is an example of button from IngameMenuScreen class: this.addButton(new Button(this.width / 2 - 102, this.height / 4 + 24 + -16, 204, 20, new TranslationTextComponent("menu.returnToGame"), (p_213070_1_) -> { this.minecraft.displayGuiScreen((Screen)null); this.minecraft.mouseHelper.grabMouse(); })); This works for sure, find the difference. Everything said above may be absolutely wrong. No rights reserved.
August 3, 20205 yr Author 15 hours ago, Dzuchun said: Here is an example of button from IngameMenuScreen class: this.addButton(new Button(this.width / 2 - 102, this.height / 4 + 24 + -16, 204, 20, new TranslationTextComponent("menu.returnToGame"), (p_213070_1_) -> { this.minecraft.displayGuiScreen((Screen)null); this.minecraft.mouseHelper.grabMouse(); })); This works for sure, find the difference. Excuse me, is there a more detailed example? I don't quite understand. I often use listeners in Java, but I don't understand how this button works.
August 3, 20205 yr 2 hours ago, Same here said: I often use listeners in Java Here you don't need this to execute something on button click. Listening is already handled by LWJGL (not sure), so all you need is to specify function that should be executed once button is pressed. (p_213070_1_) -> { this.minecraft.displayGuiScreen((Screen)null); this.minecraft.mouseHelper.grabMouse(); } Here is this function. This format is called lambda-expression. Check source code for more context, this code is located at IngameMenuScreen class. Everything said above may be absolutely wrong. No rights reserved.
August 4, 20205 yr Author 15 hours ago, Dzuchun said: Here you don't need this to execute something on button click. Listening is already handled by LWJGL (not sure), so all you need is to specify function that should be executed once button is pressed. (p_213070_1_) -> { this.minecraft.displayGuiScreen((Screen)null); this.minecraft.mouseHelper.grabMouse(); } Here is this function. This format is called lambda-expression. Check source code for more context, this code is located at IngameMenuScreen class. My friend, thank you very much for your patience and help me a lot. I looked at the source code before, but I made a fatal mistake. I have been paying attention to lambda and have not used addbutton correctly. Thank you very much for your help.
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.