diff --git a/src/main/java/ru/betterend/mixin/common/ChorusFlowerBlockMixin.java b/src/main/java/ru/betterend/mixin/common/ChorusFlowerBlockMixin.java index 091e0bdb..baa24bdc 100644 --- a/src/main/java/ru/betterend/mixin/common/ChorusFlowerBlockMixin.java +++ b/src/main/java/ru/betterend/mixin/common/ChorusFlowerBlockMixin.java @@ -56,20 +56,7 @@ public abstract class ChorusFlowerBlockMixin extends Block { int i = state.getValue(ChorusFlowerBlock.AGE); if (i < 5) { this.placeGrownFlower(world, up, i + 1); - if (GeneratorOptions.changeChorusPlant()) { - BlocksHelper.setWithoutUpdate( - world, - pos, - plant.defaultBlockState().setValue(ChorusPlantBlock.UP, true).setValue(ChorusPlantBlock.DOWN, true) - ); - } - else { - BlocksHelper.setWithoutUpdate( - world, - pos, - plant.defaultBlockState().setValue(ChorusPlantBlock.UP, true).setValue(ChorusPlantBlock.DOWN, true) - ); - } + BlocksHelper.setWithoutUpdate(world, pos, plant.defaultBlockState().setValue(ChorusPlantBlock.UP, true).setValue(ChorusPlantBlock.DOWN, true)); info.cancel(); } } diff --git a/src/main/java/ru/betterend/mixin/common/PlayerMixin.java b/src/main/java/ru/betterend/mixin/common/PlayerMixin.java index be4b79a4..992dd794 100644 --- a/src/main/java/ru/betterend/mixin/common/PlayerMixin.java +++ b/src/main/java/ru/betterend/mixin/common/PlayerMixin.java @@ -28,7 +28,6 @@ import java.util.Optional; @Mixin(Player.class) public abstract class PlayerMixin extends LivingEntity { - protected PlayerMixin(EntityType entityType, Level level) { super(entityType, level); } diff --git a/src/main/java/ru/betterend/mixin/common/ServerLevelMixin.java b/src/main/java/ru/betterend/mixin/common/ServerLevelMixin.java index ea3899b2..7fd9f600 100644 --- a/src/main/java/ru/betterend/mixin/common/ServerLevelMixin.java +++ b/src/main/java/ru/betterend/mixin/common/ServerLevelMixin.java @@ -55,12 +55,32 @@ public abstract class ServerLevelMixin extends Level { private void be_getSharedSpawnPos(CallbackInfoReturnable info) { if (GeneratorOptions.changeSpawn()) { if (ServerLevel.class.cast(this).dimension() == Level.END) { - info.setReturnValue(GeneratorOptions.getSpawn()); - info.cancel(); + BlockPos pos = GeneratorOptions.getSpawn(); + info.setReturnValue(pos); } } } + @Inject(method = "makeObsidianPlatform", at = @At("HEAD"), cancellable = true) + private static void be_createObsidianPlatform(ServerLevel serverLevel, CallbackInfo info) { + if (!GeneratorOptions.generateObsidianPlatform()) { + info.cancel(); + } + else if (GeneratorOptions.changeSpawn()) { + BlockPos blockPos = GeneratorOptions.getSpawn(); + int i = blockPos.getX(); + int j = blockPos.getY() - 2; + int k = blockPos.getZ(); + BlockPos.betweenClosed(i - 2, j + 1, k - 2, i + 2, j + 3, k + 2).forEach((blockPosx) -> { + serverLevel.setBlockAndUpdate(blockPosx, Blocks.AIR.defaultBlockState()); + }); + BlockPos.betweenClosed(i - 2, j, k - 2, i + 2, j, k + 2).forEach((blockPosx) -> { + serverLevel.setBlockAndUpdate(blockPosx, Blocks.OBSIDIAN.defaultBlockState()); + }); + info.cancel(); + } + } + @ModifyArg(method = "tickChunk", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ServerLevel;setBlockAndUpdate(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)Z")) private BlockState be_modifyTickState(BlockPos pos, BlockState state) { if (state.is(Blocks.ICE)) { diff --git a/src/main/java/ru/betterend/mixin/common/ServerPlayerMixin.java b/src/main/java/ru/betterend/mixin/common/ServerPlayerMixin.java index 51845f0e..962df157 100644 --- a/src/main/java/ru/betterend/mixin/common/ServerPlayerMixin.java +++ b/src/main/java/ru/betterend/mixin/common/ServerPlayerMixin.java @@ -74,6 +74,11 @@ public abstract class ServerPlayerMixin extends Player implements TeleportingEnt getXRot() )); } + else if (GeneratorOptions.changeSpawn() && destination.dimension() == Level.END) { + BlockPos spawn = GeneratorOptions.getSpawn(); + Vec3 pos = new Vec3(spawn.getX() + 0.5, spawn.getY(), spawn.getZ() + 0.5); + info.setReturnValue(new PortalInfo(pos, Vec3.ZERO, 90.0F, 0.0F)); + } } @Inject(method = "changeDimension", at = @At("HEAD"), cancellable = true)