--- a/net/minecraft/world/damagesource/DamageSources.java
+++ b/net/minecraft/world/damagesource/DamageSources.java
@@ -16,6 +16,7 @@
 import net.minecraft.world.phys.Vec3;
 
 public class DamageSources {
+
     private final Registry<DamageType> damageTypes;
     private final DamageSource inFire;
     private final DamageSource lightningBolt;
@@ -40,9 +41,15 @@
     private final DamageSource stalagmite;
     private final DamageSource outsideBorder;
     private final DamageSource genericKill;
+    // CraftBukkit start
+    public final DamageSource melting;
+    public final DamageSource poison;
 
     public DamageSources(RegistryAccess registryManager) {
         this.damageTypes = registryManager.registryOrThrow(Registries.DAMAGE_TYPE);
+        this.melting = this.source(DamageTypes.ON_FIRE).melting();
+        this.poison = this.source(DamageTypes.MAGIC).poison();
+        // CraftBukkit end
         this.inFire = this.source(DamageTypes.IN_FIRE);
         this.lightningBolt = this.source(DamageTypes.LIGHTNING_BOLT);
         this.onFire = this.source(DamageTypes.ON_FIRE);
@@ -229,7 +236,7 @@
     }
 
     public DamageSource explosion(@Nullable Explosion explosion) {
-        return explosion != null ? this.explosion(explosion.getDirectSourceEntity(), explosion.getIndirectSourceEntity()) : this.explosion((Entity)null, (Entity)null);
+        return explosion != null ? this.explosion(explosion.getDirectSourceEntity(), explosion.getIndirectSourceEntity()) : this.explosion((Entity) null, (Entity) null);
     }
 
     public DamageSource explosion(@Nullable Entity source, @Nullable Entity attacker) {
@@ -240,8 +247,17 @@
         return this.source(DamageTypes.SONIC_BOOM, attacker);
     }
 
+    @Deprecated @io.papermc.paper.annotation.DoNotUse // Paper
     public DamageSource badRespawnPointExplosion(Vec3 position) {
-        return new DamageSource(this.damageTypes.getHolderOrThrow(DamageTypes.BAD_RESPAWN_POINT), position);
+        // Paper start
+        return this.badRespawnPointExplosion(position, null);
+    }
+
+    public DamageSource badRespawnPointExplosion(Vec3 position, @Nullable org.bukkit.block.BlockState explodedBlockState) {
+        DamageSource source = new DamageSource(this.damageTypes.getHolderOrThrow(DamageTypes.BAD_RESPAWN_POINT), position);
+        source.explodedBlockState = explodedBlockState;
+        return source;
+        // Paper end
     }
 
     public DamageSource outOfBorder() {
