Search in sources :

Example 1 with ImmutableDecayableData

use of org.spongepowered.api.data.manipulator.immutable.block.ImmutableDecayableData in project SpongeCommon by SpongePowered.

the class MixinBlockLeaves method getStateWithData.

@Override
public Optional<BlockState> getStateWithData(IBlockState blockState, ImmutableDataManipulator<?, ?> manipulator) {
    if (manipulator instanceof ImmutableTreeData) {
        final TreeType treeType = ((ImmutableTreeData) manipulator).type().get();
        final BlockPlanks.EnumType type = TreeTypeResolver.getFor(treeType);
        if (blockState.getBlock() instanceof BlockOldLeaf) {
            if (treeType.equals(TreeTypes.OAK) || treeType.equals(TreeTypes.BIRCH) || treeType.equals(TreeTypes.SPRUCE) || treeType.equals(TreeTypes.JUNGLE)) {
                return Optional.of((BlockState) blockState.withProperty(BlockOldLeaf.VARIANT, type));
            }
        } else if (blockState.getBlock() instanceof BlockNewLeaf) {
            if (treeType.equals(TreeTypes.ACACIA) || treeType.equals(TreeTypes.DARK_OAK)) {
                return Optional.of((BlockState) blockState.withProperty(BlockNewLeaf.VARIANT, type));
            }
        }
        return Optional.empty();
    }
    if (manipulator instanceof ImmutableDecayableData) {
        final boolean decayable = ((ImmutableDecayableData) manipulator).decayable().get();
        return Optional.of((BlockState) blockState.withProperty(BlockLeaves.DECAYABLE, decayable));
    }
    return super.getStateWithData(blockState, manipulator);
}
Also used : TreeType(org.spongepowered.api.data.type.TreeType) BlockState(org.spongepowered.api.block.BlockState) IBlockState(net.minecraft.block.state.IBlockState) BlockNewLeaf(net.minecraft.block.BlockNewLeaf) ImmutableDecayableData(org.spongepowered.api.data.manipulator.immutable.block.ImmutableDecayableData) ImmutableTreeData(org.spongepowered.api.data.manipulator.immutable.block.ImmutableTreeData) BlockOldLeaf(net.minecraft.block.BlockOldLeaf) BlockPlanks(net.minecraft.block.BlockPlanks)

Aggregations

BlockNewLeaf (net.minecraft.block.BlockNewLeaf)1 BlockOldLeaf (net.minecraft.block.BlockOldLeaf)1 BlockPlanks (net.minecraft.block.BlockPlanks)1 IBlockState (net.minecraft.block.state.IBlockState)1 BlockState (org.spongepowered.api.block.BlockState)1 ImmutableDecayableData (org.spongepowered.api.data.manipulator.immutable.block.ImmutableDecayableData)1 ImmutableTreeData (org.spongepowered.api.data.manipulator.immutable.block.ImmutableTreeData)1 TreeType (org.spongepowered.api.data.type.TreeType)1