mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2025-07-03 00:15:35 +00:00
Mixin on Forge
This commit is contained in:
parent
762b248641
commit
049a56fcb0
@ -1,9 +1,9 @@
|
|||||||
import com.dfsek.terra.configureCommon
|
import com.dfsek.terra.configureCommon
|
||||||
import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
|
|
||||||
import net.minecraftforge.gradle.common.util.RunConfig
|
import net.minecraftforge.gradle.common.util.RunConfig
|
||||||
import net.minecraftforge.gradle.mcp.task.GenerateSRG
|
import net.minecraftforge.gradle.mcp.task.GenerateSRG
|
||||||
import net.minecraftforge.gradle.userdev.UserDevExtension
|
import net.minecraftforge.gradle.userdev.UserDevExtension
|
||||||
import net.minecraftforge.gradle.userdev.tasks.RenameJarInPlace
|
import net.minecraftforge.gradle.userdev.tasks.RenameJarInPlace
|
||||||
|
import java.util.Date
|
||||||
|
|
||||||
buildscript {
|
buildscript {
|
||||||
repositories {
|
repositories {
|
||||||
@ -18,8 +18,11 @@ buildscript {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
apply(plugin = "net.minecraftforge.gradle")
|
apply(plugin = "net.minecraftforge.gradle")
|
||||||
|
apply(plugin = "org.spongepowered.mixin")
|
||||||
|
|
||||||
|
configure<org.spongepowered.asm.gradle.plugins.MixinExtension> {
|
||||||
|
add(sourceSets.main.orNull, "terra.refmap.json")
|
||||||
|
}
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
java
|
java
|
||||||
@ -41,6 +44,15 @@ val mcVersion = "1.16.5"
|
|||||||
dependencies {
|
dependencies {
|
||||||
"shadedApi"(project(":common"))
|
"shadedApi"(project(":common"))
|
||||||
"minecraft"("net.minecraftforge:forge:$mcVersion-$forgeVersion")
|
"minecraft"("net.minecraftforge:forge:$mcVersion-$forgeVersion")
|
||||||
|
"annotationProcessor"("org.spongepowered:mixin:0.8.2:processor")
|
||||||
|
}
|
||||||
|
|
||||||
|
if (System.getProperty("idea.sync.active") == "true") {
|
||||||
|
afterEvaluate {
|
||||||
|
tasks.withType<JavaCompile>().all {
|
||||||
|
options.annotationProcessorPath = files()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
afterEvaluate {
|
afterEvaluate {
|
||||||
@ -61,6 +73,7 @@ configure<UserDevExtension> {
|
|||||||
"forge.logging.markers" to "SCAN,REGISTRIES,REGISTRYDUMP",
|
"forge.logging.markers" to "SCAN,REGISTRIES,REGISTRYDUMP",
|
||||||
"forge.logging.console.level" to "debug"
|
"forge.logging.console.level" to "debug"
|
||||||
))
|
))
|
||||||
|
arg("-mixin.config=terra.mixins.json")
|
||||||
workingDirectory = project.file("run").canonicalPath
|
workingDirectory = project.file("run").canonicalPath
|
||||||
source(sourceSets["main"])
|
source(sourceSets["main"])
|
||||||
}
|
}
|
||||||
@ -92,4 +105,18 @@ val deobfElements = configurations.register("deobfElements") {
|
|||||||
val javaComponent = components["java"] as AdhocComponentWithVariants
|
val javaComponent = components["java"] as AdhocComponentWithVariants
|
||||||
javaComponent.addVariantsFromConfiguration(deobfElements.get()) {
|
javaComponent.addVariantsFromConfiguration(deobfElements.get()) {
|
||||||
mapToMavenScope("runtime")
|
mapToMavenScope("runtime")
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.jar {
|
||||||
|
manifest {
|
||||||
|
attributes(mapOf(
|
||||||
|
"Specification-Title" to "terra",
|
||||||
|
"Specification-Vendor" to "Terra",
|
||||||
|
"Specification-Version" to "1.0",
|
||||||
|
"Implementation-Title" to "Terra",
|
||||||
|
"Implementation-Version" to project.version,
|
||||||
|
"Implementation-Vendor" to "terra",
|
||||||
|
"MixinConfigs" to "terra.mixins.json"
|
||||||
|
))
|
||||||
|
}
|
||||||
}
|
}
|
@ -37,6 +37,7 @@ import com.dfsek.terra.config.lang.Language;
|
|||||||
import com.dfsek.terra.config.pack.ConfigPack;
|
import com.dfsek.terra.config.pack.ConfigPack;
|
||||||
import com.dfsek.terra.config.templates.BiomeTemplate;
|
import com.dfsek.terra.config.templates.BiomeTemplate;
|
||||||
import com.dfsek.terra.forge.inventory.ForgeItemHandle;
|
import com.dfsek.terra.forge.inventory.ForgeItemHandle;
|
||||||
|
import com.dfsek.terra.forge.mixin.BiomeAmbienceAccessor;
|
||||||
import com.dfsek.terra.forge.world.ForgeAdapter;
|
import com.dfsek.terra.forge.world.ForgeAdapter;
|
||||||
import com.dfsek.terra.forge.world.ForgeBiome;
|
import com.dfsek.terra.forge.world.ForgeBiome;
|
||||||
import com.dfsek.terra.forge.world.ForgeTree;
|
import com.dfsek.terra.forge.world.ForgeTree;
|
||||||
@ -62,6 +63,7 @@ import net.minecraft.command.CommandSource;
|
|||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
import net.minecraft.util.text.StringTextComponent;
|
import net.minecraft.util.text.StringTextComponent;
|
||||||
import net.minecraft.world.biome.Biome;
|
import net.minecraft.world.biome.Biome;
|
||||||
|
import net.minecraft.world.biome.BiomeAmbience;
|
||||||
import net.minecraft.world.biome.BiomeGenerationSettings;
|
import net.minecraft.world.biome.BiomeGenerationSettings;
|
||||||
import net.minecraft.world.gen.GenerationStage;
|
import net.minecraft.world.gen.GenerationStage;
|
||||||
import net.minecraft.world.gen.feature.ConfiguredFeature;
|
import net.minecraft.world.gen.feature.ConfiguredFeature;
|
||||||
@ -214,7 +216,7 @@ public class TerraForgePlugin implements TerraPlugin {
|
|||||||
|
|
||||||
public Biome createBiome(BiomeBuilder biome) {
|
public Biome createBiome(BiomeBuilder biome) {
|
||||||
BiomeTemplate template = biome.getTemplate();
|
BiomeTemplate template = biome.getTemplate();
|
||||||
//Map<String, Integer> colors = template.getColors();
|
Map<String, Integer> colors = template.getColors();
|
||||||
|
|
||||||
Biome vanilla = ((ForgeBiome) new ArrayList<>(biome.getVanillaBiomes().getContents()).get(0)).getHandle();
|
Biome vanilla = ((ForgeBiome) new ArrayList<>(biome.getVanillaBiomes().getContents()).get(0)).getHandle();
|
||||||
|
|
||||||
@ -222,29 +224,26 @@ public class TerraForgePlugin implements TerraPlugin {
|
|||||||
generationSettings.surfaceBuilder(SurfaceBuilder.DEFAULT.configured(new SurfaceBuilderConfig(Blocks.GRASS_BLOCK.defaultBlockState(), Blocks.DIRT.defaultBlockState(), Blocks.GRAVEL.defaultBlockState()))); // It needs a surfacebuilder, even though we dont use it.
|
generationSettings.surfaceBuilder(SurfaceBuilder.DEFAULT.configured(new SurfaceBuilderConfig(Blocks.GRASS_BLOCK.defaultBlockState(), Blocks.DIRT.defaultBlockState(), Blocks.GRAVEL.defaultBlockState()))); // It needs a surfacebuilder, even though we dont use it.
|
||||||
generationSettings.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, POPULATOR_CONFIGURED_FEATURE);
|
generationSettings.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, POPULATOR_CONFIGURED_FEATURE);
|
||||||
|
|
||||||
|
BiomeAmbienceAccessor accessor = ((BiomeAmbienceAccessor) vanilla.getSpecialEffects());
|
||||||
/*
|
|
||||||
BiomeAmbience.Builder effects = new BiomeAmbience.Builder()
|
BiomeAmbience.Builder effects = new BiomeAmbience.Builder()
|
||||||
.waterColor(colors.getOrDefault("water", vanilla.getSpecialEffects().waterColor))
|
.waterColor(colors.getOrDefault("water", accessor.getWaterColor()))
|
||||||
.waterFogColor(colors.getOrDefault("water-fog", vanilla.getSpecialEffects().waterFogColor))
|
.waterFogColor(colors.getOrDefault("water-fog", accessor.getWaterFogColor()))
|
||||||
.fogColor(colors.getOrDefault("fog", vanilla.getSpecialEffects().fogColor))
|
.fogColor(colors.getOrDefault("fog", accessor.getFogColor()))
|
||||||
.skyColor(colors.getOrDefault("sky", vanilla.getSpecialEffects().skyColor))
|
.skyColor(colors.getOrDefault("sky", accessor.getSkyColor()))
|
||||||
.grassColorModifier(vanilla.getSpecialEffects().grassColorModifier);
|
.grassColorModifier(accessor.getGrassColorModifier());
|
||||||
|
|
||||||
if(colors.containsKey("grass")) {
|
if(colors.containsKey("grass")) {
|
||||||
effects.grassColorOverride(colors.get("grass"));
|
effects.grassColorOverride(colors.get("grass"));
|
||||||
} else {
|
} else {
|
||||||
vanilla.getSpecialEffects().grassColor.ifPresent(effects::grassColor);
|
accessor.getGrassColorOverride().ifPresent(effects::grassColorOverride);
|
||||||
}
|
}
|
||||||
vanilla.getEffects().foliageColor.ifPresent(effects::foliageColor);
|
accessor.getFoliageColorOverride().ifPresent(effects::foliageColorOverride);
|
||||||
if(colors.containsKey("foliage")) {
|
if(colors.containsKey("foliage")) {
|
||||||
effects.foliageColor(colors.get("foliage"));
|
effects.foliageColorOverride(colors.get("foliage"));
|
||||||
} else {
|
} else {
|
||||||
vanilla.getEffects().foliageColor.ifPresent(effects::foliageColor);
|
accessor.getFoliageColorOverride().ifPresent(effects::foliageColorOverride);
|
||||||
}
|
}
|
||||||
|
|
||||||
*/
|
|
||||||
|
|
||||||
return new Biome.Builder()
|
return new Biome.Builder()
|
||||||
.precipitation(vanilla.getPrecipitation())
|
.precipitation(vanilla.getPrecipitation())
|
||||||
.biomeCategory(vanilla.getBiomeCategory())
|
.biomeCategory(vanilla.getBiomeCategory())
|
||||||
@ -252,8 +251,7 @@ public class TerraForgePlugin implements TerraPlugin {
|
|||||||
.scale(vanilla.getScale())
|
.scale(vanilla.getScale())
|
||||||
.temperature(vanilla.getBaseTemperature())
|
.temperature(vanilla.getBaseTemperature())
|
||||||
.downfall(vanilla.getDownfall())
|
.downfall(vanilla.getDownfall())
|
||||||
//.specialEffects(effects.build())
|
.specialEffects(effects.build())
|
||||||
.specialEffects(vanilla.getSpecialEffects())
|
|
||||||
.mobSpawnSettings(vanilla.getMobSettings())
|
.mobSpawnSettings(vanilla.getMobSettings())
|
||||||
.generationSettings(generationSettings.build())
|
.generationSettings(generationSettings.build())
|
||||||
.build().setRegistryName("terra", createBiomeID(template.getPack(), template.getID()));
|
.build().setRegistryName("terra", createBiomeID(template.getPack(), template.getID()));
|
||||||
|
@ -0,0 +1,51 @@
|
|||||||
|
package com.dfsek.terra.forge.mixin;
|
||||||
|
|
||||||
|
import net.minecraft.client.audio.BackgroundMusicSelector;
|
||||||
|
import net.minecraft.util.SoundEvent;
|
||||||
|
import net.minecraft.world.biome.BiomeAmbience;
|
||||||
|
import net.minecraft.world.biome.MoodSoundAmbience;
|
||||||
|
import net.minecraft.world.biome.ParticleEffectAmbience;
|
||||||
|
import net.minecraft.world.biome.SoundAdditionsAmbience;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.gen.Accessor;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
@Mixin(BiomeAmbience.class)
|
||||||
|
public interface BiomeAmbienceAccessor {
|
||||||
|
@Accessor
|
||||||
|
int getFogColor();
|
||||||
|
|
||||||
|
@Accessor
|
||||||
|
int getWaterColor();
|
||||||
|
|
||||||
|
@Accessor
|
||||||
|
int getWaterFogColor();
|
||||||
|
|
||||||
|
@Accessor
|
||||||
|
int getSkyColor();
|
||||||
|
|
||||||
|
@Accessor
|
||||||
|
Optional<Integer> getFoliageColorOverride();
|
||||||
|
|
||||||
|
@Accessor
|
||||||
|
Optional<Integer> getGrassColorOverride();
|
||||||
|
|
||||||
|
@Accessor
|
||||||
|
BiomeAmbience.GrassColorModifier getGrassColorModifier();
|
||||||
|
|
||||||
|
@Accessor
|
||||||
|
Optional<ParticleEffectAmbience> getAmbientParticleSettings();
|
||||||
|
|
||||||
|
@Accessor
|
||||||
|
Optional<SoundEvent> getAmbientLoopSoundEvent();
|
||||||
|
|
||||||
|
@Accessor
|
||||||
|
Optional<MoodSoundAmbience> getAmbientMoodSettings();
|
||||||
|
|
||||||
|
@Accessor
|
||||||
|
Optional<SoundAdditionsAmbience> getAmbientAdditionsSettings();
|
||||||
|
|
||||||
|
@Accessor
|
||||||
|
Optional<BackgroundMusicSelector> getBackgroundMusic();
|
||||||
|
}
|
15
platforms/forge/src/main/resources/terra.mixins.json
Normal file
15
platforms/forge/src/main/resources/terra.mixins.json
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"required": true,
|
||||||
|
"package": "com.dfsek.terra.forge.mixin",
|
||||||
|
"compatibilityLevel": "JAVA_8",
|
||||||
|
"refmap": "terra.refmap.json",
|
||||||
|
"mixins": [
|
||||||
|
"BiomeAmbienceAccessor"
|
||||||
|
],
|
||||||
|
"client": [
|
||||||
|
],
|
||||||
|
"injectors": {
|
||||||
|
"defaultRequire": 1
|
||||||
|
},
|
||||||
|
"minVersion": "0.8"
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user