Pass in SpawnReason rather than boolean

By: md_5 <git@md-5.net>
This commit is contained in:
CraftBukkit/Spigot 2022-04-18 11:05:15 +10:00
parent 14aabc2648
commit 94eb19b9fc
4 changed files with 10 additions and 9 deletions

View file

@ -14,17 +14,17 @@
public static EntityFallingBlock fall(World world, BlockPosition blockposition, IBlockData iblockdata) { public static EntityFallingBlock fall(World world, BlockPosition blockposition, IBlockData iblockdata) {
+ // CraftBukkit start + // CraftBukkit start
+ return fall(world, blockposition, iblockdata, false); + return fall(world, blockposition, iblockdata, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.DEFAULT);
+ } + }
+ +
+ public static EntityFallingBlock fall(World world, BlockPosition blockposition, IBlockData iblockdata, boolean isCustom) { + public static EntityFallingBlock fall(World world, BlockPosition blockposition, IBlockData iblockdata, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason spawnReason) {
+ // CraftBukkit end + // CraftBukkit end
EntityFallingBlock entityfallingblock = new EntityFallingBlock(world, (double) blockposition.getX() + 0.5D, (double) blockposition.getY(), (double) blockposition.getZ() + 0.5D, iblockdata.hasProperty(BlockProperties.WATERLOGGED) ? (IBlockData) iblockdata.setValue(BlockProperties.WATERLOGGED, false) : iblockdata); EntityFallingBlock entityfallingblock = new EntityFallingBlock(world, (double) blockposition.getX() + 0.5D, (double) blockposition.getY(), (double) blockposition.getZ() + 0.5D, iblockdata.hasProperty(BlockProperties.WATERLOGGED) ? (IBlockData) iblockdata.setValue(BlockProperties.WATERLOGGED, false) : iblockdata);
+ if (CraftEventFactory.callEntityChangeBlockEvent(entityfallingblock, blockposition, iblockdata.getFluidState().createLegacyBlock()).isCancelled()) return entityfallingblock; // CraftBukkit + if (CraftEventFactory.callEntityChangeBlockEvent(entityfallingblock, blockposition, iblockdata.getFluidState().createLegacyBlock()).isCancelled()) return entityfallingblock; // CraftBukkit
world.setBlock(blockposition, iblockdata.getFluidState().createLegacyBlock(), 3); world.setBlock(blockposition, iblockdata.getFluidState().createLegacyBlock(), 3);
- world.addFreshEntity(entityfallingblock); - world.addFreshEntity(entityfallingblock);
+ world.addFreshEntity(entityfallingblock, (isCustom) ? org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.CUSTOM : org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.DEFAULT); // CraftBukkit - keep logic in SpawnReason if the method is use by API + world.addFreshEntity(entityfallingblock, spawnReason); // CraftBukkit
return entityfallingblock; return entityfallingblock;
} }

View file

