mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-18 20:53:09 +01:00
da9d110d5b
This patch does not appear to be doing anything useful, and may hide errors. Currently, the save logic does not run through this path either so it did not do anything. Additionally, properly implement support for handling RegionFileSizeException in Moonrise.
33 lines
2 KiB
Diff
33 lines
2 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
|
Date: Sun, 9 Apr 2023 21:11:58 -0700
|
|
Subject: [PATCH] Fix a couple of upstream bed issues
|
|
|
|
Upstream incorrectly skipped explosion logic if
|
|
the bed was occupied and added a "feature" where
|
|
if you set your spawn in a respawn anchor world
|
|
but then replaced it with a bed, you could respawn
|
|
at the bed in that world.
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/level/block/BedBlock.java b/src/main/java/net/minecraft/world/level/block/BedBlock.java
|
|
index b09fa473426a6c7e006a071827e5a68560d6c685..c02c4834ace843633b77fb43eeadd3ddc7b1f743 100644
|
|
--- a/src/main/java/net/minecraft/world/level/block/BedBlock.java
|
|
+++ b/src/main/java/net/minecraft/world/level/block/BedBlock.java
|
|
@@ -109,6 +109,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock
|
|
world.explode((Entity) null, world.damageSources().badRespawnPointExplosion(vec3d), (ExplosionDamageCalculator) null, vec3d, 5.0F, true, Level.ExplosionInteraction.BLOCK);
|
|
return InteractionResult.SUCCESS_SERVER;
|
|
} else if ((Boolean) state.getValue(BedBlock.OCCUPIED)) {
|
|
+ if (!BedBlock.canSetSpawn(world)) return this.explodeBed(state, world, pos); // Paper - check explode first
|
|
if (!this.kickVillagerOutOfBed(world, pos)) {
|
|
player.displayClientMessage(Component.translatable("block.minecraft.bed.occupied"), true);
|
|
}
|
|
@@ -166,8 +167,7 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock
|
|
// CraftBukkit end
|
|
|
|
public static boolean canSetSpawn(Level world) {
|
|
- // CraftBukkit - moved world and biome check into EntityHuman
|
|
- return true || world.dimensionType().bedWorks();
|
|
+ return world.dimensionType().bedWorks(); // Paper - actually check if the bed works
|
|
}
|
|
|
|
private boolean kickVillagerOutOfBed(Level world, BlockPos pos) {
|