From 618bb7fd67958e7e794f854fd909f7166e25083b Mon Sep 17 00:00:00 2001 From: zenfyr Date: Mon, 24 Nov 2025 13:51:54 +0700 Subject: [PATCH] Revert "remove module and mixin sides" This reverts commit c7e3f4be0838fda92c34516ff9d9a3322893dd84. --- .../andromeda/bootstrap/ModuleInfo.java | 3 ++ .../andromeda/bootstrap/ModuleManager.java | 7 +++ .../andromeda/bootstrap/util/Environment.java | 44 +++++++++++++++++++ .../util/mixin/AndromedaMixinPlugin.java | 14 ++++++ .../util/mixin/ModuleMixinPlugin.java | 8 ++++ .../andromeda/common/AndromedaClient.java | 36 +++++++++++++++ .../mixin/SubCategoryListEntryMixin.java | 30 +++++++++++++ .../common/util/CommanderSupport.java | 24 ++++++++++ .../modules/blocks/bed/power/Power.java | 3 +- .../modules/blocks/bed/unsafe/Unsafe.java | 3 +- .../campfire_effects/CampfireEffects.java | 3 +- .../falling_propagule/FallingPropagule.java | 3 +- .../blocks/leaf_slowdown/LeafSlowdown.java | 3 +- .../BeeFlowerDuplication.java | 3 +- .../BetterFurnaceMinecart.java | 3 +- .../entities/ghast_tweaks/GhastTweaks.java | 3 +- .../MinecartSpeedControl.java | 3 +- .../modules/entities/slimes/Slimes.java | 3 +- .../entities/snowball_tweaks/Snowballs.java | 3 +- .../VehicleUnentrapment.java | 3 +- .../VillagersFollowEmeralds.java | 3 +- .../entities/zombie/all_pick_up/Pickup.java | 3 +- .../entities/zombie/clean_pickup/Pickup.java | 3 +- .../lava_disintegrator/LavaDisintegrator.java | 3 +- .../MinecartBlockPicking.java | 3 +- .../mechanics/dragon_fight/DragonFight.java | 7 ++- .../mechanics/trading_goat_horn/GoatHorn.java | 3 +- .../villager_gifting/VillagerGifting.java | 3 +- .../MinorInconvenience.java | 3 +- .../AdvancementGeneration.java | 3 +- .../misc/tiny_storage/TinyStorage.java | 3 +- .../world/auto_planting/AutoPlanting.java | 3 +- .../crop_temperature/PlantTemperature.java | 3 +- .../falling_beenests/CanBeeNestsFall.java | 3 +- .../world/loot_barrels/LootBarrels.java | 3 +- .../world/moist_control/MoistControl.java | 3 +- .../modules/world/quick_fire/QuickFire.java | 3 +- src/main/resources/fabric.mod.json | 3 ++ 38 files changed, 230 insertions(+), 30 deletions(-) create mode 100644 src/main/java/me/melontini/andromeda/bootstrap/util/Environment.java create mode 100644 src/main/java/me/melontini/andromeda/common/AndromedaClient.java create mode 100644 src/main/java/me/melontini/andromeda/common/mixin/SubCategoryListEntryMixin.java create mode 100644 src/main/java/me/melontini/andromeda/common/util/CommanderSupport.java diff --git a/src/main/java/me/melontini/andromeda/bootstrap/ModuleInfo.java b/src/main/java/me/melontini/andromeda/bootstrap/ModuleInfo.java index 9bbed4e2..544ffa5b 100644 --- a/src/main/java/me/melontini/andromeda/bootstrap/ModuleInfo.java +++ b/src/main/java/me/melontini/andromeda/bootstrap/ModuleInfo.java @@ -2,10 +2,13 @@ package me.melontini.andromeda.bootstrap; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; +import me.melontini.andromeda.bootstrap.util.Environment; @Retention(RetentionPolicy.RUNTIME) public @interface ModuleInfo { String name(); String category(); + + Environment env() default Environment.BOTH; } diff --git a/src/main/java/me/melontini/andromeda/bootstrap/ModuleManager.java b/src/main/java/me/melontini/andromeda/bootstrap/ModuleManager.java index 23f251cd..09b76a85 100644 --- a/src/main/java/me/melontini/andromeda/bootstrap/ModuleManager.java +++ b/src/main/java/me/melontini/andromeda/bootstrap/ModuleManager.java @@ -10,10 +10,12 @@ import me.melontini.andromeda.bootstrap.config.handler.ModConfigHandler; import me.melontini.andromeda.bootstrap.event.BootstrapConfigEvent; import me.melontini.andromeda.bootstrap.event.PostBootstrapEvent; import me.melontini.andromeda.bootstrap.event.PostModuleInitEvent; +import me.melontini.andromeda.bootstrap.util.Environment; import me.melontini.andromeda.bootstrap.util.mixin.MixinHandler; import me.melontini.andromeda.modules.ModuleDiscovery; import me.melontini.andromeda.util.*; import me.melontini.dark_matter.api.base.util.Utilities; +import net.fabricmc.api.EnvType; import net.fabricmc.loader.api.FabricLoader; import net.fabricmc.loader.api.ModContainer; import net.fabricmc.loader.api.entrypoint.PreLaunchEntrypoint; @@ -58,6 +60,11 @@ public class ModuleManager implements PreLaunchEntrypoint { if (ModuleHelper.getMeta(cls) == null) throw Util.create("%s has no ModuleInfo annotation", IllegalStateException::new); }) + .filter(cls -> { + if (FabricLoader.getInstance().getEnvironmentType() == EnvType.CLIENT) + return true; // Every module is allowed on client. + return ModuleHelper.getMeta(cls).env().allows(Environment.SERVER); + }) .toList(); for (Class cls : moduleClasses) { diff --git a/src/main/java/me/melontini/andromeda/bootstrap/util/Environment.java b/src/main/java/me/melontini/andromeda/bootstrap/util/Environment.java new file mode 100644 index 00000000..3dcc306c --- /dev/null +++ b/src/main/java/me/melontini/andromeda/bootstrap/util/Environment.java @@ -0,0 +1,44 @@ +package me.melontini.andromeda.bootstrap.util; + +import net.fabricmc.api.EnvType; + +public enum Environment { + CLIENT, + SERVER, + BOTH { + @Override + public boolean allows(Environment environment) { + return true; + } + }, + ANY { + @Override + public boolean allows(Environment environment) { + return true; + } + }; + + public boolean allows(EnvType envType) { + return allows(envType == EnvType.CLIENT ? CLIENT : SERVER); + } + + public boolean allows(Environment environment) { + return this == environment; + } + + public boolean isClient() { + return this == CLIENT; + } + + public boolean isServer() { + return this == SERVER; + } + + public boolean isAny() { + return this == ANY; + } + + public boolean isBoth() { + return this == BOTH; + } +} diff --git a/src/main/java/me/melontini/andromeda/bootstrap/util/mixin/AndromedaMixinPlugin.java b/src/main/java/me/melontini/andromeda/bootstrap/util/mixin/AndromedaMixinPlugin.java index 299af63c..51867b65 100644 --- a/src/main/java/me/melontini/andromeda/bootstrap/util/mixin/AndromedaMixinPlugin.java +++ b/src/main/java/me/melontini/andromeda/bootstrap/util/mixin/AndromedaMixinPlugin.java @@ -10,11 +10,15 @@ import java.util.List; import me.melontini.andromeda.util.ClassPath; import me.melontini.andromeda.util.Util; import me.melontini.dark_matter.api.base.util.Exceptions; +import me.melontini.dark_matter.api.mixin.AsmUtil; import me.melontini.dark_matter.api.mixin.ExtendablePlugin; import me.melontini.dark_matter.api.mixin.IPluginPlugin; +import net.fabricmc.api.EnvType; import net.fabricmc.loader.api.FabricLoader; import org.objectweb.asm.ClassReader; +import org.objectweb.asm.tree.AnnotationNode; import org.objectweb.asm.tree.ClassNode; +import org.spongepowered.asm.util.Annotations; public class AndromedaMixinPlugin extends ExtendablePlugin { @@ -63,6 +67,16 @@ public class AndromedaMixinPlugin extends ExtendablePlugin { } public static boolean checkNode(ClassNode n) { + // if (Debug.Keys.VERIFY_MIXINS.isPresent()) verifyMixin(n, n.name); + + // Validate that the mixin is loaded in a correct environment. + var current = FabricLoader.getInstance().getEnvironmentType(); + AnnotationNode envNode = Annotations.getVisible(n, MixinEnvironment.class); + if (envNode != null) { + EnvType value = AsmUtil.getAnnotationValue(envNode, "value", null); + if (current != value) return false; + } + // MixinPredicate only uses the node. return MIXIN_PREDICATE.shouldApplyMixin(null, null, n); } diff --git a/src/main/java/me/melontini/andromeda/bootstrap/util/mixin/ModuleMixinPlugin.java b/src/main/java/me/melontini/andromeda/bootstrap/util/mixin/ModuleMixinPlugin.java index 16a0b69b..d8925a0a 100644 --- a/src/main/java/me/melontini/andromeda/bootstrap/util/mixin/ModuleMixinPlugin.java +++ b/src/main/java/me/melontini/andromeda/bootstrap/util/mixin/ModuleMixinPlugin.java @@ -10,6 +10,9 @@ import org.spongepowered.asm.mixin.extensibility.IMixinInfo; public class ModuleMixinPlugin extends ExtendablePlugin { + private static final String MIXIN_ENVIRONMENT_ANNOTATION = + "L" + MixinEnvironment.class.getName().replace(".", "/") + ";"; + private String mixinPackage; private final MixinHandler processor = ModuleManager.get().mixinHandler(); @@ -31,5 +34,10 @@ public class ModuleMixinPlugin extends ExtendablePlugin { @Override protected void afterApply( String targetClassName, ClassNode targetClass, String mixinClassName, IMixinInfo mixinInfo) { + if (targetClass.visibleAnnotations != null + && !targetClass.visibleAnnotations.isEmpty()) { // strip our annotation from the class + targetClass.visibleAnnotations.removeIf( + node -> MIXIN_ENVIRONMENT_ANNOTATION.equals(node.desc)); + } } } diff --git a/src/main/java/me/melontini/andromeda/common/AndromedaClient.java b/src/main/java/me/melontini/andromeda/common/AndromedaClient.java new file mode 100644 index 00000000..1aa54d97 --- /dev/null +++ b/src/main/java/me/melontini/andromeda/common/AndromedaClient.java @@ -0,0 +1,36 @@ +package me.melontini.andromeda.common; + +import me.melontini.andromeda.bootstrap.ModuleManager; +import me.melontini.andromeda.bootstrap.config.RegisterConfigEvent; +import me.melontini.andromeda.bootstrap.event.InitEvents; +import me.melontini.andromeda.common.config.handler.MultiConfigHandler; +import net.fabricmc.api.ClientModInitializer; +import net.fabricmc.loader.api.FabricLoader; + +public class AndromedaClient implements ClientModInitializer { + + private static AndromedaClient instance; + + public static final MultiConfigHandler CLIENT = new MultiConfigHandler( + ModuleManager.get(), + FabricLoader.getInstance().getConfigDir(), + "client", + RegisterConfigEvent.CLIENT); + + @Override + public void onInitializeClient() { + Andromeda.get().onMergedEntryPoint(); + instance = this; + + var manager = ModuleManager.get(); + + CLIENT.loadAll(); + CLIENT.saveAll(); + + InitEvents.CLIENT.invoker().onModuleClientInit().runEntrypoint(); + } + + public static AndromedaClient get() { + return instance; + } +} diff --git a/src/main/java/me/melontini/andromeda/common/mixin/SubCategoryListEntryMixin.java b/src/main/java/me/melontini/andromeda/common/mixin/SubCategoryListEntryMixin.java new file mode 100644 index 00000000..3de1e352 --- /dev/null +++ b/src/main/java/me/melontini/andromeda/common/mixin/SubCategoryListEntryMixin.java @@ -0,0 +1,30 @@ +package me.melontini.andromeda.common.mixin; + +import com.llamalad7.mixinextras.injector.ModifyExpressionValue; +import com.llamalad7.mixinextras.sugar.Local; +import me.melontini.andromeda.bootstrap.util.mixin.MixinEnvironment; +import me.melontini.dark_matter.api.mixin.annotations.MixinPredicate; +import me.melontini.dark_matter.api.mixin.annotations.Mod; +import me.shedaniel.clothconfig2.api.AbstractConfigListEntry; +import me.shedaniel.clothconfig2.gui.entries.SubCategoryListEntry; +import net.fabricmc.api.EnvType; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@MixinPredicate(mods = @Mod("cloth-config")) +@MixinEnvironment(EnvType.CLIENT) +@Mixin(SubCategoryListEntry.class) +abstract class SubCategoryListEntryMixin { + + // Why am I fixing CC bugs? + @ModifyExpressionValue( + method = "isRequiresRestart", + at = + @At( + value = "INVOKE", + target = + "Lme/shedaniel/clothconfig2/api/AbstractConfigListEntry;isRequiresRestart()Z")) + private boolean andromeda$isEdited(boolean original, @Local AbstractConfigListEntry e) { + return original && e.isEdited(); + } +} diff --git a/src/main/java/me/melontini/andromeda/common/util/CommanderSupport.java b/src/main/java/me/melontini/andromeda/common/util/CommanderSupport.java new file mode 100644 index 00000000..29545606 --- /dev/null +++ b/src/main/java/me/melontini/andromeda/common/util/CommanderSupport.java @@ -0,0 +1,24 @@ +package me.melontini.andromeda.common.util; + +import me.melontini.andromeda.bootstrap.Module; +import me.melontini.andromeda.bootstrap.ModuleHelper; +import me.melontini.andromeda.bootstrap.event.BootstrapConfigEvent; +import me.melontini.andromeda.util.Util; +import net.fabricmc.loader.api.FabricLoader; + +public class CommanderSupport { + + private static final boolean LOADED = FabricLoader.getInstance().isModLoaded("commander"); + + public static void require(Module module) { + if (module.meta().env().isClient()) return; + if (LOADED) return; + + BootstrapConfigEvent.get(module).listen(config -> { + if (config.enabled) { + throw Util.create( + ModuleHelper.id(module) + " requires Commander to run!", IllegalStateException::new); + } + }); + } +} diff --git a/src/main/java/me/melontini/andromeda/modules/blocks/bed/power/Power.java b/src/main/java/me/melontini/andromeda/modules/blocks/bed/power/Power.java index 10ac49d4..72ec51b3 100644 --- a/src/main/java/me/melontini/andromeda/modules/blocks/bed/power/Power.java +++ b/src/main/java/me/melontini/andromeda/modules/blocks/bed/power/Power.java @@ -4,9 +4,10 @@ import me.melontini.andromeda.bootstrap.Module; import me.melontini.andromeda.bootstrap.ModuleInfo; import me.melontini.andromeda.bootstrap.config.ConfigDefinition; import me.melontini.andromeda.bootstrap.config.RegisterConfigEvent; +import me.melontini.andromeda.bootstrap.util.Environment; import me.melontini.andromeda.common.config.GameConfig; -@ModuleInfo(name = "bed/power", category = "blocks") +@ModuleInfo(name = "bed/power", category = "blocks", env = Environment.SERVER) public final class Power extends Module { public static final ConfigDefinition CONFIG = new ConfigDefinition<>(() -> Config.class); diff --git a/src/main/java/me/melontini/andromeda/modules/blocks/bed/unsafe/Unsafe.java b/src/main/java/me/melontini/andromeda/modules/blocks/bed/unsafe/Unsafe.java index 5be78fc1..4e81c206 100644 --- a/src/main/java/me/melontini/andromeda/modules/blocks/bed/unsafe/Unsafe.java +++ b/src/main/java/me/melontini/andromeda/modules/blocks/bed/unsafe/Unsafe.java @@ -4,9 +4,10 @@ import me.melontini.andromeda.bootstrap.Module; import me.melontini.andromeda.bootstrap.ModuleInfo; import me.melontini.andromeda.bootstrap.config.ConfigDefinition; import me.melontini.andromeda.bootstrap.config.RegisterConfigEvent; +import me.melontini.andromeda.bootstrap.util.Environment; import me.melontini.andromeda.common.config.GameConfig; -@ModuleInfo(name = "bed/unsafe", category = "blocks") +@ModuleInfo(name = "bed/unsafe", category = "blocks", env = Environment.SERVER) public final class Unsafe extends Module { public static final ConfigDefinition CONFIG = ConfigDefinition.game(); diff --git a/src/main/java/me/melontini/andromeda/modules/blocks/campfire_effects/CampfireEffects.java b/src/main/java/me/melontini/andromeda/modules/blocks/campfire_effects/CampfireEffects.java index a5744aa7..c923c95e 100644 --- a/src/main/java/me/melontini/andromeda/modules/blocks/campfire_effects/CampfireEffects.java +++ b/src/main/java/me/melontini/andromeda/modules/blocks/campfire_effects/CampfireEffects.java @@ -9,11 +9,12 @@ import me.melontini.andromeda.bootstrap.Module; import me.melontini.andromeda.bootstrap.ModuleInfo; import me.melontini.andromeda.bootstrap.config.ConfigDefinition; import me.melontini.andromeda.bootstrap.config.RegisterConfigEvent; +import me.melontini.andromeda.bootstrap.util.Environment; import me.melontini.andromeda.common.config.GameConfig; import net.minecraft.world.effect.MobEffect; import net.minecraft.world.effect.MobEffects; -@ModuleInfo(name = "campfire_effects", category = "blocks") +@ModuleInfo(name = "campfire_effects", category = "blocks", env = Environment.SERVER) public final class CampfireEffects extends Module { public static final ConfigDefinition CONFIG = new ConfigDefinition<>(() -> Config.class); diff --git a/src/main/java/me/melontini/andromeda/modules/blocks/falling_propagule/FallingPropagule.java b/src/main/java/me/melontini/andromeda/modules/blocks/falling_propagule/FallingPropagule.java index 357b899f..241a644f 100644 --- a/src/main/java/me/melontini/andromeda/modules/blocks/falling_propagule/FallingPropagule.java +++ b/src/main/java/me/melontini/andromeda/modules/blocks/falling_propagule/FallingPropagule.java @@ -4,9 +4,10 @@ import me.melontini.andromeda.bootstrap.Module; import me.melontini.andromeda.bootstrap.ModuleInfo; import me.melontini.andromeda.bootstrap.config.ConfigDefinition; import me.melontini.andromeda.bootstrap.config.RegisterConfigEvent; +import me.melontini.andromeda.bootstrap.util.Environment; import me.melontini.andromeda.common.config.GameConfig; -@ModuleInfo(name = "falling_propagule", category = "blocks") +@ModuleInfo(name = "falling_propagule", category = "blocks", env = Environment.SERVER) public final class FallingPropagule extends Module { public static final ConfigDefinition CONFIG = ConfigDefinition.game(); diff --git a/src/main/java/me/melontini/andromeda/modules/blocks/leaf_slowdown/LeafSlowdown.java b/src/main/java/me/melontini/andromeda/modules/blocks/leaf_slowdown/LeafSlowdown.java index fa085f3e..1a082bbf 100644 --- a/src/main/java/me/melontini/andromeda/modules/blocks/leaf_slowdown/LeafSlowdown.java +++ b/src/main/java/me/melontini/andromeda/modules/blocks/leaf_slowdown/LeafSlowdown.java @@ -4,10 +4,11 @@ import me.melontini.andromeda.bootstrap.Module; import me.melontini.andromeda.bootstrap.ModuleInfo; import me.melontini.andromeda.bootstrap.config.ConfigDefinition; import me.melontini.andromeda.bootstrap.config.RegisterConfigEvent; +import me.melontini.andromeda.bootstrap.util.Environment; import me.melontini.andromeda.common.config.GameConfig; @Deprecated -@ModuleInfo(name = "leaf_slowdown", category = "blocks") +@ModuleInfo(name = "leaf_slowdown", category = "blocks", env = Environment.SERVER) public final class LeafSlowdown extends Module { public static final ConfigDefinition CONFIG = ConfigDefinition.game(); diff --git a/src/main/java/me/melontini/andromeda/modules/entities/bee_flower_duplication/BeeFlowerDuplication.java b/src/main/java/me/melontini/andromeda/modules/entities/bee_flower_duplication/BeeFlowerDuplication.java index 64e16ca0..01930f08 100644 --- a/src/main/java/me/melontini/andromeda/modules/entities/bee_flower_duplication/BeeFlowerDuplication.java +++ b/src/main/java/me/melontini/andromeda/modules/entities/bee_flower_duplication/BeeFlowerDuplication.java @@ -4,9 +4,10 @@ import me.melontini.andromeda.bootstrap.Module; import me.melontini.andromeda.bootstrap.ModuleInfo; import me.melontini.andromeda.bootstrap.config.ConfigDefinition; import me.melontini.andromeda.bootstrap.config.RegisterConfigEvent; +import me.melontini.andromeda.bootstrap.util.Environment; import me.melontini.andromeda.common.config.GameConfig; -@ModuleInfo(name = "bee_flower_duplication", category = "entities") +@ModuleInfo(name = "bee_flower_duplication", category = "entities", env = Environment.SERVER) public final class BeeFlowerDuplication extends Module { public static final ConfigDefinition CONFIG = new ConfigDefinition<>(() -> Config.class); diff --git a/src/main/java/me/melontini/andromeda/modules/entities/better_furnace_minecart/BetterFurnaceMinecart.java b/src/main/java/me/melontini/andromeda/modules/entities/better_furnace_minecart/BetterFurnaceMinecart.java index babeeef4..d9010506 100644 --- a/src/main/java/me/melontini/andromeda/modules/entities/better_furnace_minecart/BetterFurnaceMinecart.java +++ b/src/main/java/me/melontini/andromeda/modules/entities/better_furnace_minecart/BetterFurnaceMinecart.java @@ -5,8 +5,9 @@ import me.melontini.andromeda.bootstrap.ModuleInfo; import me.melontini.andromeda.bootstrap.config.BaseConfig; import me.melontini.andromeda.bootstrap.config.ConfigDefinition; import me.melontini.andromeda.bootstrap.config.RegisterConfigEvent; +import me.melontini.andromeda.bootstrap.util.Environment; -@ModuleInfo(name = "better_furnace_minecart", category = "entities") +@ModuleInfo(name = "better_furnace_minecart", category = "entities", env = Environment.SERVER) public final class BetterFurnaceMinecart extends Module { public static final ConfigDefinition CONFIG = new ConfigDefinition<>(() -> Config.class); diff --git a/src/main/java/me/melontini/andromeda/modules/entities/ghast_tweaks/GhastTweaks.java b/src/main/java/me/melontini/andromeda/modules/entities/ghast_tweaks/GhastTweaks.java index bd237a8d..3915f6f6 100644 --- a/src/main/java/me/melontini/andromeda/modules/entities/ghast_tweaks/GhastTweaks.java +++ b/src/main/java/me/melontini/andromeda/modules/entities/ghast_tweaks/GhastTweaks.java @@ -6,9 +6,10 @@ import me.melontini.andromeda.bootstrap.config.ConfigDefinition; import me.melontini.andromeda.bootstrap.config.RegisterConfigEvent; import me.melontini.andromeda.bootstrap.event.InitEvents; import me.melontini.andromeda.bootstrap.event.PostBootstrapEvent; +import me.melontini.andromeda.bootstrap.util.Environment; import me.melontini.andromeda.common.config.GameConfig; -@ModuleInfo(name = "ghast_tweaks", category = "entities") +@ModuleInfo(name = "ghast_tweaks", category = "entities", env = Environment.SERVER) public final class GhastTweaks extends Module implements PostBootstrapEvent { public static final ConfigDefinition CONFIG = new ConfigDefinition<>(() -> Config.class); diff --git a/src/main/java/me/melontini/andromeda/modules/entities/minecart_speed_control/MinecartSpeedControl.java b/src/main/java/me/melontini/andromeda/modules/entities/minecart_speed_control/MinecartSpeedControl.java index d1c9329d..4e79469c 100644 --- a/src/main/java/me/melontini/andromeda/modules/entities/minecart_speed_control/MinecartSpeedControl.java +++ b/src/main/java/me/melontini/andromeda/modules/entities/minecart_speed_control/MinecartSpeedControl.java @@ -4,9 +4,10 @@ import me.melontini.andromeda.bootstrap.Module; import me.melontini.andromeda.bootstrap.ModuleInfo; import me.melontini.andromeda.bootstrap.config.ConfigDefinition; import me.melontini.andromeda.bootstrap.config.RegisterConfigEvent; +import me.melontini.andromeda.bootstrap.util.Environment; import me.melontini.andromeda.common.config.GameConfig; -@ModuleInfo(name = "minecart_speed_control", category = "entities") +@ModuleInfo(name = "minecart_speed_control", category = "entities", env = Environment.SERVER) public final class MinecartSpeedControl extends Module { public static final ConfigDefinition CONFIG = new ConfigDefinition<>(() -> Config.class); diff --git a/src/main/java/me/melontini/andromeda/modules/entities/slimes/Slimes.java b/src/main/java/me/melontini/andromeda/modules/entities/slimes/Slimes.java index 0268b8da..02e94f31 100644 --- a/src/main/java/me/melontini/andromeda/modules/entities/slimes/Slimes.java +++ b/src/main/java/me/melontini/andromeda/modules/entities/slimes/Slimes.java @@ -4,9 +4,10 @@ import me.melontini.andromeda.bootstrap.Module; import me.melontini.andromeda.bootstrap.ModuleInfo; import me.melontini.andromeda.bootstrap.config.ConfigDefinition; import me.melontini.andromeda.bootstrap.config.RegisterConfigEvent; +import me.melontini.andromeda.bootstrap.util.Environment; import me.melontini.andromeda.common.config.GameConfig; -@ModuleInfo(name = "slimes", category = "entities") +@ModuleInfo(name = "slimes", category = "entities", env = Environment.SERVER) public final class Slimes extends Module { public static final ConfigDefinition CONFIG = new ConfigDefinition<>(() -> Config.class); diff --git a/src/main/java/me/melontini/andromeda/modules/entities/snowball_tweaks/Snowballs.java b/src/main/java/me/melontini/andromeda/modules/entities/snowball_tweaks/Snowballs.java index 59118d06..01c8ec7b 100644 --- a/src/main/java/me/melontini/andromeda/modules/entities/snowball_tweaks/Snowballs.java +++ b/src/main/java/me/melontini/andromeda/modules/entities/snowball_tweaks/Snowballs.java @@ -4,9 +4,10 @@ import me.melontini.andromeda.bootstrap.Module; import me.melontini.andromeda.bootstrap.ModuleInfo; import me.melontini.andromeda.bootstrap.config.ConfigDefinition; import me.melontini.andromeda.bootstrap.config.RegisterConfigEvent; +import me.melontini.andromeda.bootstrap.util.Environment; import me.melontini.andromeda.common.config.GameConfig; -@ModuleInfo(name = "snowball_tweaks", category = "entities") +@ModuleInfo(name = "snowball_tweaks", category = "entities", env = Environment.SERVER) public final class Snowballs extends Module { public static final ConfigDefinition CONFIG = new ConfigDefinition<>(() -> Config.class); diff --git a/src/main/java/me/melontini/andromeda/modules/entities/vehicle_unentrapment/VehicleUnentrapment.java b/src/main/java/me/melontini/andromeda/modules/entities/vehicle_unentrapment/VehicleUnentrapment.java index 40b6acb1..b0ea3790 100644 --- a/src/main/java/me/melontini/andromeda/modules/entities/vehicle_unentrapment/VehicleUnentrapment.java +++ b/src/main/java/me/melontini/andromeda/modules/entities/vehicle_unentrapment/VehicleUnentrapment.java @@ -6,9 +6,10 @@ import me.melontini.andromeda.bootstrap.config.ConfigDefinition; import me.melontini.andromeda.bootstrap.config.RegisterConfigEvent; import me.melontini.andromeda.bootstrap.event.InitEvents; import me.melontini.andromeda.bootstrap.event.PostBootstrapEvent; +import me.melontini.andromeda.bootstrap.util.Environment; import me.melontini.andromeda.common.config.GameConfig; -@ModuleInfo(name = "vehicle_unentrapment", category = "entities") +@ModuleInfo(name = "vehicle_unentrapment", category = "entities", env = Environment.SERVER) public final class VehicleUnentrapment extends Module implements PostBootstrapEvent { public static final ConfigDefinition CONFIG = ConfigDefinition.game(); diff --git a/src/main/java/me/melontini/andromeda/modules/entities/villagers_follow_emeralds/VillagersFollowEmeralds.java b/src/main/java/me/melontini/andromeda/modules/entities/villagers_follow_emeralds/VillagersFollowEmeralds.java index 69cc7c1b..dd7faa0c 100644 --- a/src/main/java/me/melontini/andromeda/modules/entities/villagers_follow_emeralds/VillagersFollowEmeralds.java +++ b/src/main/java/me/melontini/andromeda/modules/entities/villagers_follow_emeralds/VillagersFollowEmeralds.java @@ -4,9 +4,10 @@ import me.melontini.andromeda.bootstrap.Module; import me.melontini.andromeda.bootstrap.ModuleInfo; import me.melontini.andromeda.bootstrap.config.ConfigDefinition; import me.melontini.andromeda.bootstrap.config.RegisterConfigEvent; +import me.melontini.andromeda.bootstrap.util.Environment; import me.melontini.andromeda.common.config.GameConfig; -@ModuleInfo(name = "villagers_follow_emeralds", category = "entities") +@ModuleInfo(name = "villagers_follow_emeralds", category = "entities", env = Environment.SERVER) public final class VillagersFollowEmeralds extends Module { public static final ConfigDefinition CONFIG = ConfigDefinition.game(); diff --git a/src/main/java/me/melontini/andromeda/modules/entities/zombie/all_pick_up/Pickup.java b/src/main/java/me/melontini/andromeda/modules/entities/zombie/all_pick_up/Pickup.java index 820d8b88..b0cdcc39 100644 --- a/src/main/java/me/melontini/andromeda/modules/entities/zombie/all_pick_up/Pickup.java +++ b/src/main/java/me/melontini/andromeda/modules/entities/zombie/all_pick_up/Pickup.java @@ -4,9 +4,10 @@ import me.melontini.andromeda.bootstrap.Module; import me.melontini.andromeda.bootstrap.ModuleInfo; import me.melontini.andromeda.bootstrap.config.ConfigDefinition; import me.melontini.andromeda.bootstrap.config.RegisterConfigEvent; +import me.melontini.andromeda.bootstrap.util.Environment; import me.melontini.andromeda.common.config.GameConfig; -@ModuleInfo(name = "zombie/all_pick_up", category = "entities") +@ModuleInfo(name = "zombie/all_pick_up", category = "entities", env = Environment.SERVER) public final class Pickup extends Module { public static final ConfigDefinition CONFIG = ConfigDefinition.game(); diff --git a/src/main/java/me/melontini/andromeda/modules/entities/zombie/clean_pickup/Pickup.java b/src/main/java/me/melontini/andromeda/modules/entities/zombie/clean_pickup/Pickup.java index 0f336da9..c64f7415 100644 --- a/src/main/java/me/melontini/andromeda/modules/entities/zombie/clean_pickup/Pickup.java +++ b/src/main/java/me/melontini/andromeda/modules/entities/zombie/clean_pickup/Pickup.java @@ -4,9 +4,10 @@ import me.melontini.andromeda.bootstrap.Module; import me.melontini.andromeda.bootstrap.ModuleInfo; import me.melontini.andromeda.bootstrap.config.ConfigDefinition; import me.melontini.andromeda.bootstrap.config.RegisterConfigEvent; +import me.melontini.andromeda.bootstrap.util.Environment; import me.melontini.andromeda.common.config.GameConfig; -@ModuleInfo(name = "zombie/clean_pickup", category = "entities") +@ModuleInfo(name = "zombie/clean_pickup", category = "entities", env = Environment.SERVER) public final class Pickup extends Module { public static final ConfigDefinition CONFIG = ConfigDefinition.game(); diff --git a/src/main/java/me/melontini/andromeda/modules/items/lava_disintegrator/LavaDisintegrator.java b/src/main/java/me/melontini/andromeda/modules/items/lava_disintegrator/LavaDisintegrator.java index a50cbe9f..a29f5743 100644 --- a/src/main/java/me/melontini/andromeda/modules/items/lava_disintegrator/LavaDisintegrator.java +++ b/src/main/java/me/melontini/andromeda/modules/items/lava_disintegrator/LavaDisintegrator.java @@ -2,6 +2,7 @@ package me.melontini.andromeda.modules.items.lava_disintegrator; import me.melontini.andromeda.bootstrap.Module; import me.melontini.andromeda.bootstrap.ModuleInfo; +import me.melontini.andromeda.bootstrap.util.Environment; -@ModuleInfo(name = "lava_disintegrator", category = "items") +@ModuleInfo(name = "lava_disintegrator", category = "items", env = Environment.SERVER) public class LavaDisintegrator extends Module {} diff --git a/src/main/java/me/melontini/andromeda/modules/items/minecart_block_picking/MinecartBlockPicking.java b/src/main/java/me/melontini/andromeda/modules/items/minecart_block_picking/MinecartBlockPicking.java index e7c7bbe9..d6358f60 100644 --- a/src/main/java/me/melontini/andromeda/modules/items/minecart_block_picking/MinecartBlockPicking.java +++ b/src/main/java/me/melontini/andromeda/modules/items/minecart_block_picking/MinecartBlockPicking.java @@ -6,9 +6,10 @@ import me.melontini.andromeda.bootstrap.config.ConfigDefinition; import me.melontini.andromeda.bootstrap.config.RegisterConfigEvent; import me.melontini.andromeda.bootstrap.event.InitEvents; import me.melontini.andromeda.bootstrap.event.PostBootstrapEvent; +import me.melontini.andromeda.bootstrap.util.Environment; import me.melontini.andromeda.common.config.GameConfig; -@ModuleInfo(name = "minecart_block_picking", category = "items") +@ModuleInfo(name = "minecart_block_picking", category = "items", env = Environment.SERVER) public final class MinecartBlockPicking extends Module implements PostBootstrapEvent { public static final ConfigDefinition CONFIG = new ConfigDefinition<>(() -> Config.class); diff --git a/src/main/java/me/melontini/andromeda/modules/mechanics/dragon_fight/DragonFight.java b/src/main/java/me/melontini/andromeda/modules/mechanics/dragon_fight/DragonFight.java index 07576868..e60a6e1f 100644 --- a/src/main/java/me/melontini/andromeda/modules/mechanics/dragon_fight/DragonFight.java +++ b/src/main/java/me/melontini/andromeda/modules/mechanics/dragon_fight/DragonFight.java @@ -1,14 +1,17 @@ package me.melontini.andromeda.modules.mechanics.dragon_fight; import me.melontini.andromeda.bootstrap.Module; -import me.melontini.andromeda.bootstrap.ModuleInfo; import me.melontini.andromeda.bootstrap.config.BaseConfig; import me.melontini.andromeda.bootstrap.config.ConfigDefinition; import me.melontini.andromeda.bootstrap.config.RegisterConfigEvent; import me.melontini.andromeda.bootstrap.event.InitEvents; import me.melontini.andromeda.bootstrap.event.PostBootstrapEvent; +import me.melontini.andromeda.bootstrap.util.Environment; -@ModuleInfo(name = "dragon_fight", category = "mechanics") +@me.melontini.andromeda.bootstrap.ModuleInfo( + name = "dragon_fight", + category = "mechanics", + env = Environment.SERVER) public final class DragonFight extends Module implements PostBootstrapEvent { public static final ConfigDefinition CONFIG = new ConfigDefinition<>(() -> Config.class); diff --git a/src/main/java/me/melontini/andromeda/modules/mechanics/trading_goat_horn/GoatHorn.java b/src/main/java/me/melontini/andromeda/modules/mechanics/trading_goat_horn/GoatHorn.java index 04c9a705..af16757b 100644 --- a/src/main/java/me/melontini/andromeda/modules/mechanics/trading_goat_horn/GoatHorn.java +++ b/src/main/java/me/melontini/andromeda/modules/mechanics/trading_goat_horn/GoatHorn.java @@ -6,10 +6,11 @@ import me.melontini.andromeda.bootstrap.config.ConfigDefinition; import me.melontini.andromeda.bootstrap.config.RegisterConfigEvent; import me.melontini.andromeda.bootstrap.event.InitEvents; import me.melontini.andromeda.bootstrap.event.PostBootstrapEvent; +import me.melontini.andromeda.bootstrap.util.Environment; import me.melontini.andromeda.common.config.GameConfig; import net.minecraft.resources.ResourceLocation; -@ModuleInfo(name = "trading_goat_horn", category = "mechanics") +@ModuleInfo(name = "trading_goat_horn", category = "mechanics", env = Environment.SERVER) public final class GoatHorn extends Module implements PostBootstrapEvent { public static final ConfigDefinition CONFIG = new ConfigDefinition<>(() -> Config.class); diff --git a/src/main/java/me/melontini/andromeda/modules/mechanics/villager_gifting/VillagerGifting.java b/src/main/java/me/melontini/andromeda/modules/mechanics/villager_gifting/VillagerGifting.java index e7abd9ce..28e0176a 100644 --- a/src/main/java/me/melontini/andromeda/modules/mechanics/villager_gifting/VillagerGifting.java +++ b/src/main/java/me/melontini/andromeda/modules/mechanics/villager_gifting/VillagerGifting.java @@ -4,9 +4,10 @@ import me.melontini.andromeda.bootstrap.Module; import me.melontini.andromeda.bootstrap.ModuleInfo; import me.melontini.andromeda.bootstrap.config.ConfigDefinition; import me.melontini.andromeda.bootstrap.config.RegisterConfigEvent; +import me.melontini.andromeda.bootstrap.util.Environment; import me.melontini.andromeda.common.config.GameConfig; -@ModuleInfo(name = "villager_gifting", category = "mechanics") +@ModuleInfo(name = "villager_gifting", category = "mechanics", env = Environment.SERVER) public final class VillagerGifting extends Module { public static final ConfigDefinition CONFIG = ConfigDefinition.game(); diff --git a/src/main/java/me/melontini/andromeda/modules/misc/minor_inconvenience/MinorInconvenience.java b/src/main/java/me/melontini/andromeda/modules/misc/minor_inconvenience/MinorInconvenience.java index 7275537b..cfcb9cb6 100644 --- a/src/main/java/me/melontini/andromeda/modules/misc/minor_inconvenience/MinorInconvenience.java +++ b/src/main/java/me/melontini/andromeda/modules/misc/minor_inconvenience/MinorInconvenience.java @@ -4,9 +4,10 @@ import me.melontini.andromeda.bootstrap.Module; import me.melontini.andromeda.bootstrap.ModuleInfo; import me.melontini.andromeda.bootstrap.config.ConfigDefinition; import me.melontini.andromeda.bootstrap.config.RegisterConfigEvent; +import me.melontini.andromeda.bootstrap.util.Environment; import me.melontini.andromeda.common.config.GameConfig; -@ModuleInfo(name = "minor_inconvenience", category = "misc") +@ModuleInfo(name = "minor_inconvenience", category = "misc", env = Environment.SERVER) public final class MinorInconvenience extends Module { public static final ConfigDefinition CONFIG = ConfigDefinition.game(); diff --git a/src/main/java/me/melontini/andromeda/modules/misc/recipe_advancements_generation/AdvancementGeneration.java b/src/main/java/me/melontini/andromeda/modules/misc/recipe_advancements_generation/AdvancementGeneration.java index ec4c6182..c90a9cc3 100644 --- a/src/main/java/me/melontini/andromeda/modules/misc/recipe_advancements_generation/AdvancementGeneration.java +++ b/src/main/java/me/melontini/andromeda/modules/misc/recipe_advancements_generation/AdvancementGeneration.java @@ -10,10 +10,11 @@ import me.melontini.andromeda.bootstrap.config.ConfigDefinition; import me.melontini.andromeda.bootstrap.config.RegisterConfigEvent; import me.melontini.andromeda.bootstrap.event.InitEvents; import me.melontini.andromeda.bootstrap.event.PostBootstrapEvent; +import me.melontini.andromeda.bootstrap.util.Environment; import me.melontini.andromeda.common.Andromeda; import net.minecraft.resources.ResourceLocation; -@ModuleInfo(name = "recipe_advancements_generation", category = "misc") +@ModuleInfo(name = "recipe_advancements_generation", category = "misc", env = Environment.SERVER) public final class AdvancementGeneration extends Module implements PostBootstrapEvent { public static final ConfigDefinition CONFIG = new ConfigDefinition<>(() -> Config.class); diff --git a/src/main/java/me/melontini/andromeda/modules/misc/tiny_storage/TinyStorage.java b/src/main/java/me/melontini/andromeda/modules/misc/tiny_storage/TinyStorage.java index 8f0df35d..11a28f2f 100644 --- a/src/main/java/me/melontini/andromeda/modules/misc/tiny_storage/TinyStorage.java +++ b/src/main/java/me/melontini/andromeda/modules/misc/tiny_storage/TinyStorage.java @@ -8,8 +8,9 @@ import me.melontini.andromeda.bootstrap.config.ConfigDefinition; import me.melontini.andromeda.bootstrap.config.RegisterConfigEvent; import me.melontini.andromeda.bootstrap.event.InitEvents; import me.melontini.andromeda.bootstrap.event.PostBootstrapEvent; +import me.melontini.andromeda.bootstrap.util.Environment; -@ModuleInfo(name = "tiny_storage", category = "misc") +@ModuleInfo(name = "tiny_storage", category = "misc", env = Environment.SERVER) public final class TinyStorage extends Module implements PostBootstrapEvent { public static final ThreadLocal LOADING = ThreadLocal.withInitial(() -> false); diff --git a/src/main/java/me/melontini/andromeda/modules/world/auto_planting/AutoPlanting.java b/src/main/java/me/melontini/andromeda/modules/world/auto_planting/AutoPlanting.java index 4613d77d..6f93b27a 100644 --- a/src/main/java/me/melontini/andromeda/modules/world/auto_planting/AutoPlanting.java +++ b/src/main/java/me/melontini/andromeda/modules/world/auto_planting/AutoPlanting.java @@ -6,10 +6,11 @@ import me.melontini.andromeda.bootstrap.Module; import me.melontini.andromeda.bootstrap.ModuleInfo; import me.melontini.andromeda.bootstrap.config.ConfigDefinition; import me.melontini.andromeda.bootstrap.config.RegisterConfigEvent; +import me.melontini.andromeda.bootstrap.util.Environment; import me.melontini.andromeda.common.config.GameConfig; import net.minecraft.world.item.Item; -@ModuleInfo(name = "auto_planting", category = "world") +@ModuleInfo(name = "auto_planting", category = "world", env = Environment.SERVER) public final class AutoPlanting extends Module { public static final ConfigDefinition CONFIG = new ConfigDefinition<>(() -> Config.class); diff --git a/src/main/java/me/melontini/andromeda/modules/world/crop_temperature/PlantTemperature.java b/src/main/java/me/melontini/andromeda/modules/world/crop_temperature/PlantTemperature.java index 26a7f68b..bec71cd8 100644 --- a/src/main/java/me/melontini/andromeda/modules/world/crop_temperature/PlantTemperature.java +++ b/src/main/java/me/melontini/andromeda/modules/world/crop_temperature/PlantTemperature.java @@ -6,9 +6,10 @@ import me.melontini.andromeda.bootstrap.config.ConfigDefinition; import me.melontini.andromeda.bootstrap.config.RegisterConfigEvent; import me.melontini.andromeda.bootstrap.event.InitEvents; import me.melontini.andromeda.bootstrap.event.PostBootstrapEvent; +import me.melontini.andromeda.bootstrap.util.Environment; import me.melontini.andromeda.common.config.GameConfig; -@ModuleInfo(name = "crop_temperature", category = "world") +@ModuleInfo(name = "crop_temperature", category = "world", env = Environment.SERVER) public final class PlantTemperature extends Module implements PostBootstrapEvent { public static final ConfigDefinition CONFIG = new ConfigDefinition<>(() -> Config.class); diff --git a/src/main/java/me/melontini/andromeda/modules/world/falling_beenests/CanBeeNestsFall.java b/src/main/java/me/melontini/andromeda/modules/world/falling_beenests/CanBeeNestsFall.java index bb4ce41e..90df6f86 100644 --- a/src/main/java/me/melontini/andromeda/modules/world/falling_beenests/CanBeeNestsFall.java +++ b/src/main/java/me/melontini/andromeda/modules/world/falling_beenests/CanBeeNestsFall.java @@ -4,9 +4,10 @@ import me.melontini.andromeda.bootstrap.Module; import me.melontini.andromeda.bootstrap.ModuleInfo; import me.melontini.andromeda.bootstrap.config.ConfigDefinition; import me.melontini.andromeda.bootstrap.config.RegisterConfigEvent; +import me.melontini.andromeda.bootstrap.util.Environment; import me.melontini.andromeda.common.config.GameConfig; -@ModuleInfo(name = "falling_beenests", category = "world") +@ModuleInfo(name = "falling_beenests", category = "world", env = Environment.SERVER) public final class CanBeeNestsFall extends Module { public static final ConfigDefinition CONFIG = ConfigDefinition.game(); diff --git a/src/main/java/me/melontini/andromeda/modules/world/loot_barrels/LootBarrels.java b/src/main/java/me/melontini/andromeda/modules/world/loot_barrels/LootBarrels.java index 67b6f439..a467e996 100644 --- a/src/main/java/me/melontini/andromeda/modules/world/loot_barrels/LootBarrels.java +++ b/src/main/java/me/melontini/andromeda/modules/world/loot_barrels/LootBarrels.java @@ -4,8 +4,9 @@ import me.melontini.andromeda.bootstrap.Module; import me.melontini.andromeda.bootstrap.ModuleInfo; import me.melontini.andromeda.bootstrap.event.InitEvents; import me.melontini.andromeda.bootstrap.event.PostBootstrapEvent; +import me.melontini.andromeda.bootstrap.util.Environment; -@ModuleInfo(name = "loot_barrels", category = "world") +@ModuleInfo(name = "loot_barrels", category = "world", env = Environment.SERVER) public final class LootBarrels extends Module implements PostBootstrapEvent { @Override diff --git a/src/main/java/me/melontini/andromeda/modules/world/moist_control/MoistControl.java b/src/main/java/me/melontini/andromeda/modules/world/moist_control/MoistControl.java index b1271e87..897cf852 100644 --- a/src/main/java/me/melontini/andromeda/modules/world/moist_control/MoistControl.java +++ b/src/main/java/me/melontini/andromeda/modules/world/moist_control/MoistControl.java @@ -5,8 +5,9 @@ import me.melontini.andromeda.bootstrap.ModuleInfo; import me.melontini.andromeda.bootstrap.config.BaseConfig; import me.melontini.andromeda.bootstrap.config.ConfigDefinition; import me.melontini.andromeda.bootstrap.config.RegisterConfigEvent; +import me.melontini.andromeda.bootstrap.util.Environment; -@ModuleInfo(name = "moist_control", category = "world") +@ModuleInfo(name = "moist_control", category = "world", env = Environment.SERVER) public final class MoistControl extends Module { public static final ConfigDefinition CONFIG = new ConfigDefinition<>(() -> Config.class); diff --git a/src/main/java/me/melontini/andromeda/modules/world/quick_fire/QuickFire.java b/src/main/java/me/melontini/andromeda/modules/world/quick_fire/QuickFire.java index e7afe88a..d909e380 100644 --- a/src/main/java/me/melontini/andromeda/modules/world/quick_fire/QuickFire.java +++ b/src/main/java/me/melontini/andromeda/modules/world/quick_fire/QuickFire.java @@ -4,10 +4,11 @@ import me.melontini.andromeda.bootstrap.Module; import me.melontini.andromeda.bootstrap.ModuleInfo; import me.melontini.andromeda.bootstrap.config.ConfigDefinition; import me.melontini.andromeda.bootstrap.config.RegisterConfigEvent; +import me.melontini.andromeda.bootstrap.util.Environment; import me.melontini.andromeda.common.config.GameConfig; @Deprecated -@ModuleInfo(name = "quick_fire", category = "world") +@ModuleInfo(name = "quick_fire", category = "world", env = Environment.SERVER) public final class QuickFire extends Module { public static final ConfigDefinition CONFIG = ConfigDefinition.game(); diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index ecfb640b..6524044f 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -16,6 +16,9 @@ "server": [ "me.melontini.andromeda.common.AndromedaServer" ], + "client": [ + "me.melontini.andromeda.common.AndromedaClient" + ], "main": [ "me.melontini.andromeda.common.Andromeda" ] -- 2.51.2