public SymmetricFamily(BlockFamilyDefinition definition, BlockBuilderHelper blockBuilder) { super(definition, blockBuilder); block = blockBuilder.constructSimpleBlock(definition, new BlockUri(definition.getUrn()), this); }
public HorizontalFamily(BlockFamilyDefinition definition, BlockBuilderHelper blockBuilder) { super(definition, blockBuilder); BlockUri uri = new BlockUri(definition.getUrn()); for (Rotation rot : Rotation.horizontalRotations()) { Side side = rot.rotate(Side.FRONT); Block block = blockBuilder.constructTransformedBlock(definition, side.toString().toLowerCase(Locale.ENGLISH), rot, new BlockUri(uri, new Name(side.name())), this); if (block == null) { throw new IllegalArgumentException("Missing block for side: " + side.toString()); } blocks.put(side, block); } }
public FreeformFamily(BlockFamilyDefinition definition, BlockShape shape, BlockBuilderHelper blockBuilder) { super(definition, shape, blockBuilder); BlockUri uri; if (CUBE_SHAPE_URN.equals(shape.getUrn())) { uri = new BlockUri(definition.getUrn()); } else { uri = new BlockUri(definition.getUrn(), shape.getUrn()); } if (shape.isCollisionYawSymmetric()) { archetypeBlock = blockBuilder.constructSimpleBlock(definition, shape, uri, this); } else { for (Rotation rot : Rotation.horizontalRotations()) { Side side = rot.rotate(Side.FRONT); Block block = blockBuilder.constructTransformedBlock(definition, shape, side.toString().toLowerCase(Locale.ENGLISH), rot, new BlockUri(uri, new Name(side.name())), this); if (block == null) { throw new IllegalArgumentException("Missing block for side: " + side.toString()); } blocks.put(side, block); } } setBlockUri(uri); }
Block block = blockBuilder.constructSimpleBlock(definition, "top", new BlockUri(definition.getUrn(), new Name(Side.TOP.name())), this); block.setRotation(Rotation.rotate(Pitch.CLOCKWISE_270)); blockMap.put(Side.TOP, block); for (Rotation rot : Rotation.horizontalRotations()) { Side side = rot.rotate(Side.FRONT); blockMap.put(side, blockBuilder.constructTransformedBlock(definition, side.toString().toLowerCase(Locale.ENGLISH), rot, new BlockUri(definition.getUrn(), new Name(side.name())), this)); Block block = blockBuilder.constructSimpleBlock(definition, "bottom", new BlockUri(definition.getUrn(), new Name(Side.BOTTOM.name())), this); block.setRotation(Rotation.rotate(Pitch.CLOCKWISE_90)); blockMap.put(Side.BOTTOM, block);
/** * * @param root The root block URI of the family * @param definition The definition of the block family as passed down from the engine * @param blockBuilder The block builder to make the blocks in the family * @param name The name of the section of the block to be registered, ex: "no_connections" * @param sides A byte representing the sides which should be connected for this block * @param rotations All of the ways the block should be rotated * @return All of the rotations possible for the block with the given sides */ public Set<Block> registerBlock(BlockUri root, BlockFamilyDefinition definition, BlockBuilderHelper blockBuilder, String name, byte sides, Iterable<Rotation> rotations) { Set<Block> result = Sets.newLinkedHashSet(); for (Rotation rotation: rotations) { byte sideBits = 0; for (Side side : SideBitFlag.getSides(sides)) { sideBits += SideBitFlag.getSide(rotation.rotate(side)); } Block block = blockBuilder.constructTransformedBlock(definition, name, rotation, new BlockUri(root, new Name(String.valueOf(sideBits))), this); blocks.put(sideBits, block); result.add(block); } return result; }
public SymmetricFamily(BlockFamilyDefinition definition, BlockShape shape, BlockBuilderHelper blockBuilder) { super(definition, shape, blockBuilder); BlockUri uri; if (CUBE_SHAPE_URN.equals(shape.getUrn())) { uri = new BlockUri(definition.getUrn()); } else { uri = new BlockUri(definition.getUrn(), shape.getUrn()); } block = blockBuilder.constructSimpleBlock(definition, shape, uri, this); setBlockUri(uri); }
/** * * @param root The root block URI of the family * @param definition The definition of the block family as passed down from the engine * @param blockBuilder The block builder to make the blocks in the family * @param sides A byte representing the sides which should be connected for this block * @param rotations All of the ways the block should be rotated * @return All of the rotations possible for the block with the given sides */ public Set<Block> registerBlock(BlockUri root, BlockFamilyDefinition definition, final BlockBuilderHelper blockBuilder, byte sides, Iterable<Rotation> rotations) { Set<Block> result = Sets.newLinkedHashSet(); for (Rotation rotation: rotations) { byte sideBits = 0; for (Side side : SideBitFlag.getSides(sides)) { sideBits += SideBitFlag.getSide(rotation.rotate(side)); } BlockUri uri = new BlockUri(root, new Name(String.valueOf(sideBits))); Block block = blockBuilder.constructTransformedBlock(definition, rotation, uri, this); block.setUri(uri); blocks.put(sideBits, block); result.add(block); } return result; }
public HorizontalFamily(BlockFamilyDefinition definition, BlockShape shape, BlockBuilderHelper blockBuilder) { super(definition, shape, blockBuilder); BlockUri uri; if (CUBE_SHAPE_URN.equals(shape.getUrn())) { uri = new BlockUri(definition.getUrn()); } else { uri = new BlockUri(definition.getUrn(), shape.getUrn()); } for (Rotation rot : Rotation.horizontalRotations()) { Side side = rot.rotate(Side.FRONT); Block block = blockBuilder.constructTransformedBlock(definition, shape, side.toString().toLowerCase(Locale.ENGLISH), rot, new BlockUri(uri, new Name(side.name())), this); if (block == null) { throw new IllegalArgumentException("Missing block for side: " + side.toString()); } blocks.put(side, block); } setBlockUri(uri); }