From 2f019c20b96755d22a0245a052242ec0dca8472a Mon Sep 17 00:00:00 2001 From: TheRealWormbo Date: Mon, 15 Jan 2024 20:39:31 +0100 Subject: [PATCH] Fire "summon entity" trigger for mobs spawned via Botania means - constructing a fel blaze (for all players within 5 blocks, like for vanilla iron/snow golems) - starting the gaia fight (for all players considered to be in the fight) (fixes #4554) --- .../vazkii/botania/common/block/FelPumpkinBlock.java | 6 ++++++ .../vazkii/botania/common/entity/GaiaGuardianEntity.java | 9 ++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/Xplat/src/main/java/vazkii/botania/common/block/FelPumpkinBlock.java b/Xplat/src/main/java/vazkii/botania/common/block/FelPumpkinBlock.java index 48322d9b7e..7e997eb7ed 100644 --- a/Xplat/src/main/java/vazkii/botania/common/block/FelPumpkinBlock.java +++ b/Xplat/src/main/java/vazkii/botania/common/block/FelPumpkinBlock.java @@ -8,9 +8,11 @@ */ package vazkii.botania.common.block; +import net.minecraft.advancements.CriteriaTriggers; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.resources.ResourceLocation; +import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.MobSpawnType; import net.minecraft.world.entity.monster.Blaze; @@ -58,6 +60,10 @@ public void onPlace(BlockState state, Level world, BlockPos pos, BlockState oldS ((MobAccessor) blaze).setLootTable(LOOT_TABLE); blaze.finalizeSpawn((ServerLevelAccessor) world, world.getCurrentDifficultyAt(pos), MobSpawnType.EVENT, null, null); world.addFreshEntity(blaze); + + for (ServerPlayer player : world.getEntitiesOfClass(ServerPlayer.class, blaze.getBoundingBox().inflate(5.0))) { + CriteriaTriggers.SUMMONED_ENTITY.trigger(player, blaze); + } } } diff --git a/Xplat/src/main/java/vazkii/botania/common/entity/GaiaGuardianEntity.java b/Xplat/src/main/java/vazkii/botania/common/entity/GaiaGuardianEntity.java index f3e5d7db66..8a1403b1c6 100644 --- a/Xplat/src/main/java/vazkii/botania/common/entity/GaiaGuardianEntity.java +++ b/Xplat/src/main/java/vazkii/botania/common/entity/GaiaGuardianEntity.java @@ -252,7 +252,8 @@ public static boolean spawn(Player player, ItemStack stack, Level world, BlockPo e.mobSpawnTicks = MOB_SPAWN_TICKS; e.hardMode = hard; - int playerCount = e.getPlayersAround().size(); + List playersAround = e.getPlayersAround(); + int playerCount = playersAround.size(); e.playerCount = playerCount; float healthMultiplier = 1; @@ -268,6 +269,12 @@ public static boolean spawn(Player player, ItemStack stack, Level world, BlockPo e.playSound(BotaniaSounds.gaiaSummon, 1F, 1F); e.finalizeSpawn((ServerLevelAccessor) world, world.getCurrentDifficultyAt(e.blockPosition()), MobSpawnType.EVENT, null, null); world.addFreshEntity(e); + + for (Player nearbyPlayer : playersAround) { + if (nearbyPlayer instanceof ServerPlayer serverPlayer) { + CriteriaTriggers.SUMMONED_ENTITY.trigger(serverPlayer, e); + } + } } return true;