Fixed some boot-crashes

This commit is contained in:
Frank 2022-05-17 21:03:08 +02:00
parent 54bbb75d77
commit 277dcc04b7
9 changed files with 51 additions and 45 deletions

View file

@ -25,7 +25,8 @@ public class EndLotusFlowerBlock extends EndPlantBlock {
private static final VoxelShape SHAPE_COLLISION = Block.box(0, 0, 0, 16, 2, 16); private static final VoxelShape SHAPE_COLLISION = Block.box(0, 0, 0, 16, 2, 16);
public EndLotusFlowerBlock() { 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 @Override

View file

@ -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); private static final VoxelShape SHAPE = Block.box(0, 0, 0, 16, 1, 16);
public FlamaeaBlock() { public FlamaeaBlock() {
//TODO: 1.19 Test if we can remove dynamic shape and offsetType
super(FabricBlockSettings.of(Material.PLANT) super(FabricBlockSettings.of(Material.PLANT)
.sound(SoundType.WET_GRASS) .sound(SoundType.WET_GRASS)
.dynamicShape()
.offsetType( BlockBehaviour.OffsetType.NONE)); .offsetType( BlockBehaviour.OffsetType.NONE));
} }

View file

@ -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); private static final VoxelShape SHAPE_TOP = Shapes.or(Block.box(1, 3, 1, 15, 16, 15), SHAPE_BOTTOM);
public LargeAmaranitaBlock() { public LargeAmaranitaBlock() {
//TODO: 1.19 Test if we can remove dynamic shape and offsetType
super(FabricBlockSettings.of(Material.PLANT) super(FabricBlockSettings.of(Material.PLANT)
.sound(SoundType.GRASS) .sound(SoundType.GRASS)
.lightLevel((state) -> (state.getValue(SHAPE) == TripleShape.TOP) ? 15 : 0) .lightLevel((state) -> (state.getValue(SHAPE) == TripleShape.TOP) ? 15 : 0)
.dynamicShape()
.offsetType(OffsetType.NONE)); .offsetType(OffsetType.NONE));
} }

View file

@ -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<Boolean> info) {
if (!GeneratorOptions.hasDragonFights()) {
info.setReturnValue(false);
}
}
}

View file

@ -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<BlockPos> info) {
if (GeneratorOptions.changeSpawn()) {
if (ServerLevel.class.cast(this).dimension() == Level.END) {
BlockPos pos = GeneratorOptions.getSpawn();
info.setReturnValue(pos);
}
}
}
}

View file

