diff --git a/src/main/java/micdoodle8/mods/galacticraft/core/mixins/Mixins.java b/src/main/java/micdoodle8/mods/galacticraft/core/mixins/Mixins.java index 49d7931f82..1add2b3037 100644 --- a/src/main/java/micdoodle8/mods/galacticraft/core/mixins/Mixins.java +++ b/src/main/java/micdoodle8/mods/galacticraft/core/mixins/Mixins.java @@ -12,7 +12,12 @@ public enum Mixins implements IMixins { .addClientMixins("forge.ForgeHooksClientMixin")), CHECK_OTHER_MOD_PREVENTS_GENERATION( new MixinBuilder("Only generate the world if no mod prevents it") - .addCommonMixins("minecraft.ChunkProviderServerMixin")), + .addCommonMixins("minecraft.ChunkProviderServerMixin") + .addExcludedMod(TargetedMod.DRAGONAPI)), + CHECK_OTHER_MOD_PREVENTS_GENERATION_DRAGONAPI( + new MixinBuilder("Only generate the world if no mod prevents it") + .addCommonMixins("minecraft.ChunkProviderServerMixin_DragonApi") + .addRequiredMod(TargetedMod.DRAGONAPI)), RENDER_FOOTPRINTS(new MixinBuilder() .addClientMixins("minecraft.EffectRendererMixin")), MODIFY_ENTITY_GRAVITY(new MixinBuilder() diff --git a/src/main/java/micdoodle8/mods/galacticraft/core/mixins/TargetedMod.java b/src/main/java/micdoodle8/mods/galacticraft/core/mixins/TargetedMod.java index ccdaa19ee9..6dfee1cc2a 100644 --- a/src/main/java/micdoodle8/mods/galacticraft/core/mixins/TargetedMod.java +++ b/src/main/java/micdoodle8/mods/galacticraft/core/mixins/TargetedMod.java @@ -7,8 +7,9 @@ public enum TargetedMod implements ITargetMod { - PLAYERAPI("api.player.forge.PlayerAPIPlugin", "PlayerAPI"), - OPTIFINE("optifine.OptiFineForgeTweaker", "Optifine"); + DRAGONAPI("Reika.DragonAPI.Auxiliary.DragonAPIASMHandler", "DragonAPI"), + OPTIFINE("optifine.OptiFineForgeTweaker", "Optifine"), + PLAYERAPI("api.player.forge.PlayerAPIPlugin", "PlayerAPI"); private final TargetModBuilder builder; diff --git a/src/main/java/micdoodle8/mods/galacticraft/core/mixins/early/minecraft/ChunkProviderServerMixin_DragonApi.java b/src/main/java/micdoodle8/mods/galacticraft/core/mixins/early/minecraft/ChunkProviderServerMixin_DragonApi.java new file mode 100644 index 0000000000..c34b94c6ab --- /dev/null +++ b/src/main/java/micdoodle8/mods/galacticraft/core/mixins/early/minecraft/ChunkProviderServerMixin_DragonApi.java @@ -0,0 +1,31 @@ +package micdoodle8.mods.galacticraft.core.mixins.early.minecraft; + +import net.minecraft.world.World; +import net.minecraft.world.chunk.IChunkProvider; +import net.minecraft.world.gen.ChunkProviderServer; + +import org.spongepowered.asm.mixin.Dynamic; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +import com.llamalad7.mixinextras.injector.v2.WrapWithCondition; + +import micdoodle8.mods.galacticraft.core.util.WorldUtil; + +@Mixin(ChunkProviderServer.class) +public class ChunkProviderServerMixin_DragonApi { + + @Dynamic + @SuppressWarnings("MixinAnnotationTarget") + @WrapWithCondition( + at = @At( + remap = false, + target = "LReika/DragonAPI/Auxiliary/WorldGenInterceptionRegistry;interceptChunkPopulation(IILnet/minecraft/world/World;Lnet/minecraft/world/chunk/IChunkProvider;Lnet/minecraft/world/chunk/IChunkProvider;)V", + value = "INVOKE"), + method = "populate(Lnet/minecraft/world/chunk/IChunkProvider;II)V", + require = 1) + private boolean galacticraft$checkOtherModPreventGenerate(int chunkX, int chunkZ, World world, + IChunkProvider chunkProvider, IChunkProvider chunkGenerator) { + return !WorldUtil.otherModPreventGenerate(chunkX, chunkZ, world, chunkProvider, chunkGenerator); + } +}