use of net.minecraft.block.BlockOldLeaf 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);
}
use of net.minecraft.block.BlockOldLeaf in project SpongeCommon by SpongePowered.
the class MixinBlockLeaves method getTreeData.
protected ImmutableTreeData getTreeData(IBlockState blockState) {
BlockPlanks.EnumType type;
if (blockState.getBlock() instanceof BlockOldLeaf) {
type = blockState.getValue(BlockOldLeaf.VARIANT);
} else if (blockState.getBlock() instanceof BlockNewLeaf) {
type = blockState.getValue(BlockNewLeaf.VARIANT);
} else {
type = BlockPlanks.EnumType.OAK;
}
final TreeType treeType = TreeTypeResolver.getFor(type);
return ImmutableDataCachingUtil.getManipulator(ImmutableSpongeTreeData.class, treeType);
}
use of net.minecraft.block.BlockOldLeaf in project SpongeCommon by SpongePowered.
the class MixinBlockLeaves method getStateWithValue.
@Override
public <E> Optional<BlockState> getStateWithValue(IBlockState blockState, Key<? extends BaseValue<E>> key, E value) {
if (key.equals(Keys.TREE_TYPE)) {
final TreeType treeType = (TreeType) value;
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 (key.equals(Keys.DECAYABLE)) {
final boolean decayable = (Boolean) value;
return Optional.of((BlockState) blockState.withProperty(BlockLeaves.DECAYABLE, decayable));
}
return super.getStateWithValue(blockState, key, value);
}
Aggregations