diff --git a/common/src/main/java/com/seibel/lod/common/wrappers/worldGeneration/step/StepFeatures.java b/common/src/main/java/com/seibel/lod/common/wrappers/worldGeneration/step/StepFeatures.java index 0383c3b21..dd0286e8e 100644 --- a/common/src/main/java/com/seibel/lod/common/wrappers/worldGeneration/step/StepFeatures.java +++ b/common/src/main/java/com/seibel/lod/common/wrappers/worldGeneration/step/StepFeatures.java @@ -1,6 +1,7 @@ package com.seibel.lod.common.wrappers.worldGeneration.step; import java.util.ArrayList; +import java.util.EnumSet; import com.seibel.lod.common.wrappers.worldGeneration.ThreadedParameters; import com.seibel.lod.common.wrappers.worldGeneration.mimicObject.LightedWorldGenRegion; @@ -11,6 +12,7 @@ import net.minecraft.ReportedException; import net.minecraft.world.level.chunk.ChunkAccess; import net.minecraft.world.level.chunk.ChunkStatus; import net.minecraft.world.level.chunk.ProtoChunk; +import net.minecraft.world.level.levelgen.Heightmap; public final class StepFeatures { /** @@ -40,6 +42,7 @@ public final class StepFeatures { for (ChunkAccess chunk : chunksToDo) { try { worldGenRegion.setOverrideCenter(chunk.getPos()); + Heightmap.primeHeightmaps(chunk, STATUS.heightmapsAfter()); envionment.params.generator.applyBiomeDecoration(worldGenRegion, tParams.structFeat); } catch (ReportedException e) { e.printStackTrace(); diff --git a/forge/build.gradle b/forge/build.gradle index e98949567..f8da464db 100644 --- a/forge/build.gradle +++ b/forge/build.gradle @@ -25,10 +25,19 @@ configurations { developmentForge.extendsFrom common } +def addMod(path, enabled) { + if (enabled == "2") + dependencies { modImplementation(path) } + else if (enabled == "1") + dependencies { modCompileOnly(path) } +} + dependencies { // Forge loader forge "net.minecraftforge:forge:${rootProject.minecraft_version}-${rootProject.forge_version}" + addMod("curse.maven:TerraForged-363820:${rootProject.terraforged_version}", rootProject.enable_terraforged) + common(project(path: ":common", configuration: "namedElements")) { transitive false } shadowMe(project(path: ":common", configuration: "transformProductionForge")) { transitive = false } diff --git a/forge/src/main/java/com/seibel/lod/forge/mixins/MixinTFChunkGenerator.java b/forge/src/main/java/com/seibel/lod/forge/mixins/MixinTFChunkGenerator.java new file mode 100644 index 000000000..f3bbd8cce --- /dev/null +++ b/forge/src/main/java/com/seibel/lod/forge/mixins/MixinTFChunkGenerator.java @@ -0,0 +1,49 @@ +package com.seibel.lod.forge.mixins; + +import java.util.Random; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Redirect; + +//import com.seibel.lod.core.api.ClientApi; +import com.terraforged.mod.chunk.generator.FeatureGenerator; + +import net.minecraft.core.BlockPos; +import net.minecraft.world.level.WorldGenLevel; +import net.minecraft.world.level.chunk.ChunkGenerator; +import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; + +@Mixin(FeatureGenerator.class) +public class MixinTFChunkGenerator { + + @Redirect(method = "decorate(" + + "Lnet/minecraft/world/level/StructureFeatureManager;" + + "Lnet/minecraft/world/level/WorldGenLevel;" + + "Lnet/minecraft/world/level/chunk/ChunkAccess;" + + "Lnet/minecraft/world/level/biome/Biome;" + + "Lnet/minecraft/core/BlockPos;" + + "Lcom/terraforged/mod/profiler/watchdog/WatchdogContext;)V", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/world/level/levelgen/feature/ConfiguredFeature;place(" + + "Lnet/minecraft/world/level/WorldGenLevel;" + + "Lnet/minecraft/world/level/chunk/ChunkGenerator;" + + "Ljava/util/Random;Lnet/minecraft/core/BlockPos;)Z" + )) + private boolean wrapDecorate$FeaturePlace(ConfiguredFeature feature, WorldGenLevel arg, + ChunkGenerator arg2, Random random, BlockPos arg3) { + synchronized((FeatureGenerator)(Object)this) { + //ClientApi.LOGGER.info("wrapDecorate FeaturePlace triggered"); + return feature.place(arg, arg2, random, arg3); + } + } + + //METHOD: com.terraforged.mod.chunk.generator.FeatureGenerator.decorate(StructureFeatureManager manager, + // WorldGenLevel region, ChunkAccess chunk, Biome biome, BlockPos pos, WatchdogContext context) + + //TARGET: boolean net.minecraft.world.level.levelgen.feature.ConfiguredFeature.place + // (WorldGenLevel arg, ChunkGenerator arg2, Random random, BlockPos arg3) +} + + diff --git a/forge/src/main/resources/lod.mixins.json b/forge/src/main/resources/lod.mixins.json index 416cb59c9..7cc3d9e0b 100644 --- a/forge/src/main/resources/lod.mixins.json +++ b/forge/src/main/resources/lod.mixins.json @@ -4,7 +4,8 @@ "package": "com.seibel.lod.forge.mixins", "compatibilityLevel": "JAVA_8", "mixins": [ - "MixinChunkGenerator" + "MixinChunkGenerator", + "MixinTFChunkGenerator" ], "client": [ "MixinOptionsScreen", diff --git a/gradle.properties b/gradle.properties index fa3a170cc..7432dfc23 100644 --- a/gradle.properties +++ b/gradle.properties @@ -25,4 +25,5 @@ fabric_api_version=0.34.2+1.16 # Forge loader forge_version=36.2.23 # Forge mods - ## currentlly no mods ## + terraforged_version=3285909 + enable_terraforged=1