28
28
import java .io .File ;
29
29
import java .util .ArrayList ;
30
30
import java .util .List ;
31
+ import java .util .Objects ;
31
32
32
33
public class ModListScreen extends Screen {
34
+ private static final Identifier CONFIGURE_BUTTON_LOCATION = new Identifier ("modmenu" , "textures/gui/configure_button.png" );
33
35
private static final Logger LOGGER = LogManager .getLogger ();
34
- public static final Identifier CONFIGURE_BUTTON_LOCATION = new Identifier ("modmenu" , "textures/gui/configure_button.png" );
35
- protected String textTitle ;
36
- protected TextFieldWidget searchBox ;
37
- protected DescriptionListWidget descriptionListWidget ;
38
- protected Screen parent ;
39
- protected ModListWidget modList ;
40
- protected String tooltip ;
41
- protected ModListEntry selected ;
42
- protected BadgeRenderer badgeRenderer ;
43
- protected double scrollPercent = 0 ;
44
- int leftPaneX ;
45
- boolean init = false ;
46
- int leftPaneRight ;
47
- int paneY ;
48
- int paneWidth ;
49
- int rightPaneX ;
36
+ private final String textTitle ;
37
+ private TextFieldWidget searchBox ;
38
+ private DescriptionListWidget descriptionListWidget ;
39
+ private Screen parent ;
40
+ private ModListWidget modList ;
41
+ private String tooltip ;
42
+ private ModListEntry selected ;
43
+ private BadgeRenderer badgeRenderer ;
44
+ private double scrollPercent = 0 ;
45
+ private int leftPaneX ;
46
+ private boolean init = false ;
47
+ private int leftPaneRight ;
48
+ private int paneY ;
49
+ private int paneWidth ;
50
+ private int rightPaneX ;
50
51
51
52
public ModListScreen (Screen previousGui ) {
52
53
super (ModMenu .noFabric ? new StringTextComponent ("Mods" ) : new TranslatableTextComponent ("modmenu.title" ));
@@ -70,7 +71,7 @@ public void tick() {
70
71
71
72
@ Override
72
73
protected void init () {
73
- this .minecraft .keyboard .enableRepeatEvents (true );
74
+ Objects . requireNonNull ( this .minecraft ) .keyboard .enableRepeatEvents (true );
74
75
leftPaneX = 4 ;
75
76
leftPaneRight = width / 2 - 4 ;
76
77
paneY = 48 ;
@@ -86,7 +87,8 @@ protected void init() {
86
87
this .descriptionListWidget = new DescriptionListWidget (this .minecraft , paneWidth , this .height , paneY + 60 , this .height - 36 , font .fontHeight + 1 , this );
87
88
this .descriptionListWidget .setLeftPos (rightPaneX );
88
89
final ModListEntry selectedEntry = modList .getSelected ();
89
- final String modid = selectedEntry .metadata .getId ();
90
+ final ModMetadata metadata = Objects .requireNonNull (selectedEntry ).getMetadata ();
91
+ final String modid = metadata .getId ();
90
92
ButtonWidget configureButton = new TexturedButtonWidget (width - 24 , paneY , 20 , 20 , 0 , 0 , CONFIGURE_BUTTON_LOCATION , 32 , 64 , button -> {
91
93
final Screen screen = ModMenu .getConfigScreen (modid , this );
92
94
if (screen != null ) {
@@ -108,27 +110,27 @@ public void render(int mouseX, int mouseY, float delta) {
108
110
ButtonWidget websiteButton = new ButtonWidget (rightPaneX + (urlButtonWidths / 2 ) - (cappedButtonWidth / 2 ), paneY + 36 , urlButtonWidths > 200 ? 200 : urlButtonWidths , 20 ,
109
111
ModMenu .noFabric ? "Website" : I18n .translate ("modmenu.website" ), button -> this .minecraft .openScreen (new ConfirmChatLinkScreen ((bool ) -> {
110
112
if (bool ) {
111
- SystemUtil .getOperatingSystem ().open (selectedEntry . metadata .getContact ().get ("homepage" ).get ());
113
+ SystemUtil .getOperatingSystem ().open (metadata .getContact ().get ("homepage" ).get ());
112
114
}
113
115
this .minecraft .openScreen (this );
114
- }, selectedEntry . metadata .getContact ().get ("homepage" ).get (), true ))) {
116
+ }, metadata .getContact ().get ("homepage" ).get (), true ))) {
115
117
@ Override
116
118
public void render (int var1 , int var2 , float var3 ) {
117
- active = selectedEntry . metadata .getContact ().get ("homepage" ).isPresent ();
119
+ active = metadata .getContact ().get ("homepage" ).isPresent ();
118
120
visible = true ;
119
121
super .render (var1 , var2 , var3 );
120
122
}
121
123
};
122
124
ButtonWidget issuesButton = new ButtonWidget (rightPaneX + urlButtonWidths + 4 + (urlButtonWidths / 2 ) - (cappedButtonWidth / 2 ), paneY + 36 , urlButtonWidths > 200 ? 200 : urlButtonWidths , 20 ,
123
125
ModMenu .noFabric ? "Issues" : I18n .translate ("modmenu.issues" ), button -> this .minecraft .openScreen (new ConfirmChatLinkScreen ((bool ) -> {
124
126
if (bool ) {
125
- SystemUtil .getOperatingSystem ().open (selectedEntry . metadata .getContact ().get ("issues" ).get ());
127
+ SystemUtil .getOperatingSystem ().open (metadata .getContact ().get ("issues" ).get ());
126
128
}
127
129
this .minecraft .openScreen (this );
128
- }, selectedEntry . metadata .getContact ().get ("issues" ).get (), true ))) {
130
+ }, metadata .getContact ().get ("issues" ).get (), true ))) {
129
131
@ Override
130
132
public void render (int var1 , int var2 , float var3 ) {
131
- active = selectedEntry . metadata .getContact ().get ("issues" ).isPresent ();
133
+ active = metadata .getContact ().get ("issues" ).isPresent ();
132
134
visible = true ;
133
135
super .render (var1 , var2 , var3 );
134
136
}
@@ -177,10 +179,10 @@ public void render(int mouseX, int mouseY, float delta) {
177
179
this .drawCenteredString (this .font , this .textTitle , this .modList .getWidth () / 2 , 8 , 16777215 );
178
180
super .render (mouseX , mouseY , delta );
179
181
180
- ModMetadata metadata = modList .getSelected ().metadata ;
182
+ ModMetadata metadata = modList .getSelected ().getMetadata () ;
181
183
int x = rightPaneX ;
182
184
GlStateManager .color4f (1.0F , 1.0F , 1.0F , 1.0F );
183
- this .minecraft .getTextureManager ().bindTexture (selected .icon != null ? selected .iconLocation : ModListEntry .unknownIcon );
185
+ Objects . requireNonNull ( this .minecraft ) .getTextureManager ().bindTexture (selected .getIcon () != null ? selected .getIconLocation () : ModListEntry .UNKNOWN_ICON );
184
186
GlStateManager .enableBlend ();
185
187
blit (x , paneY , 0.0F , 0.0F , 32 , 32 , 32 , 32 );
186
188
GlStateManager .disableBlend ();
@@ -190,7 +192,7 @@ public void render(int mouseX, int mouseY, float delta) {
190
192
if (mouseX > x + imageOffset && mouseY > paneY + 1 && mouseY < paneY + 1 + font .fontHeight && mouseX < x + imageOffset + font .getStringWidth (metadata .getName ())) {
191
193
setTooltip (I18n .translate ("modmenu.modIdToolTip" , metadata .getId ()));
192
194
}
193
- if (init || badgeRenderer == null || badgeRenderer .metadata != metadata ) {
195
+ if (init || badgeRenderer == null || badgeRenderer .getMetadata () != metadata ) {
194
196
badgeRenderer = new BadgeRenderer (x + imageOffset + this .minecraft .textRenderer .getStringWidth (metadata .getName ()) + 2 , paneY , width - 28 , metadata , this );
195
197
init = false ;
196
198
}
@@ -216,9 +218,8 @@ public void render(int mouseX, int mouseY, float delta) {
216
218
protected void overlayBackground (int x1 , int y1 , int x2 , int y2 , int red , int green , int blue , int startAlpha , int endAlpha ) {
217
219
Tessellator tessellator = Tessellator .getInstance ();
218
220
BufferBuilder buffer = tessellator .getBufferBuilder ();
219
- minecraft .getTextureManager ().bindTexture (DrawableHelper .BACKGROUND_LOCATION );
221
+ Objects . requireNonNull ( minecraft ) .getTextureManager ().bindTexture (DrawableHelper .BACKGROUND_LOCATION );
220
222
GlStateManager .color4f (1.0F , 1.0F , 1.0F , 1.0F );
221
- float f = 32.0F ;
222
223
buffer .begin (7 , VertexFormats .POSITION_UV_COLOR );
223
224
buffer .vertex (x1 , y2 , 0.0D ).texture (x1 / 32.0D , y2 / 32.0D ).color (red , green , blue , endAlpha ).next ();
224
225
buffer .vertex (x2 , y2 , 0.0D ).texture (x2 / 32.0D , y2 / 32.0D ).color (red , green , blue , endAlpha ).next ();
@@ -230,4 +231,20 @@ protected void overlayBackground(int x1, int y1, int x2, int y2, int red, int gr
230
231
public void setTooltip (String tooltip ) {
231
232
this .tooltip = tooltip ;
232
233
}
234
+
235
+ public ModListEntry getSelectedEntry () {
236
+ return selected ;
237
+ }
238
+
239
+ public void updateSelectedEntry (ModListEntry entry ) {
240
+ this .selected = entry ;
241
+ }
242
+
243
+ public double getScrollPercent () {
244
+ return scrollPercent ;
245
+ }
246
+
247
+ public void updateScrollPercent (double scrollPercent ) {
248
+ this .scrollPercent = scrollPercent ;
249
+ }
233
250
}
0 commit comments