diff --git a/platforms/fabric/build.gradle.kts b/platforms/fabric/build.gradle.kts index 73dc69a3e..35078842a 100644 --- a/platforms/fabric/build.gradle.kts +++ b/platforms/fabric/build.gradle.kts @@ -37,10 +37,12 @@ configure { } tasks.register("remapShadedJar") { - dependsOn("shadowJar") - setProperty("input", file("build/libs/Terra-fabric-${version}-shaded.jar")) - setProperty("addNestedDependencies", false) - setProperty("remapAccessWidener", true) + val shadowJar = tasks.getByName("shadowJar") + dependsOn(shadowJar) + input.set(shadowJar.archiveFile) + archiveFileName.set(shadowJar.archiveFileName.get().replace(Regex("-shaded\\.jar$"), "shaded-mapped.jar")) + addNestedDependencies.set(true) + remapAccessWidener.set(true) } dependencies { diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java index 181472590..ce0cd677c 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/TerraFabricPlugin.java @@ -30,6 +30,8 @@ import com.dfsek.terra.config.lang.LangUtil; import com.dfsek.terra.config.lang.Language; import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.fabric.inventory.FabricItemHandle; +import com.dfsek.terra.fabric.mixin.BiomeEffectsAccessor; +import com.dfsek.terra.fabric.mixin.GeneratorTypeAccessor; import com.dfsek.terra.fabric.world.FabricBiome; import com.dfsek.terra.fabric.world.FabricTree; import com.dfsek.terra.fabric.world.FabricWorldHandle; @@ -234,17 +236,19 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { generationSettings.surfaceBuilder(SurfaceBuilder.DEFAULT.withConfig(new TernarySurfaceConfig(Blocks.GRASS_BLOCK.getDefaultState(), Blocks.DIRT.getDefaultState(), Blocks.GRAVEL.getDefaultState()))); // It needs a surfacebuilder, even though we dont use it. generationSettings.feature(GenerationStep.Feature.VEGETAL_DECORATION, POPULATOR_CONFIGURED_FEATURE); + BiomeEffectsAccessor biomeEffectsAccessor = (BiomeEffectsAccessor) vanilla.getEffects(); + BiomeEffects.Builder effects = new BiomeEffects.Builder() - .waterColor(vanilla.getWaterColor()) - .waterFogColor(vanilla.getWaterFogColor()) - .fogColor(vanilla.getFogColor()) - .skyColor(vanilla.getSkyColor()) - .grassColorModifier(vanilla.getEffects().getGrassColorModifier()); - if(vanilla.getEffects().getGrassColor().isPresent()) { - effects.grassColor(vanilla.getEffects().getGrassColor().get()); + .waterColor(biomeEffectsAccessor.getWaterColor()) + .waterFogColor(biomeEffectsAccessor.getWaterFogColor()) + .fogColor(biomeEffectsAccessor.getFogColor()) + .skyColor(biomeEffectsAccessor.getSkyColor()) + .grassColorModifier(biomeEffectsAccessor.getGrassColorModifier()); + if(biomeEffectsAccessor.getGrassColor().isPresent()) { + effects.grassColor(biomeEffectsAccessor.getGrassColor().get()); } - if(vanilla.getEffects().getFoliageColor().isPresent()) { - effects.foliageColor(vanilla.getEffects().getFoliageColor().get()); + if(biomeEffectsAccessor.getFoliageColor().isPresent()) { + effects.foliageColor(biomeEffectsAccessor.getFoliageColor().get()); } return (new Biome.Builder()) @@ -296,8 +300,8 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { } }; //noinspection ConstantConditions - generatorType.translationKey = (new LiteralText("Terra:" + pack.getTemplate().getID())); - GeneratorType.VALUES.add(generatorType); + ((GeneratorTypeAccessor) generatorType).setTranslationKey(new LiteralText("Terra:" + pack.getTemplate().getID())); + GeneratorTypeAccessor.getVALUES().add(generatorType); }); } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/BiomeEffectsAccessor.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/BiomeEffectsAccessor.java new file mode 100644 index 000000000..a21d77e9d --- /dev/null +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/BiomeEffectsAccessor.java @@ -0,0 +1,31 @@ +package com.dfsek.terra.fabric.mixin; + +import net.minecraft.world.biome.BiomeEffects; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.Optional; + +@Mixin(BiomeEffects.class) +public interface BiomeEffectsAccessor { + @Accessor + int getFogColor(); + + @Accessor + int getWaterColor(); + + @Accessor + int getWaterFogColor(); + + @Accessor + int getSkyColor(); + + @Accessor + Optional getFoliageColor(); + + @Accessor + Optional getGrassColor(); + + @Accessor + BiomeEffects.GrassColorModifier getGrassColorModifier(); +} diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/GeneratorTypeAccessor.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/GeneratorTypeAccessor.java new file mode 100644 index 000000000..7af215e73 --- /dev/null +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/GeneratorTypeAccessor.java @@ -0,0 +1,24 @@ +package com.dfsek.terra.fabric.mixin; + +import net.minecraft.client.world.GeneratorType; +import net.minecraft.text.Text; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; +import org.spongepowered.asm.mixin.gen.Accessor; + +import java.util.List; + +@Mixin(GeneratorType.class) +public interface GeneratorTypeAccessor { + @Accessor + static List getVALUES() { + throw new UnsupportedOperationException(); + } + + @Accessor + Text getTranslationKey(); + + @Mutable + @Accessor + void setTranslationKey(Text translationKey); +} diff --git a/platforms/fabric/src/main/resources/fabric.mod.json b/platforms/fabric/src/main/resources/fabric.mod.json index 0468f1530..d86abc872 100644 --- a/platforms/fabric/src/main/resources/fabric.mod.json +++ b/platforms/fabric/src/main/resources/fabric.mod.json @@ -20,6 +20,7 @@ ] }, "mixins": [ + "terra.mixins.json" ], "depends": { "fabricloader": ">=0.7.4", diff --git a/platforms/fabric/src/main/resources/terra.accesswidener b/platforms/fabric/src/main/resources/terra.accesswidener index c501a7abb..9f2064838 100644 --- a/platforms/fabric/src/main/resources/terra.accesswidener +++ b/platforms/fabric/src/main/resources/terra.accesswidener @@ -2,16 +2,8 @@ accessWidener v1 named extendable method net/minecraft/client/world/GeneratorType (Ljava/lang/String;)V -accessible field net/minecraft/client/world/GeneratorType translationKey Lnet/minecraft/text/Text; -mutable field net/minecraft/client/world/GeneratorType translationKey Lnet/minecraft/text/Text; - -accessible field net/minecraft/client/world/GeneratorType VALUES Ljava/util/List; - accessible field net/minecraft/server/world/ServerWorld worldProperties Lnet/minecraft/world/level/ServerWorldProperties; accessible method net/minecraft/world/MobSpawnerLogic getEntityId ()Lnet/minecraft/util/Identifier; -accessible field net/minecraft/state/State PROPERTY_MAP_PRINTER Ljava/util/function/Function; - -accessible method net/minecraft/block/entity/LootableContainerBlockEntity setInvStackList (Lnet/minecraft/util/collection/DefaultedList;)V -accessible method net/minecraft/block/entity/LootableContainerBlockEntity getInvStackList ()Lnet/minecraft/util/collection/DefaultedList; \ No newline at end of file +accessible field net/minecraft/state/State PROPERTY_MAP_PRINTER Ljava/util/function/Function; \ No newline at end of file diff --git a/platforms/fabric/src/main/resources/terra.mixins.json b/platforms/fabric/src/main/resources/terra.mixins.json new file mode 100644 index 000000000..1020b1459 --- /dev/null +++ b/platforms/fabric/src/main/resources/terra.mixins.json @@ -0,0 +1,16 @@ +{ + "required": true, + "minVersion": "0.8", + "package": "com.dfsek.terra.fabric.mixin", + "compatibilityLevel": "JAVA_8", + "mixins": [ + "BiomeEffectsAccessor" + ], + "client": [ + "GeneratorTypeAccessor" + ], + "server": [], + "injectors": { + "defaultRequire": 1 + } +} \ No newline at end of file