Skip to content

Commit

Permalink
Refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
octarine-noise committed Mar 16, 2015
1 parent caa0b85 commit ebd1133
Show file tree
Hide file tree
Showing 44 changed files with 165 additions and 119 deletions.
24 changes: 14 additions & 10 deletions src/main/java/mods/betterfoliage/client/BetterFoliageClient.java
Expand Up @@ -3,6 +3,10 @@
import java.util.Map;

import mods.betterfoliage.BetterFoliage;
import mods.betterfoliage.client.integration.OptifineIntegration;
import mods.betterfoliage.client.integration.ShadersModIntegration;
import mods.betterfoliage.client.integration.TerraFirmaCraftIntegration;
import mods.betterfoliage.client.misc.WindTracker;
import mods.betterfoliage.client.render.IRenderBlockDecorator;
import mods.betterfoliage.client.render.impl.EntityFXFallingLeaves;
import mods.betterfoliage.client.render.impl.EntityFXRisingSoul;
Expand All @@ -18,17 +22,14 @@
import mods.betterfoliage.client.render.impl.RenderBlockReed;
import mods.betterfoliage.client.render.impl.RenderBlockDirtWithGrassSide;
import mods.betterfoliage.client.render.impl.RenderBlockDirtWithGrassTop;
import mods.betterfoliage.client.resource.GrassTextures;
import mods.betterfoliage.client.resource.LeafGenerator;
import mods.betterfoliage.client.resource.LeafParticleTextures;
import mods.betterfoliage.client.resource.LeafTextureEnumerator;
import mods.betterfoliage.client.resource.ReedGenerator;
import mods.betterfoliage.client.resource.ShortGrassGenerator;
import mods.betterfoliage.client.resource.SoulParticleTextures;
import mods.betterfoliage.client.texture.GrassTextures;
import mods.betterfoliage.client.texture.LeafParticleTextures;
import mods.betterfoliage.client.texture.LeafTextureEnumerator;
import mods.betterfoliage.client.texture.SoulParticleTextures;
import mods.betterfoliage.client.texture.generator.LeafGenerator;
import mods.betterfoliage.client.texture.generator.ReedGenerator;
import mods.betterfoliage.client.texture.generator.ShortGrassGenerator;
import mods.betterfoliage.common.config.Config;
import mods.betterfoliage.common.integration.OptifineIntegration;
import mods.betterfoliage.common.integration.ShadersModIntegration;
import mods.betterfoliage.common.integration.TerraFirmaCraftIntegration;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
Expand All @@ -43,6 +44,9 @@
import cpw.mods.fml.client.registry.RenderingRegistry;
import cpw.mods.fml.common.FMLCommonHandler;

