added update checker toast
This commit is contained in:
@@ -47,6 +47,7 @@ processResources {
|
|||||||
expand "version": project.version
|
expand "version": project.version
|
||||||
|
|
||||||
filter { line -> line.replace("@mc_version@", project.minecraft_version) }
|
filter { line -> line.replace("@mc_version@", project.minecraft_version) }
|
||||||
|
filter { line -> line.replace("@gh_hash@", System.getenv("GITHUB_SHA") ?: "unknown") }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
25
src/main/java/anticope/rejects/mixin/TitleScreenMixin.java
Normal file
25
src/main/java/anticope/rejects/mixin/TitleScreenMixin.java
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
package anticope.rejects.mixin;
|
||||||
|
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
|
import net.minecraft.client.gui.screen.TitleScreen;
|
||||||
|
import net.minecraft.client.util.math.MatrixStack;
|
||||||
|
|
||||||
|
import anticope.rejects.utils.RejectsConfig;
|
||||||
|
import anticope.rejects.utils.UpdateUtil;
|
||||||
|
import meteordevelopment.meteorclient.utils.network.MeteorExecutor;
|
||||||
|
|
||||||
|
@Mixin(value = TitleScreen.class)
|
||||||
|
public class TitleScreenMixin {
|
||||||
|
@Inject(method = "render", at = @At("TAIL"))
|
||||||
|
private void onRender(MatrixStack matrices, int mouseX, int mouseY, float delta, CallbackInfo info) {
|
||||||
|
if (RejectsConfig.get().checkForUpdates) {
|
||||||
|
MeteorExecutor.execute(() -> {
|
||||||
|
UpdateUtil.checkUpdate();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
package anticope.rejects.utils;
|
package anticope.rejects.utils;
|
||||||
|
|
||||||
|
import meteordevelopment.meteorclient.settings.BoolSetting;
|
||||||
import meteordevelopment.meteorclient.settings.EnumSetting;
|
import meteordevelopment.meteorclient.settings.EnumSetting;
|
||||||
import meteordevelopment.meteorclient.settings.ModuleListSetting;
|
import meteordevelopment.meteorclient.settings.ModuleListSetting;
|
||||||
import meteordevelopment.meteorclient.settings.Setting;
|
import meteordevelopment.meteorclient.settings.Setting;
|
||||||
@@ -33,6 +34,14 @@ public class ConfigModifier {
|
|||||||
.build()
|
.build()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
public final Setting<Boolean> checkForUpdates = sgRejects.add(new BoolSetting.Builder()
|
||||||
|
.name("check-for-updates")
|
||||||
|
.description("Show toast on title screen when new update is available.")
|
||||||
|
.defaultValue(RejectsConfig.get().checkForUpdates)
|
||||||
|
.onChanged(v -> RejectsConfig.get().checkForUpdates = v)
|
||||||
|
.build()
|
||||||
|
);
|
||||||
|
|
||||||
public static ConfigModifier get() {
|
public static ConfigModifier get() {
|
||||||
if (INSTANCE == null) INSTANCE = new ConfigModifier();
|
if (INSTANCE == null) INSTANCE = new ConfigModifier();
|
||||||
return INSTANCE;
|
return INSTANCE;
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ public class RejectsConfig extends System<RejectsConfig> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public HttpAllowed httpAllowed = HttpAllowed.Everything;
|
public HttpAllowed httpAllowed = HttpAllowed.Everything;
|
||||||
|
public boolean checkForUpdates = true;
|
||||||
public Set<String> hiddenModules = new HashSet<String>();
|
public Set<String> hiddenModules = new HashSet<String>();
|
||||||
|
|
||||||
public RejectsConfig() {
|
public RejectsConfig() {
|
||||||
@@ -65,6 +66,7 @@ public class RejectsConfig extends System<RejectsConfig> {
|
|||||||
public NbtCompound toTag() {
|
public NbtCompound toTag() {
|
||||||
NbtCompound tag = new NbtCompound();
|
NbtCompound tag = new NbtCompound();
|
||||||
tag.putString("httpAllowed", httpAllowed.toString());
|
tag.putString("httpAllowed", httpAllowed.toString());
|
||||||
|
tag.putBoolean("checkForUpdates", checkForUpdates);
|
||||||
|
|
||||||
NbtList modulesTag = new NbtList();
|
NbtList modulesTag = new NbtList();
|
||||||
for (String module : hiddenModules) modulesTag.add(NbtString.of(module));
|
for (String module : hiddenModules) modulesTag.add(NbtString.of(module));
|
||||||
@@ -76,6 +78,7 @@ public class RejectsConfig extends System<RejectsConfig> {
|
|||||||
@Override
|
@Override
|
||||||
public RejectsConfig fromTag(NbtCompound tag) {
|
public RejectsConfig fromTag(NbtCompound tag) {
|
||||||
httpAllowed = HttpAllowed.valueOf(tag.getString("httpAllowed"));
|
httpAllowed = HttpAllowed.valueOf(tag.getString("httpAllowed"));
|
||||||
|
checkForUpdates = !tag.contains("checkForUpdates") || tag.getBoolean("checkForUpdates");
|
||||||
|
|
||||||
NbtList valueTag = tag.getList("hiddenModules", 8);
|
NbtList valueTag = tag.getList("hiddenModules", 8);
|
||||||
for (NbtElement tagI : valueTag) {
|
for (NbtElement tagI : valueTag) {
|
||||||
|
|||||||
36
src/main/java/anticope/rejects/utils/UpdateUtil.java
Normal file
36
src/main/java/anticope/rejects/utils/UpdateUtil.java
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
package anticope.rejects.utils;
|
||||||
|
|
||||||
|
import com.google.gson.JsonObject;
|
||||||
|
import net.minecraft.item.Items;
|
||||||
|
|
||||||
|
import net.fabricmc.loader.api.FabricLoader;
|
||||||
|
import anticope.rejects.MeteorRejectsAddon;
|
||||||
|
import meteordevelopment.meteorclient.utils.network.Http;
|
||||||
|
import meteordevelopment.meteorclient.utils.render.MeteorToast;
|
||||||
|
|
||||||
|
import static meteordevelopment.meteorclient.MeteorClient.mc;
|
||||||
|
|
||||||
|
public class UpdateUtil {
|
||||||
|
private static boolean firstTimeTitleScreen = true;
|
||||||
|
private static final String TAGNAME = "latest-1.18";
|
||||||
|
|
||||||
|
public static void checkUpdate() {
|
||||||
|
if (!firstTimeTitleScreen) return;
|
||||||
|
firstTimeTitleScreen = false;
|
||||||
|
|
||||||
|
MeteorRejectsAddon.LOG.info("Checking for Meteor Rejects update...");
|
||||||
|
|
||||||
|
String gitHash = FabricLoader
|
||||||
|
.getInstance()
|
||||||
|
.getModContainer("meteor-rejects")
|
||||||
|
.get().getMetadata()
|
||||||
|
.getCustomValue("updater:sha")
|
||||||
|
.getAsString().trim();
|
||||||
|
|
||||||
|
JsonObject tag = Http.get("https://api.github.com/repos/AntiCope/meteor-rejects/git/ref/tags/"+TAGNAME).sendJson(JsonObject.class);
|
||||||
|
if (tag.get("object").getAsJsonObject().get("sha").getAsString().trim() == gitHash) return;
|
||||||
|
|
||||||
|
mc.getToastManager().add(new MeteorToast(Items.BARRIER, "New Rejects update.", "Download it from Github", 8000));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -93,7 +93,7 @@ public class Seeds extends System<Seeds> {
|
|||||||
try {
|
try {
|
||||||
return Long.parseLong(inSeed);
|
return Long.parseLong(inSeed);
|
||||||
} catch (NumberFormatException e) {
|
} catch (NumberFormatException e) {
|
||||||
return inSeed.hashCode();
|
return inSeed.strip().hashCode();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -28,7 +28,8 @@
|
|||||||
"meteor-rejects-meteor.mixins.json"
|
"meteor-rejects-meteor.mixins.json"
|
||||||
],
|
],
|
||||||
"custom": {
|
"custom": {
|
||||||
"meteor-client:color": "227,0,0"
|
"meteor-client:color": "227,0,0",
|
||||||
|
"updater:sha": "@gh_hash@"
|
||||||
},
|
},
|
||||||
"depends": {
|
"depends": {
|
||||||
"java": ">=16",
|
"java": ">=16",
|
||||||
|
|||||||
@@ -12,7 +12,8 @@
|
|||||||
"LivingEntityRendererMixin",
|
"LivingEntityRendererMixin",
|
||||||
"MinecraftClientMixin",
|
"MinecraftClientMixin",
|
||||||
"StructureVoidBlockMixin",
|
"StructureVoidBlockMixin",
|
||||||
"ToastManagerMixin"
|
"ToastManagerMixin",
|
||||||
|
"TitleScreenMixin"
|
||||||
],
|
],
|
||||||
"injectors": {
|
"injectors": {
|
||||||
"defaultRequire": 1
|
"defaultRequire": 1
|
||||||
|
|||||||
Reference in New Issue
Block a user