diff --git a/src/main/java/fermiummixins/config/SpawnerControlConfig.java b/src/main/java/fermiummixins/config/SpawnerControlConfig.java index 53fee51..0c53da7 100644 --- a/src/main/java/fermiummixins/config/SpawnerControlConfig.java +++ b/src/main/java/fermiummixins/config/SpawnerControlConfig.java @@ -8,7 +8,7 @@ @MixinConfig(name = FermiumMixins.MODID) public class SpawnerControlConfig { - @Config.Comment("Makes curing Zombie Villagers and Pig lightning conversions count as a kill for spawners") + @Config.Comment("Makes curing Zombie Villagers, Silverfish, and Pig lightning conversions count as a kill for spawners") @Config.Name("Curing/Conversion Ticks Spawners (MobSpawnerControl)") @Config.RequiresMcRestart @MixinConfig.MixinToggle(earlyMixin = "mixins.fermiummixins.early.spawnercontrol.curing.json", defaultValue = false) diff --git a/src/main/java/fermiummixins/mixin/spawnercontrol/vanilla/EntitySilverFish_BlockInfestMixin.java b/src/main/java/fermiummixins/mixin/spawnercontrol/vanilla/EntitySilverFish_BlockInfestMixin.java new file mode 100644 index 0000000..3b7c0bf --- /dev/null +++ b/src/main/java/fermiummixins/mixin/spawnercontrol/vanilla/EntitySilverFish_BlockInfestMixin.java @@ -0,0 +1,29 @@ +package fermiummixins.mixin.spawnercontrol.vanilla; + +import com.llamalad7.mixinextras.injector.v2.WrapWithCondition; +import fermiummixins.wrapper.SpawnerControlWrapper; +import net.minecraft.block.state.IBlockState; +import net.minecraft.entity.EntityCreature; +import net.minecraft.entity.ai.EntityAIWander; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; + +@Mixin(targets = "net.minecraft.entity.monster.EntitySilverfish$AIHideInStone") +public abstract class EntitySilverFish_BlockInfestMixin extends EntityAIWander { + + + public EntitySilverFish_BlockInfestMixin(EntityCreature creatureIn, double speedIn) { + super(creatureIn, speedIn); + } + + @WrapWithCondition( + method = "startExecuting", + at = @At(value = "INVOKE", target = "Lnet/minecraft/world/World;setBlockState(Lnet/minecraft/util/math/BlockPos;Lnet/minecraft/block/state/IBlockState;I)Z") + ) + public boolean fermiummixins_vanillaEntitySilverfish$AIHideInStone_startExecuting(World world, BlockPos pos, IBlockState newState, int flags){ + SpawnerControlWrapper.increaseSpawnerCount(this.entity); + return !SpawnerControlWrapper.shouldCancelDrops(this.entity); // Don't set infested block + } +} diff --git a/src/main/resources/mixins.fermiummixins.early.spawnercontrol.curing.json b/src/main/resources/mixins.fermiummixins.early.spawnercontrol.curing.json index 1dc8354..1a8d296 100644 --- a/src/main/resources/mixins.fermiummixins.early.spawnercontrol.curing.json +++ b/src/main/resources/mixins.fermiummixins.early.spawnercontrol.curing.json @@ -7,6 +7,7 @@ "minVersion": "0.8", "mixins": [ "spawnercontrol.vanilla.EntityZombieVillager_CuringMixin", + "spawnercontrol.vanilla.EntitySilverFish_BlockInfestMixin", "spawnercontrol.vanilla.EntityPig_CuringMixin" ] } \ No newline at end of file