package io.gitlab.jfronny.inceptum.launcher.system.instance; import io.gitlab.jfronny.inceptum.launcher.model.inceptum.ModMeta; import io.gitlab.jfronny.inceptum.launcher.system.source.ModSource; import org.jetbrains.annotations.NotNull; import java.io.IOException; import java.nio.file.Path; import java.util.Set; public abstract class Mod implements Comparable { public abstract String getName(); public abstract String[] getDescription(); public abstract boolean needsInject(); public abstract Path getJarPath(); public abstract Path getMetadataPath(); public abstract void delete() throws IOException; public abstract Path update(ModSource update) throws IOException; public abstract Set getDependencies(); public abstract Set getDependents(); public abstract void removeDependency(Mod dependency) throws IOException; public abstract void removeDependent(Mod dependent) throws IOException; public abstract ModMeta getMetadata(); public abstract boolean isEnabled(); @Override public int compareTo(@NotNull Mod mod) { return getName().compareTo(mod.getName()); } @Override public String toString() { return getName(); } }