tutorial:screen
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision | ||
tutorial:screen [2023/04/21 02:55] – [Creating a screen] solidblock | tutorial:screen [2023/04/21 10:49] – [Scrolling] solidblock | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Creating a screen ====== | ====== Creating a screen ====== | ||
- | |||
- | :!: The page is still in progress. | ||
A **screen** is a graphical user interface that extends '' | A **screen** is a graphical user interface that extends '' | ||
- | You may use mixins to add a into an existing screen a button that goes to your screen. But in many cases, we can implement the '' | + | You may use mixins to add into an existing screen a button that goes to your screen. But in many cases, we can implement the '' |
===== Adding widgets ===== | ===== Adding widgets ===== | ||
Line 60: | Line 58: | ||
==== Can I instantiate widgets in the constructor ==== | ==== Can I instantiate widgets in the constructor ==== | ||
- | Some users may instantiaze | + | Some users may instantiate |
<code java> | <code java> | ||
- | |||
public ButtonWidget button1 = ButtonWidget.builder(...).build(); | public ButtonWidget button1 = ButtonWidget.builder(...).build(); | ||
public ButtonWidget button2 = ButtonWidget.builder(...).build(); | public ButtonWidget button2 = ButtonWidget.builder(...).build(); | ||
Line 73: | Line 70: | ||
</ | </ | ||
- | This is also OK. Its advantage is, if the widgets have some several states (such as the current selections of '' | + | This is also OK. Its advantage is, if the widgets have some several states (such as the current selections of '' |
<code java> | <code java> | ||
Line 87: | Line 84: | ||
==== Notice about the order ==== | ==== Notice about the order ==== | ||
- | After adding amounts of elements, all of them are added. Some people don't care about the order they are added, because all of the widgets are rendered at the sametime. However, if you select widgets by pressing the '' | + | After adding amounts of elements, all of them can render and be selected. Some people don't care about the order they are added, because all of the widgets are rendered at the sametime. However, if you select widgets by pressing the "Tab" |
===== The parent screen ===== | ===== The parent screen ===== | ||
- | I accessed the screen via another screen, such as the Mod Menu screen, but when I press '' | + | I accessed the screen via another screen, such as the Mod Menu screen, but when I press "Esc" |
- | Add a parent as a parameter and field, and use it in the '' | + | This is because you did not specify a parent screen, and the '' |
+ | |||
+ | Add a '' | ||
<code java> | <code java> | ||
Line 113: | Line 112: | ||
* **Title**: The title of the screen, which is defined in the constructor. When you enter the screen, the title will be automatically narrated. | * **Title**: The title of the screen, which is defined in the constructor. When you enter the screen, the title will be automatically narrated. | ||
* **Position**: | * **Position**: | ||
- | * **Hint**: This refers the tooltip of the element you focus on or hovers on. For example, the '' | + | * **Hint**: This refers the tooltip of the element you focus on or hovers on. For example, |
* **Usage**: In vanilla, the usage is: "//Use mouse cursor or Tab button to select element//" | * **Usage**: In vanilla, the usage is: "//Use mouse cursor or Tab button to select element//" | ||
Line 120: | Line 119: | ||
In the method of appending narrations, using '' | In the method of appending narrations, using '' | ||
+ | In some cases, you want repetitive narrations, instead of narrating only once. For example, when loading a level, the percentage of loading is narrated repetitively, | ||
+ | |||
+ | ===== Adding text ===== | ||
+ | In '' | ||
+ | <code java> | ||
+ | @Override | ||
+ | public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { | ||
+ | super.render(matrices, | ||
+ | drawCenteredTextWithShadow(matrices, | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | If you're concerned that the text can be pretty long and may exceed the screen limit, you can use '' | ||
+ | <code java> | ||
+ | final MultilineText multilineText = MultilineText.create(textRenderer, | ||
+ | multilineText.drawWithShadow(matrices, | ||
+ | </ | ||
+ | |||
+ | Another alterative is using '' | ||
+ | |||
+ | ===== Scrolling ===== | ||
+ | The screen does not support scrolling, but you can add widgets that supports scrolling. ''< | ||
+ | |||
+ | * ''< | ||
+ | * ''< | ||
+ | |||
+ | ===== Things to check before finishing ===== | ||
- | [WIP] | + | After finishing your screen, in order to avoid potential issues, please check: |
+ | * whether the screen returns to the last screen (parent screen) when you press " | ||
+ | * whether these classes exist only on client (which means they will not be loaded in the dedicated server) | ||
+ | * whether elements are focused in the correct order when you press " | ||
+ | * whether the behaviors are correct when you resize | ||
+ | * whether the narrations are correct when you use " |
tutorial/screen.txt · Last modified: 2023/12/18 01:38 by solidblock