package com.prupe.mcpatcher.ctm;
import com.prupe.mcpatcher.Config;
import com.prupe.mcpatcher.MCLogger;
import com.prupe.mcpatcher.TessellatorUtils;
import com.prupe.mcpatcher.TexturePackChangeHandler;
import com.prupe.mcpatcher.TileLoader;
import com.prupe.mcpatcher.ctm.CTMUtils$1;
import com.prupe.mcpatcher.ctm.CTMUtils$2;
import com.prupe.mcpatcher.ctm.CTMUtils$3;
import com.prupe.mcpatcher.ctm.TileOverrideImpl$BetterGrass;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import net.minecraft.src.Block;
import net.minecraft.src.IBlockAccess;
import net.minecraft.src.Icon;
import net.minecraft.src.RenderBlocks;
import net.minecraft.src.Tessellator;
//Spout Start
import org.spoutcraft.client.config.Configuration;
//Spout End
public class CTMUtils {
private static final MCLogger logger = MCLogger.getLogger("Connected Textures", "CTM");
private static final boolean enableStandard = Config.getBoolean("Connected Textures", "standard", true);
private static final boolean enableNonStandard = Config.getBoolean("Connected Textures", "nonStandard", true);
private static final boolean enableGrass = Config.getBoolean("Connected Textures", "grass", false);
private static final int maxRecursion = Config.getInt("Connected Textures", "maxRecursion", 4);
static final int BLOCK_ID_GRASS = 2;
static final int BLOCK_ID_MYCELIUM = 110;
static final int BLOCK_ID_SNOW = 78;
static final int BLOCK_ID_CRAFTED_SNOW = 80;
private static final List<ITileOverride> allOverrides = new ArrayList();
private static final ITileOverride[][] blockOverrides = new ITileOverride[Block.blocksList.length][];
private static final Map<String, ITileOverride[]> tileOverrides = new HashMap();
private static TileLoader tileLoader;
private static TileOverrideImpl$BetterGrass betterGrass;
static boolean active;
static ITileOverride lastOverride;
public static void start() {
lastOverride = null;
active = tileLoader.setDefaultTextureMap(Tessellator.instance);
}
public static Icon getTile(RenderBlocks renderBlocks, Block block, int i, int j, int k, Icon origIcon, Tessellator tessellator) {
return getTile(renderBlocks, block, i, j, k, -1, origIcon, tessellator);
}
public static Icon getTile(RenderBlocks renderBlocks, Block block, int i, int j, int k, int face, Icon icon, Tessellator tessellator) {
lastOverride = null;
if (checkFace(face) && checkBlock(renderBlocks, block)) {
IBlockAccess blockAccess = renderBlocks.blockAccess;
CTMUtils$2 iterator = new CTMUtils$2(block, icon, blockAccess, i, j, k, face);
lastOverride = iterator.go();
if (lastOverride != null) {
icon = iterator.getIcon();
}
}
return lastOverride == null && skipDefaultRendering(block) ? null : icon;
}
public static Icon getTile(RenderBlocks renderBlocks, Block block, int face, int metadata, Tessellator tessellator) {
return getTile(renderBlocks, block, face, metadata, renderBlocks.getBlockIconFromSideAndMetadata(block, face, metadata), tessellator);
}
public static Icon getTile(RenderBlocks renderBlocks, Block block, int face, Tessellator tessellator) {
return getTile(renderBlocks, block, face, 0, renderBlocks.getBlockIconFromSide(block, face), tessellator);
}
private static Icon getTile(RenderBlocks renderBlocks, Block block, int face, int metadata, Icon icon, Tessellator tessellator) {
lastOverride = null;
if (checkFace(face) && checkRenderType(block)) {
CTMUtils$3 iterator = new CTMUtils$3(block, icon, face, metadata);
lastOverride = iterator.go();
if (lastOverride != null) {
icon = iterator.getIcon();
}
}
return icon;
}
public static void reset() {}
public static void finish() {
reset();
RenderPassAPI.instance.finish();
TessellatorUtils.clearDefaultTextureMap(Tessellator.instance);
lastOverride = null;
active = false;
}
public static boolean isBetterGrass(IBlockAccess blockAccess, Block block, int i, int j, int k, int face) {
return betterGrass != null && betterGrass.isBetterGrass(blockAccess, block, i, j, k, face);
}
private static boolean checkBlock(RenderBlocks renderBlocks, Block block) {
return active && renderBlocks.blockAccess != null;
}
private static boolean checkFace(int face) {
boolean var10000;
if (active) {
label25: {
if (face < 0) {
if (!enableNonStandard) {
break label25;
}
} else if (!enableStandard) {
break label25;
}
var10000 = true;
return var10000;
}
}
var10000 = false;
return var10000;
}
private static boolean checkRenderType(Block block) {
switch (block.getRenderType()) {
case 11:
case 21:
return false;
default:
return true;
}
}
private static boolean skipDefaultRendering(Block block) {
return RenderPassAPI.instance.skipDefaultRendering(block);
}
private static void registerOverride(ITileOverride override) {
if (override != null && !override.isDisabled()) {
boolean registered = false;
Iterator i$;
if (override.getMatchingBlocks() != null) {
for (i$ = override.getMatchingBlocks().iterator(); i$.hasNext(); registered = true) {
int name = ((Integer)i$.next()).intValue();
String blockName = "";
if (name >= 0 && name < Block.blocksList.length && Block.blocksList[name] != null) {
blockName = Block.blocksList[name].getUnlocalizedName();
if (blockName == null) {
blockName = "";
} else {
blockName = " (" + blockName.replaceFirst("^tile\\.", "") + ")";
}
}
blockOverrides[name] = registerOverride(blockOverrides[name], override, "block " + name + blockName);
}
}
if (override.getMatchingTiles() != null) {
for (i$ = override.getMatchingTiles().iterator(); i$.hasNext(); registered = true) {
String name1 = (String)i$.next();
tileOverrides.put(name1, registerOverride((ITileOverride[])tileOverrides.get(name1), override, "tile " + name1));
}
}
if (registered) {
allOverrides.add(override);
}
}
}
private static ITileOverride[] registerOverride(ITileOverride[] overrides, ITileOverride override, String description) {
logger.fine("using %s for %s", new Object[] {override, description});
if (overrides == null) {
return new ITileOverride[] {override};
} else {
ITileOverride[] newList = new ITileOverride[overrides.length + 1];
System.arraycopy(overrides, 0, newList, 0, overrides.length);
newList[overrides.length] = override;
return newList;
}
}
static List access$000() {
return allOverrides;
}
static ITileOverride[][] access$100() {
return blockOverrides;
}
static Map access$200() {
return tileOverrides;
}
static TileLoader access$302(TileLoader x0) {
tileLoader = x0;
return x0;
}
static MCLogger access$400() {
return logger;
}
static TileOverrideImpl$BetterGrass access$502(TileOverrideImpl$BetterGrass x0) {
betterGrass = x0;
return x0;
}
static boolean access$600() {
return enableStandard;
}
static boolean access$700() {
return enableNonStandard;
}
static TileLoader access$300() {
return tileLoader;
}
static void access$800(ITileOverride x0) {
registerOverride(x0);
}
static boolean access$900() {
if (Configuration.betterGrass !=0) {
return true;
} else {
return false;
}
}
static int access$1000() {
return maxRecursion;
}
static {
try {
Class.forName("com.prupe.mcpatcher.ctm.RenderPass").getMethod("finish", new Class[0]).invoke((Object)null, new Object[0]);
} catch (Throwable var1) {
;
}
TexturePackChangeHandler.register(new CTMUtils$1("Connected Textures", 3));
}
}