Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion src/main/java/binnie/botany/ceramic/BlockCeramicBrick.java
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,16 @@ public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, i
@Override
@SideOnly(Side.CLIENT)
public int getRenderColor(int meta) {
return colorMultiplier(meta);
final BlockType type = this.getType(meta);
if (!MultipassBlockRenderer.isRendering()) {
return type.color1.getColor(false);
}

final int layer = MultipassBlockRenderer.getLayer();
if (layer == 0) return 0xffffff;
if (layer == 1) return type.color1.getColor(false);
if (layer == 2) return type.color2.getColor(false);
return 0xffffff;
}

@Override
Expand Down
8 changes: 7 additions & 1 deletion src/main/java/binnie/core/BinnieCore.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,12 @@
import net.minecraftforge.client.event.TextureStitchEvent;
import net.minecraftforge.common.MinecraftForge;

import com.gtnewhorizon.gtnhlib.config.ConfigException;
import com.gtnewhorizon.gtnhlib.config.ConfigurationManager;

import binnie.Binnie;
import binnie.core.block.MultipassBlockRenderer;
import binnie.core.config.BCConfig;
import binnie.core.block.TileEntityMetadata;
import binnie.core.craftgui.minecraft.ModuleCraftGUI;
import binnie.core.gui.BinnieCoreGUI;
Expand Down Expand Up @@ -78,7 +82,9 @@ public void preInit(FMLPreInitializationEvent event) {
}

addModule(new ModuleCraftGUI());
addModule(new ModuleStorage());
if (!BCConfig.disableCompartments) {
addModule(new ModuleStorage());
}
addModule(new ModuleItems());
if (Loader.isModLoaded("BuildCraft|Silicon")) {
addModule(new ModuleTrigger());
Expand Down
46 changes: 42 additions & 4 deletions src/main/java/binnie/core/block/MultipassBlockRenderer.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ public class MultipassBlockRenderer implements ISimpleBlockRenderingHandler {

public static MultipassBlockRenderer instance;
private static int layer = 0;
private static boolean rendering = false;

public MultipassBlockRenderer() {
MultipassBlockRenderer.instance = this;
Expand All @@ -23,30 +24,67 @@ public static int getLayer() {
return MultipassBlockRenderer.layer;
}

public static boolean isRendering() {
return MultipassBlockRenderer.rendering;
}

private static int getPassesSafe(Block block) {
try {
return ((IMultipassBlock) block).getNumberOfPasses();
} catch (Throwable t) {
return 1;
}
}

private static int getColorSafe(Block block, int meta) {
try {
if (block instanceof IMultipassBlock) {
try {
java.lang.reflect.Method m = block.getClass().getMethod("colorMultiplier", int.class);
Object out = m.invoke(block, Integer.valueOf(meta));
if (out instanceof Integer) {
return ((Integer) out).intValue();
}
} catch (Throwable ignored) {
}
}
return block.getRenderColor(meta);
} catch (Throwable t) {
return 16777215;
}
}
@Override
public void renderInventoryBlock(Block block, int meta, int modelID, RenderBlocks renderer) {
block.setBlockBoundsForItemRender();
renderer.setRenderBoundsFromBlock(block);
GL11.glTranslatef(-0.5f, -0.5f, -0.5f);

MultipassBlockRenderer.rendering = true;
MultipassBlockRenderer.layer = 0;
while (MultipassBlockRenderer.layer < ((IMultipassBlock) block).getNumberOfPasses()) {
while (MultipassBlockRenderer.layer < getPassesSafe(block)) {
renderItem(block, renderer, meta);
MultipassBlockRenderer.layer++;
}
MultipassBlockRenderer.layer = 0;
MultipassBlockRenderer.rendering = false;
}

@Override
public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId,
RenderBlocks renderer) {
boolean r = true;
MultipassBlockRenderer.rendering = true;
MultipassBlockRenderer.layer = 0;
while (MultipassBlockRenderer.layer < ((IMultipassBlock) block).getNumberOfPasses()) {
r = renderer.renderStandardBlock(block, x, y, z);
while (MultipassBlockRenderer.layer < getPassesSafe(block)) {
try {
r = renderer.renderStandardBlock(block, x, y, z);
} catch (Throwable t) {
return false;
}
MultipassBlockRenderer.layer++;
}
MultipassBlockRenderer.layer = 0;
MultipassBlockRenderer.rendering = false;
return r;
}

Expand All @@ -61,7 +99,7 @@ public int getRenderId() {
}

public void renderItem(Block block, RenderBlocks renderer, int meta) {
setColor(((IMultipassBlock) block).colorMultiplier(meta));
setColor(getColorSafe(block, meta));
Tessellator tessellator = Tessellator.instance;
tessellator.startDrawingQuads();
tessellator.setNormal(0.0f, -1.0f, 0.0f);
Expand Down
13 changes: 13 additions & 0 deletions src/main/java/binnie/core/config/BCConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package binnie.core.config;

import com.gtnewhorizon.gtnhlib.config.Config;
import binnie.core.BinnieCore;

@Config(modid = BinnieCore.CORE_MODID)
public class BCConfig {

@Config.Comment("If true, disables all compartment storage machines (no blocks/recipes will be registered).")
@Config.DefaultBoolean(false)
@Config.RequiresMcRestart
public static boolean disableCompartments;
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading