Giter VIP home page Giter VIP logo

gasstation's Introduction

USE UNIMIXINS!

At this point GasStation is obsolete, unmaintained, and has been completely superseeded by UniMixins, which can load all GasStation-requiring mods.

https://github.com/LegacyModdingMC/UniMixins

GasStation

GasStation is library that gives mods the ability of loading mixins without embedding the entire SpongePowered Mixins library inside themselves.

This library is based on SpongeMixins, but with several significant differences:

  • This library provides Mixin 0.8.5 instead of 0.7.11 (new mixin features that are not available in mixin 0.7)
  • MixinExtras is included, which has some neat QoL utilities that can be used by mod developers.
  • The early/late mixin loading feature from mixin-booter-legacy is included as a part of the library
  • Mixingasm is included

GasStation is designed to be 100% backwards compatible with SpongeMixins, and in most cases it's a simple delete and drag&drop upgrade. However, mods designed to run on GasStation might not work on SpongeMixins if they use any of the extra features included in this library.

Integrated into the buildscript of https://github.com/FalsePattern/ExampleMod1.7.10

Important: do not remove the 00 prefix from the jar, it's used for making forge load this mod first before others (alphabetical sorting when loading coremods)

Licenses

GasStation is licensed under LGPLv3.
Full license notice here: https://github.com/FalsePattern/GasStation/blob/master/LICENSE

Embedded code licenses:

SpongePowered Mixins is licensed under MIT, and is compatible with LGPLv3.
Full license notice here: https://github.com/SpongePowered/Mixin/blob/master/LICENSE.txt

MixinExtras is licensed under MIT, and is compatible with LGPLv3.
Full license notice here: https://github.com/LlamaLad7/MixinExtras/blob/master/LICENSE

MixinBooterLegacy is licensed under LGPLv2.1+, and is compatible with LGPLv3.
Full license notice here: https://github.com/tox1cozZ/mixin-booter-legacy/blob/master/LICENSE

SpongeMixins is licensed under MIT, and is compatible with LGPLv3.
Full license notice here: https://github.com/TimeConqueror/SpongeMixins/blob/master/LICENSE

Mixingasm is licensed under Unlicense, and is compatible with LGPLv3.
Full license notice here: https://github.com/makamys/Mixingasm/blob/master/UNLICENSE

gasstation's People

Contributors

falsepattern avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

makamys

gasstation's Issues

Everything breaks when switching from Spongemixins 1.4.0 to Gas Station

After swapping to gas station, I can't launch my game, but obviously I want to use falsetweaks and the updated versions of other mods like archaicfix. I've tried gas station 0.4 and 0.3.5(because I saw makamys using it) here's the log while using 0.3.5:
latest.log
and here's the log using 0.4
latest.log
notably, here you can see it's having a problem with @makamys satchels mod too?
between these i disabled the snowball fix from foamfix error the first log seemed to be having trouble with

ILateMixinLoader not working

ILateMixinLoader is not called because in 1.7.10 ASMDataTable does not collect interface implementations: https://github.com/FalsePattern/GasStation/blob/master/src/main/java/com/falsepattern/gasstation/mixins/mixin/LoadControllerMixin.java#L41.
When I ported the mixinbooter from 1.12.2, I didn't pay attention to it.
I have an idea how to fix this: we need to create an marker annotation that we will add to our ILateMixinLoader implementation class.
If you have a better idea, go ahead and implement it in your mod, and I'll do it in a mixinbooterlegacy.
Thank you.

Plugin Interaction Issue || Crucible (Thermos)

GasStation tries to interact with the Gringotts plugin causing the plugin to crash and disable on startup.

Jar -> Crucible: 5.3

Mods:

  • GasStation (3.5)

Plugins

IN ORDER TO RUN CRUCIBLE for this PLUGIN:

ADD THIS FILE (java.policy) TO DIRECTORY where CRUCIBLE.JAR is located and add
-Djava.security.policy=./java.policy to arguments before the -jar in startup parameters

Gasstation problem with Biome decoration fix which disables already decorating patch

If i use spongemixin + mixingasm i don't get theses warns
biome decoration fix : https://www.curseforge.com/minecraft/mc-mods/biome-decoration-fix/

descriptions :

when i use gasstation with biome decoration fix , i have warnings , the biome decoration fix patch is not applied and so i can still have the already decorating crash

mods list :

00gasstation-mc1.7.10-0.3.5
alreadydecoratingfix-1.0a

crash(exemple) :

crash-2022-10-08_20.55.06-server.txt

warn(exemple) :

[21:51:41] [Client thread/INFO] [STDOUT]: [net.tclproject.mysteriumlib.asm.core.MiscUtils$SystemLogHelper:warning:92]: [WARNING] Can not find the target method of fix: ASMFix: net.minecraft.world.biome.BiomeDecorator#func_150512_a(Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/world/biome/BiomeGenBase;II) -> net.tclproject.mysteriumlib.asm.fixes.MysteriumPatchesFixesH#func_150512_a(Lnet/minecraft/world/biome/BiomeDecorator;Lnet/minecraft/world/World;Ljava/util/Random;Lnet/minecraft/world/biome/BiomeGenBase;II)Z, EnumReturnSetting=ON_TRUE, EnumReturnType=FIX_METHOD_RETURN_VALUE, InjectorFactory: net.tclproject.mysteriumlib.asm.core.FixInserterFactory$OnEnter, CreateMethod = false

logs :

https://paste.ee/p/eybsQ

Non-static inner classes in mixins cause crash due to incorrect ASM shading

Example:

package org.embeddedt.archaicfix.mixins.client.core;

import net.minecraft.client.Minecraft;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;

