1616import net .minecraft .client .util .Window ;
1717import net .minecraft .text .TranslatableText ;
1818import net .minecraft .util .Identifier ;
19+ import org .apache .logging .log4j .LogManager ;
20+ import org .apache .logging .log4j .Logger ;
1921import org .jetbrains .annotations .Nullable ;
2022import org .lwjgl .glfw .GLFW ;
2123
22- import java .util .HashSet ;
24+ import java .util .ArrayList ;
25+ import java .util .List ;
2326import java .util .Objects ;
24- import java .util .Set ;
2527
2628public class ResolutionControlMod implements ModInitializer {
2729 public static final String MOD_ID = "resolutioncontrol" ;
30+ public static final String MOD_NAME = "ResolutionControl+" ;
31+
32+ public static final Logger LOGGER = LogManager .getLogger (MOD_NAME );
2833
2934 public static Identifier identifier (String path ) {
3035 return new Identifier (MOD_ID , path );
@@ -56,7 +61,7 @@ public static ResolutionControlMod getInstance() {
5661 @ Nullable
5762 private Framebuffer clientFramebuffer ;
5863
59- private Set <Framebuffer > minecraftFramebuffers ;
64+ private List <Framebuffer > minecraftFramebuffers ;
6065
6166 private Class <? extends SettingsScreen > lastSettingsScreen = MainSettingsScreen .class ;
6267
@@ -165,9 +170,9 @@ public void setShouldScale(boolean shouldScale) {
165170
166171 screenshotFrameBuffer .beginWrite (true );
167172 } else {
168- setClientFramebuffer (getFramebuffer () );
173+ setClientFramebuffer (framebuffer );
169174
170- getFramebuffer () .beginWrite (true );
175+ framebuffer .beginWrite (true );
171176 }
172177 // nothing on the client's framebuffer yet
173178 } else {
@@ -186,7 +191,7 @@ public void setShouldScale(boolean shouldScale) {
186191 screenshot = false ;
187192 resizeMinecraftFramebuffers ();
188193 } else {
189- getFramebuffer () .draw (
194+ framebuffer .draw (
190195 window .getFramebufferWidth (),
191196 window .getFramebufferHeight ()
192197 );
@@ -200,7 +205,7 @@ public void initMinecraftFramebuffers() {
200205 if (minecraftFramebuffers != null ) {
201206 minecraftFramebuffers .clear ();
202207 } else {
203- minecraftFramebuffers = new HashSet <>();
208+ minecraftFramebuffers = new ArrayList <>();
204209 }
205210
206211 minecraftFramebuffers .add (client .worldRenderer .getEntityOutlinesFramebuffer ());
@@ -344,15 +349,26 @@ public void setEnableDynamicResolution(boolean enableDynamicResolution) {
344349 }
345350
346351 public void onResolutionChanged () {
352+ if (getWindow () == null )
353+ return ;
354+
355+ LOGGER .info ("Screen size changed to {}x{}" ,
356+ getWindow ().getFramebufferWidth (), getWindow ().getFramebufferHeight ());
357+
347358 updateFramebufferSize ();
348359 }
349360
350361 public void updateFramebufferSize () {
351- if (framebuffer == null ) return ;
362+ if (framebuffer == null || getWindow ().getFramebufferWidth () == lastWidth
363+ || getWindow ().getFramebufferHeight () == lastHeight )
364+ return ;
352365
353366 resize (framebuffer );
354367 resizeMinecraftFramebuffers ();
355368
369+ lastWidth = getWindow ().getFramebufferWidth ();
370+ lastHeight = getWindow ().getFramebufferHeight ();
371+
356372 calculateSize ();
357373 }
358374
0 commit comments