Mixin 0.8 library for 1.7.10 that works in place of other loaders too.

Overview

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

Comments
  • Everything breaks when switching from Spongemixins 1.4.0 to Gas Station

    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

    opened by brandyyn 11
  • Gasstation problem with Biome decoration fix which disables already decorating patch

    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

    opened by quentin452 4
  • Forge Essentials crash

    Forge Essentials crash

    Attempting to load GasStation with Forge Essentials crashes, with it complaining about SpongeMixins being missing: https://pastebin.com/a6XXhAy0 EDIT: Apparently Enter makes Github post these things. Who knew? Also why?

    opened by DarianLStephens 1
  • Plugin Interaction Issue || Crucible (Thermos)

    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

    • Gringotts (https://dev.bukkit.org/projects/gringotts/files/921446) v2.3 to v2.9
    • Vault (https://dev.bukkit.org/projects/vault/files/792396) v1.4.1

    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

    opened by KAMKEEL 1
  • Non-static inner classes in mixins cause crash due to incorrect ASM shading

    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
    
    opened by makamys 1
  • ILateMixinLoader not working

    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.

    opened by tox1cozZ 0
  • Reimplement dev ModDiscovererMixin in more lightweight way

    Reimplement dev ModDiscovererMixin in more lightweight way

    CoreTweaks has a patch that redirects knownLibraries.contains() in ModDiscoverer#findClasspathMods to a method does a much better job at filtering out libraries. This typically reduces startup time by 1-2 seconds. Only, it's incompatible with the way GasStation's ModDiscovererMixin is implemented.

    This PR reimplements it in a more compatible (and imo clean) way. Functionally it still does the same thing.

    opened by makamys 0
Releases(0.5.1)
Owner
FalsePattern
yeah
FalsePattern
r/place live in Minecraft

r/place in Minecraft r/place has ended. Thank you for the support! If you have any questions feel free to contact me on Discord: Cerus#5149 Unofficial

Maximilian Dorn 18 Aug 24, 2022
A mixin based ghost client for Minecraft 1.8.9 built on Minecraft Forge.

A mixin based ghost client for Minecraft 1.8.9 built on Minecraft Forge. Originally designed as a MCP Client (called Tephra), it is now being ported t

Peanut 130 Jan 1, 2023
A simple mixin client base for beginners.

ClientBase A simple mixin client base for beginners. I made this via a video on youtube in around 20 minutes. https://www.youtube.com/watch?v=QN1oiW2r

frosty 13 Nov 16, 2022
A free mixin-based injection hacked-client for Minecraft using Minecraft Forge.

Custom LiquidBounce 1.8.9 build that aims to improve original visuals and bypasses, along with built-in ViaVersion to help you change from 1.8 to 1.17.1 without creating any other version branch.

epic group of paster 123 Jan 2, 2023
A free mixin-based injection hacked client for Minecraft 1.8.9

LiquidCat is a free and open source mixin-based injection hacked client using Forge for Minecraft 1.8.9

null 27 Nov 18, 2022
Fabric mod where anyone can PR anything, concerning or not. I'll merge everything as soon as it works.

Guess What Will Happen In This Fabric mod where anyone can PR anything, concerning or not (no NSFW content). I'll merge everything as soon as it works

anatom 65 Dec 25, 2022
A fabric mod that works with the URMW API

URMW-Helper-Mod URMW-Helper is a fully client side Fabric mod that works with the URMW API. The goal of the mod is to get rid of the awkward switching

null 1 Jan 26, 2022
This minecraft plugin adds @a, @p, and @r to EssentialsX Commands! Works with command block and console aswell!

EssentialsX-Target-Selectors This minecraft plugin adds @a, @p, and @r to EssentialsX Commands! Works with command block and console aswell! Usage: Ju

null 6 Dec 7, 2022
Minecraft Spigot 1.16 - plugin for compass tracking other players. MVP contains tracking closest player available.

Compass Tracker Overview Minecraft Spigot 1.16 Plugin. Plugin sets compass target to closest player in the overworld. Created to use with my friends t

INNIX 3 Nov 15, 2021
Prevent your mods being stolen onto 9minecraft and other reposting sites! Forces the user to download from curseforge, modrinth or a trusted site.

Prevent users from downloading your mods from reposting sites or malicious providers. Powered by the reposting site list from StopModReposts Important

i-am-cal 17 Sep 26, 2021
Prevent your mods being stolen onto 9minecraft and other reposting sites! Redirects the user to download from curseforge, modrinth or a trusted site.

Prevent users from downloading your mods from reposting sites or malicious providers. Powered by the reposting site list from StopModReposts Important

cal6541 17 Sep 26, 2021
Minecraft mod which allows displaying your items to other players in chat.

Show Me What You Got Show Me What You Got is a Minecraft mod for Fabric. When added to the server, it allows players to display their items in chat by

null 5 Oct 24, 2022
A mod that lets you create "contracts" that transfer ownership of pets and other tameable entities.

Pet Transfer A simple mod for Fabric that lets you create contracts that can transfer ownership of pets and other tameable creatures. No Forge port pl

Emirikol 2 Jan 14, 2022
The loader for mods under Fabric. It provides mod loading facilities and useful abstractions for other mods to use, which is compatible with spigot now

Silk The loader for mods under Fabric. It provides mod loading facilities and useful abstractions for other mods to use, which is compatible with spig

null 1 Oct 1, 2022
A Java Project designed to manage a football clubs players and play RNG Simulated Games against other teams.

A Java Project designed to manage a football clubs players and play RNG Simulated Games against other teams.

ztrunks 0 Feb 21, 2022
Konas Client de-obfuscated and manually remaped by Gopro336, Perry, and other based people

Konas-Deobf-Remap This project doesent really have a purpose anymore now that the real source code has leaked (this is a higher version tho) Deobfusca

null 52 Dec 13, 2022
Duck Library is a library for developers who don't want to spend their time to write same library consistently.

Duck Library is a library for developers who don't want to spend their time to write same library consistently. It has almost every useful feature to

null 5 Jul 28, 2022
LWJGL is a Java library that enables cross-platform access to popular native APIs useful in the development of graphics (OpenGL, Vulkan), audio (OpenAL), parallel computing (OpenCL, CUDA) and XR (OpenVR, LibOVR) applications.

LWJGL - Lightweight Java Game Library 3 LWJGL (https://www.lwjgl.org) is a Java library that enables cross-platform access to popular native APIs usef

Lightweight Java Game Library 4k Dec 29, 2022
Java / JavaFX / Kotlin Game Library (Engine)

About JavaFX Game Development Framework Why FXGL? No installation or setup required "Out of the box": Java 8-15, Win/Mac/Linux/Android 8+/iOS 11.0+/We

Almas Baimagambetov 3k Jan 2, 2023