├── common
├── .gitignore
├── build.gradle.kts
└── src
│ └── main
│ ├── java
│ └── dev
│ │ └── aika
│ │ └── smsn
│ │ ├── mixin
│ │ ├── MixinPlatform.java
│ │ ├── ModMixinManager.java
│ │ ├── ModMixinInfo.java
│ │ └── ModMixinPlugin.java
│ │ ├── SMSNPlatform.java
│ │ ├── annotation
│ │ ├── Ignored.java
│ │ ├── RequiresRestart.java
│ │ ├── Category.java
│ │ ├── MixinList.java
│ │ ├── LoaderSpecific.java
│ │ └── Components.java
│ │ ├── api
│ │ ├── ModPlatform.java
│ │ └── LoaderType.java
│ │ ├── SMSN.java
│ │ ├── client
│ │ └── gui
│ │ │ ├── components
│ │ │ ├── IntInputBuilder.java
│ │ │ ├── FloatInputBuilder.java
│ │ │ ├── DoubleInputBuilder.java
│ │ │ ├── StringInputBuilder.java
│ │ │ ├── EnumSelectorBuilder.java
│ │ │ ├── SwitchBuilder.java
│ │ │ └── AbstractComponentBuilder.java
│ │ │ ├── ComponentBuilder.java
│ │ │ ├── MissingClothConfigScreen.java
│ │ │ └── ConfigMixinList.java
│ │ ├── config
│ │ ├── ModConfig.java
│ │ └── SMSNConfig.java
│ │ ├── utils
│ │ └── ComponentUtils.java
│ │ └── compat
│ │ └── ClothConfigScreen.java
│ └── resources
│ └── assets
│ └── smsn
│ └── lang
│ ├── uk_ua.json
│ ├── zh_cn.json
│ └── en_us.json
├── fabric
├── .gitignore
├── src
│ └── main
│ │ ├── java
│ │ └── dev
│ │ │ └── aika
│ │ │ └── smsn
│ │ │ ├── fabric
│ │ │ ├── SMSNFabric.java
│ │ │ ├── SMSNPlatformImpl.java
│ │ │ ├── mixin
│ │ │ │ ├── iris
│ │ │ │ │ └── UpdateCheckerMixin.java
│ │ │ │ ├── ad_astra
│ │ │ │ │ └── StationLoaderMixin.java
│ │ │ │ ├── xaero
│ │ │ │ │ ├── world_map
│ │ │ │ │ │ ├── PatreonMixin.java
│ │ │ │ │ │ └── InternetMixin.java
│ │ │ │ │ └── minimap
│ │ │ │ │ │ ├── InternetMixin.java
│ │ │ │ │ │ └── PatreonMixin.java
│ │ │ │ ├── imb11
│ │ │ │ │ └── mru
│ │ │ │ │ │ └── APIMixin.java
│ │ │ │ ├── vazkii
│ │ │ │ │ └── botania
│ │ │ │ │ │ └── ContributorListMixin.java
│ │ │ │ ├── supplementaries
│ │ │ │ │ └── CreditsMixin.java
│ │ │ │ ├── majrusz
│ │ │ │ │ └── VersionCheckerMixin.java
│ │ │ │ ├── ribbits
│ │ │ │ │ ├── SupportersJSONMixin.java
│ │ │ │ │ └── RibbitEntityMixin.java
│ │ │ │ ├── ipn
│ │ │ │ │ ├── IPNInfoManager$doCheckVersion$$inlined$timer$default$1Mixin.java
│ │ │ │ │ └── IPNInfoManager$doSessionKeepAlive$$inlined$timer$default$1Mixin.java
│ │ │ │ ├── kiwi
│ │ │ │ │ ├── JsonTierProviderMixin.java
│ │ │ │ │ └── KiwiTierProviderMixin.java
│ │ │ │ ├── immersiveportals
│ │ │ │ │ └── IPModInfoCheckingMixin.java
│ │ │ │ ├── aetherteam
│ │ │ │ │ └── UserData$ServerMixin.java
│ │ │ │ ├── create_tram_additions
│ │ │ │ │ ├── WorldTickMixin.java
│ │ │ │ │ └── TramAdditionsMixin.java
│ │ │ │ ├── exposure
│ │ │ │ │ ├── GildedMixin.java
│ │ │ │ │ └── PatreonMixin.java
│ │ │ │ └── tenshilib
│ │ │ │ │ └── PatreonDataManagerMixin.java
│ │ │ └── compat
│ │ │ │ └── ClothConfigCompat.java
│ │ │ ├── api
│ │ │ └── fabric
│ │ │ │ └── ModPlatformImpl.java
│ │ │ └── mixin
│ │ │ └── fabric
│ │ │ └── MixinPlatformImpl.java
│ │ └── resources
│ │ ├── fabric.mod.json
│ │ └── smsn.mixins.json
└── build.gradle.kts
├── forge
├── .gitignore
├── gradle.properties
├── src
│ └── main
│ │ ├── resources
│ │ ├── pack.mcmeta
│ │ ├── META-INF
│ │ │ └── mods.toml
│ │ └── smsn.mixins.json
│ │ └── java
│ │ └── dev
│ │ └── aika
│ │ └── smsn
│ │ ├── forge
│ │ ├── SMSNPlatformImpl.java
│ │ ├── mixin
│ │ │ ├── placebo
│ │ │ │ ├── TrailsManagerMixin.java
│ │ │ │ └── WingsManagerMixin.java
│ │ │ ├── ad_astra
│ │ │ │ └── StationLoaderMixin.java
│ │ │ ├── xaero
│ │ │ │ ├── world_map
│ │ │ │ │ ├── PatreonMixin.java
│ │ │ │ │ └── InternetMixin.java
│ │ │ │ └── minimap
│ │ │ │ │ ├── InternetMixin.java
│ │ │ │ │ └── PatreonMixin.java
│ │ │ ├── imb11
│ │ │ │ └── mru
│ │ │ │ │ └── APIMixin.java
│ │ │ ├── arsnouveau
│ │ │ │ └── RewardsMixin.java
│ │ │ ├── projecte
│ │ │ │ └── ThreadCheckUUIDMixin.java
│ │ │ ├── vazkii
│ │ │ │ ├── botania
│ │ │ │ │ └── ContributorListMixin.java
│ │ │ │ ├── quark
│ │ │ │ │ ├── ThreadContributorListLoaderMixin.java
│ │ │ │ │ ├── ModelHandlerMixin.java
│ │ │ │ │ └── QButtonMixin.java
│ │ │ │ └── zeta
│ │ │ │ │ └── ZetaModuleManagerMixin.java
│ │ │ ├── voidscape
│ │ │ │ └── DonatorHandlerMixin.java
│ │ │ ├── supplementaries
│ │ │ │ └── CreditsMixin.java
│ │ │ ├── majrusz
│ │ │ │ └── VersionCheckerMixin.java
│ │ │ ├── alex
│ │ │ │ ├── CitadelConstantsMixin.java
│ │ │ │ ├── CitadelWebHelperMixin.java
│ │ │ │ └── AlexsCavesWebHelperMixin.java
│ │ │ ├── ribbits
│ │ │ │ ├── SupportersJSONMixin.java
│ │ │ │ └── RibbitEntityMixin.java
│ │ │ ├── immersive_engineering
│ │ │ │ └── ImmersiveEngineeringMixin.java
│ │ │ ├── petrolpark
│ │ │ │ └── BadgeHandlerMixin.java
│ │ │ ├── kiwi
│ │ │ │ ├── JsonTierProviderMixin.java
│ │ │ │ └── KiwiTierProviderMixin.java
│ │ │ ├── immersiveportals
│ │ │ │ └── IPModInfoCheckingMixin.java
│ │ │ ├── bagus_lib
│ │ │ │ └── TierHelperMixin.java
│ │ │ ├── enigmatic_legacy
│ │ │ │ ├── DevotedBelieversHandlerMixin.java
│ │ │ │ └── EnigmaticUpdateHandlerMixin.java
│ │ │ ├── titanium
│ │ │ │ └── RewardMixin.java
│ │ │ ├── aetherteam
│ │ │ │ └── UserData$ServerMixin.java
│ │ │ ├── ipn
│ │ │ │ └── IPNInfoManagerMixin.java
│ │ │ ├── create_tram_additions
│ │ │ │ ├── WorldTickMixin.java
│ │ │ │ └── TramAdditionsMixin.java
│ │ │ ├── blueprint
│ │ │ │ └── RewardHandlerMixin.java
│ │ │ ├── immersivecaves
│ │ │ │ └── DiscordInviteOnJoinProcedureMixin.java
│ │ │ ├── hexerei
│ │ │ │ └── HexereiSupporterBenefitsMixin.java
│ │ │ ├── exposure
│ │ │ │ ├── GildedMixin.java
│ │ │ │ └── PatreonMixin.java
│ │ │ ├── tenshilib
│ │ │ │ └── PatreonDataManagerMixin.java
│ │ │ ├── additionalstructures
│ │ │ │ └── EventsMixin.java
│ │ │ └── obscure
│ │ │ │ └── ObscuriaCollectionMixin.java
│ │ ├── compat
│ │ │ └── ClothConfigCompat.java
│ │ └── SMSNForge.java
│ │ ├── api
│ │ └── forge
│ │ │ └── ModPlatformImpl.java
│ │ └── mixin
│ │ └── forge
│ │ └── MixinPlatformImpl.java
└── build.gradle.kts
├── .env.template
├── assets
└── logo.png
├── gradle
├── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
└── libs.versions.toml
├── .idea
└── dictionaries
│ └── project.xml
├── settings.gradle.kts
├── gradle.properties
├── .gitignore
├── LICENSE
├── CHANGELOG.md
├── gradlew.bat
├── README.md
└── gradlew
/common/.gitignore:
--------------------------------------------------------------------------------
1 | logs/
2 |
--------------------------------------------------------------------------------
/fabric/.gitignore:
--------------------------------------------------------------------------------
1 | logs/
2 | mods/
3 |
--------------------------------------------------------------------------------
/forge/.gitignore:
--------------------------------------------------------------------------------
1 | logs/
2 | mods/
3 |
--------------------------------------------------------------------------------
/.env.template:
--------------------------------------------------------------------------------
1 | MODRINTH_TOKEN=
2 | CF_TOKEN=
3 |
--------------------------------------------------------------------------------
/forge/gradle.properties:
--------------------------------------------------------------------------------
1 | loom.platform = forge
2 |
--------------------------------------------------------------------------------
/assets/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gizmo-ds/smsn-mod/1.20.1/assets/logo.png
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gizmo-ds/smsn-mod/1.20.1/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/forge/src/main/resources/pack.mcmeta:
--------------------------------------------------------------------------------
1 | {
2 | "pack": {
3 | "description": "Save My Shit Network",
4 | "forge:server_data_pack_format": 15,
5 | "pack_format": 15
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/common/build.gradle.kts:
--------------------------------------------------------------------------------
1 | architectury {
2 | common(mod.enabled_platforms)
3 | }
4 |
5 | dependencies {
6 | modImplementation(libs.fabric.loader)
7 |
8 | modImplementation(libs.clothconfig.api)
9 | }
10 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.12.1-bin.zip
4 | networkTimeout=10000
5 | validateDistributionUrl=true
6 | zipStoreBase=GRADLE_USER_HOME
7 | zipStorePath=wrapper/dists
8 |
--------------------------------------------------------------------------------
/common/src/main/java/dev/aika/smsn/mixin/MixinPlatform.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.mixin;
2 |
3 | import dev.architectury.injectables.annotations.ExpectPlatform;
4 |
5 | public class MixinPlatform {
6 | @ExpectPlatform
7 | public static void register() {
8 | throw new AssertionError();
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/fabric/src/main/java/dev/aika/smsn/fabric/SMSNFabric.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.fabric;
2 |
3 | import net.fabricmc.api.ModInitializer;
4 |
5 | import dev.aika.smsn.SMSN;
6 |
7 | public final class SMSNFabric implements ModInitializer {
8 | @Override
9 | public void onInitialize() {
10 | SMSN.init();
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/common/src/main/java/dev/aika/smsn/SMSNPlatform.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn;
2 |
3 | import dev.architectury.injectables.annotations.ExpectPlatform;
4 |
5 | import java.nio.file.Path;
6 |
7 | public class SMSNPlatform {
8 | @ExpectPlatform
9 | public static Path getConfigDir() {
10 | throw new AssertionError();
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/forge/src/main/java/dev/aika/smsn/forge/SMSNPlatformImpl.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.forge;
2 |
3 | import net.minecraftforge.fml.loading.FMLPaths;
4 |
5 | import java.nio.file.Path;
6 |
7 | @SuppressWarnings("unused")
8 | public class SMSNPlatformImpl {
9 | public static Path getConfigDir() {
10 | return FMLPaths.CONFIGDIR.get();
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/fabric/src/main/java/dev/aika/smsn/fabric/SMSNPlatformImpl.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.fabric;
2 |
3 | import net.fabricmc.loader.api.FabricLoader;
4 |
5 | import java.nio.file.Path;
6 |
7 | @SuppressWarnings("unused")
8 | public class SMSNPlatformImpl {
9 | public static Path getConfigDir() {
10 | return FabricLoader.getInstance().getConfigDir();
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/common/src/main/java/dev/aika/smsn/annotation/Ignored.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.annotation;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.RetentionPolicy;
6 | import java.lang.annotation.Target;
7 |
8 | @Target(ElementType.FIELD)
9 | @Retention(RetentionPolicy.RUNTIME)
10 | public @interface Ignored {
11 | }
12 |
--------------------------------------------------------------------------------
/common/src/main/java/dev/aika/smsn/annotation/RequiresRestart.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.annotation;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.RetentionPolicy;
6 | import java.lang.annotation.Target;
7 |
8 | @Target(ElementType.FIELD)
9 | @Retention(RetentionPolicy.RUNTIME)
10 | public @interface RequiresRestart {
11 | }
12 |
--------------------------------------------------------------------------------
/common/src/main/java/dev/aika/smsn/annotation/Category.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.annotation;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.RetentionPolicy;
6 | import java.lang.annotation.Target;
7 |
8 | @Target(ElementType.FIELD)
9 | @Retention(RetentionPolicy.RUNTIME)
10 | public @interface Category {
11 | String value() default "general";
12 | }
13 |
--------------------------------------------------------------------------------
/common/src/main/java/dev/aika/smsn/annotation/MixinList.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.annotation;
2 |
3 | import java.lang.annotation.ElementType;
4 | import java.lang.annotation.Retention;
5 | import java.lang.annotation.RetentionPolicy;
6 | import java.lang.annotation.Target;
7 |
8 | @Target(ElementType.FIELD)
9 | @Retention(RetentionPolicy.RUNTIME)
10 | public @interface MixinList {
11 | Category value();
12 |
13 | String prefix() default "";
14 | }
15 |
--------------------------------------------------------------------------------
/.idea/dictionaries/project.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | afdian
5 | aika
6 | curseforge
7 | curseforgegradle
8 | darkhax
9 | hypherionmc
10 | modid
11 | modpublisher
12 | modrinth
13 | modutils
14 | xaero
15 |
16 |
17 |
--------------------------------------------------------------------------------
/common/src/main/java/dev/aika/smsn/annotation/LoaderSpecific.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.annotation;
2 |
3 | import dev.aika.smsn.api.LoaderType;
4 |
5 | import java.lang.annotation.ElementType;
6 | import java.lang.annotation.Retention;
7 | import java.lang.annotation.RetentionPolicy;
8 | import java.lang.annotation.Target;
9 |
10 | @Target(ElementType.FIELD)
11 | @Retention(RetentionPolicy.RUNTIME)
12 | public @interface LoaderSpecific {
13 | LoaderType[] value();
14 | }
15 |
--------------------------------------------------------------------------------
/common/src/main/java/dev/aika/smsn/api/ModPlatform.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.api;
2 |
3 | import dev.architectury.injectables.annotations.ExpectPlatform;
4 | import lombok.experimental.UtilityClass;
5 |
6 | @SuppressWarnings("unused")
7 | @UtilityClass
8 | public class ModPlatform {
9 | @ExpectPlatform
10 | public boolean isModLoaded(String modId) {
11 | throw new AssertionError();
12 | }
13 |
14 | @ExpectPlatform
15 | public String getModName(String modId) {
16 | throw new AssertionError();
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/settings.gradle.kts:
--------------------------------------------------------------------------------
1 | pluginManagement {
2 | repositories {
3 | maven("https://maven.fabricmc.net/")
4 | maven("https://maven.architectury.dev/")
5 | maven("https://files.minecraftforge.net/maven/")
6 | maven("https://maven.firstdark.dev/releases") {
7 | content {
8 | includeGroup("com.hypherionmc.modutils")
9 | includeGroup("com.hypherionmc.modutils.modpublisher")
10 | }
11 | }
12 | gradlePluginPortal()
13 | }
14 | }
15 |
16 | rootProject.name = "smsn"
17 |
18 | include("common", "fabric", "forge")
19 |
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | # suppress inspection "SpellCheckingInspection" for whole file
2 | org.gradle.jvmargs=-Xmx4G
3 | org.gradle.parallel=true
4 | org.gradle.daemon=true
5 | org.gradle.caching=false
6 | org.gradle.configuration-cache=false
7 | # Mod properties
8 | mod.id=smsn
9 | mod.name=SMSN
10 | mod.group=dev.aika.smsn
11 | mod.version=1.3.5
12 | mod.release_type=release
13 | mod.enabled_platforms=fabric,forge
14 | # Minecraft properties
15 | minecraft_version=1.20.1
16 | # Publishing
17 | pub.modrinth_id=oXzIQwRj
18 | pub.curseforge_id=1129397
19 | pub.debug=false
20 | pub.enabled_platforms=fabric,forge
21 | pub.game_version_supports=1.20.1
22 |
--------------------------------------------------------------------------------
/forge/src/main/java/dev/aika/smsn/api/forge/ModPlatformImpl.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.api.forge;
2 |
3 | import lombok.experimental.UtilityClass;
4 | import net.minecraftforge.fml.loading.FMLLoader;
5 |
6 | @SuppressWarnings("unused")
7 | @UtilityClass
8 | public class ModPlatformImpl {
9 | public static boolean isModLoaded(String modId) {
10 | return FMLLoader.getLoadingModList().getModFileById(modId) != null;
11 | }
12 |
13 | public static String getModName(String modId) {
14 | if (!isModLoaded(modId)) return null;
15 | return FMLLoader.getLoadingModList().getModFileById(modId).moduleName();
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/common/src/main/java/dev/aika/smsn/annotation/Components.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.annotation;
2 |
3 | import dev.aika.smsn.client.gui.components.SwitchBuilder;
4 |
5 | import java.lang.annotation.ElementType;
6 | import java.lang.annotation.Retention;
7 | import java.lang.annotation.RetentionPolicy;
8 | import java.lang.annotation.Target;
9 |
10 | public @interface Components {
11 | @Target(ElementType.FIELD)
12 | @Retention(RetentionPolicy.RUNTIME)
13 | @interface Switch {
14 | String checked() default SwitchBuilder.DefaultCheckedText;
15 |
16 | String unchecked() default SwitchBuilder.DefaultUncheckedText;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/common/src/main/java/dev/aika/smsn/mixin/ModMixinManager.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.mixin;
2 |
3 | import lombok.Getter;
4 |
5 | import java.util.*;
6 |
7 | public class ModMixinManager {
8 | @Getter
9 | private final Set mixinInfos = new LinkedHashSet<>();
10 |
11 | public void addInfo(ModMixinInfo... infos) {
12 | Collections.addAll(mixinInfos, infos);
13 | }
14 |
15 | public Optional getByMixinClass(String mixinClassName) {
16 | return mixinInfos.stream()
17 | .filter(info -> info.getMixinClasses().contains(mixinClassName))
18 | .findFirst();
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/common/src/main/java/dev/aika/smsn/api/LoaderType.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.api;
2 |
3 | import dev.architectury.injectables.targets.ArchitecturyTarget;
4 |
5 | @SuppressWarnings("unused")
6 | public enum LoaderType {
7 | NEOFORGE, FORGE, FABRIC, QUILT;
8 |
9 | public static LoaderType getCurrentLoader() {
10 | String currentTarget = ArchitecturyTarget.getCurrentTarget();
11 | return switch (currentTarget) {
12 | case "fabric" -> FABRIC;
13 | case "forge" -> FORGE;
14 | case "neoforge" -> NEOFORGE;
15 | case "quilt" -> QUILT;
16 | default -> null;
17 | };
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/fabric/src/main/java/dev/aika/smsn/api/fabric/ModPlatformImpl.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.api.fabric;
2 |
3 | import lombok.experimental.UtilityClass;
4 | import net.fabricmc.loader.api.FabricLoader;
5 |
6 | @SuppressWarnings("unused")
7 | @UtilityClass
8 | public class ModPlatformImpl {
9 | public boolean isModLoaded(String modId) {
10 | return FabricLoader.getInstance().isModLoaded(modId);
11 | }
12 |
13 | public String getModName(String modId) {
14 | if (!isModLoaded(modId)) return null;
15 | return FabricLoader.getInstance().getModContainer(modId)
16 | .map(c -> c.getMetadata().getName())
17 | .orElse(modId);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ### ForgeGradle template
2 | # Minecraft client/server files
3 | run/
4 |
5 | ### Gradle template
6 | .gradle
7 | **/build/
8 | !src/**/build/
9 |
10 | # Ignore Gradle GUI config
11 | gradle-app.setting
12 |
13 | # Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
14 | !gradle-wrapper.jar
15 |
16 | # Avoid ignore Gradle wrappper properties
17 | !gradle-wrapper.properties
18 |
19 | # Cache of project
20 | .gradletasknamecache
21 |
22 | # Eclipse Gradle plugin generated files
23 | # Eclipse Core
24 | .project
25 | # JDT-specific (Eclipse Java Development Tools)
26 | .classpath
27 |
28 | .architectury-transformer
29 |
30 | .idea/*
31 | !.idea/dictionaries
32 | .env
33 | mods/
34 |
--------------------------------------------------------------------------------
/fabric/src/main/java/dev/aika/smsn/fabric/mixin/iris/UpdateCheckerMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.fabric.mixin.iris;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
8 |
9 | @Mixin(value = net.coderbot.iris.UpdateChecker.class, remap = false)
10 | public abstract class UpdateCheckerMixin {
11 | @Inject(method = "checkForUpdates", at = @At("HEAD"), cancellable = true)
12 | public void checkForUpdates(CallbackInfo ci) {
13 | if (!SMSN.CONFIG.isIrisUpdateCheck()) ci.cancel();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/forge/src/main/java/dev/aika/smsn/forge/mixin/placebo/TrailsManagerMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.forge.mixin.placebo;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
8 |
9 | @Mixin(value = dev.shadowsoffire.placebo.patreon.TrailsManager.class, remap = false)
10 | public abstract class TrailsManagerMixin {
11 | @Inject(method = "init", at = @At("HEAD"), cancellable = true)
12 | private static void init(CallbackInfo ci) {
13 | if (!SMSN.CONFIG.isPlaceboTrails()) ci.cancel();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/forge/src/main/java/dev/aika/smsn/forge/mixin/ad_astra/StationLoaderMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.forge.mixin.ad_astra;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
8 |
9 | @Mixin(value = earth.terrarium.adastra.common.utils.radio.StationLoader.class, remap = false)
10 | public abstract class StationLoaderMixin {
11 | @Inject(method = "init", at = @At("HEAD"), cancellable = true)
12 | private static void init(CallbackInfo ci) {
13 | if (!SMSN.CONFIG.isAdAstraStation()) ci.cancel();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/forge/src/main/java/dev/aika/smsn/forge/mixin/xaero/world_map/PatreonMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.forge.mixin.xaero.world_map;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
8 |
9 | @Mixin(value = xaero.map.patreon.Patreon.class, remap = false)
10 | public class PatreonMixin {
11 | @Inject(method = "checkPatreon", at = @At("HEAD"), cancellable = true, remap = false)
12 | private static void onCheckPatreon(CallbackInfo ci) {
13 | if (!SMSN.CONFIG.isXaeroMapPatreonCheck()) ci.cancel();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/fabric/src/main/java/dev/aika/smsn/fabric/mixin/ad_astra/StationLoaderMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.fabric.mixin.ad_astra;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
8 |
9 | @Mixin(value = earth.terrarium.adastra.common.utils.radio.StationLoader.class, remap = false)
10 | public abstract class StationLoaderMixin {
11 | @Inject(method = "init", at = @At("HEAD"), cancellable = true)
12 | private static void init(CallbackInfo ci) {
13 | if (!SMSN.CONFIG.isAdAstraStation()) ci.cancel();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/fabric/src/main/java/dev/aika/smsn/fabric/mixin/xaero/world_map/PatreonMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.fabric.mixin.xaero.world_map;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
8 |
9 | @Mixin(value = xaero.map.patreon.Patreon.class, remap = false)
10 | public class PatreonMixin {
11 | @Inject(method = "checkPatreon", at = @At("HEAD"), cancellable = true, remap = false)
12 | private static void onCheckPatreon(CallbackInfo ci) {
13 | if (!SMSN.CONFIG.isXaeroMapPatreonCheck()) ci.cancel();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/forge/src/main/java/dev/aika/smsn/forge/mixin/imb11/mru/APIMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.forge.mixin.imb11.mru;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
8 |
9 | @Mixin(value = dev.imb11.mru.API.class, remap = false)
10 | public abstract class APIMixin {
11 | @Inject(method = "getKofiSupporters", at = @At("HEAD"), cancellable = true)
12 | public void getKofiSupporters(CallbackInfoReturnable cir) {
13 | if (!SMSN.CONFIG.isMruApi()) cir.setReturnValue(new String[0]);
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/fabric/src/main/java/dev/aika/smsn/fabric/mixin/imb11/mru/APIMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.fabric.mixin.imb11.mru;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
8 |
9 | @Mixin(value = dev.imb11.mru.API.class, remap = false)
10 | public abstract class APIMixin {
11 | @Inject(method = "getKofiSupporters", at = @At("HEAD"), cancellable = true)
12 | public void getKofiSupporters(CallbackInfoReturnable cir) {
13 | if (!SMSN.CONFIG.isMruApi()) cir.setReturnValue(new String[0]);
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/fabric/src/main/java/dev/aika/smsn/fabric/mixin/xaero/world_map/InternetMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.fabric.mixin.xaero.world_map;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
8 |
9 | @Mixin(value = xaero.map.misc.Internet.class, remap = false)
10 | public class InternetMixin {
11 | @Inject(method = "checkModVersion", at = @At("HEAD"), cancellable = true, remap = false)
12 | private static void onCheckModVersion(CallbackInfo ci) {
13 | if (!SMSN.CONFIG.isXaeroMapVersionCheck()) ci.cancel();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/forge/src/main/java/dev/aika/smsn/forge/mixin/arsnouveau/RewardsMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.forge.mixin.arsnouveau;
2 |
3 | import com.hollingsworth.arsnouveau.setup.reward.Rewards;
4 | import dev.aika.smsn.SMSN;
5 | import org.spongepowered.asm.mixin.Mixin;
6 | import org.spongepowered.asm.mixin.injection.At;
7 | import org.spongepowered.asm.mixin.injection.Inject;
8 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
9 |
10 | @Mixin(value = Rewards.class, remap = false)
11 | public abstract class RewardsMixin {
12 | @Inject(method = "init", at = @At("HEAD"), cancellable = true)
13 | private static void init(CallbackInfo ci) {
14 | if (!SMSN.CONFIG.isArsnouveauRewards()) ci.cancel();
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/forge/src/main/java/dev/aika/smsn/forge/mixin/xaero/world_map/InternetMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.forge.mixin.xaero.world_map;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
8 |
9 | @Mixin(value = xaero.map.misc.Internet.class, remap = false)
10 | public class InternetMixin {
11 | @Inject(method = "checkModVersion", at = @At("HEAD"), cancellable = true, remap = false)
12 | private static void onCheckModVersion(CallbackInfo ci) {
13 | if (!SMSN.CONFIG.isXaeroMapVersionCheck()) ci.cancel();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/forge/src/main/java/dev/aika/smsn/forge/mixin/projecte/ThreadCheckUUIDMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.forge.mixin.projecte;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import moze_intel.projecte.network.ThreadCheckUUID;
5 | import org.spongepowered.asm.mixin.Mixin;
6 | import org.spongepowered.asm.mixin.injection.At;
7 | import org.spongepowered.asm.mixin.injection.Inject;
8 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
9 |
10 | @Mixin(value = ThreadCheckUUID.class, remap = false)
11 | public abstract class ThreadCheckUUIDMixin {
12 | @Inject(method = "run", at = @At("HEAD"), cancellable = true)
13 | private void run(CallbackInfo ci) {
14 | if (!SMSN.CONFIG.isProjecteUUIDCheck()) ci.cancel();
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/forge/src/main/java/dev/aika/smsn/forge/mixin/vazkii/botania/ContributorListMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.forge.mixin.vazkii.botania;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
8 |
9 | @Mixin(value = vazkii.botania.common.handler.ContributorList.class, remap = false)
10 | public abstract class ContributorListMixin {
11 | @Inject(method = "fetch", at = @At("HEAD"), cancellable = true)
12 | private static void fetch(CallbackInfo ci) {
13 | if (!SMSN.CONFIG.isBotaniaContributorCheck()) ci.cancel();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/fabric/src/main/java/dev/aika/smsn/fabric/mixin/vazkii/botania/ContributorListMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.fabric.mixin.vazkii.botania;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
8 |
9 | @Mixin(value = vazkii.botania.common.handler.ContributorList.class, remap = false)
10 | public abstract class ContributorListMixin {
11 | @Inject(method = "fetch", at = @At("HEAD"), cancellable = true)
12 | private static void fetch(CallbackInfo ci) {
13 | if (!SMSN.CONFIG.isBotaniaContributorCheck()) ci.cancel();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/forge/src/main/java/dev/aika/smsn/forge/mixin/voidscape/DonatorHandlerMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.forge.mixin.voidscape;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
8 | import tamaized.voidscape.network.DonatorHandler;
9 |
10 | @Mixin(value = DonatorHandler.class, remap = false)
11 | public abstract class DonatorHandlerMixin {
12 | @Inject(method = "start", at = @At("HEAD"), cancellable = true)
13 | private static void start(CallbackInfo ci) {
14 | if (!SMSN.CONFIG.isVoidscapeDonator()) ci.cancel();
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/forge/src/main/java/dev/aika/smsn/forge/mixin/placebo/WingsManagerMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.forge.mixin.placebo;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
8 |
9 | @Mixin(value = dev.shadowsoffire.placebo.patreon.WingsManager.class, remap = false)
10 | public abstract class WingsManagerMixin {
11 | @Inject(method = "init", at = @At(value = "INVOKE", target = "Ljava/lang/Thread;start()V"), cancellable = true)
12 | private static void init(CallbackInfo ci) {
13 | if (!SMSN.CONFIG.isPlaceboWings()) ci.cancel();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/forge/src/main/java/dev/aika/smsn/forge/mixin/supplementaries/CreditsMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.forge.mixin.supplementaries;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
8 |
9 | @Mixin(value = net.mehvahdjukaar.supplementaries.common.utils.Credits.class, remap = false)
10 | public abstract class CreditsMixin {
11 | @Inject(method = "fetchFromServer", at = @At("HEAD"), cancellable = true)
12 | private static void fetchFromServer(CallbackInfo ci) {
13 | if (!SMSN.CONFIG.isSupplementariesCreditsCheck()) ci.cancel();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/fabric/src/main/java/dev/aika/smsn/fabric/mixin/supplementaries/CreditsMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.fabric.mixin.supplementaries;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
8 |
9 | @Mixin(value = net.mehvahdjukaar.supplementaries.common.utils.Credits.class, remap = false)
10 | public abstract class CreditsMixin {
11 | @Inject(method = "fetchFromServer", at = @At("HEAD"), cancellable = true)
12 | private static void fetchFromServer(CallbackInfo ci) {
13 | if (!SMSN.CONFIG.isSupplementariesCreditsCheck()) ci.cancel();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/forge/src/main/java/dev/aika/smsn/forge/mixin/majrusz/VersionCheckerMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.forge.mixin.majrusz;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
8 |
9 | @SuppressWarnings("SpellCheckingInspection")
10 | @Mixin(targets = "com.majruszlibrary.modhelper.VersionChecker", remap = false)
11 | public abstract class VersionCheckerMixin {
12 | @Inject(method = "register", at = @At("HEAD"), cancellable = true)
13 | private void register(CallbackInfo ci) {
14 | if (!SMSN.CONFIG.isMajruszModsVersionCheck()) ci.cancel();
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/fabric/src/main/java/dev/aika/smsn/fabric/mixin/majrusz/VersionCheckerMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.fabric.mixin.majrusz;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
8 |
9 | @SuppressWarnings("SpellCheckingInspection")
10 | @Mixin(targets = "com.majruszlibrary.modhelper.VersionChecker", remap = false)
11 | public abstract class VersionCheckerMixin {
12 | @Inject(method = "register", at = @At("HEAD"), cancellable = true)
13 | private void register(CallbackInfo ci) {
14 | if (!SMSN.CONFIG.isMajruszModsVersionCheck()) ci.cancel();
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/forge/src/main/java/dev/aika/smsn/forge/mixin/alex/CitadelConstantsMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.forge.mixin.alex;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
8 |
9 | @Mixin(value = com.github.alexthe666.citadel.CitadelConstants.class, remap = false)
10 | public class CitadelConstantsMixin {
11 | @Inject(method = "isAprilFools", at = @At("HEAD"), cancellable = true, remap = false)
12 | private static void onIsAprilFools(CallbackInfoReturnable cir) {
13 | if (!SMSN.CONFIG.isCitadelAprilFoolsContent()) cir.setReturnValue(false);
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/forge/src/main/java/dev/aika/smsn/forge/mixin/vazkii/quark/ThreadContributorListLoaderMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.forge.mixin.vazkii.quark;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
8 |
9 | @Mixin(targets = "org.violetmoon.quark.base.handler.ContributorRewardHandler$ThreadContributorListLoader", remap = false)
10 | public class ThreadContributorListLoaderMixin {
11 | @Inject(method = "run", at = @At("HEAD"), cancellable = true, remap = false)
12 | private void onRun(CallbackInfo ci) {
13 | if (!SMSN.CONFIG.isQuarkContributorCheck()) ci.cancel();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/forge/src/main/java/dev/aika/smsn/forge/mixin/xaero/minimap/InternetMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.forge.mixin.xaero.minimap;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
8 | import xaero.common.IXaeroMinimap;
9 |
10 | @Mixin(value = xaero.common.misc.Internet.class, remap = false)
11 | public class InternetMixin {
12 | @Inject(method = "checkModVersion", at = @At("HEAD"), cancellable = true, remap = false)
13 | private static void onCheckModVersion(IXaeroMinimap modMain, CallbackInfo ci) {
14 | if (!SMSN.CONFIG.isXaeroMapVersionCheck()) ci.cancel();
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/fabric/src/main/java/dev/aika/smsn/fabric/mixin/xaero/minimap/InternetMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.fabric.mixin.xaero.minimap;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
8 | import xaero.common.IXaeroMinimap;
9 |
10 | @Mixin(value = xaero.common.misc.Internet.class, remap = false)
11 | public class InternetMixin {
12 | @Inject(method = "checkModVersion", at = @At("HEAD"), cancellable = true, remap = false)
13 | private static void onCheckModVersion(IXaeroMinimap modMain, CallbackInfo ci) {
14 | if (!SMSN.CONFIG.isXaeroMapVersionCheck()) ci.cancel();
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/forge/src/main/java/dev/aika/smsn/forge/mixin/ribbits/SupportersJSONMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.forge.mixin.ribbits;
2 |
3 | import com.yungnickyoung.minecraft.ribbits.client.supporters.SupportersJSON;
4 | import dev.aika.smsn.SMSN;
5 | import org.spongepowered.asm.mixin.Mixin;
6 | import org.spongepowered.asm.mixin.injection.At;
7 | import org.spongepowered.asm.mixin.injection.Inject;
8 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
9 |
10 | @Mixin(value = SupportersJSON.class, remap = false)
11 | public abstract class SupportersJSONMixin {
12 | @Inject(method = "populateSupportersList", at = @At("HEAD"), cancellable = true)
13 | private static void populateSupportersList(CallbackInfo ci) {
14 | if (!SMSN.CONFIG.isRibbitsSupporterHat()) ci.cancel();
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/forge/src/main/java/dev/aika/smsn/forge/mixin/immersive_engineering/ImmersiveEngineeringMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.forge.mixin.immersive_engineering;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
8 |
9 | @Mixin(value = blusunrize.immersiveengineering.ImmersiveEngineering.ThreadContributorSpecialsDownloader.class, remap = false)
10 | public abstract class ImmersiveEngineeringMixin {
11 | @Inject(method = "run", at = @At("HEAD"), cancellable = true)
12 | public void run(CallbackInfo ci) {
13 | if (!SMSN.CONFIG.isImmersiveEngineeringSpecialRevolvers()) ci.cancel();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/fabric/src/main/java/dev/aika/smsn/fabric/mixin/ribbits/SupportersJSONMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.fabric.mixin.ribbits;
2 |
3 | import com.yungnickyoung.minecraft.ribbits.client.supporters.SupportersJSON;
4 | import dev.aika.smsn.SMSN;
5 | import org.spongepowered.asm.mixin.Mixin;
6 | import org.spongepowered.asm.mixin.injection.At;
7 | import org.spongepowered.asm.mixin.injection.Inject;
8 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
9 |
10 | @Mixin(value = SupportersJSON.class, remap = false)
11 | public abstract class SupportersJSONMixin {
12 | @Inject(method = "populateSupportersList", at = @At("HEAD"), cancellable = true)
13 | private static void populateSupportersListMixin(CallbackInfo ci) {
14 | if (!SMSN.CONFIG.isRibbitsSupporterHat()) ci.cancel();
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/forge/src/main/java/dev/aika/smsn/forge/mixin/ribbits/RibbitEntityMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.forge.mixin.ribbits;
2 |
3 | import com.yungnickyoung.minecraft.ribbits.entity.RibbitEntity;
4 | import dev.aika.smsn.SMSN;
5 | import org.spongepowered.asm.mixin.Mixin;
6 | import org.spongepowered.asm.mixin.injection.At;
7 | import org.spongepowered.asm.mixin.injection.Inject;
8 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
9 |
10 | @Mixin(value = RibbitEntity.class, remap = false)
11 | public abstract class RibbitEntityMixin {
12 | @Inject(method = "isPrideMonth", at = @At("HEAD"), cancellable = true)
13 | private static void isPrideMonth(CallbackInfoReturnable cir) {
14 | if (!SMSN.CONFIG.isRibbitsNoMorePrideMonth()) cir.setReturnValue(false);
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/fabric/src/main/java/dev/aika/smsn/fabric/mixin/ribbits/RibbitEntityMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.fabric.mixin.ribbits;
2 |
3 | import com.yungnickyoung.minecraft.ribbits.entity.RibbitEntity;
4 | import dev.aika.smsn.SMSN;
5 | import org.spongepowered.asm.mixin.Mixin;
6 | import org.spongepowered.asm.mixin.injection.At;
7 | import org.spongepowered.asm.mixin.injection.Inject;
8 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
9 |
10 | @Mixin(value = RibbitEntity.class, remap = false)
11 | public abstract class RibbitEntityMixin {
12 | @Inject(method = "isPrideMonth", at = @At("HEAD"), cancellable = true)
13 | private static void isPrideMonth(CallbackInfoReturnable cir) {
14 | if (!SMSN.CONFIG.isRibbitsNoMorePrideMonth()) cir.setReturnValue(false);
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/forge/src/main/java/dev/aika/smsn/forge/mixin/xaero/minimap/PatreonMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.forge.mixin.xaero.minimap;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
8 | import xaero.common.IXaeroMinimap;
9 |
10 | @Mixin(value = xaero.common.patreon.Patreon.class, remap = false)
11 | public class PatreonMixin {
12 | @Inject(method = "checkPatreon(Lxaero/common/IXaeroMinimap;)V", at = @At("HEAD"), cancellable = true, remap = false)
13 | private static void onCheckPatreon(IXaeroMinimap modMain, CallbackInfo ci) {
14 | if (!SMSN.CONFIG.isXaeroMapPatreonCheck()) ci.cancel();
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/fabric/src/main/java/dev/aika/smsn/fabric/mixin/xaero/minimap/PatreonMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.fabric.mixin.xaero.minimap;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
8 | import xaero.common.IXaeroMinimap;
9 |
10 | @Mixin(value = xaero.common.patreon.Patreon.class, remap = false)
11 | public class PatreonMixin {
12 | @Inject(method = "checkPatreon(Lxaero/common/IXaeroMinimap;)V", at = @At("HEAD"), cancellable = true, remap = false)
13 | private static void onCheckPatreon(IXaeroMinimap modMain, CallbackInfo ci) {
14 | if (!SMSN.CONFIG.isXaeroMapPatreonCheck()) ci.cancel();
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/fabric/src/main/java/dev/aika/smsn/fabric/mixin/ipn/IPNInfoManager$doCheckVersion$$inlined$timer$default$1Mixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.fabric.mixin.ipn;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
8 |
9 | @Mixin(value = org.anti_ad.mc.ipnext.IPNInfoManager$doCheckVersion$$inlined$timer$default$1.class, remap = false)
10 | public abstract class IPNInfoManager$doCheckVersion$$inlined$timer$default$1Mixin {
11 | @Inject(method = "run", at = @At("HEAD"), cancellable = true)
12 | public void dontRun(CallbackInfo ci) {
13 | if (!SMSN.CONFIG.isIpnUpdateCheckAndUserTracking()) ci.cancel();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/common/src/main/java/dev/aika/smsn/SMSN.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn;
2 |
3 | import dev.aika.smsn.config.SMSNConfig;
4 | import dev.aika.smsn.mixin.MixinPlatform;
5 | import dev.aika.smsn.mixin.ModMixinManager;
6 | import org.slf4j.Logger;
7 | import org.slf4j.LoggerFactory;
8 |
9 | public final class SMSN {
10 | public static final String MOD_ID = "smsn";
11 | public static final String MOD_NAME = "SaveMyShitNetwork";
12 | public static final Logger LOGGER = LoggerFactory.getLogger(MOD_NAME);
13 |
14 | public static SMSNConfig CONFIG = new SMSNConfig();
15 | public static final ModMixinManager MixinManager = new ModMixinManager();
16 |
17 | public static void init() {
18 | }
19 |
20 | public static void preInit() {
21 | CONFIG = SMSNConfig.load();
22 | MixinPlatform.register();
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/fabric/src/main/java/dev/aika/smsn/fabric/mixin/ipn/IPNInfoManager$doSessionKeepAlive$$inlined$timer$default$1Mixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.fabric.mixin.ipn;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
8 |
9 | @Mixin(value = org.anti_ad.mc.ipnext.IPNInfoManager$doSessionKeepAlive$$inlined$timer$default$1.class, remap = false)
10 | public abstract class IPNInfoManager$doSessionKeepAlive$$inlined$timer$default$1Mixin {
11 | @Inject(method = "run", at = @At("HEAD"), cancellable = true)
12 | public void dontRun(CallbackInfo ci) {
13 | if (!SMSN.CONFIG.isIpnUpdateCheckAndUserTracking()) ci.cancel();
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/forge/src/main/java/dev/aika/smsn/forge/mixin/petrolpark/BadgeHandlerMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.forge.mixin.petrolpark;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import net.minecraft.server.level.ServerPlayer;
5 | import org.spongepowered.asm.mixin.Mixin;
6 | import org.spongepowered.asm.mixin.injection.At;
7 | import org.spongepowered.asm.mixin.injection.Inject;
8 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
9 |
10 | @Mixin(value = com.petrolpark.badge.BadgeHandler.class, remap = false)
11 | public abstract class BadgeHandlerMixin {
12 | @Inject(method = "fetchAndAddBadgesIncludingEarlyBird", at = @At("HEAD"), cancellable = true)
13 | private static void fetchAndAddBadgesIncludingEarlyBird(ServerPlayer player, CallbackInfo ci) {
14 | if (!SMSN.CONFIG.isPetrolparkBadgeCheck()) ci.cancel();
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/forge/src/main/java/dev/aika/smsn/forge/mixin/kiwi/JsonTierProviderMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.forge.mixin.kiwi;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
8 | import snownee.kiwi.contributor.impl.JsonTierProvider;
9 |
10 | import java.util.concurrent.CompletableFuture;
11 |
12 | @Mixin(value = JsonTierProvider.class, remap = false)
13 | public abstract class JsonTierProviderMixin {
14 | @Inject(method = "refresh", at = @At("HEAD"), cancellable = true)
15 | private void refresh(CallbackInfoReturnable> cir) {
16 | if (!SMSN.CONFIG.isKiwiTier()) cir.setReturnValue(new CompletableFuture<>());
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/fabric/src/main/java/dev/aika/smsn/fabric/mixin/kiwi/JsonTierProviderMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.fabric.mixin.kiwi;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
8 | import snownee.kiwi.contributor.impl.JsonTierProvider;
9 |
10 | import java.util.concurrent.CompletableFuture;
11 |
12 | @Mixin(value = JsonTierProvider.class, remap = false)
13 | public abstract class JsonTierProviderMixin {
14 | @Inject(method = "refresh", at = @At("HEAD"), cancellable = true)
15 | private void refresh(CallbackInfoReturnable> cir) {
16 | if (!SMSN.CONFIG.isKiwiTier()) cir.setReturnValue(new CompletableFuture<>());
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/forge/src/main/java/dev/aika/smsn/forge/compat/ClothConfigCompat.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.forge.compat;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import dev.aika.smsn.api.ModPlatform;
5 | import dev.aika.smsn.client.gui.MissingClothConfigScreen;
6 | import dev.aika.smsn.compat.ClothConfigScreen;
7 | import net.minecraft.client.Minecraft;
8 | import net.minecraft.client.gui.screens.Screen;
9 |
10 | public class ClothConfigCompat {
11 | public static Screen setup(Minecraft ignoredMinecraft, Screen parent) {
12 | return ModPlatform.isModLoaded("cloth_config") ?
13 | ClothConfigScreen.builder()
14 | .setParent(parent).setModId(SMSN.MOD_ID)
15 | .setConfig(SMSN.CONFIG).setMixinManager(SMSN.MixinManager)
16 | .build()
17 | : new MissingClothConfigScreen(parent);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/fabric/src/main/java/dev/aika/smsn/fabric/mixin/immersiveportals/IPModInfoCheckingMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.fabric.mixin.immersiveportals;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
8 | import qouteall.imm_ptl.core.compat.IPModInfoChecking;
9 |
10 | @Mixin(value = IPModInfoChecking.class, remap = false)
11 | public abstract class IPModInfoCheckingMixin {
12 | @Inject(method = "fetchImmPtlInfoFromInternet", at = @At("HEAD"), cancellable = true)
13 | private static void fetchImmPtlInfoFromInternet(CallbackInfoReturnable cir) {
14 | if (!SMSN.CONFIG.isImmersiveportalsModInfoChecking()) cir.setReturnValue(null);
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/forge/src/main/java/dev/aika/smsn/forge/mixin/immersiveportals/IPModInfoCheckingMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.forge.mixin.immersiveportals;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
8 | import qouteall.imm_ptl.core.compat.IPModInfoChecking;
9 |
10 | @Mixin(value = IPModInfoChecking.class, remap = false)
11 | public abstract class IPModInfoCheckingMixin {
12 | @Inject(method = "fetchImmPtlInfoFromInternet", at = @At("HEAD"), cancellable = true)
13 | private static void fetchImmPtlInfoFromInternet(CallbackInfoReturnable cir) {
14 | if (!SMSN.CONFIG.isImmersiveportalsModInfoChecking()) cir.setReturnValue(null);
15 | }
16 | }
17 |
18 |
--------------------------------------------------------------------------------
/forge/src/main/java/dev/aika/smsn/forge/SMSNForge.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.forge;
2 |
3 | import dev.aika.smsn.forge.compat.ClothConfigCompat;
4 | import net.minecraftforge.api.distmarker.Dist;
5 | import net.minecraftforge.client.ConfigScreenHandler;
6 | import net.minecraftforge.fml.DistExecutor;
7 | import net.minecraftforge.fml.ModLoadingContext;
8 | import net.minecraftforge.fml.common.Mod;
9 |
10 | import dev.aika.smsn.SMSN;
11 |
12 | @Mod(SMSN.MOD_ID)
13 | public final class SMSNForge {
14 | public SMSNForge() {
15 | DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> SMSNForge::clientInit);
16 | SMSN.init();
17 | }
18 |
19 | public static void clientInit() {
20 | ModLoadingContext.get().registerExtensionPoint(ConfigScreenHandler.ConfigScreenFactory.class,
21 | () -> new ConfigScreenHandler.ConfigScreenFactory(ClothConfigCompat::setup));
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/forge/src/main/java/dev/aika/smsn/forge/mixin/kiwi/KiwiTierProviderMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.forge.mixin.kiwi;
2 |
3 | import com.google.common.collect.ImmutableSet;
4 | import dev.aika.smsn.SMSN;
5 | import org.spongepowered.asm.mixin.Mixin;
6 | import org.spongepowered.asm.mixin.injection.At;
7 | import org.spongepowered.asm.mixin.injection.Inject;
8 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
9 | import snownee.kiwi.contributor.impl.KiwiTierProvider;
10 |
11 | import java.util.Set;
12 |
13 | @Mixin(value = KiwiTierProvider.class, remap = false)
14 | public abstract class KiwiTierProviderMixin {
15 | @Inject(method = "getPlayerTiers", at = @At("HEAD"), cancellable = true)
16 | private void getPlayerTiers(String playerName, CallbackInfoReturnable> cir) {
17 | if (!SMSN.CONFIG.isKiwiTier()) cir.setReturnValue(ImmutableSet.of());
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/fabric/src/main/java/dev/aika/smsn/fabric/mixin/kiwi/KiwiTierProviderMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.fabric.mixin.kiwi;
2 |
3 | import com.google.common.collect.ImmutableSet;
4 | import dev.aika.smsn.SMSN;
5 | import org.spongepowered.asm.mixin.Mixin;
6 | import org.spongepowered.asm.mixin.injection.At;
7 | import org.spongepowered.asm.mixin.injection.Inject;
8 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
9 | import snownee.kiwi.contributor.impl.KiwiTierProvider;
10 |
11 | import java.util.Set;
12 |
13 | @Mixin(value = KiwiTierProvider.class, remap = false)
14 | public abstract class KiwiTierProviderMixin {
15 | @Inject(method = "getPlayerTiers", at = @At("HEAD"), cancellable = true)
16 | private void getPlayerTiers(String playerName, CallbackInfoReturnable> cir) {
17 | if (!SMSN.CONFIG.isKiwiTier()) cir.setReturnValue(ImmutableSet.of());
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/forge/src/main/java/dev/aika/smsn/forge/mixin/bagus_lib/TierHelperMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.forge.mixin.bagus_lib;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
8 |
9 | import java.io.BufferedReader;
10 |
11 | @Mixin(value = bagu_chan.bagus_lib.util.TierHelper.class, remap = false)
12 | public abstract class TierHelperMixin {
13 | @Inject(method = "getSuporterContents", at = @At(value = "INVOKE", target = "Ljava/net/URL;openConnection()Ljava/net/URLConnection;"), cancellable = true)
14 | private static void onGetSuporterContents(CallbackInfoReturnable cir) {
15 | if (!SMSN.CONFIG.isBagusLibSupportersCheck())
16 | cir.setReturnValue(null);
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/forge/src/main/java/dev/aika/smsn/forge/mixin/enigmatic_legacy/DevotedBelieversHandlerMixin.java:
--------------------------------------------------------------------------------
1 | package dev.aika.smsn.forge.mixin.enigmatic_legacy;
2 |
3 | import dev.aika.smsn.SMSN;
4 | import org.spongepowered.asm.mixin.Mixin;
5 | import org.spongepowered.asm.mixin.injection.At;
6 | import org.spongepowered.asm.mixin.injection.Inject;
7 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
8 |
9 | import java.util.Map;
10 | import java.util.UUID;
11 |
12 | @Mixin(value = com.aizistral.enigmaticlegacy.handlers.DevotedBelieversHandler.class, remap = false)
13 | public abstract class DevotedBelieversHandlerMixin {
14 | @Inject(method = "loadDevotedBelievers", at = @At("HEAD"), cancellable = true)
15 | private static void loadDevotedBelievers(CallbackInfoReturnable