Skip to content

Commit

Permalink
Add 1.21-pre3 data to web version info
Browse files Browse the repository at this point in the history
  • Loading branch information
booky10 committed Jun 5, 2024
1 parent be82b5b commit 1ecf037
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -34,12 +34,12 @@ public class IntermediaryMappingProvider extends AbstractMappingProvider {
private MemoryMappingTree mappings;

// only used as a conversion step (mojang + hashed quilt)
IntermediaryMappingProvider(VersionData versionData) {
public IntermediaryMappingProvider(VersionData versionData) {
super(versionData, "intermediary");
}

@Override
protected CompletableFuture<Void> downloadMappings0(Path cacheDir, Executor executor) {
public CompletableFuture<Void> downloadMappings0(Path cacheDir, Executor executor) {
String fabricatedVersion = getFabricatedVersion(this.versionData);

this.path = cacheDir.resolve("intermediary_" + fabricatedVersion + ".gz");
Expand All @@ -64,7 +64,7 @@ protected CompletableFuture<Void> downloadMappings0(Path cacheDir, Executor exec
}

@Override
protected CompletableFuture<Void> parseMappings0(Executor executor) {
public CompletableFuture<Void> parseMappings0(Executor executor) {
return CompletableFuture.supplyAsync(() -> {
MemoryMappingTree mappings = new MemoryMappingTree();

Expand Down
38 changes: 37 additions & 1 deletion web/src/main/java/dev/booky/stackdeobf/web/ApiRoutes.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import dev.booky.stackdeobf.http.HttpUtil;
import dev.booky.stackdeobf.mappings.CachedMappings;
import dev.booky.stackdeobf.mappings.providers.AbstractMappingProvider;
import dev.booky.stackdeobf.mappings.providers.IntermediaryMappingProvider;
import dev.booky.stackdeobf.mappings.providers.MojangMappingProvider;
import dev.booky.stackdeobf.mappings.providers.QuiltMappingProvider;
import dev.booky.stackdeobf.mappings.providers.YarnMappingProvider;
Expand All @@ -15,16 +16,21 @@
import io.javalin.http.BadRequestResponse;
import io.javalin.http.Context;
import io.javalin.http.util.NaiveRateLimit;
import net.fabricmc.mappingio.tree.MappingTree;
import net.fabricmc.mappingio.tree.MemoryMappingTree;

import java.net.URI;
import java.net.http.HttpRequest;
import java.nio.file.Path;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.regex.Pattern;

import static dev.booky.stackdeobf.util.VersionConstants.V18W49A;
import static dev.booky.stackdeobf.util.VersionConstants.V19W36A;
Expand Down Expand Up @@ -98,6 +104,9 @@ private CompletableFuture<CachedMappings> loadMapping(CacheKey key, Executor exe
}
yield new MojangMappingProvider(versionData, environment);
}
case "intermediary" -> {
yield new IntermediaryMappingProvider(versionData);
}
default -> throw new BadRequestResponse("Unsupported mappings specified: " + mappings);
};

Expand Down Expand Up @@ -175,7 +184,34 @@ private CompletableFuture<?> handleDeobfBodyReq(Context ctx) {
long remapStep = System.nanoTime();
ctx.header("Mappings-Time", Long.toString(remapStep - startStep));

String remappedStr = mappings.remapString(ctx.body());
String version = Objects.requireNonNullElse(ctx.queryParam("version"), DEFAULT_MAPPINGS_VERSION);
IntermediaryMappingProvider provider = new IntermediaryMappingProvider(this.versionData.get(Integer.parseInt(version)));
provider.downloadMappings0(CACHE_DIR, Executors.newSingleThreadExecutor())
.thenCompose(a -> provider.parseMappings0(Executors.newSingleThreadExecutor()))
.join();
MemoryMappingTree tree = provider.getMappings();

Pattern pattern = Pattern.compile("[\\n \\[\\]]([a-z]{1,3})[\\n.,:\\[\\]](?!minecraft)([a-z_]{1,3}(?![a-z_]))?");
String replacedStr = pattern.matcher(ctx.body()).replaceAll(result -> {
if (result.group().equals(" by:")) {
return result.group();
}

String className = result.group(1);
String methodName = Objects.requireNonNullElse(result.group(2), "");
String rmethodName = methodName;
if (!methodName.isEmpty()) {
List<? extends MappingTree.MethodMapping> mapped = ((MappingTree.ClassMapping) tree.getClass(className))
.getMethods().stream().filter(mapp -> mapp.getSrcName().equals(methodName)).toList();
if (mapped.size() == 1) {
rmethodName = mapped.get(0).getDstName(0);
}
}
return result.group().replace(className + (methodName.isEmpty() ? "" : "." + methodName),
tree.mapClassName(className, 0).replace('/', '.')
+ (methodName.isEmpty() ? "" : "." + rmethodName));
});
String remappedStr = mappings.remapString(replacedStr);
ctx.result(remappedStr);

long resultStep = System.nanoTime();
Expand Down
16 changes: 16 additions & 0 deletions web/src/main/resources/public/mc_versions.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,20 @@
[
{
"id": "1.21-pre3",
"name": "1.21 Pre-Release 3",
"world_version": 3950,
"series_id": "main",
"protocol_version": 1073742025,
"pack_version": {
"resource": 34,
"data": 48
},
"build_time": "2024-06-05T08:49:05+00:00",
"java_component": "java-runtime-delta",
"java_version": 21,
"stable": false,
"use_editor": false
},
{
"id": "1.21-pre2",
"name": "1.21 Pre-Release 2",
Expand Down

0 comments on commit 1ecf037

Please sign in to comment.