@@ -0,0 +1,2631 @@
+package org.cyclops.cyclopscore.config.configurable;%0A%0Aimport lombok.experimental.Delegate;%0Aimport net.minecraft.block.Block;%0Aimport net.minecraft.block.BlockGlass;%0Aimport net.minecraft.block.SoundType;%0Aimport net.minecraft.block.material.Material;%0Aimport net.minecraft.block.state.BlockStateContainer;%0Aimport net.minecraft.block.state.IBlockState;%0Aimport net.minecraft.client.renderer.color.IBlockColor;%0Aimport net.minecraft.util.EnumFacing;%0Aimport net.minecraft.util.math.BlockPos;%0Aimport net.minecraft.world.IBlockAccess;%0Aimport net.minecraftforge.fml.relauncher.Side;%0Aimport net.minecraftforge.fml.relauncher.SideOnly;%0Aimport org.cyclops.cyclopscore.block.property.BlockPropertyManagerComponent;%0Aimport org.cyclops.cyclopscore.block.property.IBlockPropertyManager;%0Aimport org.cyclops.cyclopscore.config.extendedconfig.BlockConfig;%0A%0Aimport javax.annotation.Nullable;%0A%0A/**%0A * Block that extends from %7B@link BlockGlass%7D that can hold ExtendedConfigs%0A * @author rubensworks%0A *%0A */%0Apublic class ConfigurableBlockGlass extends BlockGlass implements IConfigurableBlock %7B%0A%0A    @Delegate private IBlockPropertyManager propertyManager;%0A    @Override protected BlockStateContainer createBlockState() %7B%0A        return (propertyManager = new BlockPropertyManagerComponent(this)).createDelegatedBlockState();%0A    %7D%0A%0A    protected BlockConfig eConfig = null;%0A    protected boolean hasGui = false;%0A%0A    /**%0A     * Make a new blockState instance.%0A     * @param eConfig Config for this blockState.%0A     * @param material The material.%0A     * @param ignoreSimilarity If this block should connect to all other types of glass.%0A     */%0A    public ConfigurableBlockGlass(BlockConfig eConfig, Material material, boolean ignoreSimilarity) %7B%0A        super(material, ignoreSimilarity);%0A        this.setConfig(eConfig);%0A        this.setSoundType(SoundType.GLASS);%0A        this.setUnlocalizedName(eConfig.getUnlocalizedName());%0A    %7D%0A%0A    @Override%0A    public boolean hasGui() %7B%0A        return hasGui;%0A    %7D%0A%0A    @Nullable%0A    @Override%0A    @SideOnly(Side.CLIENT)%0A    public IBlockColor getBlockColorHandler() %7B%0A        return null;%0A    %7D%0A%0A    private void setConfig(BlockConfig eConfig) %7B%0A        this.eConfig = eConfig;%0A    %7D%0A%0A    @Override%0A    public BlockConfig getConfig() %7B%0A        return eConfig;%0A    %7D%0A%0A    @Override%0A    @SideOnly(Side.CLIENT)%0A    public boolean shouldSideBeRendered(IBlockState blockState, IBlockAccess blockAccess, BlockPos pos, EnumFacing side) %7B%0A        Block block = blockAccess.getBlockState(pos.offset(side)).getBlock();%0A        return block != this && super.shouldSideBeRendered(blockState, blockAccess, pos, side);%0A    %7D%0A%7D%0A

Add ConfigurableBlockGlass