@@ -0,0 +1,1803 @@
+package org.cyclops.cyclopscore.helper;%0A%0Aimport net.minecraft.block.properties.IProperty;%0Aimport net.minecraft.block.state.IBlockState;%0Aimport net.minecraftforge.common.property.IExtendedBlockState;%0Aimport net.minecraftforge.common.property.IUnlistedProperty;%0A%0Aimport javax.annotation.Nullable;%0A%0A/**%0A * Contains helper methods for various block specific things.%0A * @author rubensworks%0A */%0Apublic final class BlockHelpers %7B%0A%0A    /**%0A     * Safely get a block state property for a nullable state and value that may not have been set yet.%0A     * @param state The block state.%0A     * @param property The property to get the value for.%0A     * @param fallback The fallback value when something has failed.%0A     * @param %3CT%3E The type of value to fetch.%0A     * @return The value.%0A     */%0A    public static %3CT%3E T getSafeBlockStateProperty(@Nullable IBlockState state, IProperty property, T fallback) %7B%0A        Comparable value = state.getValue(property);%0A        if(value == null) %7B%0A            return fallback;%0A        %7D%0A        return (T) value;%0A    %7D%0A%0A    /**%0A     * Safely get an extended block state property for a nullable state and value that may not have been set yet.%0A     * @param state The block state.%0A     * @param property The property to get the value for.%0A     * @param fallback The fallback value when something has failed.%0A     * @param %3CT%3E The type of value to fetch.%0A     * @return The value.%0A     */%0A    public static %3CT%3E T getSafeBlockStateProperty(@Nullable IExtendedBlockState state, IUnlistedProperty%3CT%3E property,%0A                                                  T fallback) %7B%0A        if(state == null) %7B%0A            return fallback;%0A        %7D%0A        T value = state.getValue(property);%0A        if(value == null) %7B%0A            return fallback;%0A        %7D%0A        return value;%0A    %7D%0A%0A%7D%0A

Add BlockState property value retrieval helpers