@@ -0,0 +1,2845 @@
+package org.cyclops.cyclopscore.config.configurable;%0A%0Aimport net.minecraft.block.BlockStairs;%0Aimport net.minecraft.block.state.IBlockState;%0Aimport net.minecraft.client.renderer.block.model.IBakedModel;%0Aimport net.minecraft.client.renderer.color.IBlockColor;%0Aimport net.minecraftforge.client.event.ModelBakeEvent;%0Aimport net.minecraftforge.common.MinecraftForge;%0Aimport net.minecraftforge.fml.common.eventhandler.SubscribeEvent;%0Aimport net.minecraftforge.fml.relauncher.Side;%0Aimport net.minecraftforge.fml.relauncher.SideOnly;%0Aimport org.cyclops.cyclopscore.client.model.IDynamicModelElement;%0Aimport org.cyclops.cyclopscore.config.extendedconfig.BlockConfig;%0Aimport org.cyclops.cyclopscore.config.extendedconfig.ExtendedConfig;%0Aimport org.cyclops.cyclopscore.helper.MinecraftHelpers;%0A%0Aimport javax.annotation.Nullable;%0A%0A/**%0A * Stairs block that can hold ExtendedConfigs%0A * @author rubensworks%0A *%0A */%0Apublic class ConfigurableBlockStairs extends BlockStairs implements IConfigurableBlock, IDynamicModelElement %7B%0A%0A    @SuppressWarnings(%22rawtypes%22)%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 modelState The base model of the stairs%0A     */%0A    @SuppressWarnings(%7B %22rawtypes%22 %7D)%0A    public ConfigurableBlockStairs(ExtendedConfig eConfig, IBlockState modelState) %7B%0A        super(modelState);%0A        this.setConfig(eConfig);%0A        this.setUnlocalizedName(eConfig.getUnlocalizedName());%0A        if(MinecraftHelpers.isClientSide() && hasDynamicModel()) MinecraftForge.EVENT_BUS.register(this);%0A        this.useNeighborBrightness = true;%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(@SuppressWarnings(%22rawtypes%22) ExtendedConfig eConfig) %7B%0A        this.eConfig = (BlockConfig) eConfig;%0A    %7D%0A%0A    @Override%0A    public ExtendedConfig%3C?%3E getConfig() %7B%0A        return eConfig;%0A    %7D%0A%0A    @Override%0A    public boolean hasDynamicModel() %7B%0A        return false;%0A    %7D%0A%0A    @SideOnly(Side.CLIENT)%0A    @Override%0A    public IBakedModel createDynamicModel() %7B%0A        return null;%0A    %7D%0A%0A    /**%0A     * Called for baking the model of this cable depending on its state.%0A     * @param event The bake event.%0A     */%0A    @SideOnly(Side.CLIENT)%0A    @SubscribeEvent%0A    public void onModelBakeEvent(ModelBakeEvent event)%7B%0A        if(hasDynamicModel()) %7B%0A            IBakedModel cableModel = createDynamicModel();%0A            event.getModelRegistry().putObject(eConfig.dynamicBlockVariantLocation, cableModel);%0A            event.getModelRegistry().putObject(eConfig.dynamicItemVariantLocation , cableModel);%0A        %7D%0A    %7D%0A%0A%7D%0A

Add configurable stairs block