From dd902fd77cf12c51441ef475eebc11c4d684cac4 Mon Sep 17 00:00:00 2001 From: AngelBottomless Date: Wed, 26 Jul 2023 22:40:00 +0900 Subject: [PATCH] Fix piglin brutes spawning in air (#1769) --- .../PiglinBrute_getPlacementTypeMixin.java | 33 +++++++++++++++++++ src/main/resources/carpet.mixins.json | 2 +- 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 src/main/java/carpet/mixins/PiglinBrute_getPlacementTypeMixin.java diff --git a/src/main/java/carpet/mixins/PiglinBrute_getPlacementTypeMixin.java b/src/main/java/carpet/mixins/PiglinBrute_getPlacementTypeMixin.java new file mode 100644 index 00000000..0a0376de --- /dev/null +++ b/src/main/java/carpet/mixins/PiglinBrute_getPlacementTypeMixin.java @@ -0,0 +1,33 @@ +package carpet.mixins; + +import carpet.CarpetSettings; +import net.minecraft.core.BlockPos; +import net.minecraft.util.RandomSource; +import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.Mob; +import net.minecraft.world.entity.MobSpawnType; +import net.minecraft.world.entity.SpawnPlacements; +import net.minecraft.world.entity.monster.Monster; +import net.minecraft.world.entity.monster.piglin.Piglin; +import net.minecraft.world.entity.monster.piglin.PiglinBrute; +import net.minecraft.world.level.LevelAccessor; +import net.minecraft.world.level.ServerLevelAccessor; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.levelgen.Heightmap; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.Unique; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(SpawnPlacements.class) +public class PiglinBrute_getPlacementTypeMixin { + @Inject(method = "getPlacementType", at = @At("HEAD"), cancellable = true) + private static void getPlacementType(EntityType entityType, CallbackInfoReturnable cir) { + if (CarpetSettings.piglinsSpawningInBastions && entityType == EntityType.PIGLIN_BRUTE) { + cir.setReturnValue(SpawnPlacements.Type.ON_GROUND); + } + } +} diff --git a/src/main/resources/carpet.mixins.json b/src/main/resources/carpet.mixins.json index c6af4fd6..2594ed21 100644 --- a/src/main/resources/carpet.mixins.json +++ b/src/main/resources/carpet.mixins.json @@ -26,7 +26,7 @@ "ServerStatus_motdMixin", "MinecraftServer_pingPlayerSampleLimit", "HugeFungusFeatureMixin", - + "PiglinBrute_getPlacementTypeMixin", "MinecraftServer_coreMixin", "MinecraftServer_tickspeedMixin",