Skip to content

Commit

Permalink
misc cleanup
Browse files Browse the repository at this point in the history
  • Loading branch information
ZZZank committed May 29, 2024
1 parent 0877a20 commit ed4fea0
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 74 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public abstract class DirectionMixin {
public abstract float toYRot();

public float getPitch() {
Object o = this;
final Object o = this;
return o == Direction.UP ? 180F : o == Direction.DOWN ? 0F : 90F;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,36 +8,9 @@
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.StandardCharsets;
import java.util.*;

public class RemappingHelper {
public static final Logger LOGGER = LogManager.getLogger("Rhino Script Remapper");
private static final Map<String, Optional<Class<?>>> CLASS_CACHE = new HashMap<>();

private static Optional<Class<?>> loadClass(String name) {
return switch (name) {
case "void" -> Optional.of(Void.TYPE);
case "boolean" -> Optional.of(Boolean.TYPE);
case "char" -> Optional.of(Character.TYPE);
case "byte" -> Optional.of(Byte.TYPE);
case "short" -> Optional.of(Short.TYPE);
case "int" -> Optional.of(Integer.TYPE);
case "long" -> Optional.of(Long.TYPE);
case "float" -> Optional.of(Float.TYPE);
case "double" -> Optional.of(Double.TYPE);
default -> {
try {
yield Optional.of(Class.forName(name));
} catch (Exception ex) {
yield Optional.empty();
}
}
};
}

public static Optional<Class<?>> getClass(String name) {
return CLASS_CACHE.computeIfAbsent(name, RemappingHelper::loadClass);
}
public static final Logger LOGGER = LogManager.getLogger("Rhizo Java Remapper");

public static Reader createUrlReader(String url) throws IOException {
LOGGER.info("Fetching {}...", url);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import dev.latvian.mods.rhino.mod.util.JsonUtils;
import dev.latvian.mods.rhino.util.JavaPortingHelper;
import dev.latvian.mods.rhino.util.remapper.RemapperException;
import lombok.val;
import net.neoforged.srgutils.IMappingFile;
import net.neoforged.srgutils.IRenamer;
import org.jetbrains.annotations.NotNull;
Expand Down Expand Up @@ -38,11 +39,11 @@ public abstract class RhizoMappingGen {
public static void generate(@NotNull String mcVersion, NativeMappingLoader callback) {
try {
//mapped -> obf
var vanillaMapping = loadVanilla(mcVersion);
val vanillaMapping = loadVanilla(mcVersion);
//obf -> in-game
var renamer = callback.toRenamer(callback.load(mcVersion, vanillaMapping));
val renamer = callback.toRenamer(callback.load(mcVersion, vanillaMapping));
//in-game -> mapped
var target = vanillaMapping.rename(renamer).reverse();
val target = vanillaMapping.rename(renamer).reverse();
//write mapping
writeRhizoMapping(JavaPortingHelper.ofPath(MAPPING_FILENAME), target, mcVersion);
} catch (Exception e) {
Expand All @@ -56,37 +57,37 @@ public static void generate(@NotNull String mcVersion, NativeMappingLoader callb
* write mapping data into specified file path, in a special format
*/
private static void writeRhizoMapping(@NotNull Path path, @NotNull IMappingFile mapping, @NotNull String mcVersion) throws IOException {
var out = new GZIPOutputStream(Files.newOutputStream(path));
val out = new GZIPOutputStream(Files.newOutputStream(path));
RemappingHelper.LOGGER.info("writing Rhizo mapping.");
//metadata
out.write(MAPPING_MARK); //minecraft mapping mark
out.write(MAPPING_VERSION); //mapping version
MappingIO.writeUtf(out, mcVersion); //minecraft version
MappingIO.writeUtf(out, SKIP_MARK); //skip mark
//class
var classes = mapping.getClasses();
val classes = mapping.getClasses();
MappingIO.writeVarInt(out, classes.size());
for (IMappingFile.IClass clazz : classes) {
if (isAnonymousClass(clazz.getMapped())) {
MappingIO.writeUtf(out, SKIP_MARK);
continue;
}
var originalDot = clazz.getOriginal().replace('/', '.');
var mappedDot = clazz.getMapped().replace('/', '.');
val originalDot = clazz.getOriginal().replace('/', '.');
val mappedDot = clazz.getMapped().replace('/', '.');
MappingIO.writeUtf(out, originalDot);
MappingIO.writeUtf(out, mappedDot);
RemappingHelper.LOGGER.info("class: '{}' -> '{}'", originalDot, mappedDot);
//method
var methods = clazz.getMethods();
val methods = clazz.getMethods();
MappingIO.writeVarInt(out, methods.size());
for (IMappingFile.IMethod method : methods) {
var original = method.getOriginal();
var mapped = method.getMapped();
val original = method.getOriginal();
val mapped = method.getMapped();
if (mapped.startsWith("lambda$") || mapped.startsWith("<") || original.equals(mapped)) {
MappingIO.writeUtf(out, SKIP_MARK);
continue;
}
var paramDesc = method.getDescriptor().substring(0, method.getDescriptor().lastIndexOf(')'));
val paramDesc = method.getDescriptor().substring(0, method.getDescriptor().lastIndexOf(')'));
RemappingHelper.LOGGER.info(
" method: '{}' -> '{}', with descriptor '{}'", original, mapped, paramDesc
);
Expand All @@ -95,11 +96,11 @@ private static void writeRhizoMapping(@NotNull Path path, @NotNull IMappingFile
MappingIO.writeUtf(out, mapped);
}
//field
var fields = clazz.getFields();
val fields = clazz.getFields();
MappingIO.writeVarInt(out, fields.size());
for (IMappingFile.IField field : fields) {
var original = field.getOriginal();
var mapped = field.getMapped();
val original = field.getOriginal();
val mapped = field.getMapped();
if (mapped.equals(original)) {
MappingIO.writeUtf(out, SKIP_MARK);
continue;
Expand All @@ -117,7 +118,7 @@ private static void writeRhizoMapping(@NotNull Path path, @NotNull IMappingFile
* @return true if the class that the name represents is an anonymous class
*/
private static boolean isAnonymousClass(final String className) {
var lastIndex = className.lastIndexOf('$');
val lastIndex = className.lastIndexOf('$');
if (lastIndex < 0) {
return false;
}
Expand All @@ -130,7 +131,7 @@ private static boolean isAnonymousClass(final String className) {
private static IMappingFile loadVanilla(@NotNull String mcVersion) throws IOException {
//find info for provided `mcVersion`
JsonObject verInfo = null;
try (var metaInfoReader = RemappingHelper.createUrlReader(
try (val metaInfoReader = RemappingHelper.createUrlReader(
"https://piston-meta.mojang.com/mc/game/version_manifest_v2.json")) {
for (var metaInfo : JsonUtils.GSON.fromJson(metaInfoReader, JsonObject.class)
.get("versions")
Expand Down Expand Up @@ -165,7 +166,6 @@ private static IMappingFile loadVanilla(@NotNull String mcVersion) throws IOExce
* <p>
* the mapping file returned by {@link NativeMappingLoader#load(String, IMappingFile)} will then be passed to
* {@link NativeMappingLoader#toRenamer(IMappingFile)} for renamer generation
*
*/
public interface NativeMappingLoader {
/**
Expand All @@ -186,18 +186,18 @@ public String rename(IMappingFile.IClass value) {
}

public String rename(IMappingFile.IField value) {
IMappingFile.IClass cls = link.getClass(value.getParent().getMapped());
val cls = link.getClass(value.getParent().getMapped());
return cls == null ? value.getMapped() : cls.remapField(value.getMapped());
}

public String rename(IMappingFile.IMethod value) {
IMappingFile.IClass cls = link.getClass(value.getParent().getMapped());
val cls = link.getClass(value.getParent().getMapped());
return cls == null ? value.getMapped() : cls.remapMethod(value.getMapped(), value.getMappedDescriptor());
}

public String rename(IMappingFile.IParameter value) {
IMappingFile.IMethod mtd = value.getParent();
IMappingFile.IClass cls = link.getClass(mtd.getParent().getMapped());
val cls = link.getClass(mtd.getParent().getMapped());
mtd = cls == null ? null : cls.getMethod(mtd.getMapped(), mtd.getMappedDescriptor());
return mtd == null ? value.getMapped() : mtd.remapParameter(value.getIndex(), value.getMapped());
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
package dev.latvian.mods.rhino.util.remapper;


import dev.latvian.mods.rhino.util.JavaPortingHelper;

import java.lang.reflect.Field;
import java.lang.reflect.Method;

Expand All @@ -17,29 +15,6 @@ static boolean valid(String mapped) {
*/
String NOT_REMAPPED = "";

static String getTypeName(String type) {
int array = 0;
while (type.endsWith("[]")) {
array++;
type = type.substring(0, type.length() - 2);
}

String t = switch (type) {
case "boolean" -> "Z";
case "byte" -> "B";
case "short" -> "S";
case "int" -> "I";
case "long" -> "J";
case "float" -> "F";
case "double" -> "D";
case "char" -> "C";
case "void" -> "V";
default -> "L" + type.replace('.', '/') + ";";
};

return array == 0 ? t : (JavaPortingHelper.repeat("[", array) + t);
}

/**
* @return a string holding remapped class name, or an empty string if not remapped
*/
Expand Down

0 comments on commit ed4fea0

Please sign in to comment.