From 749669e34bca4837d6f9d16b1be12577e486cc1e Mon Sep 17 00:00:00 2001 From: kd8lvt Date: Tue, 16 Jul 2024 20:12:23 -0400 Subject: [PATCH] feat: add Acid Cauldron --- .../datagen/lang/EnglishLangProvider.java | 2 + .../datagen/lang/PirateLangProvider.java | 1 + .../biomancy/datagen/loot/ModBlockLoot.java | 7 ++ .../datagen/models/ModBlockStateProvider.java | 9 +++ .../datagen/tags/ModBlockTagsProvider.java | 6 +- .../biomancy/blockstates/acid_cauldron.json | 7 ++ .../resources/assets/biomancy/lang/en_pt.json | 1 + .../resources/assets/biomancy/lang/en_us.json | 1 + .../biomancy/models/block/acid_cauldron.json | 6 ++ .../loot_tables/blocks/acid_cauldron.json | 21 ++++++ .../tags/blocks/mineable/pickaxe.json | 5 ++ .../biomancy/block/cauldron/AcidCauldron.java | 69 +++++++++++++++++++ .../elenterius/biomancy/fluid/AcidFluid.java | 16 ++++- .../elenterius/biomancy/init/ModBlocks.java | 2 + .../elenterius/biomancy/init/ModItems.java | 12 +++- .../mixin/AbstractCauldronBlockMixin.java | 32 +++++++++ src/main/resources/mixins.biomancy.json | 9 +-- 17 files changed, 199 insertions(+), 7 deletions(-) create mode 100644 src/generated/resources/assets/biomancy/blockstates/acid_cauldron.json create mode 100644 src/generated/resources/assets/biomancy/models/block/acid_cauldron.json create mode 100644 src/generated/resources/data/biomancy/loot_tables/blocks/acid_cauldron.json create mode 100644 src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json create mode 100644 src/main/java/com/github/elenterius/biomancy/block/cauldron/AcidCauldron.java create mode 100644 src/main/java/com/github/elenterius/biomancy/mixin/AbstractCauldronBlockMixin.java diff --git a/src/datagen/java/com/github/elenterius/biomancy/datagen/lang/EnglishLangProvider.java b/src/datagen/java/com/github/elenterius/biomancy/datagen/lang/EnglishLangProvider.java index e3611f79f..4ab935434 100644 --- a/src/datagen/java/com/github/elenterius/biomancy/datagen/lang/EnglishLangProvider.java +++ b/src/datagen/java/com/github/elenterius/biomancy/datagen/lang/EnglishLangProvider.java @@ -623,6 +623,8 @@ private void addBlockTranslations() { addBlock(ModBlocks.PRIMAL_ORIFICE, "Primal Orifice", "A primitive piece full of holes that seems to generate and leak acidic juices.\nIt can be milked with buckets and bottles."); addBlock(ModBlocks.ACID_FLUID_BLOCK, "Gastric Acid"); + + addBlock(ModBlocks.ACID_CAULDRON,"Gastric Acid Cauldron"); } private void addEntityTranslations() { diff --git a/src/datagen/java/com/github/elenterius/biomancy/datagen/lang/PirateLangProvider.java b/src/datagen/java/com/github/elenterius/biomancy/datagen/lang/PirateLangProvider.java index f7976a62f..e05afb0e8 100644 --- a/src/datagen/java/com/github/elenterius/biomancy/datagen/lang/PirateLangProvider.java +++ b/src/datagen/java/com/github/elenterius/biomancy/datagen/lang/PirateLangProvider.java @@ -572,6 +572,7 @@ private void addBlockTranslations() { addBlock(ModBlocks.PRIMAL_ORIFICE, "Oozin' Flesh", "An ancient hunk o' flesh that be full of holes. It be leakin' somethin' acidic."); addBlock(ModBlocks.ACID_FLUID_BLOCK, "Acid"); + addBlock(ModBlocks.ACID_CAULDRON, "Pot o' Acid"); } private void addEntityTranslations() { diff --git a/src/datagen/java/com/github/elenterius/biomancy/datagen/loot/ModBlockLoot.java b/src/datagen/java/com/github/elenterius/biomancy/datagen/loot/ModBlockLoot.java index 20d04bc9c..a80b320a0 100644 --- a/src/datagen/java/com/github/elenterius/biomancy/datagen/loot/ModBlockLoot.java +++ b/src/datagen/java/com/github/elenterius/biomancy/datagen/loot/ModBlockLoot.java @@ -150,6 +150,12 @@ protected LootTable.Builder createFleshSpikeTable(FleshSpikeBlock block) { )))); } + protected LootTable.Builder drop(Item item) { + return LootTable.lootTable().withPool(LootPool.lootPool() + .setRolls(ConstantValue.exactly(1)) + .add(applyExplosionDecay(item,LootItem.lootTableItem(item)))); + } + @Override protected void generate() { LOGGER.info(logMarker, "registering block loot..."); @@ -240,6 +246,7 @@ protected void generate() { addCustom(ModBlocks.FLESH_SPIKE.get(), this::createFleshSpikeTable); add(ModBlocks.ACID_FLUID_BLOCK.get(), noDrop()); + add(ModBlocks.ACID_CAULDRON.get(), drop(Items.CAULDRON)); } protected void addCustom(T block, Function function) { diff --git a/src/datagen/java/com/github/elenterius/biomancy/datagen/models/ModBlockStateProvider.java b/src/datagen/java/com/github/elenterius/biomancy/datagen/models/ModBlockStateProvider.java index 5cab90fcf..35f5f90d9 100644 --- a/src/datagen/java/com/github/elenterius/biomancy/datagen/models/ModBlockStateProvider.java +++ b/src/datagen/java/com/github/elenterius/biomancy/datagen/models/ModBlockStateProvider.java @@ -150,6 +150,15 @@ protected void registerStatesAndModels() { directionalBlockWithItem(ModBlocks.CHRYSALIS.get()); particleOnly(ModBlocks.ACID_FLUID_BLOCK, new ResourceLocation("biomancy:block/acid_flat")); + + cauldron(ModBlocks.ACID_CAULDRON,new ResourceLocation("biomancy:fluid/acid_overlay")); + } + + public void cauldron(RegistryObject block, ResourceLocation fluidTexture) { + BlockModelBuilder model = models().withExistingParent(path(block.get()),"minecraft:block/lava_cauldron") + .texture("content",fluidTexture); + + simpleBlock(block.get(),model); } public void particleOnly(RegistryObject block, ResourceLocation particleTexture) { diff --git a/src/datagen/java/com/github/elenterius/biomancy/datagen/tags/ModBlockTagsProvider.java b/src/datagen/java/com/github/elenterius/biomancy/datagen/tags/ModBlockTagsProvider.java index 2d0db9ec8..1ea6ccfa8 100644 --- a/src/datagen/java/com/github/elenterius/biomancy/datagen/tags/ModBlockTagsProvider.java +++ b/src/datagen/java/com/github/elenterius/biomancy/datagen/tags/ModBlockTagsProvider.java @@ -10,6 +10,7 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.tags.BlockTags; import net.minecraft.tags.TagKey; +import net.minecraft.world.level.block.AbstractCauldronBlock; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraftforge.common.Tags; @@ -115,7 +116,10 @@ protected void addTags(HolderLookup.Provider provider) { private void addFleshyBlocksToHoeTag() { IntrinsicTagAppender tag = tag(BlockTags.MINEABLE_WITH_HOE); - ModBlocks.BLOCKS.getEntries().stream().map(RegistryObject::get).forEach(tag::add); + ModBlocks.BLOCKS.getEntries().stream().map(RegistryObject::get).forEach((block)->{ + if (block instanceof AbstractCauldronBlock) tag(BlockTags.MINEABLE_WITH_PICKAXE).add(block); //Lazy hack to get around Elen's lazy hack :P + else tag.add(block); + }); } /** diff --git a/src/generated/resources/assets/biomancy/blockstates/acid_cauldron.json b/src/generated/resources/assets/biomancy/blockstates/acid_cauldron.json new file mode 100644 index 000000000..969de861e --- /dev/null +++ b/src/generated/resources/assets/biomancy/blockstates/acid_cauldron.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "biomancy:block/acid_cauldron" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/biomancy/lang/en_pt.json b/src/generated/resources/assets/biomancy/lang/en_pt.json index cbee29bd9..1e7144499 100644 --- a/src/generated/resources/assets/biomancy/lang/en_pt.json +++ b/src/generated/resources/assets/biomancy/lang/en_pt.json @@ -261,6 +261,7 @@ "block.biomancy.primal_orifice": "Oozin' Flesh", "block.biomancy.primal_orifice.tooltip": "An ancient hunk o' flesh that be full of holes. It be leakin' somethin' acidic.", "block.biomancy.acid_fluid_block": "Acid", + "block.biomancy.acid_cauldron": "Pot o' Acid", "fluid_type.biomancy.acid": "Acid", "entity.biomancy.hungry_flesh_blob": "Hungry Cube o' Flesh", "entity.biomancy.flesh_blob": "Cube o' Flesh", diff --git a/src/generated/resources/assets/biomancy/lang/en_us.json b/src/generated/resources/assets/biomancy/lang/en_us.json index 0fdbabf99..7e616a35c 100644 --- a/src/generated/resources/assets/biomancy/lang/en_us.json +++ b/src/generated/resources/assets/biomancy/lang/en_us.json @@ -280,6 +280,7 @@ "block.biomancy.primal_orifice": "Primal Orifice", "block.biomancy.primal_orifice.tooltip": "A primitive piece full of holes that seems to generate and leak acidic juices.\nIt can be milked with buckets and bottles.", "block.biomancy.acid_fluid_block": "Gastric Acid", + "block.biomancy.acid_cauldron": "Gastric Acid Cauldron", "fluid_type.biomancy.acid": "Acid", "entity.biomancy.hungry_flesh_blob": "Hungry Flesh Blob", "entity.biomancy.flesh_blob": "Flesh Blob", diff --git a/src/generated/resources/assets/biomancy/models/block/acid_cauldron.json b/src/generated/resources/assets/biomancy/models/block/acid_cauldron.json new file mode 100644 index 000000000..d8959ae4a --- /dev/null +++ b/src/generated/resources/assets/biomancy/models/block/acid_cauldron.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/lava_cauldron", + "textures": { + "content": "biomancy:fluid/acid_overlay" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/biomancy/loot_tables/blocks/acid_cauldron.json b/src/generated/resources/data/biomancy/loot_tables/blocks/acid_cauldron.json new file mode 100644 index 000000000..ed996b7d2 --- /dev/null +++ b/src/generated/resources/data/biomancy/loot_tables/blocks/acid_cauldron.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "entries": [ + { + "type": "minecraft:item", + "functions": [ + { + "function": "minecraft:explosion_decay" + } + ], + "name": "minecraft:cauldron" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "biomancy:blocks/acid_cauldron" +} \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json b/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json new file mode 100644 index 000000000..d10080149 --- /dev/null +++ b/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json @@ -0,0 +1,5 @@ +{ + "values": [ + "biomancy:acid_cauldron" + ] +} \ No newline at end of file diff --git a/src/main/java/com/github/elenterius/biomancy/block/cauldron/AcidCauldron.java b/src/main/java/com/github/elenterius/biomancy/block/cauldron/AcidCauldron.java new file mode 100644 index 000000000..965adb343 --- /dev/null +++ b/src/main/java/com/github/elenterius/biomancy/block/cauldron/AcidCauldron.java @@ -0,0 +1,69 @@ +package com.github.elenterius.biomancy.block.cauldron; + +import com.github.elenterius.biomancy.fluid.AcidFluid; +import com.github.elenterius.biomancy.init.ModFluids; +import com.github.elenterius.biomancy.init.ModItems; +import net.minecraft.core.BlockPos; +import net.minecraft.core.cauldron.CauldronInteraction; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.Entity; +import net.minecraft.world.entity.LivingEntity; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.item.Item; +import net.minecraft.world.item.ItemStack; +import net.minecraft.world.item.Items; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.AbstractCauldronBlock; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.Blocks; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraftforge.common.SoundActions; +import net.minecraftforge.registries.ForgeRegistries; +import org.jetbrains.annotations.NotNull; + +import java.util.Map; +import java.util.Objects; + +public class AcidCauldron extends AbstractCauldronBlock { + public AcidCauldron() { + super(Properties.copy(Blocks.CAULDRON),getInteractions()); + } + + private static Map getInteractions() { + Map map = CauldronInteraction.newInteractionMap(); + map.put(Items.BUCKET, (pBlockState, pLevel, pPos, pPlayer, pHand, pEmptyStack) -> CauldronInteraction.fillBucket(pBlockState, pLevel, pPos, pPlayer, pHand, pEmptyStack, ModItems.ACID_BUCKET.get().getDefaultInstance(), (_stack)->true, Objects.requireNonNull(ModFluids.ACID_TYPE.get().getSound(SoundActions.BUCKET_FILL)))); + return map; + } + + @Override + public void entityInside(BlockState state, Level level, BlockPos pos, Entity entity) { + if (!(entity instanceof LivingEntity)) return; + AcidFluid.onEntityInside((LivingEntity)entity); + } + + @Override + public boolean isFull(BlockState pState) { + return true; + } + + @Override + public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { + //No idea why, but MC freaks out without this line. super.use() should cover it, but it doesn't so... + if (getInteractions().containsKey(player.getItemInHand(hand).getItem())) return getInteractions().get(player.getItemInHand(hand).getItem()).interact(state,level,pos,player,hand,player.getItemInHand(hand)); + + //An attempt to allow the player to do all the erosion interactions inside the cauldron. + //It mostly works, copper being a weird exception. + Block block = ForgeRegistries.BLOCKS.getValue(ForgeRegistries.ITEMS.getKey(player.getItemInHand(hand).getItem())); + if (!Objects.isNull(block)) { + BlockState eroded = AcidFluid.getEroded(block.defaultBlockState()); + if (!Objects.isNull(eroded)) { + player.setItemInHand(hand,new ItemStack(eroded.getBlock().asItem(),player.getItemInHand(hand).getCount())); + return InteractionResult.SUCCESS; + } + } + + return super.use(state, level, pos, player, hand, hit); + } +} diff --git a/src/main/java/com/github/elenterius/biomancy/fluid/AcidFluid.java b/src/main/java/com/github/elenterius/biomancy/fluid/AcidFluid.java index 3b8c02422..b928e1616 100644 --- a/src/main/java/com/github/elenterius/biomancy/fluid/AcidFluid.java +++ b/src/main/java/com/github/elenterius/biomancy/fluid/AcidFluid.java @@ -1,6 +1,7 @@ package com.github.elenterius.biomancy.fluid; import com.github.elenterius.biomancy.block.veins.FleshVeinsBlock; +import com.github.elenterius.biomancy.init.ModBlocks; import com.github.elenterius.biomancy.init.ModFluids; import com.github.elenterius.biomancy.init.tags.ModBlockTags; import com.github.elenterius.biomancy.util.CombatUtil; @@ -22,6 +23,7 @@ import net.minecraft.world.phys.Vec3; import net.minecraftforge.event.ForgeEventFactory; import net.minecraftforge.fluids.ForgeFlowingFluid; +import org.jetbrains.annotations.Nullable; import java.util.Map; @@ -44,7 +46,7 @@ protected AcidFluid(Properties properties) { public static void onEntityInside(LivingEntity livingEntity) { if (livingEntity.isSpectator()) return; if (livingEntity.tickCount % 5 != 0) return; - if (!livingEntity.isInFluidType(ModFluids.ACID_TYPE.get())) return; + if (!livingEntity.isInFluidType(ModFluids.ACID_TYPE.get()) && !livingEntity.getFeetBlockState().is(ModBlocks.ACID_CAULDRON.get())) return; if (!livingEntity.level().isClientSide) { CombatUtil.applyAcidEffect(livingEntity, 4); @@ -62,6 +64,18 @@ else if (livingEntity.tickCount % 10 == 0 && livingEntity.getRandom().nextFloat( } } + @Nullable + public static BlockState getEroded(BlockState state) { + if (state instanceof WeatheringCopper && WeatheringCopper.getNext(state.getBlock()).isPresent()) { + return WeatheringCopper.getNext(state.getBlock()).get().defaultBlockState(); + } else if (state.is(ModBlockTags.ACID_DESTRUCTIBLE)) { + return Blocks.AIR.defaultBlockState(); + } else if (NORMAL_TO_ERODED_BLOCK_CONVERSION.containsKey(state.getBlock())) { + return NORMAL_TO_ERODED_BLOCK_CONVERSION.get(state.getBlock()); + } + return null; + } + @Override protected boolean canPassThrough(BlockGetter level, Fluid fluid, BlockPos fromPos, BlockState fromBlockState, Direction direction, BlockPos toPos, BlockState toBlockState, FluidState toFluidState) { return toBlockState.getBlock() instanceof FleshVeinsBlock || super.canPassThrough(level, fluid, fromPos, fromBlockState, direction, toPos, toBlockState, toFluidState); diff --git a/src/main/java/com/github/elenterius/biomancy/init/ModBlocks.java b/src/main/java/com/github/elenterius/biomancy/init/ModBlocks.java index de7f09d56..7ebc0c069 100644 --- a/src/main/java/com/github/elenterius/biomancy/init/ModBlocks.java +++ b/src/main/java/com/github/elenterius/biomancy/init/ModBlocks.java @@ -5,6 +5,7 @@ import com.github.elenterius.biomancy.block.bioforge.BioForgeBlock; import com.github.elenterius.biomancy.block.biolab.BioLabBlock; import com.github.elenterius.biomancy.block.bloom.BloomBlock; +import com.github.elenterius.biomancy.block.cauldron.AcidCauldron; import com.github.elenterius.biomancy.block.chrysalis.ChrysalisBlock; import com.github.elenterius.biomancy.block.cradle.PrimordialCradleBlock; import com.github.elenterius.biomancy.block.decomposer.DecomposerBlock; @@ -136,6 +137,7 @@ public final class ModBlocks { public static final RegistryObject FLESH_DOOR = register("flesh_door", FleshDoorBlock::new); public static final RegistryObject FULL_FLESH_DOOR = register("full_flesh_door", FullFleshDoorBlock::new); public static final RegistryObject TENDON_CHAIN = register("tendon_chain", properties -> new FleshChainBlock(properties.noOcclusion())); + public static final RegistryObject ACID_CAULDRON = register("acid_cauldron", AcidCauldron::new); private ModBlocks() {} diff --git a/src/main/java/com/github/elenterius/biomancy/init/ModItems.java b/src/main/java/com/github/elenterius/biomancy/init/ModItems.java index 77713de94..0b6046a53 100644 --- a/src/main/java/com/github/elenterius/biomancy/init/ModItems.java +++ b/src/main/java/com/github/elenterius/biomancy/init/ModItems.java @@ -11,6 +11,7 @@ import com.github.elenterius.biomancy.item.weapon.RavenousClawsItem; import com.github.elenterius.biomancy.item.weapon.gun.CausticGunbladeItem; import com.github.elenterius.biomancy.item.weapon.gun.DevArmCannonItem; +import net.minecraft.core.cauldron.CauldronInteraction; import net.minecraft.util.Mth; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.Mob; @@ -20,10 +21,12 @@ import net.minecraft.world.item.*; import net.minecraft.world.level.block.Block; import net.minecraftforge.common.ForgeSpawnEggItem; +import net.minecraftforge.common.SoundActions; import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.RegistryObject; +import java.util.Objects; import java.util.function.Function; import java.util.function.Supplier; import java.util.stream.Stream; @@ -224,7 +227,14 @@ public static Stream> findEntries(Class cl } private static RegistryObject registerItem(String name, Function factory) { - return ITEMS.register(name, () -> factory.apply(createProperties())); + RegistryObject ret = ITEMS.register(name, () -> factory.apply(createProperties())); + if (name.equals("biomancy:acid_bucket")) { + //Register Cauldron filling for Acid + CauldronInteraction.EMPTY.put(ret.get(),(state, level, pos, player, hand, stack)->{ + return CauldronInteraction.emptyBucket(level,pos,player,hand,stack, ModBlocks.ACID_CAULDRON.get().defaultBlockState(), Objects.requireNonNull(ModFluids.ACID.get().getFluidType().getSound(SoundActions.BUCKET_EMPTY))); + }); + } + return ret; } private static RegistryObject registerSimpleBlockItem(RegistryObject blockHolder) { diff --git a/src/main/java/com/github/elenterius/biomancy/mixin/AbstractCauldronBlockMixin.java b/src/main/java/com/github/elenterius/biomancy/mixin/AbstractCauldronBlockMixin.java new file mode 100644 index 000000000..f8cb18da7 --- /dev/null +++ b/src/main/java/com/github/elenterius/biomancy/mixin/AbstractCauldronBlockMixin.java @@ -0,0 +1,32 @@ +package com.github.elenterius.biomancy.mixin; + +import com.github.elenterius.biomancy.init.ModBlocks; +import com.github.elenterius.biomancy.init.ModFluids; +import com.github.elenterius.biomancy.init.ModItems; +import net.minecraft.core.BlockPos; +import net.minecraft.core.cauldron.CauldronInteraction; +import net.minecraft.world.InteractionHand; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.AbstractCauldronBlock; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.phys.BlockHitResult; +import net.minecraftforge.common.SoundActions; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import java.util.Objects; + +@Mixin(value= AbstractCauldronBlock.class) +public abstract class AbstractCauldronBlockMixin { + @Inject(at=@At("TAIL"),method="Lnet/minecraft/world/level/block/AbstractCauldronBlock;use(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/InteractionHand;Lnet/minecraft/world/phys/BlockHitResult;)Lnet/minecraft/world/InteractionResult;", cancellable = true) + public void biomancy$use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit, CallbackInfoReturnable cir) { + //Allow the Acid bucket to fill Cauldrons. I have no idea why this should require a mixin, beyond "Just Vanilla Things". + if (player.getItemInHand(hand).getItem().equals(ModItems.ACID_BUCKET.get())) { + cir.setReturnValue(CauldronInteraction.emptyBucket(level,pos,player,hand,player.getItemInHand(hand), ModBlocks.ACID_CAULDRON.get().defaultBlockState(), Objects.requireNonNull(ModFluids.ACID_TYPE.get().getSound(SoundActions.BUCKET_FILL)))); + } + } +} diff --git a/src/main/resources/mixins.biomancy.json b/src/main/resources/mixins.biomancy.json index 3e6b600b0..b334a67fd 100644 --- a/src/main/resources/mixins.biomancy.json +++ b/src/main/resources/mixins.biomancy.json @@ -8,10 +8,11 @@ "defaultRequire": 1 }, "mixins": [ - "AgeableMobAccessor", "AreaEffectCloudMixin", "ArmorStandAccessor", "ArrowMixin", "BiomeAccessor", "DamageSourceAccessor", "EntityAccessor", - "IntegerPropertyAccessor", "LivingEntityAccessor", "LivingEntityMixin", "MobEffectInstanceAccessor", "MobEffectInstanceMixin", "MobEntityAccessor", - "PhantomMixin", "PlayerMixin", "ServerLevelAccessor", "ServerLevelMixin", "SlimeAccessor", "SuspiciousStewItemAccessor", "SwordItemMixinAccessor", - "TadpoleAccessor", "TextureSlotAccessor", "ThrownPotionMixin", "UnbreakingEnchantmentMixin", "WallBlockMixin", "ZombieVillagerMixinAccessor" + "AbstractCauldronBlockMixin", "AgeableMobAccessor", "AreaEffectCloudMixin", "ArmorStandAccessor", "ArrowMixin", "BiomeAccessor", "DamageSourceAccessor", + "EntityAccessor", "IntegerPropertyAccessor", "LivingEntityAccessor", "LivingEntityMixin", "MobEffectInstanceAccessor", "MobEffectInstanceMixin", + "MobEntityAccessor", "PhantomMixin", "PlayerMixin", "ServerLevelAccessor", "ServerLevelMixin", "SlimeAccessor", "SuspiciousStewItemAccessor", + "SwordItemMixinAccessor", "TadpoleAccessor", "TextureSlotAccessor", "ThrownPotionMixin", "UnbreakingEnchantmentMixin", "WallBlockMixin", + "ZombieVillagerMixinAccessor" ], "client": [ "client.ClientPackListenerMixin", "client.ClientRecipeBookMixin", "client.GuiGraphicsMixin", "client.PlayerRendererMixin", "client.RecipeCollectionAccessor"