@ -2,6 +2,8 @@ package ru.betterend.mixin.common;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.core.Holder; import net.minecraft.core.Holder;
import net.minecraft.core.Registry;
import net.minecraft.data.BuiltinRegistries;
import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceKey;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.MinecraftServer; 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.Blocks;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.chunk.ChunkGenerator; 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.DimensionType;
import net.minecraft.world.level.dimension.LevelStem; import net.minecraft.world.level.dimension.LevelStem;
import net.minecraft.world.level.levelgen.NoiseBasedChunkGenerator; 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.ModifyArg;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import ru.bclib.BCLib;
import ru.bclib.api.biomes.BiomeAPI; import ru.bclib.api.biomes.BiomeAPI;
import ru.betterend.BetterEnd; import ru.betterend.BetterEnd;
import ru.betterend.interfaces.BETargetChecker; import ru.betterend.interfaces.BETargetChecker;
@ -49,19 +53,16 @@ public abstract class ServerLevelMixin extends Level {
int i) { int i) {
super(writableLevelData, resourceKey, holder, supplier, bl, bl2, l, i); super(writableLevelData, resourceKey, holder, supplier, bl, bl2, l, i);
} }
//private static String be_lastWorld = null;
private final static List<ResourceKey<DimensionType>> BE_TEST_DIMENSIONS = List.of(BuiltinDimensionTypes.OVERWORLD, BuiltinDimensionTypes.OVERWORLD_CAVES, BuiltinDimensionTypes.NETHER);
// @Inject(method = "<init>*", at = @At("TAIL")) @ModifyArg(method = "<init>", at = @At(value = "INVOKE", target="Lnet/minecraft/core/Holder;is(Lnet/minecraft/resources/ResourceKey;)Z"))
// private void be_onServerWorldInit(MinecraftServer server, Executor workerExecutor, LevelStorageSource.LevelStorageAccess session, ServerLevelData properties, ResourceKey<Level> registryKey, DimensionType dimensionType, ChunkProgressListener worldGenerationProgressListener, ChunkGenerator chunkGenerator, boolean debugWorld, long l, List<CustomSpawner> list, boolean bl, CallbackInfo info) { ResourceKey<DimensionType> be_dragonFight(ResourceKey<DimensionType> resourceKey){
// if (be_lastWorld != null && be_lastWorld.equals(session.getLevelId())) { if (!GeneratorOptions.hasDragonFights()) {
// return; //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;
// }
// be_lastWorld = session.getLevelId(); return resourceKey;
// //ServerLevel world = ServerLevel.class.cast(this); }
// //EndBiomes.onWorldLoad(world.getSeed(), world.registryAccess().registryOrThrow(Registry.BIOME_REGISTRY));
// }
@Inject(method = "<init>*", at = @At("TAIL")) @Inject(method = "<init>*", at = @At("TAIL"))
private void be_onServerWorldInit(MinecraftServer minecraftServer, private void be_onServerWorldInit(MinecraftServer minecraftServer,
@ -88,15 +89,6 @@ public abstract class ServerLevelMixin extends Level {
} }
} }
@Inject(method = "getSharedSpawnPos", at = @At("HEAD"), cancellable = true)
private void be_getSharedSpawnPos(CallbackInfoReturnable<BlockPos> 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) @Inject(method = "makeObsidianPlatform", at = @At("HEAD"), cancellable = true)
private static void be_createObsidianPlatform(ServerLevel serverLevel, CallbackInfo info) { private static void be_createObsidianPlatform(ServerLevel serverLevel, CallbackInfo info) {

View file

@ -41,6 +41,8 @@ import ru.betterend.world.generator.BiomeType;
import ru.betterend.world.generator.GeneratorOptions; import ru.betterend.world.generator.GeneratorOptions;
public class EndBiomes { public class EndBiomes {
public static final BiomeAPI.Dimension END_CAVE = new BiomeAPI.Dimension(BiomeAPI.Dimension.END);
public static BiomePicker CAVE_BIOMES = null; public static BiomePicker CAVE_BIOMES = null;
private static HexBiomeMap caveBiomeMap; private static HexBiomeMap caveBiomeMap;
private static long lastSeed; 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) { public static EndCaveBiome registerCaveBiome(EndCaveBiome.Config biomeConfig) {
final EndCaveBiome biome = EndCaveBiome.create(biomeConfig); final EndCaveBiome biome = EndCaveBiome.create(biomeConfig);
if (Configs.BIOME_CONFIG.getBoolean(biome.getID(), "enabled", true)) { if (Configs.BIOME_CONFIG.getBoolean(biome.getID(), "enabled", true)) {

View file

@ -4,6 +4,7 @@
"package": "ru.betterend.mixin.common", "package": "ru.betterend.mixin.common",
"compatibilityLevel": "JAVA_16", "compatibilityLevel": "JAVA_16",
"mixins": [ "mixins": [
"LevelMixin",
"NoiseBasedChunkGeneratorAccessor", "NoiseBasedChunkGeneratorAccessor",
"NoiseGeneratorSettingsMixin", "NoiseGeneratorSettingsMixin",
"NoiseInterpolatorAccessor", "NoiseInterpolatorAccessor",
@ -17,7 +18,6 @@
"WorldGenRegionMixin", "WorldGenRegionMixin",
"BlockBehaviourMixin", "BlockBehaviourMixin",
"NoiseChunkAccessor", "NoiseChunkAccessor",
"DimensionTypeMixin",
"CraftingMenuMixin", "CraftingMenuMixin",
"LivingEntityMixin", "LivingEntityMixin",
"ServerPlayerMixin", "ServerPlayerMixin",

View file

@ -44,8 +44,8 @@
"depends": { "depends": {
"fabricloader": ">=0.14.3", "fabricloader": ">=0.14.3",
"fabric": ">=0.52.2", "fabric": ">=0.52.1",
"minecraft": "1.19-alpha.22.18a", "minecraft": "1.19-alpha.22.18.a",
"bclib": "2.0.x" "bclib": "2.0.x"
}, },
"suggests": { "suggests": {