add config option to disable showing all facades in creative

This commit is contained in:
asiekierka 2015-09-26 16:40:37 +02:00
parent 6ed71b4f16
commit 9c55d79861
2 changed files with 43 additions and 8 deletions

View file

@ -197,6 +197,7 @@ public class BuildCraftTransport extends BuildCraftMod {
public static boolean facadeTreatBlacklistAsWhitelist;
public static boolean additionalWaterproofingRecipe;
public static boolean facadeForceNonLaserRecipe;
public static boolean showAllFacadesCreative;
public static BlockGenericPipe genericPipeBlock;
public static BlockFilteredBuffer filteredBufferBlock;
@ -291,7 +292,6 @@ public class BuildCraftTransport extends BuildCraftMod {
@Mod.EventHandler
public void preInit(FMLPreInitializationEvent evt) {
new BCCreativeTab("pipes");
new BCCreativeTab("facades");
if (Loader.isModLoaded("BuildCraft|Silicon")) {
new BCCreativeTab("gates");
}
@ -303,6 +303,7 @@ public class BuildCraftTransport extends BuildCraftMod {
BuildCraftCore.mainConfigManager.register("general.pipes.baseFluidRate", DefaultProps.PIPES_FLUIDS_BASE_FLOW_RATE, "What should the base flow rate of a fluid pipe be?", ConfigManager.RestartRequirement.GAME)
.setMinValue(1).setMaxValue(40);
BuildCraftCore.mainConfigManager.register("debug.printFacadeList", false, "Print a list of all registered facades.", ConfigManager.RestartRequirement.GAME);
BuildCraftCore.mainConfigManager.register("general.pipes.facadeShowAllInCreative", true, "Should all BC facades be shown in Creative/NEI, or just a few carefully chosen ones?", ConfigManager.RestartRequirement.GAME);
BuildCraftCore.mainConfigManager.register("general.pipes.slimeballWaterproofRecipe", false, "Should I enable an alternate Waterproof recipe, based on slimeballs?", ConfigManager.RestartRequirement.GAME);
BuildCraftCore.mainConfigManager.register("power.gateCostMultiplier", 1.0D, "What should be the multiplier of all gate power costs?", ConfigManager.RestartRequirement.GAME);
BuildCraftCore.mainConfigManager.register("general.pipes.facadeBlacklist", new String[]{
@ -324,6 +325,10 @@ public class BuildCraftTransport extends BuildCraftMod {
reloadConfig(ConfigManager.RestartRequirement.GAME);
if (showAllFacadesCreative) {
new BCCreativeTab("facades");
}
filteredBufferBlock = new BlockFilteredBuffer();
CoreProxy.proxy.registerBlock(filteredBufferBlock.setBlockName("filteredBufferBlock"));
@ -486,7 +491,9 @@ public class BuildCraftTransport extends BuildCraftMod {
PipeEventBus.registerGlobalHandler(new LensFilterHandler());
BCCreativeTab.get("pipes").setIcon(new ItemStack(BuildCraftTransport.pipeItemsDiamond, 1));
BCCreativeTab.get("facades").setIcon(facadeItem.getFacadeForBlock(Blocks.brick_block, 0));
if (showAllFacadesCreative) {
BCCreativeTab.get("facades").setIcon(facadeItem.getFacadeForBlock(Blocks.brick_block, 0));
}
if (Loader.isModLoaded("BuildCraft|Silicon")) {
BCCreativeTab.get("gates").setIcon(ItemGate.makeGateItem(GateMaterial.DIAMOND, GateLogic.AND));
}
@ -572,6 +579,7 @@ public class BuildCraftTransport extends BuildCraftMod {
debugPrintFacadeList = BuildCraftCore.mainConfigManager.get("debug.printFacadeList").getBoolean();
pipeFluidsBaseFlowRate = BuildCraftCore.mainConfigManager.get("general.pipes.baseFluidRate").getInt();
facadeForceNonLaserRecipe = BuildCraftCore.mainConfigManager.get("general.pipes.facadeNoLaserRecipe").getBoolean();
showAllFacadesCreative = BuildCraftCore.mainConfigManager.get("general.pipes.facadeShowAllInCreative").getBoolean();
reloadConfig(ConfigManager.RestartRequirement.WORLD);
} else if (restartType == ConfigManager.RestartRequirement.WORLD) {

View file

@ -17,6 +17,7 @@ import net.minecraft.block.Block;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
@ -33,6 +34,7 @@ import cpw.mods.fml.relauncher.SideOnly;
import net.minecraftforge.common.util.Constants;
import net.minecraftforge.common.util.ForgeDirection;
import buildcraft.BuildCraftCore;
import buildcraft.BuildCraftTransport;
import buildcraft.api.core.JavaTools;
import buildcraft.api.facades.FacadeType;
@ -48,6 +50,8 @@ import buildcraft.core.lib.items.ItemBuildCraft;
import buildcraft.core.lib.utils.StringUtils;
import buildcraft.core.proxy.CoreProxy;
import scala.collection.mutable.Builder$class;
public class ItemFacade extends ItemBuildCraft implements IFacadeItem, IPipePluggableItem {
public static class FacadeState {
public final Block block;
@ -146,8 +150,13 @@ public class ItemFacade extends ItemBuildCraft implements IFacadeItem, IPipePlug
private static final Block NULL_BLOCK = null;
private static final ItemStack NO_MATCH = new ItemStack(NULL_BLOCK, 0, 0);
private static final Block[] PREVIEW_FACADES = new Block[]{
Blocks.planks, Blocks.stonebrick, Blocks.glass
};
private static int RANDOM_FACADE_ID = -1;
public ItemFacade() {
super(BCCreativeTab.get("facades"));
super(BuildCraftTransport.showAllFacadesCreative ? BCCreativeTab.get("facades") : BCCreativeTab.get("main"));
setHasSubtypes(true);
setMaxDamage(0);
@ -216,11 +225,29 @@ public class ItemFacade extends ItemBuildCraft implements IFacadeItem, IPipePlug
@Override
@SideOnly(Side.CLIENT)
public void getSubItems(Item item, CreativeTabs par2CreativeTabs, List itemList) {
for (ItemStack stack : allFacades) {
itemList.add(stack);
}
for (ItemStack stack : allHollowFacades) {
itemList.add(stack);
if (BuildCraftTransport.showAllFacadesCreative) {
for (ItemStack stack : allFacades) {
itemList.add(stack);
}
for (ItemStack stack : allHollowFacades) {
itemList.add(stack);
}
} else {
List<ItemStack> hollowFacades = new ArrayList<ItemStack>();
for (Block b : PREVIEW_FACADES) {
if (isBlockValidForFacade(b) && !isBlockBlacklisted(b)) {
ItemStack facade = getFacadeForBlock(b, 0);
itemList.add(facade);
FacadeState state = getFacadeStates(facade)[0];
hollowFacades.add(getFacade(new FacadeState(state.block, state.metadata, state.wire, true)));
}
}
if (RANDOM_FACADE_ID < 0) {
RANDOM_FACADE_ID = BuildCraftCore.random.nextInt(allFacades.size());
}
itemList.add(allFacades.get(RANDOM_FACADE_ID));
itemList.addAll(hollowFacades);
itemList.add(allHollowFacades.get(RANDOM_FACADE_ID));
}
}