diff --git a/build.gradle b/build.gradle index a6769a8..3151548 100644 --- a/build.gradle +++ b/build.gradle @@ -33,7 +33,7 @@ repositories { dependencies { // To change the versions see the gradle.properties file minecraft "com.mojang:minecraft:${project.minecraft_version}" - mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" + mappings loom.officialMojangMappings() modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" // Fabric API. This is technically optional, but you probably want it anyway. diff --git a/gradle.properties b/gradle.properties index 16f9e43..5d3ead7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,7 +5,6 @@ org.gradle.parallel=true # Fabric Properties # check these on https://fabricmc.net/develop minecraft_version=1.21.11 -yarn_mappings=1.21.11+build.1 loader_version=0.18.2 # Mod Properties diff --git a/src/main/java/tobinio/bettersnowcoverage/BetterSnowChecker.java b/src/main/java/tobinio/bettersnowcoverage/BetterSnowChecker.java index c152fcd..d875351 100644 --- a/src/main/java/tobinio/bettersnowcoverage/BetterSnowChecker.java +++ b/src/main/java/tobinio/bettersnowcoverage/BetterSnowChecker.java @@ -1,12 +1,15 @@ package tobinio.bettersnowcoverage; -import net.minecraft.block.*; -import net.minecraft.registry.tag.BlockTags; -import net.minecraft.registry.tag.TagKey; -import net.minecraft.state.property.Properties; -import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.Direction; -import net.minecraft.world.BlockView; +import net.minecraft.tags.BlockTags; +import net.minecraft.tags.TagKey; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.SnowyDirtBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.properties.BlockStateProperties; +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.level.BlockGetter; import tobinio.bettersnowcoverage.config.Config; import java.util.ArrayList; @@ -20,8 +23,8 @@ import java.util.Optional; public class BetterSnowChecker { public static BlockState getSnowState(BlockState state) { - if (state.getBlock() instanceof SnowyBlock) { - return state.with(Properties.SNOWY, true); + if (state.getBlock() instanceof SnowyDirtBlock) { + return state.setValue(BlockStateProperties.SNOWY, true); } return state; } @@ -30,17 +33,17 @@ public class BetterSnowChecker { NONE, WITH_LAYER, WITHOUT_LAYER, } - public static SnowState shouldHaveSnowAboveBlock(BlockView world, BlockPos pos) { - var above = pos.up(); + public static SnowState shouldHaveSnowAboveBlock(BlockGetter world, BlockPos pos) { + var above = pos.above(); var state = world.getBlockState(above); - if (state.isSideSolidFullSquare(world, + if (state.isFaceSturdy(world, above, - Direction.DOWN) || state.isIn(BlockTags.AIR) || state.getBlock() == Blocks.WATER) { + Direction.DOWN) || state.is(BlockTags.AIR) || state.getBlock() == Blocks.WATER) { return SnowState.NONE; } - if (!world.getBlockState(pos).isFullCube(world, pos)) { + if (!world.getBlockState(pos).isCollisionShapeFullBlock(world, pos)) { return SnowState.NONE; } @@ -58,7 +61,7 @@ public class BetterSnowChecker { private static boolean isInBlockList(BlockState state) { for (TagKey tag : Config.TAGS_LIST) { - if (state.isIn(tag)) { + if (state.is(tag)) { return true; } } @@ -72,12 +75,12 @@ public class BetterSnowChecker { return false; } - private static boolean hasSnowNeighbor(BlockView world, BlockPos pos) { + private static boolean hasSnowNeighbor(BlockGetter world, BlockPos pos) { var directionCheckers = new ArrayList(); - directionCheckers.add(new DirectionChecker(Direction.NORTH, pos.down())); - directionCheckers.add(new DirectionChecker(Direction.EAST, pos.down())); - directionCheckers.add(new DirectionChecker(Direction.SOUTH, pos.down())); - directionCheckers.add(new DirectionChecker(Direction.WEST, pos.down())); + directionCheckers.add(new DirectionChecker(Direction.NORTH, pos.below())); + directionCheckers.add(new DirectionChecker(Direction.EAST, pos.below())); + directionCheckers.add(new DirectionChecker(Direction.SOUTH, pos.below())); + directionCheckers.add(new DirectionChecker(Direction.WEST, pos.below())); Config config = Config.HANDLER.instance(); @@ -128,31 +131,31 @@ public class BetterSnowChecker { this.lastPos = pos; } - public Optional next(BlockView world, Config config) { - lastPos = lastPos.add(direction.getOffsetX(), 0, direction.getOffsetZ()); + public Optional next(BlockGetter world, Config config) { + lastPos = lastPos.offset(direction.getStepX(), 0, direction.getStepZ()); var maxDepth = config.maxVerticalDistance; - while (!world.getBlockState(lastPos).isFullCube(world, lastPos)) { + while (!world.getBlockState(lastPos).isCollisionShapeFullBlock(world, lastPos)) { if (maxDepth-- <= 0) { return Optional.of(Result.UNDEFINED); } - lastPos = lastPos.down(); + lastPos = lastPos.below(); } - while (world.getBlockState(lastPos.up()).isFullCube(world, lastPos.up())) { + while (world.getBlockState(lastPos.above()).isCollisionShapeFullBlock(world, lastPos.above())) { if (maxDepth-- <= 0) { return Optional.of(Result.UNDEFINED); } - lastPos = lastPos.up(); + lastPos = lastPos.above(); } - if (world.getBlockState(lastPos.up()).isIn(BlockTags.SNOW)) { + if (world.getBlockState(lastPos.above()).is(BlockTags.SNOW)) { return Optional.of(Result.SNOW); } - if (world.getBlockState(lastPos.up()).isIn(BlockTags.AIR)) { + if (world.getBlockState(lastPos.above()).is(BlockTags.AIR)) { return Optional.of(Result.NONE); } diff --git a/src/main/java/tobinio/bettersnowcoverage/BetterSnowCoverage.java b/src/main/java/tobinio/bettersnowcoverage/BetterSnowCoverage.java index 3cf1cd7..a773a3b 100644 --- a/src/main/java/tobinio/bettersnowcoverage/BetterSnowCoverage.java +++ b/src/main/java/tobinio/bettersnowcoverage/BetterSnowCoverage.java @@ -5,8 +5,8 @@ import net.fabricmc.fabric.api.resource.v1.ResourceLoader; import net.fabricmc.fabric.api.resource.v1.pack.PackActivationType; import net.fabricmc.loader.api.FabricLoader; import net.fabricmc.loader.api.ModContainer; -import net.minecraft.text.Text; -import net.minecraft.util.Identifier; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.Identifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import tobinio.bettersnowcoverage.config.Config; @@ -18,7 +18,7 @@ public class BetterSnowCoverage implements ClientModInitializer { public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID); public static Identifier id(String path) { - return Identifier.of(MOD_ID, path); + return Identifier.fromNamespaceAndPath(MOD_ID, path); } @Override @@ -36,7 +36,7 @@ public class BetterSnowCoverage implements ClientModInitializer { ResourceLoader.registerBuiltinPack(id("z-fighting"), container, - Text.translatable(MOD_ID + "pack.z-fighting.title"), + Component.translatable(MOD_ID + "pack.z-fighting.title"), PackActivationType.NORMAL); } } \ No newline at end of file diff --git a/src/main/java/tobinio/bettersnowcoverage/compat/Iris.java b/src/main/java/tobinio/bettersnowcoverage/compat/Iris.java index d4c532d..1fd902e 100644 --- a/src/main/java/tobinio/bettersnowcoverage/compat/Iris.java +++ b/src/main/java/tobinio/bettersnowcoverage/compat/Iris.java @@ -4,8 +4,8 @@ import net.caffeinemc.mods.sodium.client.render.chunk.compile.pipeline.BlockRend import net.irisshaders.iris.shaderpack.materialmap.WorldRenderingSettings; import net.irisshaders.iris.vertices.sodium.terrain.VertexEncoderInterface; -import net.minecraft.block.BlockState; -import net.minecraft.util.math.BlockPos; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.core.BlockPos; /** * Created: 22.01.26 @@ -15,7 +15,7 @@ import net.minecraft.util.math.BlockPos; public class Iris { public static void setBlockData(BlockRenderer blockRenderer, BlockState blockState, BlockPos blockPos) { if (WorldRenderingSettings.INSTANCE.getBlockStateIds() != null) { - ((VertexEncoderInterface) blockRenderer).beginBlock(WorldRenderingSettings.INSTANCE.getBlockStateIds().getOrDefault(blockState, -1), (byte) 0, (byte) blockState.getLuminance(), blockPos.getX(), blockPos.getY(), blockPos.getZ()); + ((VertexEncoderInterface) blockRenderer).beginBlock(WorldRenderingSettings.INSTANCE.getBlockStateIds().getOrDefault(blockState, -1), (byte) 0, (byte) blockState.getLightEmission(), blockPos.getX(), blockPos.getY(), blockPos.getZ()); } } } diff --git a/src/main/java/tobinio/bettersnowcoverage/config/Config.java b/src/main/java/tobinio/bettersnowcoverage/config/Config.java index a86ba26..f1c4a7d 100644 --- a/src/main/java/tobinio/bettersnowcoverage/config/Config.java +++ b/src/main/java/tobinio/bettersnowcoverage/config/Config.java @@ -6,12 +6,12 @@ import dev.isxander.yacl3.config.v2.api.ConfigClassHandler; import dev.isxander.yacl3.config.v2.api.SerialEntry; import dev.isxander.yacl3.config.v2.api.serializer.GsonConfigSerializerBuilder; import net.fabricmc.loader.api.FabricLoader; -import net.minecraft.block.Block; -import net.minecraft.registry.Registries; -import net.minecraft.registry.RegistryKeys; -import net.minecraft.registry.tag.TagKey; -import net.minecraft.text.Text; -import net.minecraft.util.Identifier; +import net.minecraft.world.level.block.Block; +import net.minecraft.core.registries.BuiltInRegistries; +import net.minecraft.core.registries.Registries; +import net.minecraft.tags.TagKey; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.Identifier; import java.util.ArrayList; import java.util.List; @@ -48,7 +48,7 @@ public class Config { continue; } - var tagKey = TagKey.of(RegistryKeys.BLOCK, identifier); + var tagKey = TagKey.create(Registries.BLOCK, identifier); tags.add(tagKey); } } @@ -64,7 +64,7 @@ public class Config { continue; } - var block = Registries.BLOCK.getOptionalValue(identifier); + var block = BuiltInRegistries.BLOCK.getOptional(identifier); if (block.isPresent()) { blocks.add(block.get()); @@ -97,8 +97,8 @@ public class Config { WHITE_LIST; @Override - public Text getDisplayName() { - return Text.translatable("%s.list_mode.%s".formatted(MOD_ID, name().toLowerCase())); + public Component getDisplayName() { + return Component.translatable("%s.list_mode.%s".formatted(MOD_ID, name().toLowerCase())); } } @@ -117,8 +117,8 @@ public class Config { ALL_SIDES; @Override - public Text getDisplayName() { - return Text.translatable("%s.mode.%s".formatted(MOD_ID, name().toLowerCase())); + public Component getDisplayName() { + return Component.translatable("%s.mode.%s".formatted(MOD_ID, name().toLowerCase())); } } } diff --git a/src/main/java/tobinio/bettersnowcoverage/config/ConfigMenu.java b/src/main/java/tobinio/bettersnowcoverage/config/ConfigMenu.java index 71e2264..b63407f 100644 --- a/src/main/java/tobinio/bettersnowcoverage/config/ConfigMenu.java +++ b/src/main/java/tobinio/bettersnowcoverage/config/ConfigMenu.java @@ -6,7 +6,7 @@ import dev.isxander.yacl3.api.*; import dev.isxander.yacl3.api.controller.EnumControllerBuilder; import dev.isxander.yacl3.api.controller.IntegerFieldControllerBuilder; import dev.isxander.yacl3.api.controller.StringControllerBuilder; -import net.minecraft.text.Text; +import net.minecraft.network.chat.Component; /** * Created: 02.08.24 @@ -18,12 +18,12 @@ public class ConfigMenu implements ModMenuApi { @Override public ConfigScreenFactory getModConfigScreenFactory() { return parentScreen -> YetAnotherConfigLib.create(Config.HANDLER, - (defaults, config, builder) -> builder.title(Text.translatable("better-snow-coverage.config.title")) + (defaults, config, builder) -> builder.title(Component.translatable("better-snow-coverage.config.title")) .category(ConfigCategory.createBuilder() - .name(Text.translatable("better-snow-coverage.config.general-category-title")) + .name(Component.translatable("better-snow-coverage.config.general-category-title")) .option(Option.createBuilder() - .name(Text.translatable("better-snow-coverage.config.max-vertical.name")) - .description(OptionDescription.of(Text.translatable( + .name(Component.translatable("better-snow-coverage.config.max-vertical.name")) + .description(OptionDescription.of(Component.translatable( "better-snow-coverage.config.max-vertical.description"))) .binding(defaults.maxVerticalDistance, () -> config.maxVerticalDistance, @@ -31,8 +31,8 @@ public class ConfigMenu implements ModMenuApi { .controller(opt -> IntegerFieldControllerBuilder.create(opt).min(1)) .build()) .option(Option.createBuilder() - .name(Text.translatable("better-snow-coverage.config.max-horizontal.name")) - .description(OptionDescription.of(Text.translatable( + .name(Component.translatable("better-snow-coverage.config.max-horizontal.name")) + .description(OptionDescription.of(Component.translatable( "better-snow-coverage.config.max-horizontal.description"))) .binding(defaults.maxHorizontalDistance, () -> config.maxHorizontalDistance, @@ -40,8 +40,8 @@ public class ConfigMenu implements ModMenuApi { .controller(opt -> IntegerFieldControllerBuilder.create(opt).min(1)) .build()) .option(Option.createBuilder() - .name(Text.translatable("better-snow-coverage.config.checker-mode.name")) - .description(OptionDescription.of(Text.translatable( + .name(Component.translatable("better-snow-coverage.config.checker-mode.name")) + .description(OptionDescription.of(Component.translatable( "better-snow-coverage.config.checker-mode.description"))) .binding(defaults.checkerMode, () -> config.checkerMode, @@ -51,10 +51,10 @@ public class ConfigMenu implements ModMenuApi { .build()) .build()) .category(ConfigCategory.createBuilder() - .name(Text.translatable("better-snow-coverage.config.filter-category-title")) + .name(Component.translatable("better-snow-coverage.config.filter-category-title")) .option(Option.createBuilder() - .name(Text.translatable("better-snow-coverage.config.filter-mode.name")) - .description(OptionDescription.of(Text.translatable( + .name(Component.translatable("better-snow-coverage.config.filter-mode.name")) + .description(OptionDescription.of(Component.translatable( "better-snow-coverage.config.filter-mode.description"))) .binding(defaults.listMode, () -> config.listMode, @@ -63,8 +63,8 @@ public class ConfigMenu implements ModMenuApi { .enumClass(Config.ListMode.class)) .build()) .option(ListOption.createBuilder() - .name(Text.translatable("better-snow-coverage.config.excluded-blocks.name")) - .description(OptionDescription.of(Text.translatable( + .name(Component.translatable("better-snow-coverage.config.excluded-blocks.name")) + .description(OptionDescription.of(Component.translatable( "better-snow-coverage.config.excluded-blocks.description"))) .binding(defaults.blocksList, () -> config.blocksList, @@ -74,8 +74,8 @@ public class ConfigMenu implements ModMenuApi { .collapsed(true) .build()) .option(ListOption.createBuilder() - .name(Text.translatable("better-snow-coverage.config.excluded-tags.name")) - .description(OptionDescription.of(Text.translatable( + .name(Component.translatable("better-snow-coverage.config.excluded-tags.name")) + .description(OptionDescription.of(Component.translatable( "better-snow-coverage.config.excluded-tags.description"))) .binding(defaults.tagsList, () -> config.tagsList, diff --git a/src/main/java/tobinio/bettersnowcoverage/mixin/sodium/ChunkBuilderMeshingTaskMixin.java b/src/main/java/tobinio/bettersnowcoverage/mixin/sodium/ChunkBuilderMeshingTaskMixin.java index 35be6fb..fbf007e 100644 --- a/src/main/java/tobinio/bettersnowcoverage/mixin/sodium/ChunkBuilderMeshingTaskMixin.java +++ b/src/main/java/tobinio/bettersnowcoverage/mixin/sodium/ChunkBuilderMeshingTaskMixin.java @@ -10,9 +10,9 @@ import net.caffeinemc.mods.sodium.client.util.task.CancellationToken; import net.caffeinemc.mods.sodium.client.world.LevelSlice; import net.fabricmc.loader.api.FabricLoader; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.util.math.BlockPos; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.core.BlockPos; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -28,10 +28,10 @@ import tobinio.bettersnowcoverage.compat.Iris; // priority change so this mixins gets applied before Iris @Mixin (value = ChunkBuilderMeshingTask.class, priority = 1020) public class ChunkBuilderMeshingTaskMixin { - @Inject (method = "execute(Lnet/caffeinemc/mods/sodium/client/render/chunk/compile/ChunkBuildContext;Lnet/caffeinemc/mods/sodium/client/util/task/CancellationToken;)Lnet/caffeinemc/mods/sodium/client/render/chunk/compile/ChunkBuildOutput;", at = @At (value = "INVOKE", target = "Lnet/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/BlockRenderCache;getBlockModels()Lnet/minecraft/client/render/block/BlockModels;")) + @Inject (method = "execute(Lnet/caffeinemc/mods/sodium/client/render/chunk/compile/ChunkBuildContext;Lnet/caffeinemc/mods/sodium/client/util/task/CancellationToken;)Lnet/caffeinemc/mods/sodium/client/render/chunk/compile/ChunkBuildOutput;", at = @At (value = "INVOKE", target = "Lnet/caffeinemc/mods/sodium/client/render/chunk/compile/pipeline/BlockRenderCache;getBlockModels()Lnet/minecraft/client/renderer/block/BlockModelShaper;")) private void betterSnowCoverage$execute(ChunkBuildContext buildContext, CancellationToken cancellationToken, CallbackInfoReturnable cir, @Local BlockRenderCache cache, @Local LevelSlice slice, - @Local (ordinal = 0) BlockPos.Mutable pos, @Local (ordinal = 1) BlockPos.Mutable modelOffset, + @Local (ordinal = 0) BlockPos.MutableBlockPos pos, @Local (ordinal = 1) BlockPos.MutableBlockPos modelOffset, @Local LocalRef blockState) { BetterSnowChecker.SnowState snowState = BetterSnowChecker.shouldHaveSnowAboveBlock(slice, pos); @@ -40,17 +40,17 @@ public class ChunkBuilderMeshingTaskMixin { } if (snowState == BetterSnowChecker.SnowState.WITH_LAYER) { - BlockState snow = Blocks.SNOW.getDefaultState(); + BlockState snow = Blocks.SNOW.defaultBlockState(); var blockRenderer = cache.getBlockRenderer(); - var blockPos = pos.up(); + var blockPos = pos.above(); if (FabricLoader.getInstance().isModLoaded("iris")) { Iris.setBlockData(blockRenderer, snow, blockPos); } - var model = cache.getBlockModels().getModel(snow); - blockRenderer.renderModel(model, snow, blockPos, modelOffset.up()); + var model = cache.getBlockModels().getBlockModel(snow); + blockRenderer.renderModel(model, snow, blockPos, modelOffset.above()); } } } diff --git a/src/main/resources/better-snow-coverage.mixins.json b/src/main/resources/better-snow-coverage.mixins.json index a6c1b3c..41649a1 100644 --- a/src/main/resources/better-snow-coverage.mixins.json +++ b/src/main/resources/better-snow-coverage.mixins.json @@ -1,9 +1,9 @@ { "required": true, - "package": "tobinio.bettersnowcoverage.mixin", + "package": "tobinio.bettersnowcoverage.mixin.sodium", "compatibilityLevel": "JAVA_21", "client": [ - "sodium.ChunkBuilderMeshingTaskMixin" + "ChunkBuilderMeshingTaskMixin" ], "injectors": { "defaultRequire": 1