mirror of
https://github.com/GravitLauncher/Launcher
synced 2024-11-15 03:31:15 +03:00
Merge branch 'release/5.4.4'
This commit is contained in:
commit
50de0b1e44
9 changed files with 62 additions and 6 deletions
|
@ -6,7 +6,7 @@
|
||||||
public abstract class Component {
|
public abstract class Component {
|
||||||
public static final ProviderMap<Component> providers = new ProviderMap<>();
|
public static final ProviderMap<Component> providers = new ProviderMap<>();
|
||||||
private static boolean registredComp = false;
|
private static boolean registredComp = false;
|
||||||
protected String componentName;
|
protected transient String componentName;
|
||||||
|
|
||||||
public static void registerComponents() {
|
public static void registerComponents() {
|
||||||
if (!registredComp) {
|
if (!registredComp) {
|
||||||
|
|
|
@ -174,7 +174,7 @@ public static class ProguardConf {
|
||||||
"-libraryjars '<java.home>/lib/ext/nashorn.jar'",
|
"-libraryjars '<java.home>/lib/ext/nashorn.jar'",
|
||||||
"-libraryjars '<java.home>/lib/ext/jfxrt.jar'"
|
"-libraryjars '<java.home>/lib/ext/jfxrt.jar'"
|
||||||
};
|
};
|
||||||
private static final char[] chars = "1aAbBcC2dDeEfF3gGhHiI4jJkKl5mMnNoO6pPqQrR7sStT8uUvV9wWxX0yYzZ".toCharArray();
|
private static final char[] chars = "1aAbBcC2dDeEfF3gGhHiI4jJkKlL5mMnNoO6pPqQrR7sStT8uUvV9wWxX0yYzZ".toCharArray();
|
||||||
public final Path proguard;
|
public final Path proguard;
|
||||||
public final Path config;
|
public final Path config;
|
||||||
public final Path mappings;
|
public final Path mappings;
|
||||||
|
|
|
@ -158,7 +158,7 @@ private Result modernPing(HInput input, HOutput output, int protocol) throws IOE
|
||||||
if (statusPacketID != 0x0)
|
if (statusPacketID != 0x0)
|
||||||
throw new IOException("Illegal status packet ID: " + statusPacketID);
|
throw new IOException("Illegal status packet ID: " + statusPacketID);
|
||||||
response = packetInput.readString(PACKET_LENGTH);
|
response = packetInput.readString(PACKET_LENGTH);
|
||||||
LogHelper.debug("Ping response (modern): '%s'", response);
|
LogHelper.dev("Ping response (modern): '%s'", response);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parse JSON response
|
// Parse JSON response
|
||||||
|
|
|
@ -254,6 +254,12 @@ public void updateOptionalGraph() {
|
||||||
file.conflict[i] = getOptionalFile(file.conflictFile[i].name);
|
file.conflict[i] = getOptionalFile(file.conflictFile[i].name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(file.groupFile != null) {
|
||||||
|
file.group = new OptionalFile[file.groupFile.length];
|
||||||
|
for(int i = 0; i < file.groupFile.length; ++i) {
|
||||||
|
file.group[i] = getOptionalFile(file.groupFile[i].name);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -369,6 +375,11 @@ public void verify() {
|
||||||
if (s == null)
|
if (s == null)
|
||||||
throw new IllegalArgumentException(String.format("Found null entry in updateOptional.%s.dependenciesFile", f.name));
|
throw new IllegalArgumentException(String.format("Found null entry in updateOptional.%s.dependenciesFile", f.name));
|
||||||
}
|
}
|
||||||
|
if(f.groupFile != null)
|
||||||
|
for (OptionalDepend s : f.groupFile) {
|
||||||
|
if (s == null)
|
||||||
|
throw new IllegalArgumentException(String.format("Found null entry in updateOptional.%s.groupFile", f.name));
|
||||||
|
}
|
||||||
if (f.triggersList != null) {
|
if (f.triggersList != null) {
|
||||||
for (OptionalTrigger trigger : f.triggersList) {
|
for (OptionalTrigger trigger : f.triggersList) {
|
||||||
if (trigger == null)
|
if (trigger == null)
|
||||||
|
|
|
@ -24,10 +24,14 @@ public class OptionalFile {
|
||||||
@LauncherNetworkAPI
|
@LauncherNetworkAPI
|
||||||
public OptionalDepend[] conflictFile;
|
public OptionalDepend[] conflictFile;
|
||||||
@LauncherNetworkAPI
|
@LauncherNetworkAPI
|
||||||
|
public OptionalDepend[] groupFile;
|
||||||
|
@LauncherNetworkAPI
|
||||||
public transient OptionalFile[] dependencies;
|
public transient OptionalFile[] dependencies;
|
||||||
@LauncherNetworkAPI
|
@LauncherNetworkAPI
|
||||||
public transient OptionalFile[] conflict;
|
public transient OptionalFile[] conflict;
|
||||||
@LauncherNetworkAPI
|
@LauncherNetworkAPI
|
||||||
|
public transient OptionalFile[] group;
|
||||||
|
@LauncherNetworkAPI
|
||||||
public int subTreeLevel = 1;
|
public int subTreeLevel = 1;
|
||||||
@LauncherNetworkAPI
|
@LauncherNetworkAPI
|
||||||
public boolean isPreset;
|
public boolean isPreset;
|
||||||
|
|
|
@ -7,7 +7,9 @@
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.function.BiConsumer;
|
import java.util.function.BiConsumer;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class OptionalView {
|
public class OptionalView {
|
||||||
public Set<OptionalFile> enabled = new HashSet<>();
|
public Set<OptionalFile> enabled = new HashSet<>();
|
||||||
|
@ -25,6 +27,7 @@ public OptionalView(OptionalView view) {
|
||||||
this.enabled = new HashSet<>(view.enabled);
|
this.enabled = new HashSet<>(view.enabled);
|
||||||
this.installInfo = new HashMap<>(view.installInfo);
|
this.installInfo = new HashMap<>(view.installInfo);
|
||||||
this.all = view.all;
|
this.all = view.all;
|
||||||
|
fixDependencies();
|
||||||
}
|
}
|
||||||
|
|
||||||
public OptionalView(ClientProfile profile, OptionalView old) {
|
public OptionalView(ClientProfile profile, OptionalView old) {
|
||||||
|
@ -40,6 +43,7 @@ public OptionalView(ClientProfile profile, OptionalView old) {
|
||||||
disable(newFile, (file, status) -> {});
|
disable(newFile, (file, status) -> {});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
fixDependencies();
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
|
@ -80,6 +84,33 @@ public Set<OptionalAction> getEnabledActions() {
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Needed if dependency/conflict was added after mod declaring it and clients have their profiles with this mod enabled
|
||||||
|
public void fixDependencies() {
|
||||||
|
Set<OptionalFile> disabled = all.stream().filter(t -> !isEnabled(t)).collect(Collectors.toSet());
|
||||||
|
for (OptionalFile file : disabled) {
|
||||||
|
if (file.group != null && Arrays.stream(file.group).noneMatch(this::isEnabled)) {
|
||||||
|
enable(file.group[0], false, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (OptionalFile file : enabled) {
|
||||||
|
if (file.dependencies != null) {
|
||||||
|
for (OptionalFile dep : file.dependencies) {
|
||||||
|
enable(dep, false, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (file.conflict != null) {
|
||||||
|
for (OptionalFile conflict : file.conflict) {
|
||||||
|
disable(conflict, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (file.group != null) {
|
||||||
|
for (OptionalFile member : file.group) {
|
||||||
|
disable(member, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public Set<OptionalAction> getDisabledActions() {
|
public Set<OptionalAction> getDisabledActions() {
|
||||||
Set<OptionalAction> results = new HashSet<>();
|
Set<OptionalAction> results = new HashSet<>();
|
||||||
for (OptionalFile e : all) {
|
for (OptionalFile e : all) {
|
||||||
|
@ -111,6 +142,11 @@ public void enable(OptionalFile file, boolean manual, BiConsumer<OptionalFile, B
|
||||||
disable(conflict, callback);
|
disable(conflict, callback);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(file.group != null) {
|
||||||
|
for(OptionalFile member : file.group) {
|
||||||
|
disable(member, callback);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void disable(OptionalFile file, BiConsumer<OptionalFile, Boolean> callback) {
|
public void disable(OptionalFile file, BiConsumer<OptionalFile, Boolean> callback) {
|
||||||
|
@ -129,6 +165,11 @@ public void disable(OptionalFile file, BiConsumer<OptionalFile, Boolean> callbac
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (file.group != null && file.group.length != 0) {
|
||||||
|
if (Arrays.stream(file.group).noneMatch(this::isEnabled)) {
|
||||||
|
enable(file.group[0], false, callback);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean contains(OptionalFile file, OptionalFile[] array) {
|
private boolean contains(OptionalFile file, OptionalFile[] array) {
|
||||||
|
|
|
@ -6,7 +6,7 @@ public final class Version implements Comparable<Version> {
|
||||||
|
|
||||||
public static final int MAJOR = 5;
|
public static final int MAJOR = 5;
|
||||||
public static final int MINOR = 4;
|
public static final int MINOR = 4;
|
||||||
public static final int PATCH = 3;
|
public static final int PATCH = 4;
|
||||||
public static final int BUILD = 1;
|
public static final int BUILD = 1;
|
||||||
public static final Version.Type RELEASE = Type.STABLE;
|
public static final Version.Type RELEASE = Type.STABLE;
|
||||||
public final int major;
|
public final int major;
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
id 'org.openjfx.javafxplugin' version '0.0.10' apply false
|
id 'org.openjfx.javafxplugin' version '0.0.10' apply false
|
||||||
}
|
}
|
||||||
group = 'pro.gravit.launcher'
|
group = 'pro.gravit.launcher'
|
||||||
version = '5.4.3'
|
version = '5.4.4'
|
||||||
|
|
||||||
apply from: 'props.gradle'
|
apply from: 'props.gradle'
|
||||||
|
|
||||||
|
|
2
modules
2
modules
|
@ -1 +1 @@
|
||||||
Subproject commit d20723ae0e41c7580560a4f9f402699dbce2ae4c
|
Subproject commit f6706567b4d02e802a3d285ca5d1fb0086b6799e
|
Loading…
Reference in a new issue