Hi, I'm trying to make a partly transparent block, but the areas that are supposed to be transparent are just black.
Block class:
package linky132.waywardcraft.common.block;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.Blocks;
import net.minecraft.block.material.Material;
import net.minecraft.entity.LivingEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.state.EnumProperty;
import net.minecraft.state.StateContainer;
import net.minecraft.state.properties.BlockStateProperties;
import net.minecraft.state.properties.RedstoneSide;
import net.minecraft.util.Direction;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.shapes.ISelectionContext;
import net.minecraft.util.math.shapes.VoxelShape;
import net.minecraft.world.IBlockReader;
import net.minecraft.world.World;
import javax.annotation.Nullable;
public class BlockSaltDust extends Block {
// Create block properties
public static final EnumProperty<RedstoneSide> NORTH = BlockStateProperties.REDSTONE_NORTH;
public static final EnumProperty<RedstoneSide> EAST = BlockStateProperties.REDSTONE_EAST;
public static final EnumProperty<RedstoneSide> SOUTH = BlockStateProperties.REDSTONE_SOUTH;
public static final EnumProperty<RedstoneSide> WEST = BlockStateProperties.REDSTONE_WEST;
// Create bounding box shape
private static final VoxelShape SHAPE = Block.makeCuboidShape(0.0d, 0.0d, 0.0d, 16.0d, 1.0d, 16.0d); // 1.0d = 1 pixel
@Override
protected void fillStateContainer(StateContainer.Builder<Block, BlockState> builder) {
builder.add(NORTH, EAST, SOUTH, WEST);
}
public BlockSaltDust(Material material) { // Block constructor
super(Properties.create(material).hardnessAndResistance(0.0f, 0.0f)); // Use material provided in the RegistryHandler class and set hardness and resistance
this.setDefaultState(this.stateContainer.getBaseState().with(NORTH, RedstoneSide.NONE).with(EAST, RedstoneSide.NONE).with(SOUTH, RedstoneSide.NONE).with(WEST, RedstoneSide.NONE)); // Set the default states for the block
}
// Apply bounding box shape
@Override
public VoxelShape getShape(BlockState state, IBlockReader worldIn, BlockPos pos, ISelectionContext context) {
return SHAPE;
}
@Override
public void onBlockPlacedBy(World worldIn, BlockPos pos, BlockState state, @Nullable LivingEntity placer, ItemStack stack) {
super.onBlockPlacedBy(worldIn, pos, state, placer, stack);
// Check if the block placed was on the north or south side. If it was, set the NORTH and SOUTH properties to SIDE.
if (worldIn.getBlockState(pos.offset(Direction.NORTH)).getBlock() != Blocks.AIR || worldIn.getBlockState(pos.offset(Direction.SOUTH)).getBlock() != Blocks.AIR) {
worldIn.setBlockState(pos, worldIn.getBlockState(pos).with(NORTH, RedstoneSide.SIDE));
worldIn.setBlockState(pos, worldIn.getBlockState(pos).with(SOUTH, RedstoneSide.SIDE));
}
// Check if the block placed was on the east or west side. If it was, set the EAST and WEST properties to SIDE.
if (worldIn.getBlockState(pos.offset(Direction.EAST)).getBlock() != Blocks.AIR || worldIn.getBlockState(pos.offset(Direction.WEST)).getBlock() != Blocks.AIR) {
worldIn.setBlockState(pos, worldIn.getBlockState(pos).with(EAST, RedstoneSide.SIDE));
worldIn.setBlockState(pos, worldIn.getBlockState(pos).with(WEST, RedstoneSide.SIDE));
}
}
@Override
public void neighborChanged(BlockState state, World worldIn, BlockPos pos, Block blockIn, BlockPos fromPos, boolean isMoving) {
super.neighborChanged(state, worldIn, pos, blockIn, fromPos, isMoving);
Block adjacentBlock = worldIn.getBlockState(fromPos).getBlock(); // Save neighboring block to variable
if (adjacentBlock == Blocks.AIR) { // Check if the neighboring block is air (i.e. if the block next to the salt was destroyed)
// Check if the block destroyed was on the north or south side. If it was, set the NORTH and SOUTH properties to NONE.
if (pos.offset(Direction.NORTH).equals(fromPos) || pos.offset(Direction.SOUTH).equals(fromPos)) {
worldIn.setBlockState(pos, worldIn.getBlockState(pos).with(NORTH, RedstoneSide.NONE));
worldIn.setBlockState(pos, worldIn.getBlockState(pos).with(SOUTH, RedstoneSide.NONE));
}
// Check if the block destroyed was on the east or west side. If it was, set the EAST and WEST properties to NONE.
if (pos.offset(Direction.EAST).equals(fromPos) || pos.offset(Direction.WEST).equals(fromPos)) {
worldIn.setBlockState(pos, worldIn.getBlockState(pos).with(EAST, RedstoneSide.NONE));
worldIn.setBlockState(pos, worldIn.getBlockState(pos).with(WEST, RedstoneSide.NONE));
}
} else { // If the neighboring block is anything but air, do this
//TODO: Change the else statement to an else if statement and exclude certain blocks that salt shouldn't connect to (e.g. fluids, gases, etc.)
// Check if the block placed was on the north or south side. If it was, set the NORTH and SOUTH properties to SIDE.
if (pos.offset(Direction.NORTH).equals(fromPos) || pos.offset(Direction.SOUTH).equals(fromPos)) {
worldIn.setBlockState(pos, worldIn.getBlockState(pos).with(NORTH, RedstoneSide.SIDE));
worldIn.setBlockState(pos, worldIn.getBlockState(pos).with(SOUTH, RedstoneSide.SIDE));
}
// Check if the block placed was on the east or west side. If it was, set the EAST and WEST properties to SIDE.
if (pos.offset(Direction.EAST).equals(fromPos) || pos.offset(Direction.WEST).equals(fromPos)) {
worldIn.setBlockState(pos, worldIn.getBlockState(pos).with(EAST, RedstoneSide.SIDE));
worldIn.setBlockState(pos, worldIn.getBlockState(pos).with(WEST, RedstoneSide.SIDE));
}
}
}
}
Block model:
{
"ambientocclusion": false,
"textures": {
"line": "waywardcraft:block/salt_dust",
"particle": "waywardcraft:block/salt_dust"
},
"elements": [
{
"from": [0, 0.25, 0],
"to": [16, 0.25, 16],
"shade": false,
"faces": {
"up": {"uv": [0, 0, 16, 16], "texture": "#line"},
"down": {"uv": [0, 0, 16, 16], "texture": "#line"}
}
}
]
}
Block texture: https://imgur.com/a/SCKJ5TJ
And here's what the block looks like when placed in the game:
I'd really appreciate any help. Thanks!