Skip to content

Api V2 #23

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 14 commits into from
Apr 9, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 9 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
@@ -58,7 +58,7 @@ dependencies {

implementation(include("io.github.llamalad7:mixinextras-fabric:${project.mixin_extras_version}"))
implementation(include("com.github.thecatcore.CursedMixinExtensions:fabric:1.0.0"))
implementation(include("com.github.thecatcore:WFVAIO:1.1.0"))
implementation(include("com.github.thecatcore:WFVAIO:1.2.0"))

testImplementation "net.fabricmc:fabric-loader-junit:${project.loader_version}"
}
@@ -163,3 +163,11 @@ Now allow ModRemappers to disable mixin remapping which is enabled by default fo
embedded.version "spasm", project.spasm_version
}
}

task testmodJar(type: Jar) {
from sourceSets.test.output
destinationDirectory = project.layout.buildDirectory.dir("libs")
archiveClassifier.set("testmod")
}

build.dependsOn testmodJar
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -6,7 +6,7 @@ org.gradle.jvmargs=-Xmx1G
# Fabric Properties
minecraft_version = 1.6.4
yarn_build = 458
loader_version = 0.15.10
loader_version = 0.16.11
fabric_version = 1.9.1+1.12.2
mixin_extras_version=0.2.1
spasm_version=0.2
7 changes: 7 additions & 0 deletions src/main/java/fr/catcore/modremapperapi/utils/Constants.java
Original file line number Diff line number Diff line change
@@ -6,13 +6,20 @@
import java.io.File;