@Mixin(Minecraft.class)
public abstract class MixinMinecraft {

    @Redirect(method = "runGameLoop", at = @At(value = "INVOKE", target = "Lorg/lwjgl/opengl/Display;isActive()Z", remap = false))
    private boolean alwaysHaveDisplayActive() {
        new TestInnerClass().test();
        return true;
    }
    
    private class TestInnerClass {
        public void test() {
            System.out.println("hi");
        }
    }
}

This works with SpongeMixins 1.2.0, but with GasStation it crashes with the following exception:

Caused by: java.lang.NoSuchMethodError: org.objectweb.asm.commons.Remapper.mapInnerClassName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
	at org.spongepowered.asm.lib.commons.ClassRemapper.visitInnerClass(ClassRemapper.java:204) ~[00gasstation-mc1.7.10-0.3.4.jar:?]

This happens because references to org.objectweb.asm.commons.Remapper are not remapped in ClassRemapper, causing the ASM 5.0.3 version of the class to get used, which does not have the mapInnerClassName method.

The same crash happens when running Hodgepodge with speedupBOPFogHandling enabled, as their mixin also has a non-static inner class.

Full stack trace
java.lang.NoClassDefFoundError: net/minecraft/client/Minecraft$TestInnerClass$c7d2ff69cb2049e09ebbf6b9b094703a
	at net.minecraft.client.Minecraft.redirect$zdc000$alwaysHaveDisplayActive(Minecraft.java:2939) ~[bao.class:?]
	at net.minecraft.client.Minecraft.func_71411_J(Minecraft.java:1009) ~[bao.class:?]
	at net.minecraft.client.Minecraft.func_99999_d(Minecraft.java:898) [bao.class:?]
	at net.minecraft.client.main.Main.main(SourceFile:148) [Main.class:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_332]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_332]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_332]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_332]
	at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.12.jar:?]
	at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.12.jar:?]
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_332]
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_332]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_332]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_332]
	at org.multimc.impl.OneSixLauncher.invokeMain(OneSixLauncher.java:104) [NewLaunch.jar:?]
	at org.multimc.impl.OneSixLauncher.launchWithMainClass(OneSixLauncher.java:175) [NewLaunch.jar:?]
	at org.multimc.impl.OneSixLauncher.launch(OneSixLauncher.java:185) [NewLaunch.jar:?]
	at org.multimc.EntryPoint.listen(EntryPoint.java:127) [NewLaunch.jar:?]
	at org.multimc.EntryPoint.main(EntryPoint.java:57) [NewLaunch.jar:?]
Caused by: java.lang.ClassNotFoundException: net.minecraft.client.Minecraft$TestInnerClass$c7d2ff69cb2049e09ebbf6b9b094703a
	at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191) ~[launchwrapper-1.12.jar:?]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:418) ~[?:1.8.0_332]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[?:1.8.0_332]
	... 19 more
Caused by: java.lang.NoSuchMethodError: org.objectweb.asm.commons.Remapper.mapInnerClassName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
	at org.spongepowered.asm.lib.commons.ClassRemapper.visitInnerClass(ClassRemapper.java:204) ~[00gasstation-mc1.7.10-0.3.4.jar:?]
	at org.spongepowered.asm.mixin.transformer.InnerClassGenerator$InnerClassAdapter.visitInnerClass(InnerClassGenerator.java:249) ~[00gasstation-mc1.7.10-0.3.4.jar:?]
	at org.spongepowered.asm.lib.tree.InnerClassNode.accept(InnerClassNode.java:83) ~[00gasstation-mc1.7.10-0.3.4.jar:?]
	at org.spongepowered.asm.lib.tree.ClassNode.accept(ClassNode.java:438) ~[00gasstation-mc1.7.10-0.3.4.jar:?]
	at org.spongepowered.asm.mixin.transformer.InnerClassGenerator$InnerClassInfo.accept(InnerClassGenerator.java:158) ~[00gasstation-mc1.7.10-0.3.4.jar:?]
	at org.spongepowered.asm.mixin.transformer.InnerClassGenerator.generate(InnerClassGenerator.java:367) ~[00gasstation-mc1.7.10-0.3.4.jar:?]
	at org.spongepowered.asm.mixin.transformer.InnerClassGenerator.generate(InnerClassGenerator.java:354) ~[00gasstation-mc1.7.10-0.3.4.jar:?]
	at org.spongepowered.asm.mixin.transformer.MixinClassGenerator.generateClass(MixinClassGenerator.java:81) ~[00gasstation-mc1.7.10-0.3.4.jar:?]
	at org.spongepowered.asm.mixin.transformer.MixinTransformer.generateClass(MixinTransformer.java:263) ~[00gasstation-mc1.7.10-0.3.4.jar:?]
	at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClassBytes(MixinTransformer.java:199) ~[00gasstation-mc1.7.10-0.3.4.jar:?]
	at org.spongepowered.asm.mixin.transformer.Proxy.transform(Proxy.java:72) ~[00gasstation-mc1.7.10-0.3.4.jar:?]
	at net.minecraft.launchwrapper.LaunchClassLoader.runTransformers(LaunchClassLoader.java:279) ~[launchwrapper-1.12.jar:?]
	at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:176) ~[launchwrapper-1.12.jar:?]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:418) ~[?:1.8.0_332]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[?:1.8.0_332]
	... 19 more

Mod list

archaicfix-mc1.7.10-0.3.2-1-gc3c660f.dirty.jar
falsepatternlib-mc1.7.10-0.10.10.jar
SpongeMixins-1.2.0.jar OR 00gasstation-mc1.7.10-0.3.4.jar

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.