--- a/net/minecraft/world/damagesource/DamageSources.java +++ b/net/minecraft/world/damagesource/DamageSources.java @@ -41,9 +41,15 @@ private final DamageSource stalagmite; private final DamageSource outsideBorder; private final DamageSource genericKill; + // CraftBukkit start + private final DamageSource melting; + private final DamageSource poison; public DamageSources(IRegistryCustom iregistrycustom) { this.damageTypes = iregistrycustom.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); @@ -81,6 +87,16 @@ return new DamageSource(this.damageTypes.getHolderOrThrow(resourcekey), entity, entity1); } + // CraftBukkit start + public DamageSource melting() { + return this.melting; + } + + public DamageSource poison() { + return this.poison; + } + // CraftBukkit end + public DamageSource inFire() { return this.inFire; } @@ -250,7 +266,17 @@ } public DamageSource badRespawnPointExplosion(Vec3D vec3d) { - return new DamageSource(this.damageTypes.getHolderOrThrow(DamageTypes.BAD_RESPAWN_POINT), vec3d); + // CraftBukkit start + return badRespawnPointExplosion(vec3d, null, null, null); + } + + public DamageSource badRespawnPointExplosion(Vec3D vec3d, net.minecraft.world.level.World world, net.minecraft.world.level.block.state.IBlockData blockData, net.minecraft.core.BlockPosition position) { + DamageSource damageSource = new DamageSource(this.damageTypes.getHolderOrThrow(DamageTypes.BAD_RESPAWN_POINT), vec3d); + if (world != null && blockData != null && position != null) { + damageSource.blockState = org.bukkit.craftbukkit.block.CraftBlockStates.getBlockState(world, position, blockData, null); + } + return damageSource; + // CraftBukkit end } public DamageSource outOfBorder() {