Properly reintroduces superclass transformers with
ModLauncher's ITransformer api. There are some quirks with
needing to accept transforming classes multiple times based
on voting contexts. This functions as expected in both
development and production cases from limited testing.
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
A general purpose project to enable SpongeForge and SpongeVanilla
to ship and share the same transformers thereby reducing code
duplication.
Signed-off-by: Gabriel Harris-Rouquette <gabizou@me.com>
To accomplish this, I extend the EventBus class (thank you Forge for at
least not making it final...) and override the appropriate methods.
While still somewhat hacky, I've did my best to keep it to a minimal.
Closes#3530
Signed-off-by: Chris Sanders <zidane@spongepowered.org>
We really need to figure out how to stop Loom from automatically
supplying the Mixin artifact...
Signed-off-by: Chris Sanders <zidane@spongepowered.org>
- Also make the printout from a lack of a mapping to the target class to
make diagnostics faster.
Signed-off-by: Chris Sanders <zidane@spongepowered.org>
This ensures plugins are loaded in an appropriate order, so plugins without dependencies are loaded first, and the algorithm recursively determines the load order based on satisifed dependencies. BEFORE dependencies can be supported by uncommenting the code within the TODOs in DependencyResolver, it treats thouse as "optional after" deps on the target -- though will still fail if the dependency is not there and is not optional.
If we have optional dependencies, there is a chance that a cyclic chain may occur. For optional deps, however, they should be able to handle a dependent plugin being loaded before them because they are already "optional". Thus, if we find that no plugins were loaded in a pass and but there were optional dependencies that could be ignored in that scenario, we attempt to load plugins that only have their compulsory dependencies loaded.
As for plugin-spi 0.3.0, migrate to 'sponge_plugins.json' as the
standard metadata file that will be read by Sponge.
* Need to put hooks subsitution into the right place.
* Syncs ChangeEntityWorldEvent.Pre/Post with Forge equivalents
* Remove hook for the Post event - because it's literally just calling the event - syncing handles it all.
* Ensure setLocation calls the Pre event in the correct place.
* Also ensure it calls the Post event.
This isn't fully realized, we'll need to discuss as a team about if
we'll keep plugins in ../mods going forward. Forge's new mod loading is
much more strict about the jars within that folder.
Signed-off-by: Chris Sanders <zidane@spongepowered.org>