CustomBlockModel.java
public class CustomBlockModel<T extends Block> extends BlockModelStandard<T> {
public CustomBlockModel(Block block) {
super(block);
}
public boolean render(Tessellator tessellator, int x, int y, int z) {
boolean flag = false;
block.setBlockBounds(0, 0, 0, 1, 1, 1);
flag = this.renderStandardBlock(tessellator, this.block, x, y, z);
this.block.setBlockBoundsBasedOnState(BlockModelStandard.renderBlocks.blockAccess, x, y, z);
return flag;
}
public void renderBlockOnInventory(Tessellator tessellator, int metadata, float brightness, float alpha) {
block.setBlockBounds(0, 0, 0, 1, 1, 1);
super.renderBlockOnInventory(tessellator, metadata, brightness, 0);
}
}
It is a regular cube 3D model for our blocks.
CustomBlock.java
public class CustomBlock extends BlockTileEntityRotatable {
public CustomBlock(String key, int id) {
super(key, id, Material.metal);
}
}
The block needs textures, which should be created in the directory /resources/your_mod_id_here/textures/block
.
Be careful with the name; it’s similar to an ID.
BlockInitializer.java
public class BlockInitializer {
public static Block custom_block;
public void Initialize() {
BlockBuilder standard_block_builder = new BlockBuilder(MOD_ID); // BlockBuilder is available from Halplibe since 7.1
// Creating blocks
BlockBuilder custom_block_builder = standard_block_builder
.setBlockModel(CustomBlockModel::new)
.setBlockSound(BlockSounds.METAL)
.setHardness(1.0F)
.setResistance(1.0F)
// Examplemod is your mod id
.setTextures("examplemod:block/custom_block")
.setTags(BlockTags.MINEABLE_BY_PICKAXE);
;
custom_block = new CustomBlock("custom_block", 12000));
custom_block_builder.build(custom_block );
}
}
ExampleMod.java
public class ExampleMod implements ModInitializer, GameStartEntrypoint, RecipeEntrypoint {
public static final String MOD_ID = "examplemod";
public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID);
@Override
public void onInitialize() {
LOGGER.info("Fishing Additions initialized. Debug: "+ isDebug);
}
@Override
public void beforeGameStart() {
new BlockInitializer().Initialize();
}
@Override
public void afterGameStart() {
}
@Override
public void onRecipesReady() {
}
@Override
public void initNamespaces() {
}
}
- Block Builder Example: https://github.com/Turnip-Labs/halplibe-examples-repo/tree/blockbuilder