[FIX] More fixes

This commit is contained in:
Gravit 2020-03-25 13:33:53 +07:00
parent 69bd5f3c66
commit 98b096dff5
No known key found for this signature in database
GPG key ID: 061981E1E85D3216
5 changed files with 33 additions and 26 deletions

View file

@ -228,6 +228,7 @@ private static void launch(ClientProfile profile, ClientLauncherProcess.ClientPa
System.setProperty("minecraft.applet.TargetDirectory", params.clientDir); System.setProperty("minecraft.applet.TargetDirectory", params.clientDir);
} }
Collections.addAll(args, profile.getClientArgs()); Collections.addAll(args, profile.getClientArgs());
profile.pushOptionalClientArgs(args);
List<String> copy = new ArrayList<>(args); List<String> copy = new ArrayList<>(args);
for (int i = 0, l = copy.size(); i < l; i++) { for (int i = 0, l = copy.size(); i < l; i++) {
String s = copy.get(i); String s = copy.get(i);

View file

@ -70,6 +70,7 @@ private void applyClientProfile()
{ {
this.systemClassPath.add(IOHelper.getCodeSource(ClientLauncherEntryPoint.class).toAbsolutePath().toString()); this.systemClassPath.add(IOHelper.getCodeSource(ClientLauncherEntryPoint.class).toAbsolutePath().toString());
Collections.addAll(this.jvmArgs, this.params.profile.getJvmArgs()); Collections.addAll(this.jvmArgs, this.params.profile.getJvmArgs());
this.params.profile.pushOptionalJvmArgs(this.jvmArgs);
this.systemEnv.put("JAVA_HOME", javaDir.toString()); this.systemEnv.put("JAVA_HOME", javaDir.toString());
Collections.addAll(this.systemClassPath, this.params.profile.getAlternativeClassPath()); Collections.addAll(this.systemClassPath, this.params.profile.getAlternativeClassPath());
if (params.ram > 0) { if (params.ram > 0) {

View file

@ -248,20 +248,11 @@ public Collection<String> getShared() {
} }
public void markOptional(String name, OptionalType type) {
OptionalFile file = getOptionalFile(name, type);
if (file == null) {
throw new SecurityException(String.format("Optional %s not found in optionalList", name));
}
markOptional(file);
}
public void markOptional(OptionalFile file) { public void markOptional(OptionalFile file) {
if (file.mark) return; if (file.mark) return;
file.mark = true; file.mark = true;
file.notifyObservers(true); file.watchEvent(true);
if (file.dependencies != null) { if (file.dependencies != null) {
for (OptionalFile dep : file.dependencies) { for (OptionalFile dep : file.dependencies) {
if (dep.dependenciesCount == null) dep.dependenciesCount = new HashSet<>(); if (dep.dependenciesCount == null) dep.dependenciesCount = new HashSet<>();
@ -277,19 +268,10 @@ public void markOptional(OptionalFile file) {
} }
public void unmarkOptional(String name, OptionalType type) {
OptionalFile file = getOptionalFile(name, type);
if (file == null) {
throw new SecurityException(String.format("Optional %s not found in optionalList", name));
}
unmarkOptional(file);
}
public void unmarkOptional(OptionalFile file) { public void unmarkOptional(OptionalFile file) {
if (!file.mark) return; if (!file.mark) return;
file.mark = false; file.mark = false;
file.notifyObservers(false); file.watchEvent(false);
if (file.dependenciesCount != null) { if (file.dependenciesCount != null) {
for (OptionalFile f : file.dependenciesCount) { for (OptionalFile f : file.dependenciesCount) {
if (f.isPreset) continue; if (f.isPreset) continue;

View file

@ -6,11 +6,11 @@
import pro.gravit.utils.helper.LogHelper; import pro.gravit.utils.helper.LogHelper;
import java.io.IOException; import java.io.IOException;
import java.util.Objects; import java.util.*;
import java.util.Observable; import java.util.concurrent.ConcurrentHashMap;
import java.util.Set; import java.util.function.BiConsumer;
public class OptionalFile extends Observable { public class OptionalFile {
@LauncherNetworkAPI @LauncherNetworkAPI
public String[] list; public String[] list;
@LauncherNetworkAPI @LauncherNetworkAPI
@ -18,7 +18,7 @@ public class OptionalFile extends Observable {
@LauncherNetworkAPI @LauncherNetworkAPI
public boolean mark; public boolean mark;
@LauncherNetworkAPI @LauncherNetworkAPI
public final boolean visible = true; public boolean visible = true;
@LauncherNetworkAPI @LauncherNetworkAPI
public String name; public String name;
@LauncherNetworkAPI @LauncherNetworkAPI
@ -125,4 +125,27 @@ public static OptionalType readType(HInput input) throws IOException {
} }
return type; return type;
} }
private volatile transient Collection<BiConsumer<OptionalFile, Boolean>> watchList = null;
public void registerWatcher(BiConsumer<OptionalFile, Boolean> watcher)
{
if(watchList == null) watchList = ConcurrentHashMap.newKeySet();
watchList.add(watcher);
}
public void removeWatcher(BiConsumer<OptionalFile, Boolean> watcher)
{
if(watchList == null) return;
watchList.remove(watcher);
}
public void clearAllWatchers()
{
if(watchList == null) return;
watchList.clear();
}
public void watchEvent(boolean isMark)
{
if(watchList == null) return;
watchList.forEach((e) -> {
e.accept(this, isMark);
});
}
} }

View file

@ -11,7 +11,7 @@ public enum TriggerType
public boolean need = true; public boolean need = true;
public long value; public long value;
public long compareMode = 0; public long compareMode = 0;
boolean isTriggered() public boolean isTriggered()
{ {
long test; long test;
switch (type) switch (type)