@ -103,12 +103,12 @@
EntityVillager entityvillager = (EntityVillager) entityliving; EntityVillager entityvillager = (EntityVillager) entityliving;
- EntityZombieVillager entityzombievillager = (EntityZombieVillager) entityvillager.convertTo(EntityTypes.ZOMBIE_VILLAGER, false); - EntityZombieVillager entityzombievillager = (EntityZombieVillager) entityvillager.convertTo(EntityTypes.ZOMBIE_VILLAGER, false);
+ // CraftBukkit start + // CraftBukkit start
+ zombifyVillager(worldserver, entityvillager, this.blockPosition(), this.isSilent(), false); + zombifyVillager(worldserver, entityvillager, this.blockPosition(), this.isSilent(), CreatureSpawnEvent.SpawnReason.INFECTION);
+ } + }
+ } + }
+ public static EntityZombieVillager zombifyVillager(WorldServer worldserver, EntityVillager entityvillager, net.minecraft.core.BlockPosition blockPosition, boolean silent, boolean custom) { + public static EntityZombieVillager zombifyVillager(WorldServer worldserver, EntityVillager entityvillager, net.minecraft.core.BlockPosition blockPosition, boolean silent, CreatureSpawnEvent.SpawnReason spawnReason) {
+ EntityZombieVillager entityzombievillager = (EntityZombieVillager) entityvillager.convertTo(EntityTypes.ZOMBIE_VILLAGER, false, EntityTransformEvent.TransformReason.INFECTION, (custom) ? CreatureSpawnEvent.SpawnReason.CUSTOM : CreatureSpawnEvent.SpawnReason.INFECTION); + EntityZombieVillager entityzombievillager = (EntityZombieVillager) entityvillager.convertTo(EntityTypes.ZOMBIE_VILLAGER, false, EntityTransformEvent.TransformReason.INFECTION, spawnReason);
+ if (entityzombievillager != null) { + if (entityzombievillager != null) {
+ // CraftBukkit end + // CraftBukkit end
entityzombievillager.finalizeSpawn(worldserver, worldserver.getCurrentDifficultyAt(entityzombievillager.blockPosition()), EnumMobSpawn.CONVERSION, new EntityZombie.GroupDataZombie(false, true), (NBTTagCompound) null); entityzombievillager.finalizeSpawn(worldserver, worldserver.getCurrentDifficultyAt(entityzombievillager.blockPosition()), EnumMobSpawn.CONVERSION, new EntityZombie.GroupDataZombie(false, true), (NBTTagCompound) null);

View file

@ -1145,7 +1145,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
Validate.notNull(material, "Material cannot be null"); Validate.notNull(material, "Material cannot be null");
Validate.isTrue(material.isBlock(), "Material must be a block"); Validate.isTrue(material.isBlock(), "Material must be a block");
EntityFallingBlock entity = EntityFallingBlock.fall(world, new BlockPosition(location.getX(), location.getY(), location.getZ()), CraftMagicNumbers.getBlock(material).defaultBlockState(), true); EntityFallingBlock entity = EntityFallingBlock.fall(world, new BlockPosition(location.getX(), location.getY(), location.getZ()), CraftMagicNumbers.getBlock(material).defaultBlockState(), SpawnReason.CUSTOM);
return (FallingBlock) entity.getBukkitEntity(); return (FallingBlock) entity.getBukkitEntity();
} }
@ -1154,7 +1154,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
Validate.notNull(location, "Location cannot be null"); Validate.notNull(location, "Location cannot be null");
Validate.notNull(data, "BlockData cannot be null"); Validate.notNull(data, "BlockData cannot be null");
EntityFallingBlock entity = EntityFallingBlock.fall(world, new BlockPosition(location.getX(), location.getY(), location.getZ()), ((CraftBlockData) data).getState(), true); EntityFallingBlock entity = EntityFallingBlock.fall(world, new BlockPosition(location.getX(), location.getY(), location.getZ()), ((CraftBlockData) data).getState(), SpawnReason.CUSTOM);
return (FallingBlock) entity.getBukkitEntity(); return (FallingBlock) entity.getBukkitEntity();
} }

View file

@ -17,6 +17,7 @@ import org.bukkit.craftbukkit.util.CraftNamespacedKey;
import org.bukkit.entity.EntityType; import org.bukkit.entity.EntityType;
import org.bukkit.entity.Villager; import org.bukkit.entity.Villager;
import org.bukkit.entity.ZombieVillager; import org.bukkit.entity.ZombieVillager;
import org.bukkit.event.entity.CreatureSpawnEvent;
public class CraftVillager extends CraftAbstractVillager implements Villager { public class CraftVillager extends CraftAbstractVillager implements Villager {
@ -124,7 +125,7 @@ public class CraftVillager extends CraftAbstractVillager implements Villager {
@Override @Override
public ZombieVillager zombify() { public ZombieVillager zombify() {
EntityZombieVillager entityzombievillager = EntityZombie.zombifyVillager(getHandle().level.getMinecraftWorld(), getHandle(), getHandle().blockPosition(), isSilent(), true); EntityZombieVillager entityzombievillager = EntityZombie.zombifyVillager(getHandle().level.getMinecraftWorld(), getHandle(), getHandle().blockPosition(), isSilent(), CreatureSpawnEvent.SpawnReason.CUSTOM);
return (entityzombievillager != null) ? (ZombieVillager) entityzombievillager.getBukkitEntity() : null; return (entityzombievillager != null) ? (ZombieVillager) entityzombievillager.getBukkitEntity() : null;
} }