diff options
| author | Linnea Gräf <nea@nea.moe> | 2024-04-12 14:32:41 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-04-12 14:32:41 +0200 |
| commit | afd3f0f861ebe7f8957eb6abc6e19f92c7b5896a (patch) | |
| tree | 0e7990ed1e7083dd4da5f90a842d0122919f8c7c /src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/updater/UpdateLoader.java | |
| parent | a4a1c15a0b0de01e862c0f11882b45fee2c0cca7 (diff) | |
| download | notenoughupdates-afd3f0f861ebe7f8957eb6abc6e19f92c7b5896a.tar.gz notenoughupdates-afd3f0f861ebe7f8957eb6abc6e19f92c7b5896a.tar.bz2 notenoughupdates-afd3f0f861ebe7f8957eb6abc6e19f92c7b5896a.zip | |
Add in-game updater (#1050)
Co-authored-by: IRONM00N <64110067+IRONM00N@users.noreply.github.com>
Diffstat (limited to 'src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/updater/UpdateLoader.java')
| -rw-r--r-- | src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/updater/UpdateLoader.java | 141 |
1 files changed, 0 insertions, 141 deletions
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/updater/UpdateLoader.java b/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/updater/UpdateLoader.java deleted file mode 100644 index 1a1a8504..00000000 --- a/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/updater/UpdateLoader.java +++ /dev/null @@ -1,141 +0,0 @@ -/* - * Copyright (C) 2022 NotEnoughUpdates contributors - * - * This file is part of NotEnoughUpdates. - * - * NotEnoughUpdates is free software: you can redistribute it - * and/or modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation, either - * version 3 of the License, or (at your option) any later version. - * - * NotEnoughUpdates is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with NotEnoughUpdates. If not, see <https://www.gnu.org/licenses/>. - */ - -package io.github.moulberry.notenoughupdates.miscfeatures.updater; - -import io.github.moulberry.notenoughupdates.util.NetUtils; -import net.minecraft.client.Minecraft; -import org.apache.commons.io.IOUtils; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.URL; -import java.nio.file.Files; -import java.util.ArrayList; -import java.util.List; - -abstract class UpdateLoader { - - enum State { - NOTHING, DOWNLOAD_STARTED, DOWNLOAD_FINISHED, INSTALLED, FAILED - } - - URL url; - AutoUpdater updater; - - State state = State.NOTHING; - - UpdateLoader(AutoUpdater updater, URL url) { - this.url = url; - this.updater = updater; - } - - public State getState() { - return state; - } - - public void setState(State state) { - this.state = state; - } - - public URL getUrl() { - return url; - } - - public void scheduleDownload() { - state = State.DOWNLOAD_STARTED; - try { - NetUtils.downloadAsync(url, File.createTempFile("NotEnoughUpdates-update", ".jar")) - .handle( - (f, exc) -> { - if (exc != null) { - state = State.FAILED; - updater.logProgress("§cError while downloading. Check your logs for more info."); - exc.printStackTrace(); - return null; - } - state = State.DOWNLOAD_FINISHED; - - updater.logProgress("Download completed. Trying to install"); - launchUpdate(f); - return null; - }); - } catch (IOException e) { - state = State.FAILED; - updater.logProgress("§cError while creating download. Check your logs for more info."); - e.printStackTrace(); - } - } - - public abstract void greet(); - - public void launchUpdate(File file) { - - if (state != State.DOWNLOAD_FINISHED) { - updater.logProgress("§cUpdate is invalid state " + state + " to start update."); - state = State.FAILED; - return; - } - File mcDataDir = new File(Minecraft.getMinecraft().mcDataDir, "mods"); - if (!mcDataDir.exists() || !mcDataDir.isDirectory() || !mcDataDir.canRead()) { - updater.logProgress("§cCould not find mods folder. Searched: " + mcDataDir); - state = State.FAILED; - return; - } - ArrayList<File> toDelete = new ArrayList<>(); - File[] modFiles = mcDataDir.listFiles(); - if (modFiles == null) { - updater.logProgress("§cCould not list minecraft mod folder (" + mcDataDir + ")"); - state = State.FAILED; - return; - } - for (File sus : modFiles) { - if (sus.getName().endsWith(".jar")) { - if (updater.isNeuJar(sus)) { - updater.logProgress("Found old NEU file: " + sus + ". Deleting later."); - toDelete.add(sus); - } - } - } - File dest = new File(mcDataDir, file.getName()); - try ( - InputStream i = Files.newInputStream(file.toPath()); - OutputStream o = Files.newOutputStream(dest.toPath()); - ) { - IOUtils.copyLarge(i, o); - } catch (IOException e) { - e.printStackTrace(); - updater.logProgress( - "§cFailed to copy release JAR. Not making any changes to your mod folder. Consult your logs for more info."); - state = State.FAILED; - } - deleteFiles(toDelete); - if (state != State.FAILED) { - state = State.INSTALLED; - updater.logProgress("Update successful. Thank you for your time."); - return; - } - updater.logProgress("§cFailure to delete some files. Please delte the old NEU version manually from your mods folder."); - } - - public abstract void deleteFiles(List<File> toDelete); - -} |