/** Client proxy class. Contains initialization and ASM-ed call hooks.
* @author octarine-noise
*/
public class BetterFoliageClient {

public static ResourceLocation missingTexture = new ResourceLocation("betterfoliage", "textures/blocks/missing_leaf.png");
Expand Down
Expand Up @@ -2,7 +2,7 @@

import java.util.List;

import mods.betterfoliage.common.util.BiomeUtils;
import mods.betterfoliage.client.util.BiomeUtils;
import net.minecraft.world.biome.BiomeGenBase;

import com.google.common.collect.Collections2;
Expand Down
@@ -1,6 +1,6 @@
package mods.betterfoliage.client.gui;

import mods.betterfoliage.common.util.RenderUtils;
import mods.betterfoliage.client.util.RenderUtils;
import net.minecraft.client.resources.I18n;
import net.minecraft.util.EnumChatFormatting;
import cpw.mods.fml.client.config.GuiConfig;
Expand Down
Expand Up @@ -4,7 +4,7 @@
import java.util.List;
import java.util.Set;

import mods.betterfoliage.common.util.RenderUtils;
import mods.betterfoliage.client.util.RenderUtils;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.resources.I18n;
import net.minecraft.util.EnumChatFormatting;
Expand Down
@@ -0,0 +1,16 @@
package mods.betterfoliage.client.integration;

import mods.betterfoliage.loader.IResolvable;

public abstract class AbstractModIntegration {

protected static boolean isSomeAvailable(Iterable<IResolvable<?>> elements) {
for (IResolvable<?> element : elements) if (element.resolve() != null) return true;
return false;
}

protected static boolean isAllAvailable(Iterable<IResolvable<?>> elements) {
for (IResolvable<?> element : elements) if (element.resolve() == null) return false;
return true;
}
}
@@ -1,33 +1,30 @@
package mods.betterfoliage.common.integration;
package mods.betterfoliage.client.integration;

import java.util.Collection;

import mods.betterfoliage.BetterFoliage;
import mods.betterfoliage.loader.IResolvable;
import mods.betterfoliage.loader.impl.CodeRefs;
import net.minecraft.block.Block;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;

import com.google.common.collect.Sets;

public class OptifineIntegration {
/** Helper methods for dealing with Optifine.
* @author octarine-noise
*/
public class OptifineIntegration extends AbstractModIntegration {

public static boolean isPresent = false;

/** Hide constructor */
private OptifineIntegration() {}

public static void init() {
boolean some = false, all = true;
for (IResolvable<?> element : CodeRefs.optifineCTF) {
if (element.resolve() == null) {
all = false;
} else {
some = true;
}
}
if (all) {
if (isAllAvailable(CodeRefs.optifineCTF)) {
BetterFoliage.log.info("Found Optifine, using CTM support");
isPresent = true;
} else if (some) {
} else if (isSomeAvailable(CodeRefs.optifineCTF)) {
BetterFoliage.log.info("Found Optifine, but not all needed elements (wrong version?)");
}
}
Expand Down
@@ -1,26 +1,23 @@
package mods.betterfoliage.common.integration;

import java.lang.reflect.Field;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
package mods.betterfoliage.client.integration;

import mods.betterfoliage.BetterFoliage;
import mods.betterfoliage.common.config.Config;
import mods.betterfoliage.loader.impl.CodeRefs;
import net.minecraft.block.Block;
import net.minecraft.init.Blocks;
import net.minecraft.util.ResourceLocation;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

/** Call hooks and helper methods for dealing with Shaders Mod.
* @author octarine-noise
*/
@SideOnly(Side.CLIENT)
public class ShadersModIntegration {
public class ShadersModIntegration extends AbstractModIntegration {

private static boolean hasShadersMod = false;
private static boolean isAvailable = false;
private static int tallGrassEntityData;
private static int leavesEntityData;
private static Field shadersEntityData;
private static Field shadersEntityDataIndex;

/** Hide constructor */
private ShadersModIntegration() {}
Expand All @@ -29,26 +26,23 @@ public static void init() {
tallGrassEntityData = Block.blockRegistry.getIDForObject(Blocks.tallgrass) & 0xFFFF | Blocks.tallgrass.getRenderType() << 16;
leavesEntityData = Block.blockRegistry.getIDForObject(Blocks.leaves) & 0xFFFF | Blocks.leaves.getRenderType() << 16;

try {
Class<?> classShaders = Class.forName("shadersmodcore.client.Shaders");
shadersEntityData = classShaders.getDeclaredField("entityData");
shadersEntityDataIndex = classShaders.getDeclaredField("entityDataIndex");
hasShadersMod = true;
} catch(Exception e) {
if (isAllAvailable(CodeRefs.shaders)) {
isAvailable = true;
BetterFoliage.log.info("Found Shaders Mod");
}
}

/** Signal start of grass-type quads
*/
public static void startGrassQuads() {
if (!hasShadersMod) return;
if (!isAvailable) return;
setShadersEntityData(tallGrassEntityData);
}

/** Signal start of leaf-type quads
*/
public static void startLeavesQuads() {
if (!hasShadersMod) return;
if (!isAvailable) return;
setShadersEntityData(leavesEntityData);
}

Expand All @@ -58,8 +52,8 @@ public static void startLeavesQuads() {
*/
private static void setShadersEntityData(int data) {
try {
int[] entityData = (int[]) shadersEntityData.get(null);
int entityDataIndex = shadersEntityDataIndex.getInt(null);
int[] entityData = CodeRefs.fShadersEntityData.getStaticField();
int entityDataIndex = CodeRefs.fShadersEntityDataIndex.getStaticField();
entityData[(entityDataIndex * 2)] = data;
} catch (Exception e) {
}
Expand Down
@@ -1,7 +1,7 @@
package mods.betterfoliage.common.integration;
package mods.betterfoliage.client.integration;

import mods.betterfoliage.BetterFoliage;
import mods.betterfoliage.client.BlockMatcher;
import mods.betterfoliage.client.misc.BlockMatcher;
import mods.betterfoliage.common.config.Config;
import net.minecraft.block.Block;
import net.minecraftforge.common.MinecraftForge;
Expand All @@ -13,7 +13,7 @@
* @author octarine-noise
*/
@SideOnly(Side.CLIENT)
public class TerraFirmaCraftIntegration {
public class TerraFirmaCraftIntegration extends AbstractModIntegration {

public static boolean isTFCLoaded = false;

Expand Down
@@ -1,10 +1,10 @@
package mods.betterfoliage.client;
package mods.betterfoliage.client.misc;

import java.util.Collection;
import java.util.Iterator;
import java.util.Set;

import mods.betterfoliage.common.util.ResourceUtils;
import mods.betterfoliage.client.util.ResourceUtils;
import net.minecraft.block.Block;
import net.minecraft.client.multiplayer.WorldClient;
import net.minecraft.util.ResourceLocation;
Expand Down
@@ -1,4 +1,4 @@
package mods.betterfoliage.common.util;
package mods.betterfoliage.client.misc;

import net.minecraftforge.common.util.ForgeDirection;

Expand Down
@@ -1,9 +1,9 @@
package mods.betterfoliage.client;
package mods.betterfoliage.client.misc;

import java.util.List;
import java.util.Map;

import mods.betterfoliage.common.util.ResourceUtils;
import mods.betterfoliage.client.util.ResourceUtils;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.util.IIcon;
import net.minecraft.util.ResourceLocation;
Expand Down
@@ -1,4 +1,4 @@
package mods.betterfoliage.client;
package mods.betterfoliage.client.misc;

import java.util.Random;

Expand Down
@@ -1,6 +1,6 @@
package mods.betterfoliage.client.render;

import mods.betterfoliage.common.util.ResourceUtils;
import mods.betterfoliage.client.util.ResourceUtils;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.util.IIcon;
import net.minecraft.util.ResourceLocation;
Expand Down
@@ -1,4 +1,4 @@
package mods.betterfoliage.common.util;
package mods.betterfoliage.client.render;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
Expand Down
Expand Up @@ -6,8 +6,8 @@
import java.util.List;

import mods.betterfoliage.BetterFoliage;
import mods.betterfoliage.common.util.Double3;
import mods.betterfoliage.common.util.RenderUtils;
import mods.betterfoliage.client.misc.Double3;
import mods.betterfoliage.client.util.RenderUtils;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.RenderBlocks;
Expand Down
Expand Up @@ -5,8 +5,8 @@
import org.lwjgl.opengl.GL11;

import mods.betterfoliage.client.BetterFoliageClient;
import mods.betterfoliage.client.misc.Double3;
import mods.betterfoliage.common.config.Config;
import mods.betterfoliage.common.util.Double3;
import net.minecraft.block.Block;
import net.minecraft.client.particle.EntityFX;
import net.minecraft.client.renderer.Tessellator;
Expand Down
Expand Up @@ -4,8 +4,8 @@
import java.util.Iterator;

import mods.betterfoliage.client.BetterFoliageClient;
import mods.betterfoliage.client.misc.Double3;
import mods.betterfoliage.common.config.Config;
import mods.betterfoliage.common.util.Double3;
import net.minecraft.client.particle.EntityFX;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.util.IIcon;
Expand Down
@@ -1,11 +1,11 @@
package mods.betterfoliage.client.render.impl;

import mods.betterfoliage.BetterFoliage;
import mods.betterfoliage.client.misc.Double3;
import mods.betterfoliage.client.render.FakeRenderBlockAOBase;
import mods.betterfoliage.client.render.IRenderBlockDecorator;
import mods.betterfoliage.client.render.IconSet;
import mods.betterfoliage.common.config.Config;
import mods.betterfoliage.common.util.Double3;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.RenderBlocks;
Expand Down
Expand Up @@ -3,11 +3,11 @@
import java.util.Random;

import mods.betterfoliage.BetterFoliage;
import mods.betterfoliage.client.misc.Double3;
import mods.betterfoliage.client.render.IRenderBlockDecorator;
import mods.betterfoliage.client.render.IconSet;
import mods.betterfoliage.client.render.RenderBlockAOBase;
import mods.betterfoliage.common.config.Config;
import mods.betterfoliage.common.util.Double3;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.RenderBlocks;
Expand Down
Expand Up @@ -2,9 +2,9 @@

import mods.betterfoliage.client.render.FakeRenderBlockAOBase;
import mods.betterfoliage.client.render.IRenderBlockDecorator;
import mods.betterfoliage.client.render.OffsetBlockAccess;
import mods.betterfoliage.client.util.RenderUtils;
import mods.betterfoliage.common.config.Config;
import mods.betterfoliage.common.util.OffsetBlockAccess;
import mods.betterfoliage.common.util.RenderUtils;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.RenderBlocks;
Expand Down
Expand Up @@ -2,9 +2,9 @@

import mods.betterfoliage.client.render.FakeRenderBlockAOBase;
import mods.betterfoliage.client.render.IRenderBlockDecorator;
import mods.betterfoliage.client.render.OffsetBlockAccess;
import mods.betterfoliage.client.util.RenderUtils;
import mods.betterfoliage.common.config.Config;
import mods.betterfoliage.common.util.OffsetBlockAccess;
import mods.betterfoliage.common.util.RenderUtils;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.world.IBlockAccess;
Expand Down
Expand Up @@ -2,14 +2,14 @@

import mods.betterfoliage.BetterFoliage;
import mods.betterfoliage.client.BetterFoliageClient;
import mods.betterfoliage.client.integration.ShadersModIntegration;
import mods.betterfoliage.client.integration.TerraFirmaCraftIntegration;
import mods.betterfoliage.client.misc.Double3;
import mods.betterfoliage.client.render.IRenderBlockDecorator;
import mods.betterfoliage.client.render.IconSet;
import mods.betterfoliage.client.render.RenderBlockAOBase;
import mods.betterfoliage.client.util.RenderUtils;
import mods.betterfoliage.common.config.Config;
import mods.betterfoliage.common.integration.ShadersModIntegration;
import mods.betterfoliage.common.integration.TerraFirmaCraftIntegration;
import mods.betterfoliage.common.util.Double3;
import mods.betterfoliage.common.util.RenderUtils;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.RenderBlocks;
Expand Down Expand Up @@ -58,7 +58,7 @@ public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block b
// set colors and textures
grassTopIcon = RenderUtils.getIcon(blockAccess, block, x, y, z, ForgeDirection.UP);
blockColor = block.colorMultiplier(blockAccess, x, y, z);
Integer avgColor = BetterFoliageClient.grassTextures.avgColors.get(grassTopIcon);
Integer avgColor = BetterFoliageClient.grassTextures.iconColors.get(grassTopIcon);
boolean useTextureColor = (avgColor != null);

renderWorldBlockBase(2, world, x, y, z, block, modelId, renderer);
Expand Down

0 comments on commit ebd1133

Please sign in to comment.