Skip to content

Instantly share code, notes, and snippets.

@grondag
Created August 13, 2019 00:05
Show Gist options
  • Save grondag/87874e4950c85f4a51a61b92a643907c to your computer and use it in GitHub Desktop.
Save grondag/87874e4950c85f4a51a61b92a643907c to your computer and use it in GitHub Desktop.
Lit column block example
final SimpleModelState defaultState = XmPrimitives.COLUMN_SQUARE.newState()
.paint(SquareColumnPrimitive.SURFACE_MAIN, XmPaint.finder()
.textureDepth(2)
.texture(0, XmTextures.BIGTEX_SANDSTONE)
.textureColor(0, 0xFF99BBAA)
.texture(1, XmTextures.BORDER_GRITTY_SINGLE_LINE)
.blendMode(1, BlockRenderLayer.TRANSLUCENT)
.textureColor(1, 0xFF709080)
.find())
.paint(SquareColumnPrimitive.SURFACE_CUT, XmPaint.finder()
.texture(0, XmTextures.BIGTEX_SANDSTONE)
.textureColor(0, 0xFF99BBAA)
.find())
.paint(SquareColumnPrimitive.SURFACE_LAMP, XmPaint.finder()
.disableAo(0, true)
.disableDiffuse(0, true)
.emissive(0, true)
.texture(0, XmTextures.WHITE)
.textureColor(0, 0xFFDDFFFF)
.find())
.apply(s -> {
SquareColumnPrimitive.setCutCount(1, s);
SquareColumnPrimitive.setCutsOnEdge(true, s);})
.releaseToImmutable();
final Block column = new PillarBlock(FabricBlockSettings.of(Material.STONE).build());
Identifier id = new Identifier(NiceBlocks.MODID, "square_column");
Registry.BLOCK.add(id, column);
Registry.ITEM.add(id, new BlockItem(column, new Item.Settings().maxCount(64).group(ItemGroup.BUILDING_BLOCKS)));
BlockTest<SimpleModelState> joinFunc = ctx -> {
final BlockState fromBlock = ctx.fromBlockState();
final BlockState toBlock = ctx.toBlockState();
return fromBlock == toBlock
&& fromBlock.contains(PillarBlock.AXIS)
&& fromBlock.get(PillarBlock.AXIS) == fromBlock.get(PillarBlock.AXIS);};
final Function<BlockState, SimpleModelStateFunction> stateFunc = bs -> SimpleModelStateFunction.builder()
.withDefaultState(SimpleModelState.AXIS_FROM_BLOCKSTATE.apply(defaultState.mutableCopy(), bs))
.withJoin(joinFunc)
.build();
XmBlockRegistry.addBlockStates(column, stateFunc);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment