Fixed crash ran on version not on Modrinth
This commit is contained in:
+7
-1
@@ -257,7 +257,13 @@ public class ClassicConfigGUI
|
||||
// Some textuary stuff
|
||||
0, new ResourceLocation(ModInfo.ID, "textures/gui/changelog.png"), 20, 20,
|
||||
// Create the button and tell it where to go
|
||||
(buttonWidget) -> Objects.requireNonNull(minecraft).setScreen(new ChangelogScreen(this)),
|
||||
(buttonWidget) -> {
|
||||
ChangelogScreen changelogScreen = new ChangelogScreen(this);
|
||||
if (changelogScreen.usable)
|
||||
Objects.requireNonNull(minecraft).setScreen(changelogScreen);
|
||||
else
|
||||
LOGGER.warn("Changelog was not able to open");
|
||||
},
|
||||
// Add a title to the button
|
||||
Translatable(ModInfo.ID + ".updater.title")
|
||||
));
|
||||
|
||||
+34
-4
@@ -44,16 +44,32 @@ public class ChangelogScreen extends DhScreen
|
||||
private List<String> changelog;
|
||||
private TextArea changelogArea;
|
||||
|
||||
public boolean usable = false;
|
||||
|
||||
public ChangelogScreen(Screen parent)
|
||||
{
|
||||
this(parent, null);
|
||||
|
||||
if (!ModrinthGetter.initted) // Make sure the modrinth stuff is initted
|
||||
ModrinthGetter.init();
|
||||
if (!ModrinthGetter.initted) // If its not initted the just close the screen
|
||||
onClose();
|
||||
if (!ModrinthGetter.initted) // If its not initted, then this isnt usable
|
||||
return;
|
||||
|
||||
setupChangelog(ModrinthGetter.getLatestIDForVersion(SingletonInjector.INSTANCE.get(IVersionConstants.class).getMinecraftVersion()));
|
||||
if (!ModrinthGetter.mcVersions.contains(SingletonInjector.INSTANCE.get(IVersionConstants.class).getMinecraftVersion()))
|
||||
return;
|
||||
|
||||
String versionID = ModrinthGetter.getLatestIDForVersion(SingletonInjector.INSTANCE.get(IVersionConstants.class).getMinecraftVersion());
|
||||
if (versionID == null)
|
||||
return;
|
||||
try
|
||||
{
|
||||
setupChangelog(versionID);
|
||||
usable = true;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public ChangelogScreen(Screen parent, String versionID)
|
||||
@@ -62,8 +78,18 @@ public class ChangelogScreen extends DhScreen
|
||||
this.parent = parent;
|
||||
this.versionID = versionID;
|
||||
|
||||
if (versionID != null)
|
||||
|
||||
if (versionID == null)
|
||||
return;
|
||||
try
|
||||
{
|
||||
setupChangelog(versionID);
|
||||
usable = true;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
private void setupChangelog(String versionID)
|
||||
@@ -97,6 +123,8 @@ public class ChangelogScreen extends DhScreen
|
||||
protected void init()
|
||||
{
|
||||
super.init();
|
||||
if (!usable)
|
||||
return;
|
||||
|
||||
|
||||
this.addBtn( // Close
|
||||
@@ -123,6 +151,8 @@ public class ChangelogScreen extends DhScreen
|
||||
#endif
|
||||
{
|
||||
this.renderBackground(matrices); // Render background
|
||||
if (!usable)
|
||||
return;
|
||||
|
||||
// Set the scroll position to the mouse height relative to the screen
|
||||
// This is a bit of a hack as we cannot scroll on this area
|
||||
|
||||
+10
-2
@@ -23,15 +23,23 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
@Mixin(Minecraft.class)
|
||||
public class MixinMinecraft
|
||||
{
|
||||
#if PRE_MC_1_20
|
||||
@Redirect(
|
||||
method = "<init>(Lnet/minecraft/client/main/GameConfig;)V",
|
||||
at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;setScreen(Lnet/minecraft/client/gui/screens/Screen;)V")
|
||||
)
|
||||
public void onOpenScreen(Minecraft instance, Screen guiScreen)
|
||||
{
|
||||
if (!Config.Client.Advanced.AutoUpdater.enableAutoUpdater.get())
|
||||
#else
|
||||
@Redirect(
|
||||
method = "Lnet/minecraft/client/Minecraft;setInitialScreen(Lcom/mojang/realmsclient/client/RealmsClient;Lnet/minecraft/server/packs/resources/ReloadInstance;Lnet/minecraft/client/main/GameConfig$QuickPlayData;)V",
|
||||
at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;setScreen(Lnet/minecraft/client/gui/screens/Screen;)V")
|
||||
)
|
||||
public void onOpenScreen(Minecraft instance, Screen guiScreen)
|
||||
{
|
||||
#endif
|
||||
if (!Config.Client.Advanced.AutoUpdater.enableAutoUpdater.get()) // Don't do anything if the user doesn't want it
|
||||
{
|
||||
// Don't do anything if the user doesn't want it
|
||||
instance.setScreen(guiScreen); // Sets the screen back to the vanilla screen as if nothing ever happened
|
||||
return;
|
||||
}
|
||||
|
||||
+12
-7
@@ -23,15 +23,23 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
@Mixin(Minecraft.class)
|
||||
public class MixinMinecraft
|
||||
{
|
||||
#if PRE_MC_1_20
|
||||
@Redirect(
|
||||
method = "<init>(Lnet/minecraft/client/main/GameConfig;)V",
|
||||
at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;setScreen(Lnet/minecraft/client/gui/screens/Screen;)V")
|
||||
)
|
||||
public void onOpenScreen(Minecraft instance, Screen guiScreen)
|
||||
{
|
||||
if (!Config.Client.Advanced.AutoUpdater.enableAutoUpdater.get())
|
||||
#else
|
||||
@Redirect(
|
||||
method = "Lnet/minecraft/client/Minecraft;setInitialScreen(Lcom/mojang/realmsclient/client/RealmsClient;Lnet/minecraft/server/packs/resources/ReloadInstance;Lnet/minecraft/client/main/GameConfig$QuickPlayData;)V",
|
||||
at = @At(value = "INVOKE", target = "Lnet/minecraft/client/Minecraft;setScreen(Lnet/minecraft/client/gui/screens/Screen;)V")
|
||||
)
|
||||
public void onOpenScreen(Minecraft instance, Screen guiScreen)
|
||||
{
|
||||
#endif
|
||||
if (!Config.Client.Advanced.AutoUpdater.enableAutoUpdater.get()) // Don't do anything if the user doesn't want it
|
||||
{
|
||||
// Don't do anything if the user doesn't want it
|
||||
instance.setScreen(guiScreen); // Sets the screen back to the vanilla screen as if nothing ever happened
|
||||
return;
|
||||
}
|
||||
@@ -49,10 +57,7 @@ public class MixinMinecraft
|
||||
}
|
||||
}
|
||||
|
||||
@Inject(at = @At("HEAD"), method = "close()V", remap = false)
|
||||
public void close(CallbackInfo ci)
|
||||
{
|
||||
SelfUpdater.onClose();
|
||||
}
|
||||
@Inject(at = @At("HEAD"), method = "close()V")
|
||||
public void close(CallbackInfo ci) { SelfUpdater.onClose(); }
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user