Blocks & Crops
Blocchi Trasparenti
Se crei un blocco come il vetro o le foglie, devi specificare che non è opaco. Altrimenti vedrai attraverso il mondo (X-Ray effect).
```java public static final Block RUBY_GLASS = new Block( FabricBlockSettings.create().nonOpaque() // Fondamentale! .strength(0.3f) .sounds(BlockSoundGroup.GLASS) ); ```
Nel client initializer (ClientModInitializer), devi anche impostare il render layer:
```java BlockRenderLayerMap.INSTANCE.putBlock(ModBlocks.RUBY_GLASS, RenderLayer.getCutout()); ```
getCutout(): Per blocchi con parti completamente trasparenti (vetro, erba).getTranslucent(): Per blocchi semitrasparenti (ghiaccio, acqua colorata).
Coltivazioni (Crops)
Le coltivazioni estendono CropBlock.
Hai bisogno di un seme (Item) che pianta il blocco.
```java public class TomatoCropBlock extends CropBlock { public TomatoCropBlock(Settings settings) { super(settings); }
@Override
protected ItemConvertible getSeedsItem() {
return ModItems.TOMATO_SEEDS;
}
} ```
Registrazione:
```java public static final Block TOMATO_CROP = new TomatoCropBlock( FabricBlockSettings.create().noCollision().ticksRandomly().breakInstantly() ); ```
Blocchi Orientabili (Directional)
Se vuoi che il blocco abbia una faccia frontale (come la fornace):
- Estendi
Block. - Aggiungi
Properties.HORIZONTAL_FACINGalStateManager.
```java public class CustomFurnaceBlock extends Block { public static final DirectionProperty FACING = Properties.HORIZONTAL_FACING;
public CustomFurnaceBlock(Settings settings) {
super(settings);
setDefaultState(getDefaultState().with(FACING, Direction.NORTH));
}
@Override
protected void appendProperties(StateManager.Builder<Block, BlockState> builder) {
builder.add(FACING);
}
@Override // Ruota il blocco quando piazzato
public BlockState getPlacementState(ItemPlacementContext ctx) {
return this.getDefaultState().with(FACING, ctx.getHorizontalPlayerFacing().getOpposite());
}
} ```