Git Product home page Git Product logo

micromixin-remapper's Introduction

Micromixin-remapper

Micromixin-remapper is an extension to the stianloader-remapper API to provide the ability of remapping Mixins. Do note however that micromixin-remapper takes the liberty of remapping mixin classes the way it chooses - which is why behaviour may change compared to tiny-remapper's mixin extension or the official mixin annotation processor (note that unlike the annotation processor, this library is not capable of generating refmaps. As such, the remapping process is much more similar to tiny-remapper).

The behaviour of the remapper is done on a "best-fit" basis - that is if it cannot find a best fit, it will fail in a fail-fast manner. Such behaviour ensures predictability and lowers user frustration in the long run. This best fit is usually a what I find most logical as a user, though within reason as it's sometimes difficult to impossible to replicate this most logical approach.

Maven

This project is available under https://stianloader.org/maven/ as with the groupId of org.stianloader and an artifactId of micromixin-remapper. Please note that the versions in the maven repository will differ from those declared in the pom of the source code. It's best to look up the version numbers in the index of the repository: https://stianloader.org/maven/org/stianloader/micromixin-remapper/

Supported featureset

The goal of micromixin-remapper is to support everything that is supported by micromixin-transformer. However, at this point in time micromixin-remapper only supports the pure fundementals for the mixin specification. This suffices to remap a large quantity of mixins, and fully supports remapping all known mixins used in galimulator modding. That being said, it may fail for more exotic usecases. If someone is willing enough to report a bug, the missing featureset can be amended though.

Micromixin-remapper is rather likely to struggle with target selectors (often the method element of a mixin handler annotation or the @Desc annotation) when a single selector would apply to multiple targets. The evident workaround is to only target a single method/field/instruction/etc. If it fails due to this issue it will throw an IllegalMixinException noting what steps can be taken and why the issue occured.

Micromixin-remapper is designed to crash in a fail-fast manner if it encounters unknown features, but this behaviour can be overriden through MicromixinRemapper#logUnimplementedFeature(String). That being said, if it encounters features that are known to be extremely difficult to impossible to implement faithfully, micromixin-remapper can crash with an IllegalMixinException. Do note however, that while such behaviour might be intended, it can be changed with appropriate insight in the problem at hand.

micromixin-remapper's People

Contributors

geolykt avatar lassebq avatar

Stargazers

ふらまりん avatar  avatar

Watchers

 avatar

Forkers

lassebq

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.