mirror of
https://github.com/Sollace/Unicopia.git
synced 2024-11-28 15:38:00 +01:00
107 lines
4.2 KiB
Java
107 lines
4.2 KiB
Java
package com.minelittlepony.unicopia.block;
|
|
|
|
import com.minelittlepony.unicopia.EquinePredicates;
|
|
import com.minelittlepony.unicopia.item.UItems;
|
|
|
|
import net.minecraft.block.BlockState;
|
|
import net.minecraft.block.CropBlock;
|
|
import net.minecraft.block.ShapeContext;
|
|
import net.minecraft.item.ItemConvertible;
|
|
import net.minecraft.server.world.ServerWorld;
|
|
import net.minecraft.util.math.BlockPos;
|
|
import net.minecraft.util.math.random.Random;
|
|
import net.minecraft.util.shape.VoxelShape;
|
|
import net.minecraft.util.shape.VoxelShapes;
|
|
import net.minecraft.world.BlockView;
|
|
import net.minecraft.world.World;
|
|
import net.minecraft.world.WorldEvents;
|
|
|
|
public class RockCropBlock extends CropBlock {
|
|
private static final VoxelShape[] AGE_TO_SHAPE = new VoxelShape[] {
|
|
VoxelShapes.union(
|
|
createCuboidShape(7, -1, 11, 8, 0, 12),
|
|
createCuboidShape(3.5F, -1, 3.5F, 5, 0, 5),
|
|
createCuboidShape(11.5F, -1, 5.5F, 13, 0, 7)
|
|
),
|
|
VoxelShapes.union(
|
|
createCuboidShape(6, -1, 10, 9, 1, 13),
|
|
createCuboidShape(2.5F, -1, 2.5F, 6.5F, 2, 6.5F),
|
|
createCuboidShape(10.5F, -1, 4.5F, 14.5F, 2, 8.5F)
|
|
),
|
|
VoxelShapes.union(
|
|
createCuboidShape(4, -1, 9, 10, 2, 14),
|
|
createCuboidShape(1.5F, -1, 1.5F, 7.5F, 3, 7.5F),
|
|
createCuboidShape(9, -1, 3.5F, 15.5F, 3, 9.5F)
|
|
),
|
|
VoxelShapes.union(
|
|
createCuboidShape(4, -1, 9, 10, 2, 14),
|
|
createCuboidShape(1.5F, -1, 1.5F, 7.5F, 4, 7.5F),
|
|
createCuboidShape(9, -1, 3.5F, 15.5F, 3, 9.5F)
|
|
),
|
|
VoxelShapes.union(
|
|
createCuboidShape(3, -1, 8, 11, 3, 15),
|
|
createCuboidShape(0.5F, -1, 0.5F, 8.5F, 5, 8.5F),
|
|
createCuboidShape(7.5F, -1, 2, 17, 5, 10.5F)
|
|
),
|
|
VoxelShapes.union(
|
|
createCuboidShape(3, -1, 8, 11, 4, 15),
|
|
createCuboidShape(0.5F, -1, 0.5F, 8.5F, 5, 8.5F),
|
|
createCuboidShape(7.5F, -1, 2, 17, 7, 10.5F)
|
|
),
|
|
VoxelShapes.union(
|
|
createCuboidShape(3, -1, 8, 11, 4, 15),
|
|
createCuboidShape(0.5F, -1, 0.5F, 8.5F, 7, 8.5F),
|
|
createCuboidShape(7.5F, -1, 2, 17, 9, 10.5F)
|
|
),
|
|
VoxelShapes.union(
|
|
createCuboidShape(3, -1, 8, 11, 4, 15),
|
|
createCuboidShape(0.5F, -1, 0.5F, 8.5F, 9, 8.5F),
|
|
createCuboidShape(7.5F, -1, 2, 17, 13, 10.5F)
|
|
)
|
|
};
|
|
|
|
protected RockCropBlock(Settings settings) {
|
|
super(settings);
|
|
}
|
|
|
|
@Override
|
|
public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) {
|
|
return AGE_TO_SHAPE[state.get(getAgeProperty())];
|
|
}
|
|
|
|
@Override
|
|
public void randomTick(BlockState state, ServerWorld world, BlockPos pos, Random random) {
|
|
if (canGrow(world, random, pos, state)) {
|
|
super.randomTick(state, world, pos, random);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
@Deprecated
|
|
public void onStateReplaced(BlockState state, World world, BlockPos pos, BlockState newState, boolean moved) {
|
|
super.onStateReplaced(state, world, pos, newState, moved);
|
|
if (!moved && !(state.getBlock() == this && newState.getBlock() == this)) {
|
|
if (!world.isClient) {
|
|
world.syncWorldEvent(WorldEvents.BONE_MEAL_USED, pos, 0);
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean canGrow(World world, Random random, BlockPos pos, BlockState state) {
|
|
return world.getClosestPlayer(pos.getX(), pos.getY(), pos.getZ(), 20, EquinePredicates.PLAYER_CAN_USE_EARTH) != null;
|
|
}
|
|
|
|
@Override
|
|
public boolean isFertilizable(BlockView world, BlockPos pos, BlockState state, boolean isClient) {
|
|
if (world instanceof World && !canGrow((World)world, ((World)world).random, pos, state)) {
|
|
return false;
|
|
}
|
|
return super.isFertilizable(world, pos, state, isClient);
|
|
}
|
|
|
|
@Override
|
|
protected ItemConvertible getSeedsItem() {
|
|
return UItems.PEBBLES;
|
|
}
|
|
}
|