public class Constants {
@Deprecated
public static final File MAIN_FOLDER = CacheUtils.BASE_FOLDER.toFile();
@Deprecated
public static final File VERSIONED_FOLDER = CacheUtils.MAIN_FOLDER.toFile();
@Deprecated
public static final File LIB_FOLDER = CacheUtils.LIBRARY_FOLDER.toFile();

@Deprecated
public static final File EXTRA_MAPPINGS_FILE = CacheUtils.getCachePath("extra_mappings.tiny").toFile();
@Deprecated
public static final File REMAPPED_MAPPINGS_FILE = CacheUtils.getCachePath("remapped_mappings.tiny").toFile();
@Deprecated
public static final File MC_MAPPINGS_FILE = CacheUtils.getCachePath("mc_mappings.tiny").toFile();
@Deprecated
public static final File FULL_MAPPINGS_FILE = CacheUtils.getCachePath("full_mappings.tiny").toFile();

public static final Logger MAIN_LOGGER = Logger.get("ModRemappingAPI");
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
package io.github.fabriccompatibilitylayers.modremappingapi.api.v2;

import io.github.fabriccompatibiltylayers.modremappingapi.impl.context.BaseModRemapperContext;

import java.nio.file.Path;

public interface CacheHandler {
Path resolveTemp(String name);
Path resolveCache(String name);
Path resolveLibrary(String name);

static CacheHandler getCacheHandler(String contextId) {
return BaseModRemapperContext.get(contextId).getCacheHandler();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package io.github.fabriccompatibilitylayers.modremappingapi.api.v2;

public interface MappingBuilder {

ClassMapping addMapping(String sourceName, String targetName);
ClassMapping addMapping(String name);

public interface ClassMapping {
ClassMapping field(String sourceName, String targetName, String sourceDescriptor);
ClassMapping field(String name, String descriptor);
ClassMapping method(String sourceName, String targetName, String sourceDescriptor);
ClassMapping method(String name, String descriptor);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
package io.github.fabriccompatibilitylayers.modremappingapi.api.v2;

import io.github.fabriccompatibiltylayers.modremappingapi.impl.MappingsUtilsImpl;
import org.jetbrains.annotations.Nullable;

public interface MappingUtils {
/**
*
* @param className original class name
* @return remapped class name
*/
static String mapClass(String contextId, String className) {
return MappingsUtilsImpl.mapClass(MappingsUtilsImpl.getMappingsRegistry(contextId), className);
}

/**
*
* @param className remapped class name
* @return original class name
*/
static String unmapClass(String contextId, String className) {
return MappingsUtilsImpl.unmapClass(MappingsUtilsImpl.getMappingsRegistry(contextId), className);
}

/**
*
* @param className original class name
* @param fieldName
* @param fieldDesc
* @return
*/
static ClassMember mapField(String contextId, String className, String fieldName, @Nullable String fieldDesc) {
return MappingsUtilsImpl.mapField(MappingsUtilsImpl.getMappingsRegistry(contextId), className, fieldName, fieldDesc);
}

/**
*
* @param className remapped class name
* @param fieldName
* @param fieldDesc
* @return
*/
static ClassMember mapFieldFromRemappedClass(String contextId, String className, String fieldName, @Nullable String fieldDesc) {
return MappingsUtilsImpl.mapFieldFromRemappedClass(MappingsUtilsImpl.getMappingsRegistry(contextId), className, fieldName, fieldDesc);
}

/**
*
* @param className original class name
* @param methodName
* @param methodDesc
* @return
*/
static ClassMember mapMethod(String contextId, String className, String methodName, String methodDesc) {
return MappingsUtilsImpl.mapMethod(MappingsUtilsImpl.getMappingsRegistry(contextId), className, methodName, methodDesc);
}

/**
*
* @param className remapped class name
* @param methodName
* @param methodDesc
* @return
*/
static ClassMember mapMethodFromRemappedClass(String contextId, String className, String methodName, String methodDesc) {
return MappingsUtilsImpl.mapMethodFromRemappedClass(MappingsUtilsImpl.getMappingsRegistry(contextId), className, methodName, methodDesc);
}

static ClassMember mapField(String contextId, Class<?> owner, String fieldName) {
return MappingsUtilsImpl.mapField(MappingsUtilsImpl.getMappingsRegistry(contextId), owner, fieldName);
}

static ClassMember mapMethod(String contextId, Class<?> owner, String methodName, Class<?>[] parameterTypes) {
return MappingsUtilsImpl.mapMethod(MappingsUtilsImpl.getMappingsRegistry(contextId), owner, methodName, parameterTypes);
}

/**
*
* @param desc original descriptor
* @return remapped descriptor
*/
static String mapDescriptor(String contextId, String desc) {
return MappingsUtilsImpl.mapDescriptor(MappingsUtilsImpl.getMappingsRegistry(contextId), desc);
}

interface ClassMember {
String getName();
@Nullable String getDesc();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package io.github.fabriccompatibilitylayers.modremappingapi.api.v2;

import io.github.fabriccompatibilitylayers.modremappingapi.impl.DefaultMappingsConfig;
import org.jetbrains.annotations.Nullable;

import java.util.Map;
import java.util.function.Supplier;

public interface MappingsConfig {
@Nullable String getSourceNamespace();
@Nullable Supplier<String> getExtraMappings();
Map<String, String> getRenamingMap();
@Nullable String getDefaultPackage();

static MappingsConfig defaultConfig() {
return new DefaultMappingsConfig();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package io.github.fabriccompatibilitylayers.modremappingapi.api.v2;

import org.jetbrains.annotations.Nullable;

import java.nio.file.Path;

public interface ModCandidate {
String getId();
Path getPath();
String getType();
@Nullable String getAccessWidenerPath();
@Nullable ModCandidate getParent();
@Nullable String getVersion();
@Nullable String getParentSubPath();
String getDestinationName();
ModDiscovererConfig getDiscovererConfig();
void setAccessWidener(byte[] data);
byte @Nullable [] getAccessWidener();
void setDestination(Path destination);
@Nullable Path getDestination();
void setPath(Path path);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package io.github.fabriccompatibilitylayers.modremappingapi.api.v2;

import io.github.fabriccompatibilitylayers.modremappingapi.impl.ModDiscovererConfigImpl;

import java.nio.file.Path;
import java.util.List;
import java.util.function.BiFunction;
import java.util.function.Predicate;
import java.util.regex.Pattern;

public interface ModDiscovererConfig {
static Builder builder(String folderName) {
return new ModDiscovererConfigImpl.BuilderImpl(folderName);
}

String getFolderName();
Pattern getFileNameMatcher();
boolean searchRecursively();
Predicate<String> getDirectoryFilter();
Collector getCandidateCollector();
boolean getExportToOriginalFolder();
boolean allowDirectoryMods();

interface Builder {
Builder fileNameMatcher(String pattern);
Builder searchRecursively(boolean searchRecursively);
Builder directoryFilter(Predicate<String> filter);
Builder candidateCollector(Collector collector);
Builder exportToOriginalFolder(boolean exportToOriginalFolder);
Builder allowDirectoryMods(boolean allowDirectoryMods);

ModDiscovererConfig build();
}

@FunctionalInterface
interface Collector {
List<ModCandidate> collect(ModDiscovererConfig config, Path modPath, List<String> entries);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package io.github.fabriccompatibilitylayers.modremappingapi.api.v2;

import net.fabricmc.api.EnvType;

import java.util.List;

public interface ModRemapper {
String getContextId();

void init(CacheHandler cacheHandler);

List<ModDiscovererConfig> getModDiscoverers();
List<ModRemapper> collectSubRemappers(List<ModCandidate> discoveredMods);
MappingsConfig getMappingsConfig();
List<RemappingFlags> getRemappingFlags();
void afterRemapping();
void afterAllRemappings();

void addRemappingLibraries(List<RemapLibrary> libraries, EnvType environment);
void registerAdditionalMappings(MappingBuilder mappingBuilder);
void registerPreVisitors(VisitorInfos visitorInfos);
void registerPostVisitors(VisitorInfos visitorInfos);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package io.github.fabriccompatibilitylayers.modremappingapi.api.v2;

import io.github.fabriccompatibilitylayers.modremappingapi.impl.DefaultRemapLibrary;
import org.jetbrains.annotations.Nullable;

import java.nio.file.Path;
import java.util.List;

public interface RemapLibrary {
@Nullable String getURL();
@Nullable Path getPath();
String getFileName();
List<String> getToExclude();

static RemapLibrary of(Path path, String fileName) {
return new DefaultRemapLibrary(path, fileName);
}

static RemapLibrary of(Path path, String fileName, List<String> toExclude) {
return new DefaultRemapLibrary(path, fileName, toExclude);
}

static RemapLibrary of(String url, String fileName, List<String> toExclude) {
return new DefaultRemapLibrary(url, fileName, toExclude);
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package io.github.fabriccompatibiltylayers.modremappingapi.impl.remapper;
package io.github.fabriccompatibilitylayers.modremappingapi.api.v2;

import org.jetbrains.annotations.ApiStatus;

Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package io.github.fabriccompatibilitylayers.modremappingapi.api.v2;

import org.jetbrains.annotations.Nullable;

public interface VisitorInfos {
void registerSuperType(String target, String replacement);

void registerTypeAnnotation(String target, String replacement);

void registerMethodTypeIns(String target, String replacement);

void registerFieldRef(String targetClass, String targetField, String targetDesc, FullClassMember classMember);

void registerMethodInvocation(String targetClass, String targetMethod, String targetDesc, FullClassMember classMember);

void registerLdc(String targetClass, Object targetLdc, Object replacement);

void registerInstantiation(String target, String replacement);


static FullClassMember classMember(String owner, String name, @Nullable String desc, @Nullable Boolean isStatic) {
return new io.github.fabriccompatibiltylayers.modremappingapi.api.v1.VisitorInfos.FullClassMember(owner, name, desc, isStatic);
}

static FullClassMember classMember(String owner, String name, @Nullable Boolean isStatic) {
return new io.github.fabriccompatibiltylayers.modremappingapi.api.v1.VisitorInfos.FullClassMember(owner, name, isStatic);
}

interface FullClassMember extends MappingUtils.ClassMember {
String getOwner();
@Nullable Boolean isStatic();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package io.github.fabriccompatibilitylayers.modremappingapi.impl;

import io.github.fabriccompatibilitylayers.modremappingapi.api.v2.MappingsConfig;
import org.jetbrains.annotations.Nullable;

import java.util.HashMap;
import java.util.Map;
import java.util.function.Supplier;

public class DefaultMappingsConfig implements MappingsConfig {
@Override
public String getSourceNamespace() {
return "official";
}

@Override
public Supplier<String> getExtraMappings() {
return null;
}

@Override
public Map<String, String> getRenamingMap() {
return new HashMap<>();
}

@Override
public @Nullable String getDefaultPackage() {
return null;
}
}
Loading