From d065f78c0aa35cb6c88c370648b4569cdecdb667 Mon Sep 17 00:00:00 2001 From: dfsek Date: Wed, 17 Mar 2021 21:17:15 -0700 Subject: [PATCH] mostly working 1.17-ification --- .../world/palette/holder/PaletteHolder.java | 7 +++-- .../palette/holder/PaletteHolderBuilder.java | 9 ++++-- .../interpolation/ChunkInterpolator3D.java | 6 ++-- platforms/fabric/build.gradle.kts | 8 ++--- .../dfsek/terra/fabric/TerraFabricPlugin.java | 2 +- .../mixin/StructureAccessorAccessor.java | 12 +++++++ .../terra/fabric/world/TerraBiomeSource.java | 2 +- .../world/block/state/FabricBlockState.java | 2 +- .../world/block/state/FabricMobSpawner.java | 2 +- .../fabric/world/block/state/FabricSign.java | 10 +++--- .../world/features/PopulatorFeature.java | 9 ++++-- .../FabricChunkGeneratorWrapper.java | 31 +++++++++++-------- .../fabric/world/handles/FabricWorld.java | 4 +-- .../world/FabricSeededWorldAccess.java | 6 ++-- .../handles/world/FabricWorldAccess.java | 4 +-- .../fabric/src/main/resources/fabric.mod.json | 2 +- .../src/main/resources/terra.accesswidener | 3 +- .../src/main/resources/terra.mixins.json | 1 + 18 files changed, 74 insertions(+), 46 deletions(-) create mode 100644 platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/StructureAccessorAccessor.java diff --git a/common/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolder.java b/common/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolder.java index 2b4704cac..3bf7e63a1 100644 --- a/common/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolder.java +++ b/common/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolder.java @@ -5,12 +5,15 @@ import com.dfsek.terra.api.world.palette.Palette; public class PaletteHolder { private final Palette[] palettes; + private final int offset; - protected PaletteHolder(Palette[] palettes) { + protected PaletteHolder(Palette[] palettes, int offset) { this.palettes = palettes; + this.offset = offset; } public Palette getPalette(int y) { - return palettes[y]; + int index = y + offset; + return index >= 0 ? palettes[index] : palettes[0]; } } diff --git a/common/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolderBuilder.java b/common/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolderBuilder.java index 2cc72764b..c3b00368c 100644 --- a/common/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolderBuilder.java +++ b/common/src/main/java/com/dfsek/terra/api/world/palette/holder/PaletteHolderBuilder.java @@ -17,7 +17,10 @@ public class PaletteHolderBuilder { @SuppressWarnings({"unchecked", "rawtypes", "RedundantSuppression"}) public PaletteHolder build() { - Palette[] palettes = new Palette[paletteMap.lastKey() + 1]; + + int min = FastMath.min(paletteMap.keySet().stream().min(Integer::compareTo).orElse(0), 0); + + Palette[] palettes = new Palette[paletteMap.lastKey() + 1 - min]; for(int y = 0; y <= FastMath.max(paletteMap.lastKey(), 255); y++) { Palette d = null; for(Map.Entry> e : paletteMap.entrySet()) { @@ -27,8 +30,8 @@ public class PaletteHolderBuilder { } } if(d == null) throw new IllegalArgumentException("No palette for Y=" + y); - palettes[y] = d; + palettes[y - min] = d; } - return new PaletteHolder(palettes); + return new PaletteHolder(palettes, -min); } } diff --git a/common/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator3D.java b/common/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator3D.java index 727a8e25e..9d71d8774 100644 --- a/common/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator3D.java +++ b/common/src/main/java/com/dfsek/terra/world/generation/math/interpolation/ChunkInterpolator3D.java @@ -59,7 +59,7 @@ public class ChunkInterpolator3D implements ChunkInterpolator { } for(int y = 0; y < size + 1; y++) { - noiseStorage[x][z][y] = computeNoise(genMap, (x << 2) + xOrigin, y << 2, (z << 2) + zOrigin); + noiseStorage[x][z][y] = computeNoise(genMap, (x << 2) + xOrigin, (y << 2) + min, (z << 2) + zOrigin); } } } @@ -98,10 +98,10 @@ public class ChunkInterpolator3D implements ChunkInterpolator { */ @Override public double getNoise(double x, double y, double z) { - return interpGrid[reRange(((int) x) / 4, 3)][FastMath.max(FastMath.min(((int) y), max), min) / 4][reRange(((int) z) / 4, 3)].trilerp((x % 4) / 4, (y % 4) / 4, (z % 4) / 4); + return interpGrid[reRange(((int) x) / 4, 3)][(FastMath.max(FastMath.min(((int) y), max), min) - min) / 4][reRange(((int) z) / 4, 3)].trilerp((x % 4) / 4, (y % 4) / 4, (z % 4) / 4); } public double getNoise(int x, int y, int z) { - return interpGrid[x / 4][y / 4][z / 4].trilerp((double) (x % 4) / 4, (double) (y % 4) / 4, (double) (z % 4) / 4); + return interpGrid[x / 4][(y - min) / 4][z / 4].trilerp((double) (x % 4) / 4, (double) (y % 4) / 4, (double) (z % 4) / 4); } } diff --git a/platforms/fabric/build.gradle.kts b/platforms/fabric/build.gradle.kts index 2e085d24d..b66976f8e 100644 --- a/platforms/fabric/build.gradle.kts +++ b/platforms/fabric/build.gradle.kts @@ -22,11 +22,11 @@ dependencies { "shadedImplementation"("org.yaml:snakeyaml:1.27") "shadedImplementation"("com.googlecode.json-simple:json-simple:1.1.1") - "minecraft"("com.mojang:minecraft:1.16.5") - "mappings"("net.fabricmc:yarn:1.16.5+build.5:v2") - "modImplementation"("net.fabricmc:fabric-loader:0.11.2") + "minecraft"("com.mojang:minecraft:21w11a") + "mappings"("net.fabricmc:yarn:21w11a+build.3:v2") + "modImplementation"("net.fabricmc:fabric-loader:0.11.3") - "modImplementation"("net.fabricmc.fabric-api:fabric-api:0.31.0+1.16") + "modImplementation"("net.fabricmc.fabric-api:fabric-api:0.32.4+1.17") } tasks.named("shadowJar") { 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 ea17d400f..a046b5cf7 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 @@ -406,7 +406,7 @@ public class TerraFabricPlugin implements TerraPlugin, ModInitializer { injectTree(treeRegistry, "LARGE_OAK", ConfiguredFeatures.FANCY_OAK); injectTree(treeRegistry, "LARGE_SPRUCE", ConfiguredFeatures.PINE); injectTree(treeRegistry, "SMALL_JUNGLE", ConfiguredFeatures.JUNGLE_TREE); - injectTree(treeRegistry, "SWAMP_OAK", ConfiguredFeatures.SWAMP_TREE); + injectTree(treeRegistry, "SWAMP_OAK", ConfiguredFeatures.SWAMP_OAK); injectTree(treeRegistry, "TALL_BIRCH", ConfiguredFeatures.BIRCH_TALL); injectTree(treeRegistry, "ACACIA", ConfiguredFeatures.ACACIA); injectTree(treeRegistry, "BIRCH", ConfiguredFeatures.BIRCH); diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/StructureAccessorAccessor.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/StructureAccessorAccessor.java new file mode 100644 index 000000000..888c8cd83 --- /dev/null +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/mixin/StructureAccessorAccessor.java @@ -0,0 +1,12 @@ +package com.dfsek.terra.fabric.mixin; + +import net.minecraft.world.WorldAccess; +import net.minecraft.world.gen.StructureAccessor; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; + +@Mixin(StructureAccessor.class) +public interface StructureAccessorAccessor { + @Accessor + WorldAccess getWorld(); +} diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/TerraBiomeSource.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/TerraBiomeSource.java index 46b628eac..f64fc55c6 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/TerraBiomeSource.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/TerraBiomeSource.java @@ -7,8 +7,8 @@ import com.dfsek.terra.fabric.TerraFabricPlugin; import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import net.minecraft.util.Identifier; +import net.minecraft.util.dynamic.RegistryLookupCodec; import net.minecraft.util.registry.Registry; -import net.minecraft.util.registry.RegistryLookupCodec; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.source.BiomeSource; import net.minecraft.world.gen.feature.StructureFeature; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/block/state/FabricBlockState.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/block/state/FabricBlockState.java index d0dbf5bf4..2f7a68889 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/block/state/FabricBlockState.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/block/state/FabricBlockState.java @@ -67,7 +67,7 @@ public class FabricBlockState implements BlockState { @Override public boolean update(boolean applyPhysics) { - worldAccess.getChunk(blockEntity.getPos()).setBlockEntity(blockEntity.getPos(), blockEntity); + worldAccess.getChunk(blockEntity.getPos()).setBlockEntity(blockEntity); return true; } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/block/state/FabricMobSpawner.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/block/state/FabricMobSpawner.java index 8486e20c9..dd0012e37 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/block/state/FabricMobSpawner.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/block/state/FabricMobSpawner.java @@ -19,7 +19,7 @@ public class FabricMobSpawner extends FabricBlockState implements MobSpawner { / @Override public EntityType getSpawnedType() { - return FabricAdapter.adapt(Registry.ENTITY_TYPE.get(((MobSpawnerBlockEntity) blockEntity).getLogic().getEntityId())); + return FabricAdapter.adapt(Registry.ENTITY_TYPE.get(((MobSpawnerBlockEntity) blockEntity).getLogic().getEntityId(blockEntity.getWorld(), blockEntity.getPos()))); } @Override diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/block/state/FabricSign.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/block/state/FabricSign.java index 382e05387..367b4a511 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/block/state/FabricSign.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/block/state/FabricSign.java @@ -17,16 +17,16 @@ public class FabricSign extends FabricBlockState implements Sign { SignBlockEntity sign = (SignBlockEntity) blockEntity; return new String[] { - sign.getTextOnRow(0).asString(), - sign.getTextOnRow(1).asString(), - sign.getTextOnRow(2).asString(), - sign.getTextOnRow(3).asString() + sign.getTextOnRow(0, false).asString(), + sign.getTextOnRow(1, false).asString(), + sign.getTextOnRow(2, false).asString(), + sign.getTextOnRow(3, false).asString() }; } @Override public @NotNull String getLine(int index) throws IndexOutOfBoundsException { - return ((SignBlockEntity) blockEntity).getTextOnRow(index).asString(); + return ((SignBlockEntity) blockEntity).getTextOnRow(index, false).asString(); } @Override diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/features/PopulatorFeature.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/features/PopulatorFeature.java index fdb39fe78..7e680de95 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/features/PopulatorFeature.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/features/PopulatorFeature.java @@ -11,8 +11,7 @@ import net.minecraft.world.StructureWorldAccess; import net.minecraft.world.gen.chunk.ChunkGenerator; import net.minecraft.world.gen.feature.DefaultFeatureConfig; import net.minecraft.world.gen.feature.Feature; - -import java.util.Random; +import net.minecraft.world.gen.feature.util.FeatureContext; /** * Feature wrapper for Terra populator @@ -23,7 +22,10 @@ public class PopulatorFeature extends Feature { } @Override - public boolean generate(StructureWorldAccess world, ChunkGenerator chunkGenerator, Random random, BlockPos pos, DefaultFeatureConfig config) { + public boolean generate(FeatureContext context) { + ChunkGenerator chunkGenerator = context.getGenerator(); + StructureWorldAccess world = context.getWorld(); + BlockPos pos = context.getOrigin(); FabricChunkGeneratorWrapper gen = (FabricChunkGeneratorWrapper) chunkGenerator; FabricChunkWorldAccess chunk = new FabricChunkWorldAccess(world, pos.getX() >> 4, pos.getZ() >> 4); FabricWorld world1 = new FabricWorld(world.toServerWorld(), new FabricChunkGenerator(chunkGenerator)); @@ -33,5 +35,6 @@ public class PopulatorFeature extends Feature { gen.getTreePopulator().populate(world1, chunk); gen.getFloraPopulator().populate(world1, chunk); return true; + } } diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/generator/FabricChunkGeneratorWrapper.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/generator/FabricChunkGeneratorWrapper.java index cb7ebe8b8..0469ab506 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/generator/FabricChunkGeneratorWrapper.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/generator/FabricChunkGeneratorWrapper.java @@ -5,6 +5,7 @@ import com.dfsek.terra.api.util.FastRandom; import com.dfsek.terra.api.world.generation.TerraChunkGenerator; import com.dfsek.terra.config.pack.ConfigPack; import com.dfsek.terra.fabric.TerraFabricPlugin; +import com.dfsek.terra.fabric.mixin.StructureAccessorAccessor; import com.dfsek.terra.fabric.world.TerraBiomeSource; import com.dfsek.terra.fabric.world.handles.world.FabricSeededWorldAccess; import com.dfsek.terra.world.generation.generators.DefaultChunkGenerator3D; @@ -20,10 +21,9 @@ import net.minecraft.block.Blocks; import net.minecraft.structure.StructureManager; import net.minecraft.util.math.ChunkPos; import net.minecraft.util.registry.DynamicRegistryManager; -import net.minecraft.world.BlockView; import net.minecraft.world.ChunkRegion; +import net.minecraft.world.HeightLimitView; import net.minecraft.world.Heightmap; -import net.minecraft.world.WorldAccess; import net.minecraft.world.biome.source.BiomeAccess; import net.minecraft.world.chunk.Chunk; import net.minecraft.world.gen.GenerationStep; @@ -32,6 +32,9 @@ import net.minecraft.world.gen.chunk.ChunkGenerator; import net.minecraft.world.gen.chunk.StructuresConfig; import net.minecraft.world.gen.chunk.VerticalBlockSample; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.Executor; + public class FabricChunkGeneratorWrapper extends ChunkGenerator implements GeneratorWrapper { private final long seed; private final DefaultChunkGenerator3D delegate; @@ -108,12 +111,6 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener super.generateFeatures(region, accessor); } - @Override - public void populateNoise(WorldAccess world, StructureAccessor accessor, Chunk chunk) { - FabricSeededWorldAccess worldAccess = new FabricSeededWorldAccess(world, seed, this); - delegate.generateChunkData(worldAccess, new FastRandom(), chunk.getPos().x, chunk.getPos().z, new FabricChunkData(chunk)); - } - @Override public void carve(long seed, BiomeAccess access, Chunk chunk, GenerationStep.Carver carver) { // No caves @@ -125,17 +122,19 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener } @Override - public boolean isStrongholdStartingChunk(ChunkPos chunkPos) { - return false; + public CompletableFuture populateNoise(Executor executor, StructureAccessor accessor, Chunk chunk) { + FabricSeededWorldAccess worldAccess = new FabricSeededWorldAccess(((StructureAccessorAccessor) accessor).getWorld(), seed, this); + delegate.generateChunkData(worldAccess, new FastRandom(), chunk.getPos().x, chunk.getPos().z, new FabricChunkData(chunk)); + return CompletableFuture.completedFuture(chunk); } @Override - public int getHeight(int x, int z, Heightmap.Type heightmapType) { + public int getHeight(int x, int z, Heightmap.Type heightmap, HeightLimitView world) { return 0; } @Override - public BlockView getColumnSample(int x, int z) { + public VerticalBlockSample getColumnSample(int x, int z, HeightLimitView world) { int height = 64; // TODO: implementation BlockState[] array = new BlockState[256]; for(int y = 255; y >= 0; y--) { @@ -150,9 +149,15 @@ public class FabricChunkGeneratorWrapper extends ChunkGenerator implements Gener } } - return new VerticalBlockSample(array); + return new VerticalBlockSample(world.getBottomY(), array); } + @Override + public boolean isStrongholdStartingChunk(ChunkPos chunkPos) { + return false; + } + + @Override public TerraChunkGenerator getHandle() { return delegate; diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/handles/FabricWorld.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/handles/FabricWorld.java index 097ddfcb1..54609e286 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/handles/FabricWorld.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/handles/FabricWorld.java @@ -35,7 +35,7 @@ public class FabricWorld implements World, FabricWorldHandle { @Override public int getMaxHeight() { - return delegate.world.getHeight(); + return delegate.world.getHeight() + delegate.world.getBottomY(); } @Override @@ -95,7 +95,7 @@ public class FabricWorld implements World, FabricWorldHandle { @Override public int getMinHeight() { - return 0; + return delegate.world.getBottomY(); } @Override diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/handles/world/FabricSeededWorldAccess.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/handles/world/FabricSeededWorldAccess.java index 05b1dbb1e..2adf9fe69 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/handles/world/FabricSeededWorldAccess.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/handles/world/FabricSeededWorldAccess.java @@ -34,7 +34,7 @@ public class FabricSeededWorldAccess implements World, FabricWorldHandle { @Override public int getMaxHeight() { - return handle.getWorldAccess().getDimensionHeight(); + return handle.worldAccess.getHeight() + handle.worldAccess.getBottomY(); } @Override @@ -49,7 +49,7 @@ public class FabricSeededWorldAccess implements World, FabricWorldHandle { @Override public UUID getUID() { - return UUID.randomUUID(); // TODO: implementation + return null; // TODO: implementation } @Override @@ -83,7 +83,7 @@ public class FabricSeededWorldAccess implements World, FabricWorldHandle { @Override public int getMinHeight() { - return 0; + return handle.worldAccess.getBottomY(); } @Override diff --git a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/handles/world/FabricWorldAccess.java b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/handles/world/FabricWorldAccess.java index 8cb464353..787ed999c 100644 --- a/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/handles/world/FabricWorldAccess.java +++ b/platforms/fabric/src/main/java/com/dfsek/terra/fabric/world/handles/world/FabricWorldAccess.java @@ -33,7 +33,7 @@ public class FabricWorldAccess implements World, FabricWorldHandle { @Override public int getMaxHeight() { - return delegate.getDimensionHeight(); + return delegate.getHeight() + delegate.getBottomY(); } @Override @@ -82,7 +82,7 @@ public class FabricWorldAccess implements World, FabricWorldHandle { @Override public int getMinHeight() { - return 0; + return delegate.getBottomY(); } @Override diff --git a/platforms/fabric/src/main/resources/fabric.mod.json b/platforms/fabric/src/main/resources/fabric.mod.json index d86abc872..09b2cb8fc 100644 --- a/platforms/fabric/src/main/resources/fabric.mod.json +++ b/platforms/fabric/src/main/resources/fabric.mod.json @@ -25,7 +25,7 @@ "depends": { "fabricloader": ">=0.7.4", "fabric": "*", - "minecraft": "1.16.x" + "minecraft": "1.17.x" }, "accessWidener": "terra.accesswidener" } \ No newline at end of file diff --git a/platforms/fabric/src/main/resources/terra.accesswidener b/platforms/fabric/src/main/resources/terra.accesswidener index fcf59a730..497a498f5 100644 --- a/platforms/fabric/src/main/resources/terra.accesswidener +++ b/platforms/fabric/src/main/resources/terra.accesswidener @@ -4,7 +4,7 @@ extendable method net/minecraft/client/world/GeneratorType (Ljava/lang/St 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 method net/minecraft/world/MobSpawnerLogic getEntityId (Lnet/minecraft/world/World;Lnet/minecraft/util/math/BlockPos;)Lnet/minecraft/util/Identifier; accessible field net/minecraft/state/State PROPERTY_MAP_PRINTER Ljava/util/function/Function; @@ -17,3 +17,4 @@ accessible field net/minecraft/world/biome/BiomeEffects skyColor I accessible field net/minecraft/world/biome/BiomeEffects foliageColor Ljava/util/Optional; accessible field net/minecraft/world/biome/BiomeEffects grassColor Ljava/util/Optional; accessible field net/minecraft/world/biome/BiomeEffects grassColorModifier Lnet/minecraft/world/biome/BiomeEffects$GrassColorModifier; + diff --git a/platforms/fabric/src/main/resources/terra.mixins.json b/platforms/fabric/src/main/resources/terra.mixins.json index 8537843c7..2bc4388a9 100644 --- a/platforms/fabric/src/main/resources/terra.mixins.json +++ b/platforms/fabric/src/main/resources/terra.mixins.json @@ -4,6 +4,7 @@ "package": "com.dfsek.terra.fabric.mixin", "compatibilityLevel": "JAVA_8", "mixins": [ + "StructureAccessorAccessor" ], "client": [ "GeneratorTypeAccessor"