Skip to content

Commit

Permalink
Merge pull request #157 from 3arthqu4ke/1.10.1
Browse files Browse the repository at this point in the history
1.10.1
  • Loading branch information
3arthqu4ke authored Jul 17, 2024
2 parents ed47152 + 4c956b8 commit ff2ddb1
Show file tree
Hide file tree
Showing 11 changed files with 65 additions and 8 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1 +1 @@
project_version=1.10.0
project_version=1.10.1
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
@Getter
@RequiredArgsConstructor
public class Launcher implements HeadlessMc {
public static final String VERSION = "1.10.0";
public static final String VERSION = "1.10.1";

@Delegate
private final HeadlessMc headlessMc;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package me.earth.headlessmc.launcher.launch;

import lombok.CustomLog;
import me.earth.headlessmc.launcher.util.Pair;
import me.earth.headlessmc.launcher.version.Argument;
import me.earth.headlessmc.launcher.version.Library;
import me.earth.headlessmc.launcher.version.Version;
Expand All @@ -9,6 +10,7 @@
import java.util.ArrayList;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;

@CustomLog
class VersionMerger extends DelegatingVersion {
Expand Down Expand Up @@ -43,7 +45,7 @@ public String getAssetsUrl() {

@Override
public List<Library> getLibraries() {
return merge(Version::getLibraries);
return mergeLibraries();
}

@Override
Expand All @@ -68,11 +70,32 @@ private <T> List<T> merge(Function<Version, List<T>> func) {
result.addAll(list);
}
});

return result;
}

private <T> T get(Function<Version, T> func) {
return FamilyUtil.iterateParents(version, () -> null, func);
}

private List<Library> mergeLibraries() {
List<Pair<Library, Version>> result = new ArrayList<>();
FamilyUtil.iterateTopDown(version, v -> {
for (Library library : v.getLibraries()) {
// The behaviour seems to be that child versions overwrite
// libraries of their parent version with the same package and name.
// overwriting.getValue().equals(v) is there because a version itself might
// contain libraries with similar packages and names, like this:
// io.netty:netty-transport-native-epoll:4.1.97.Final:linux-x86_64
// io.netty:netty-transport-native-epoll:4.1.97.Final:linux-aarch_64
result.removeIf(overwriting -> !overwriting.getValue().equals(v)
&& overwriting.getKey().getPackage().equals(library.getPackage())
&& overwriting.getKey().getNameAfterPackage().equals(library.getNameAfterPackage()));
result.add(new Pair<>(library, v));
}
});

return result.stream().map(Pair::getKey).collect(Collectors.toList());
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package me.earth.headlessmc.launcher.util;

import lombok.Data;

@Data
public class Pair<K, V> {
private final K key;
private final V value;

}
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,16 @@ public interface Library extends HasName {

boolean isNativeLibrary();

default String getPackage() {
return getName().split(":")[0];
}

default String getNameAfterPackage() {
return getName().split(":")[1];
}

default String getVersionNumber() {
return getName().split(":")[2];
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,15 @@ class LibraryImpl implements Library {

@Override
public String getPath(OS os) {
String result = getPathWithDefaultPathSeparator(os);
if (File.separatorChar != '/') {
result = result.replace("/", File.separator);
}

return result;
}

private String getPathWithDefaultPathSeparator(OS os) {
if (path != null) {
return path.replace("${arch}", os.isArch() ? "64" : "32");
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,10 @@ public void test() {
OS os = new OS("Windows", OS.Type.WINDOWS, "10", false);
Features feat = Features.EMPTY;
assertEquals(Rule.Action.ALLOW, libs.get(0).getRule().apply(os, feat));
assertEquals("test:test:test", libs.get(0).getName());
assertEquals("testpackage:test:testversion", libs.get(0).getName());
assertEquals("testpackage", libs.get(0).getPackage());
assertEquals("test", libs.get(0).getNameAfterPackage());
assertEquals("testversion", libs.get(0).getVersionNumber());
assertEquals("_download_url", libs.get(0).getUrl(""));
assertFalse(libs.get(0).isNativeLibrary());
}
Expand Down
2 changes: 1 addition & 1 deletion headlessmc-launcher/src/test/resources/lib.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"url": "_download_url"
}
},
"name": "test:test:test",
"name": "testpackage:test:testversion",
"rules": [
{
"action": "allow"
Expand Down
2 changes: 1 addition & 1 deletion headlessmc-scripts/hmc
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
#!/usr/bin/env sh
java -jar headlessmc-launcher-1.10.0.jar --command $@
java -jar headlessmc-launcher-1.10.1.jar --command $@
2 changes: 1 addition & 1 deletion headlessmc-scripts/hmc.bat
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
@echo off
"%JAVA_HOME%\bin\java" -jar headlessmc-launcher-1.10.0.jar --command %*
"%JAVA_HOME%\bin\java" -jar headlessmc-launcher-1.10.1.jar --command %*
2 changes: 1 addition & 1 deletion headlessmc-scripts/hmw
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
#!/bin/bash
# when running in docker on windows bash seems to be at /bin/bash TODO: can we make this one script?
java -jar headlessmc-launcher-1.10.0.jar --command $@
java -jar headlessmc-launcher-1.10.1.jar --command $@

0 comments on commit ff2ddb1

Please sign in to comment.