More updates to new BoneMealAPI

This commit is contained in:
Frank 2022-11-15 16:30:34 +01:00
parent 5b99e0be53
commit 5faf0ef134
18 changed files with 411 additions and 155 deletions

View file

@ -2,16 +2,12 @@ package org.betterx.bclib.mixin.common;
import org.betterx.bclib.api.v2.BonemealAPI;
import org.betterx.bclib.api.v2.levelgen.biomes.BiomeAPI;
import org.betterx.bclib.api.v3.bonemeal.BonemealSpreader;
import org.betterx.bclib.api.v3.bonemeal.EndStoneSpreader;
import org.betterx.bclib.api.v3.bonemeal.NetherrackSpreader;
import org.betterx.bclib.util.BlocksHelper;
import org.betterx.bclib.util.MHelper;
import net.minecraft.core.BlockPos;
import net.minecraft.core.BlockPos.MutableBlockPos;
import net.minecraft.core.Vec3i;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.world.InteractionResult;
import net.minecraft.world.item.BoneMealItem;
import net.minecraft.world.item.ItemStack;
@ -71,32 +67,17 @@ public class BoneMealItemMixin {
}
@Inject(method = "growCrop", at = @At("HEAD"), cancellable = true)
private static void growCrop(
private static void bcl_growCrop(
ItemStack itemStack,
Level level,
BlockPos blockPos,
CallbackInfoReturnable<Boolean> cir
) {
BlockState blockState = level.getBlockState(blockPos);
BonemealSpreader spreader = null;
if (blockState.is(Blocks.NETHERRACK)) {
spreader = NetherrackSpreader.INSTANCE;
} else if (blockState.is(Blocks.END_STONE)) {
spreader = EndStoneSpreader.INSTANCE;
} else if (blockState.getBlock() instanceof BonemealSpreader s) {
spreader = s;
}
if (spreader != null) {
if (spreader.isValidBonemealSpreadTarget(level, blockPos, blockState, level.isClientSide)) {
if (level instanceof ServerLevel) {
if (spreader.performBonemealSpread((ServerLevel) level, level.random, blockPos, blockState)) {
itemStack.shrink(1);
cir.setReturnValue(true);
}
}
}
if (org.betterx.bclib.api.v3.bonemeal.BonemealAPI
.INSTANCE
.runSpreaders(itemStack, level, blockPos)
) {
cir.setReturnValue(true);
}
}