diff --git a/src/main/java/ru/betterend/blocks/EndLotusFlowerBlock.java b/src/main/java/ru/betterend/blocks/EndLotusFlowerBlock.java index b881186c..c218558c 100644 --- a/src/main/java/ru/betterend/blocks/EndLotusFlowerBlock.java +++ b/src/main/java/ru/betterend/blocks/EndLotusFlowerBlock.java @@ -25,7 +25,8 @@ public class EndLotusFlowerBlock extends EndPlantBlock { private static final VoxelShape SHAPE_COLLISION = Block.box(0, 0, 0, 16, 2, 16); public EndLotusFlowerBlock() { - super(FabricBlockSettings.of(Material.PLANT).luminance(15).noOcclusion().offsetType(BlockBehaviour.OffsetType.NONE)); + //TODO: 1.19 Test if we can remove dynamic shape and offsetType + super(FabricBlockSettings.of(Material.PLANT).luminance(15).noOcclusion().dynamicShape().offsetType(BlockBehaviour.OffsetType.NONE)); } @Override diff --git a/src/main/java/ru/betterend/blocks/FlamaeaBlock.java b/src/main/java/ru/betterend/blocks/FlamaeaBlock.java index b023bcb4..188f3904 100644 --- a/src/main/java/ru/betterend/blocks/FlamaeaBlock.java +++ b/src/main/java/ru/betterend/blocks/FlamaeaBlock.java @@ -29,8 +29,10 @@ public class FlamaeaBlock extends EndPlantBlock implements CustomItemProvider, A private static final VoxelShape SHAPE = Block.box(0, 0, 0, 16, 1, 16); public FlamaeaBlock() { + //TODO: 1.19 Test if we can remove dynamic shape and offsetType super(FabricBlockSettings.of(Material.PLANT) .sound(SoundType.WET_GRASS) + .dynamicShape() .offsetType( BlockBehaviour.OffsetType.NONE)); } diff --git a/src/main/java/ru/betterend/blocks/LargeAmaranitaBlock.java b/src/main/java/ru/betterend/blocks/LargeAmaranitaBlock.java index 49007cd4..739cc7bd 100644 --- a/src/main/java/ru/betterend/blocks/LargeAmaranitaBlock.java +++ b/src/main/java/ru/betterend/blocks/LargeAmaranitaBlock.java @@ -29,10 +29,12 @@ public class LargeAmaranitaBlock extends EndPlantBlock implements AddMineableShe private static final VoxelShape SHAPE_TOP = Shapes.or(Block.box(1, 3, 1, 15, 16, 15), SHAPE_BOTTOM); public LargeAmaranitaBlock() { + //TODO: 1.19 Test if we can remove dynamic shape and offsetType super(FabricBlockSettings.of(Material.PLANT) .sound(SoundType.GRASS) .lightLevel((state) -> (state.getValue(SHAPE) == TripleShape.TOP) ? 15 : 0) + .dynamicShape() .offsetType(OffsetType.NONE)); } diff --git a/src/main/java/ru/betterend/mixin/common/DimensionTypeMixin.java b/src/main/java/ru/betterend/mixin/common/DimensionTypeMixin.java deleted file mode 100644 index 38c6252a..00000000 --- a/src/main/java/ru/betterend/mixin/common/DimensionTypeMixin.java +++ /dev/null @@ -1,18 +0,0 @@ -package ru.betterend.mixin.common; - -import net.minecraft.world.level.dimension.DimensionType; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Inject; -import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; -import ru.betterend.world.generator.GeneratorOptions; - -@Mixin(value = DimensionType.class, priority = 100) -public class DimensionTypeMixin { - @Inject(method = "createDragonFight", at = @At("HEAD"), cancellable = true) - private void be_hasEnderDragonFight(CallbackInfoReturnable info) { - if (!GeneratorOptions.hasDragonFights()) { - info.setReturnValue(false); - } - } -} \ No newline at end of file diff --git a/src/main/java/ru/betterend/mixin/common/LevelMixin.java b/src/main/java/ru/betterend/mixin/common/LevelMixin.java new file mode 100644 index 00000000..49d3f80f --- /dev/null +++ b/src/main/java/ru/betterend/mixin/common/LevelMixin.java @@ -0,0 +1,25 @@ +package ru.betterend.mixin.common; + +import net.minecraft.core.BlockPos; +import net.minecraft.server.level.ServerLevel; +import net.minecraft.world.level.Level; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import ru.betterend.world.generator.GeneratorOptions; + +@Mixin(Level.class) +public class LevelMixin { + + @Inject(method = "getSharedSpawnPos", at = @At("HEAD"), cancellable = true) + private void be_getSharedSpawnPos(CallbackInfoReturnable info) { + if (GeneratorOptions.changeSpawn()) { + if (ServerLevel.class.cast(this).dimension() == Level.END) { + BlockPos pos = GeneratorOptions.getSpawn(); + info.setReturnValue(pos); + } + } + } +} diff --git a/src/main/java/ru/betterend/mixin/common/ServerLevelMixin.java b/src/main/java/ru/betterend/mixin/common/ServerLevelMixin.java index eccd7c02..d2732fb3 100644 --- a/src/main/java/ru/betterend/mixin/common/ServerLevelMixin.java +++ b/src/main/java/ru/betterend/mixin/common/ServerLevelMixin.java @@ -2,6 +2,8 @@ package ru.betterend.mixin.common; import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; +import net.minecraft.core.Registry; +import net.minecraft.data.BuiltinRegistries; import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.server.MinecraftServer; @@ -12,6 +14,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.chunk.ChunkGenerator; +import net.minecraft.world.level.dimension.BuiltinDimensionTypes; import net.minecraft.world.level.dimension.DimensionType; import net.minecraft.world.level.dimension.LevelStem; import net.minecraft.world.level.levelgen.NoiseBasedChunkGenerator; @@ -26,6 +29,7 @@ import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.ModifyArg; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; +import ru.bclib.BCLib; import ru.bclib.api.biomes.BiomeAPI; import ru.betterend.BetterEnd; import ru.betterend.interfaces.BETargetChecker; @@ -49,19 +53,16 @@ public abstract class ServerLevelMixin extends Level { int i) { super(writableLevelData, resourceKey, holder, supplier, bl, bl2, l, i); } - //private static String be_lastWorld = null; - -// @Inject(method = "*", at = @At("TAIL")) -// private void be_onServerWorldInit(MinecraftServer server, Executor workerExecutor, LevelStorageSource.LevelStorageAccess session, ServerLevelData properties, ResourceKey registryKey, DimensionType dimensionType, ChunkProgressListener worldGenerationProgressListener, ChunkGenerator chunkGenerator, boolean debugWorld, long l, List list, boolean bl, CallbackInfo info) { -// if (be_lastWorld != null && be_lastWorld.equals(session.getLevelId())) { -// return; -// } -// -// be_lastWorld = session.getLevelId(); -// //ServerLevel world = ServerLevel.class.cast(this); -// //EndBiomes.onWorldLoad(world.getSeed(), world.registryAccess().registryOrThrow(Registry.BIOME_REGISTRY)); -// } + private final static List> BE_TEST_DIMENSIONS = List.of(BuiltinDimensionTypes.OVERWORLD, BuiltinDimensionTypes.OVERWORLD_CAVES, BuiltinDimensionTypes.NETHER); + @ModifyArg(method = "", at = @At(value = "INVOKE", target="Lnet/minecraft/core/Holder;is(Lnet/minecraft/resources/ResourceKey;)Z")) + ResourceKey be_dragonFight(ResourceKey resourceKey){ + if (!GeneratorOptions.hasDragonFights()) { + //this object would pass the test for the End-Dimension, so make sure we compare against something else to disabled the Dragon-Fight + if (this.dimensionTypeRegistration().is(BuiltinDimensionTypes.END)) return BuiltinDimensionTypes.OVERWORLD; + } + return resourceKey; + } @Inject(method = "*", at = @At("TAIL")) private void be_onServerWorldInit(MinecraftServer minecraftServer, @@ -87,16 +88,7 @@ public abstract class ServerLevelMixin extends Level { TerrainGenerator.initNoise(seed, chunkGenerator.getBiomeSource(), level.getChunkSource().randomState().sampler()); } } - - @Inject(method = "getSharedSpawnPos", at = @At("HEAD"), cancellable = true) - private void be_getSharedSpawnPos(CallbackInfoReturnable info) { - if (GeneratorOptions.changeSpawn()) { - if (ServerLevel.class.cast(this).dimension() == Level.END) { - BlockPos pos = GeneratorOptions.getSpawn(); - info.setReturnValue(pos); - } - } - } + @Inject(method = "makeObsidianPlatform", at = @At("HEAD"), cancellable = true) private static void be_createObsidianPlatform(ServerLevel serverLevel, CallbackInfo info) { diff --git a/src/main/java/ru/betterend/registry/EndBiomes.java b/src/main/java/ru/betterend/registry/EndBiomes.java index 11dad2d2..cf1a76f1 100644 --- a/src/main/java/ru/betterend/registry/EndBiomes.java +++ b/src/main/java/ru/betterend/registry/EndBiomes.java @@ -41,6 +41,8 @@ import ru.betterend.world.generator.BiomeType; import ru.betterend.world.generator.GeneratorOptions; public class EndBiomes { + public static final BiomeAPI.Dimension END_CAVE = new BiomeAPI.Dimension(BiomeAPI.Dimension.END); + public static BiomePicker CAVE_BIOMES = null; private static HexBiomeMap caveBiomeMap; private static long lastSeed; @@ -165,7 +167,7 @@ public class EndBiomes { } } } - public static final BiomeAPI.Dimension END_CAVE = new BiomeAPI.Dimension(BiomeAPI.Dimension.END); + public static EndCaveBiome registerCaveBiome(EndCaveBiome.Config biomeConfig) { final EndCaveBiome biome = EndCaveBiome.create(biomeConfig); if (Configs.BIOME_CONFIG.getBoolean(biome.getID(), "enabled", true)) { diff --git a/src/main/resources/betterend.mixins.common.json b/src/main/resources/betterend.mixins.common.json index 1085e8d8..3b87bbba 100644 --- a/src/main/resources/betterend.mixins.common.json +++ b/src/main/resources/betterend.mixins.common.json @@ -4,6 +4,7 @@ "package": "ru.betterend.mixin.common", "compatibilityLevel": "JAVA_16", "mixins": [ + "LevelMixin", "NoiseBasedChunkGeneratorAccessor", "NoiseGeneratorSettingsMixin", "NoiseInterpolatorAccessor", @@ -17,7 +18,6 @@ "WorldGenRegionMixin", "BlockBehaviourMixin", "NoiseChunkAccessor", - "DimensionTypeMixin", "CraftingMenuMixin", "LivingEntityMixin", "ServerPlayerMixin", diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 25869715..b0727f00 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -44,8 +44,8 @@ "depends": { "fabricloader": ">=0.14.3", - "fabric": ">=0.52.2", - "minecraft": "1.19-alpha.22.18a", + "fabric": ">=0.52.1", + "minecraft": "1.19-alpha.22.18.a", "bclib": "2.0.x" }, "suggests": {