68 linhas
2,9 KiB
Java
68 linhas
2,9 KiB
Java
package com.mangomilk.design_decor.blocks;
|
|
|
|
import com.simibubi.create.content.equipment.wrench.IWrenchable;
|
|
import net.minecraft.MethodsReturnNonnullByDefault;
|
|
import net.minecraft.core.BlockPos;
|
|
import net.minecraft.core.Direction;
|
|
import net.minecraft.world.item.context.BlockPlaceContext;
|
|
import net.minecraft.world.level.BlockGetter;
|
|
import net.minecraft.world.level.LevelAccessor;
|
|
import net.minecraft.world.level.block.Block;
|
|
import net.minecraft.world.level.block.GlassBlock;
|
|
import net.minecraft.world.level.block.SimpleWaterloggedBlock;
|
|
import net.minecraft.world.level.block.state.BlockState;
|
|
import net.minecraft.world.level.block.state.StateDefinition;
|
|
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
|
|
import net.minecraft.world.level.block.state.properties.BooleanProperty;
|
|
import net.minecraft.world.level.material.FluidState;
|
|
import net.minecraft.world.level.material.Fluids;
|
|
|
|
import javax.annotation.Nullable;
|
|
import javax.annotation.ParametersAreNonnullByDefault;
|
|
import java.util.Objects;
|
|
|
|
@SuppressWarnings({"unused","deprecation"})
|
|
@ParametersAreNonnullByDefault
|
|
@MethodsReturnNonnullByDefault
|
|
public class OrnateGrateBlock extends GlassBlock implements SimpleWaterloggedBlock, IWrenchable {
|
|
public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED;
|
|
|
|
public OrnateGrateBlock(Properties p_49795_) {
|
|
super(p_49795_.isSuffocating(OrnateGrateBlock::never).noOcclusion().isViewBlocking(OrnateGrateBlock::allow));
|
|
this.registerDefaultState(this.stateDefinition.any().setValue(WATERLOGGED, Boolean.FALSE));
|
|
}
|
|
|
|
@Override
|
|
@Nullable
|
|
public BlockState getStateForPlacement(BlockPlaceContext p_51454_) {
|
|
FluidState fluidstate = p_51454_.getLevel().getFluidState(p_51454_.getClickedPos());
|
|
boolean flag = fluidstate.getType() == Fluids.WATER;
|
|
return Objects.requireNonNull(super.getStateForPlacement(p_51454_)).setValue(WATERLOGGED, flag);
|
|
}
|
|
|
|
@Override
|
|
public BlockState updateShape(BlockState p_51461_, Direction p_51462_, BlockState p_51463_, LevelAccessor p_51464_, BlockPos p_51465_, BlockPos p_51466_) {
|
|
if (p_51461_.getValue(WATERLOGGED)) {
|
|
p_51464_.scheduleTick(p_51465_, Fluids.WATER, Fluids.WATER.getTickDelay(p_51464_));
|
|
}
|
|
|
|
return super.updateShape(p_51461_, p_51462_, p_51463_, p_51464_, p_51465_, p_51466_);
|
|
}
|
|
|
|
@Override
|
|
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> p_51468_) {
|
|
p_51468_.add(WATERLOGGED);
|
|
}
|
|
|
|
@Override
|
|
public FluidState getFluidState(BlockState p_51475_) {
|
|
return p_51475_.getValue(WATERLOGGED) ? Fluids.WATER.getSource(false) : super.getFluidState(p_51475_);
|
|
}
|
|
|
|
private static boolean never(BlockState p_235436_0_, BlockGetter p_235436_1_, BlockPos p_235436_2_) {
|
|
return false;
|
|
}
|
|
private static boolean allow(BlockState p_235436_0_, BlockGetter p_235436_1_, BlockPos p_235436_2_) {
|
|
return true;
|
|
}
|
|
}
|