diff --git a/src/main/java/gregtech/api/items/GT_EnergyArmor_Item.java b/src/main/java/gregtech/api/items/GT_EnergyArmor_Item.java
index 34b259b1..bd54f304 100644
--- a/src/main/java/gregtech/api/items/GT_EnergyArmor_Item.java
+++ b/src/main/java/gregtech/api/items/GT_EnergyArmor_Item.java
@@ -1,7 +1,7 @@
package gregtech.api.items;
import gregtech.api.interfaces.IIconContainer;
-import gregtech.common.render.newitems.IItemIconContainerProvider;
+import gregtech.common.render.items.IItemIconContainerProvider;
import gregtech.common.render.IIconRegister;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.renderer.texture.TextureMap;
diff --git a/src/main/java/gregtech/api/items/GT_Generic_Block.java b/src/main/java/gregtech/api/items/GT_Generic_Block.java
index a1401f70..3cae415e 100644
--- a/src/main/java/gregtech/api/items/GT_Generic_Block.java
+++ b/src/main/java/gregtech/api/items/GT_Generic_Block.java
@@ -1,7 +1,6 @@
package gregtech.api.items;
import gregtech.api.util.GT_LanguageManager;
-import gregtech.common.blocks.GT_Block_Machines;
import gregtech.common.blocks.UnlistedBlockPosProperty;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
@@ -12,9 +11,6 @@ import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
-import net.minecraft.util.BlockRenderLayer;
-import net.minecraft.util.EnumBlockRenderType;
-import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.RayTraceResult;
import net.minecraft.world.IBlockAccess;
@@ -23,8 +19,6 @@ import net.minecraftforge.common.property.ExtendedBlockState;
import net.minecraftforge.common.property.IExtendedBlockState;
import net.minecraftforge.common.property.IUnlistedProperty;
import net.minecraftforge.fml.common.registry.GameRegistry;
-import net.minecraftforge.fml.relauncher.Side;
-import net.minecraftforge.fml.relauncher.SideOnly;
import static gregtech.api.enums.GT_Values.W;
@@ -39,12 +33,15 @@ public abstract class GT_Generic_Block extends Block {
super(aMaterial);
setUnlocalizedName(mUnlocalizedName = aName);
GameRegistry.registerBlock(this, aItemClass, getUnlocalizedName());
- GT_LanguageManager.addStringLocalization(getUnlocalizedName() + "." + W + ".name", "Any Sub Block of this one");
+ GT_LanguageManager.addStringLocalization(getUnlocalizedName() + "." + W + ".name", "Unnamed");
}
@Override
protected BlockStateContainer createBlockState() {
- return new ExtendedBlockState.Builder(this).add(METADATA).add(BLOCK_POS).build();
+ return new ExtendedBlockState.Builder(this)
+ .add(METADATA)
+ .add(BLOCK_POS)
+ .build();
}
@Override
@@ -62,38 +59,14 @@ public abstract class GT_Generic_Block extends Block {
return ((IExtendedBlockState) state).withProperty(BLOCK_POS, pos);
}
- @Override
- public IBlockState getActualState(IBlockState state, IBlockAccess worldIn, BlockPos pos) {
- return getExtendedState(state, worldIn, pos);
- }
-
@Override
public ItemStack getPickBlock(IBlockState state, RayTraceResult target, World world, BlockPos pos, EntityPlayer player) {
return new ItemStack(this, 1, state.getValue(METADATA));
}
- @Override
- public boolean isOpaqueCube(IBlockState state) {
- return false;
- }
-
- @Override
- @SideOnly(Side.CLIENT)
- public BlockRenderLayer getBlockLayer() {
- return BlockRenderLayer.CUTOUT;
- }
-
- @Override
- public boolean shouldSideBeRendered(IBlockState blockState, IBlockAccess blockAccess, BlockPos pos, EnumFacing side) {
- if(this instanceof GT_Block_Machines) {
- return true; //Machines and wires should always render all sides;
- }
- //for anything else fallback to default implementation;
- return super.shouldSideBeRendered(blockState, blockAccess, pos, side);
- }
-
@Override
public String getUnlocalizedName() {
return mUnlocalizedName;
}
+
}
\ No newline at end of file
diff --git a/src/main/java/gregtech/api/items/GT_Generic_Item.java b/src/main/java/gregtech/api/items/GT_Generic_Item.java
index 39a08467..77b260c8 100644
--- a/src/main/java/gregtech/api/items/GT_Generic_Item.java
+++ b/src/main/java/gregtech/api/items/GT_Generic_Item.java
@@ -8,9 +8,9 @@ import gregtech.api.util.GT_Config;
import gregtech.api.util.GT_LanguageManager;
import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_Utility;
-import gregtech.common.render.newitems.IItemIconContainerProvider;
+import gregtech.common.render.items.IItemIconContainerProvider;
import gregtech.common.render.IIconRegister;
-import gregtech.common.render.newitems.IItemIconProvider;
+import gregtech.common.render.items.IItemIconProvider;
import net.minecraft.block.BlockDispenser;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
@@ -26,10 +26,8 @@ import net.minecraft.entity.projectile.EntityArrow;
import net.minecraft.init.Blocks;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
-import net.minecraft.potion.Potion;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.ResourceLocation;
-import net.minecraft.util.text.translation.I18n;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.FMLCommonHandler;
import net.minecraftforge.fml.common.registry.FMLControlledNamespacedRegistry;
diff --git a/src/main/java/gregtech/api/items/GT_MetaGenerated_Item.java b/src/main/java/gregtech/api/items/GT_MetaGenerated_Item.java
index c28c86cf..96a01d86 100644
--- a/src/main/java/gregtech/api/items/GT_MetaGenerated_Item.java
+++ b/src/main/java/gregtech/api/items/GT_MetaGenerated_Item.java
@@ -1,8 +1,8 @@
package gregtech.api.items;
-import gregtech.common.render.IColorMultiplier;
+import gregtech.common.render.IItemColorMultiplier;
import gregtech.common.render.IIconRegister;
-import gregtech.common.render.newitems.IItemIconProvider;
+import gregtech.common.render.items.IItemIconProvider;
import ic2.api.item.IElectricItem;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.renderer.texture.TextureMap;
@@ -10,7 +10,6 @@ import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumHand;
import net.minecraft.util.ResourceLocation;
-import net.minecraftforge.fml.common.FMLCommonHandler;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import gregtech.api.GregTech_API;
@@ -51,7 +50,7 @@ import static gregtech.api.enums.GT_Values.*;
*
* These Items can also have special RightClick abilities, electric Charge or even be set to become a Food alike Item.
*/
-public abstract class GT_MetaGenerated_Item extends GT_MetaBase_Item implements IElectricItem, IItemIconProvider, IIconRegister, IColorMultiplier {
+public abstract class GT_MetaGenerated_Item extends GT_MetaBase_Item implements IElectricItem, IItemIconProvider, IIconRegister, IItemColorMultiplier {
/**
* All instances of this Item Class are listed here.
* This gets used to register the Renderer to all Items of this Type, if useStandardMetaItemRenderer() returns true.
diff --git a/src/main/java/gregtech/api/items/GT_MetaGenerated_Tool.java b/src/main/java/gregtech/api/items/GT_MetaGenerated_Tool.java
index 04637677..572005f1 100644
--- a/src/main/java/gregtech/api/items/GT_MetaGenerated_Tool.java
+++ b/src/main/java/gregtech/api/items/GT_MetaGenerated_Tool.java
@@ -13,8 +13,8 @@ import gregtech.api.util.GT_LanguageManager;
import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_OreDictUnificator;
import gregtech.api.util.GT_Utility;
-import gregtech.common.render.IColorMultiplier;
-import gregtech.common.render.newitems.IItemIconProvider;
+import gregtech.common.render.IItemColorMultiplier;
+import gregtech.common.render.items.IItemIconProvider;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.renderer.texture.TextureMap;
@@ -64,7 +64,7 @@ import java.util.Random;
//@Optional.Interface(iface = "buildcraft.api.tools.IToolWrench", modid = "BuildCraft"),
//@Optional.Interface(iface = "crazypants.enderio.api.tool.ITool", modid = "EnderIO")
})
-public abstract class GT_MetaGenerated_Tool extends GT_MetaBase_Item implements IDamagableItem, IToolGrafter, IItemIconProvider, IColorMultiplier {//, IToolGrafter, IToolCrowbar, IToolWrench, ITool {
+public abstract class GT_MetaGenerated_Tool extends GT_MetaBase_Item implements IDamagableItem, IToolGrafter, IItemIconProvider, IItemColorMultiplier {//, IToolGrafter, IToolCrowbar, IToolWrench, ITool {
/**
* All instances of this Item Class are listed here.
* This gets used to register the Renderer to all Items of this Type, if useStandardMetaItemRenderer() returns true.
diff --git a/src/main/java/gregtech/api/objects/GT_CopiedBlockTexture.java b/src/main/java/gregtech/api/objects/GT_CopiedBlockTexture.java
index 128eed75..7ff90371 100644
--- a/src/main/java/gregtech/api/objects/GT_CopiedBlockTexture.java
+++ b/src/main/java/gregtech/api/objects/GT_CopiedBlockTexture.java
@@ -2,12 +2,11 @@ package gregtech.api.objects;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.ITexture;
-import gregtech.common.render.newblocks.IBlockIconProvider;
-import gregtech.common.render.newblocks.RenderUtil;
+import gregtech.common.render.blocks.IBlockIconProvider;
+import gregtech.common.render.RenderUtil;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.block.model.BakedQuad;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
-import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;
import net.minecraftforge.fml.client.FMLClientHandler;
@@ -58,12 +57,14 @@ public class GT_CopiedBlockTexture implements ITexture {
@Override
@SideOnly(Side.CLIENT)
public List getQuads(Block aBlock, BlockPos blockPos, EnumFacing side, float offset) {
- TextureAtlasSprite sprite = getSide(mBlock, mMeta, EnumFacing.VALUES[mSide]);
- if(sprite != null) {
- BakedQuad quad = RenderUtil.renderSide(DefaultVertexFormats.BLOCK, sprite, side, -1, offset, mRGBa, false);
- return Collections.singletonList(quad);
+ if(side != null) {
+ TextureAtlasSprite sprite = getSide(mBlock, mMeta, EnumFacing.VALUES[mSide]);
+ if(sprite != null) {
+ BakedQuad quad = RenderUtil.renderSide(sprite, side, offset, mRGBa);
+ return Collections.singletonList(quad);
+ }
}
- return Collections.emptyList();
+ return Collections.EMPTY_LIST;
}
@Override
diff --git a/src/main/java/gregtech/api/objects/GT_PipeRenderedTexture.java b/src/main/java/gregtech/api/objects/GT_PipeRenderedTexture.java
index 8d7c38fa..07b0a4d4 100644
--- a/src/main/java/gregtech/api/objects/GT_PipeRenderedTexture.java
+++ b/src/main/java/gregtech/api/objects/GT_PipeRenderedTexture.java
@@ -1,23 +1,23 @@
package gregtech.api.objects;
-import com.google.common.collect.Lists;
+import com.google.common.collect.ImmutableList;
import gregtech.api.interfaces.IIconContainer;
import gregtech.api.interfaces.ITexture;
-import gregtech.common.render.newblocks.RenderUtil;
+import gregtech.common.render.RenderUtil;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.block.model.BakedQuad;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
-import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
-import net.minecraft.client.renderer.vertex.VertexFormat;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;
-import java.util.ArrayList;
import java.util.Collections;
+import java.util.EnumMap;
import java.util.List;
public class GT_PipeRenderedTexture implements ITexture {
+ private EnumMap> sidedQuads;
+
private float thickness;
private boolean connected;
private TextureAtlasSprite connectedSprite;
@@ -36,6 +36,7 @@ public class GT_PipeRenderedTexture implements ITexture {
if(rgbaInsulation != null) {
this.rgbaInsulation = GT_RenderedTexture.makeColor(rgbaInsulation);
}
+ generate9();
}
public GT_PipeRenderedTexture(float thickness, boolean connected, IIconContainer sprite, short[] rgba) {
@@ -47,14 +48,28 @@ public class GT_PipeRenderedTexture implements ITexture {
}
@Override
- public List getQuads(Block aBlock, BlockPos blockPos, EnumFacing side, float offset) {
- float wireOffset = (1.0F - thickness) / 2f;
+ public List getQuads(Block aBlock, BlockPos blockPos, EnumFacing renderSide, float offset) {
+ if(renderSide != null) {
+ return sidedQuads.get(renderSide);
+ }
+ return Collections.EMPTY_LIST;
+ }
+
+ private void generate9() {
+ sidedQuads = new EnumMap<>(EnumFacing.class);
+ for(EnumFacing side : EnumFacing.VALUES) {
+ sidedQuads.put(side, generateSide(side));
+ }
+ }
+
+ private ImmutableList generateSide(EnumFacing side) {
+ float wireOffset = (1.0F - thickness) / 2f;
switch (side) {
case UP:
if(!connected) {
BakedQuad quad = makeQuad(insulationSprite, wireOffset, wireOffset + thickness, wireOffset, thickness, thickness, EnumFacing.UP, rgbaInsulation);
- return Lists.newArrayList(quad);
+ return ImmutableList.of(quad);
} else {
BakedQuad north = makeQuad(insulationSprite, wireOffset, wireOffset + thickness, wireOffset, thickness, wireOffset, EnumFacing.NORTH, rgbaInsulation);
BakedQuad south = makeQuad(insulationSprite, wireOffset, wireOffset + thickness, wireOffset + thickness, thickness, wireOffset, EnumFacing.SOUTH, rgbaInsulation);
@@ -64,12 +79,12 @@ public class GT_PipeRenderedTexture implements ITexture {
BakedQuad up = makeQuad(connectedSprite, wireOffset, 1f, wireOffset, thickness, thickness, EnumFacing.UP, rgbaConnection);
- return Lists.newArrayList(north, south, west, east, up);
+ return ImmutableList.of(north, south, west, east, up);
}
case DOWN:
if(!connected) {
BakedQuad quad = makeQuad(insulationSprite, wireOffset, wireOffset, wireOffset, thickness, thickness, EnumFacing.DOWN, rgbaInsulation);
- return Lists.newArrayList(quad);
+ return ImmutableList.of(quad);
} else {
BakedQuad north = makeQuad(insulationSprite, wireOffset, 0f, wireOffset, thickness, wireOffset, EnumFacing.NORTH, rgbaInsulation);
BakedQuad south = makeQuad(insulationSprite, wireOffset, 0f, wireOffset + thickness, thickness, wireOffset, EnumFacing.SOUTH, rgbaInsulation);
@@ -79,12 +94,12 @@ public class GT_PipeRenderedTexture implements ITexture {
BakedQuad down = makeQuad(connectedSprite, wireOffset, 0f, wireOffset, thickness, thickness, EnumFacing.DOWN, rgbaConnection);
- return Lists.newArrayList(north, south, west, east, down);
+ return ImmutableList.of(north, south, west, east, down);
}
case EAST:
if(!connected) {
BakedQuad quad = makeQuad(insulationSprite, wireOffset, wireOffset, wireOffset, thickness, thickness, EnumFacing.WEST, rgbaInsulation);
- return Lists.newArrayList(quad);
+ return ImmutableList.of(quad);
} else {
BakedQuad down = makeQuad(insulationSprite, wireOffset + thickness, wireOffset, wireOffset, wireOffset, thickness, EnumFacing.DOWN, rgbaInsulation);
BakedQuad up = makeQuad(insulationSprite, wireOffset + thickness, wireOffset + thickness, wireOffset, wireOffset, thickness, EnumFacing.UP, rgbaInsulation);
@@ -94,12 +109,12 @@ public class GT_PipeRenderedTexture implements ITexture {
BakedQuad end = makeQuad(connectedSprite, 1f, wireOffset, wireOffset, thickness, thickness, EnumFacing.EAST, rgbaConnection);
- return Lists.newArrayList(down, up, north, south, end);
+ return ImmutableList.of(down, up, north, south, end);
}
case WEST:
if(!connected) {
BakedQuad quad = makeQuad(insulationSprite, wireOffset + thickness, wireOffset, wireOffset, thickness, thickness, EnumFacing.EAST, rgbaInsulation);
- return Lists.newArrayList(quad);
+ return ImmutableList.of(quad);
} else {
BakedQuad down = makeQuad(insulationSprite, 0f, wireOffset, wireOffset, wireOffset, thickness, EnumFacing.DOWN, rgbaInsulation);
BakedQuad up = makeQuad(insulationSprite, 0f, wireOffset + thickness, wireOffset, wireOffset, thickness, EnumFacing.UP, rgbaInsulation);
@@ -109,12 +124,12 @@ public class GT_PipeRenderedTexture implements ITexture {
BakedQuad end = makeQuad(connectedSprite, 0f, wireOffset, wireOffset, thickness, thickness, EnumFacing.WEST, rgbaConnection);
- return Lists.newArrayList(down, up, north, south, end);
+ return ImmutableList.of(down, up, north, south, end);
}
case NORTH:
if(!connected) {
BakedQuad quad = makeQuad(insulationSprite, wireOffset, wireOffset, wireOffset, thickness, thickness, EnumFacing.NORTH, rgbaInsulation);
- return Lists.newArrayList(quad);
+ return ImmutableList.of(quad);
} else {
BakedQuad down = makeQuad(insulationSprite, wireOffset, wireOffset, 0f, thickness, wireOffset, EnumFacing.DOWN, rgbaInsulation);
BakedQuad up = makeQuad(insulationSprite, wireOffset, wireOffset + thickness, 0f, thickness, wireOffset, EnumFacing.UP, rgbaInsulation);
@@ -124,12 +139,12 @@ public class GT_PipeRenderedTexture implements ITexture {
BakedQuad end = makeQuad(connectedSprite, wireOffset, wireOffset, 0f, thickness, thickness, EnumFacing.NORTH, rgbaConnection);
- return Lists.newArrayList(down, up, end, east, west);
+ return ImmutableList.of(down, up, end, east, west);
}
case SOUTH:
if(!connected) {
BakedQuad quad = makeQuad(insulationSprite, wireOffset, wireOffset, wireOffset + thickness, thickness, thickness, EnumFacing.SOUTH, rgbaInsulation);
- return Lists.newArrayList(quad);
+ return ImmutableList.of(quad);
} else {
BakedQuad down = makeQuad(insulationSprite, wireOffset, wireOffset, wireOffset + thickness, thickness, wireOffset, EnumFacing.DOWN, rgbaInsulation);
BakedQuad up = makeQuad(insulationSprite, wireOffset, wireOffset + thickness, wireOffset + thickness, thickness, wireOffset, EnumFacing.UP, rgbaInsulation);
@@ -139,14 +154,14 @@ public class GT_PipeRenderedTexture implements ITexture {
BakedQuad end = makeQuad(connectedSprite, wireOffset, wireOffset, 1f, thickness, thickness, EnumFacing.SOUTH, rgbaConnection);
- return Lists.newArrayList(down, up, end, east, west);
+ return ImmutableList.of(down, up, end, east, west);
}
}
- return Collections.emptyList();
+ throw new IllegalArgumentException();
}
public BakedQuad makeQuad(TextureAtlasSprite sprite, float x, float y, float z, float width, float height, EnumFacing side, int rgba) {
- return RenderUtil.renderQuadCustom(x, y, z, width, height, DefaultVertexFormats.BLOCK, sprite, side, -1, rgba, true);
+ return RenderUtil.renderQuadCustom(x, y, z, width, height, sprite, side, rgba);
}
@Override
diff --git a/src/main/java/gregtech/api/objects/GT_RenderedTexture.java b/src/main/java/gregtech/api/objects/GT_RenderedTexture.java
index 94dcb92f..cc8d7d75 100644
--- a/src/main/java/gregtech/api/objects/GT_RenderedTexture.java
+++ b/src/main/java/gregtech/api/objects/GT_RenderedTexture.java
@@ -3,20 +3,17 @@ package gregtech.api.objects;
import com.google.common.collect.ImmutableList;
import gregtech.api.interfaces.IIconContainer;
import gregtech.api.interfaces.ITexture;
-import gregtech.api.util.GT_Utility;
-import gregtech.common.render.newblocks.RenderUtil;
+import gregtech.common.render.RenderUtil;
import net.minecraft.block.Block;
-import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.block.model.BakedQuad;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
-import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import java.awt.*;
-import java.util.ArrayList;
+import java.util.EnumMap;
import java.util.HashMap;
import java.util.List;
@@ -25,7 +22,7 @@ public class GT_RenderedTexture implements ITexture {
private final IIconContainer mIconContainer;
public int mRGBa = -1;
- private HashMap>> cache = new HashMap<>();
+ private HashMap>> cache = new HashMap<>();
public GT_RenderedTexture(IIconContainer aIcon, short[] aRGBa) {
mIconContainer = aIcon;
@@ -66,9 +63,9 @@ public class GT_RenderedTexture implements ITexture {
@SideOnly(Side.CLIENT)
public List getQuads(Block aBlock, BlockPos blockPos, EnumFacing side, float offset) {
int offsetKey = offset2key(offset);
- HashMap> offsetCache = cache.get(offsetKey);
+ EnumMap> offsetCache = cache.get(offsetKey);
if(offsetCache == null) {
- offsetCache = new HashMap<>();
+ offsetCache = new EnumMap<>(EnumFacing.class);
cache.put(offsetKey, offsetCache);
}
ImmutableList quads = offsetCache.get(side);
@@ -79,15 +76,15 @@ public class GT_RenderedTexture implements ITexture {
return quads;
}
- public ImmutableList generate9(EnumFacing side, float offset) {
+ private ImmutableList generate9(EnumFacing side, float offset) {
ImmutableList.Builder quads = ImmutableList.builder();
TextureAtlasSprite sprite = mIconContainer.getIcon();
TextureAtlasSprite overlay = mIconContainer.getOverlayIcon();
if(sprite != null) {
- quads.add(RenderUtil.renderSide(DefaultVertexFormats.BLOCK, sprite, side, -1, offset, mRGBa, false));
+ quads.add(RenderUtil.renderSide(sprite, side, offset, mRGBa));
}
if(overlay != null) {
- quads.add(RenderUtil.renderSide(DefaultVertexFormats.BLOCK, overlay, side, -1, offset + 0.01F, mRGBa, false));
+ quads.add(RenderUtil.renderSide(overlay, side, offset + 0.01F, mRGBa));
}
return quads.build();
}
diff --git a/src/main/java/gregtech/api/objects/GT_SidedTexture.java b/src/main/java/gregtech/api/objects/GT_SidedTexture.java
index b07c0c55..76c610bb 100644
--- a/src/main/java/gregtech/api/objects/GT_SidedTexture.java
+++ b/src/main/java/gregtech/api/objects/GT_SidedTexture.java
@@ -16,6 +16,9 @@ import java.util.*;
import java.util.List;
public class GT_SidedTexture implements ITexture {
+
+ private EnumMap sidedTextures;
+
private final IIconContainer[] mIconContainer;
public int mRGBa;
@@ -23,6 +26,15 @@ public class GT_SidedTexture implements ITexture {
if (aRGBa.length != 4) throw new IllegalArgumentException("RGBa doesn't have 4 Values @ GT_RenderedTexture");
mIconContainer = new IIconContainer[]{aIcon0, aIcon1, aIcon2, aIcon3, aIcon4, aIcon5};
mRGBa = makeColor(aRGBa);
+ generate9();
+ }
+
+ private void generate9() {
+ sidedTextures = new EnumMap<>(EnumFacing.class);
+ for(EnumFacing side : EnumFacing.VALUES) {
+ GT_RenderedTexture texture = new GT_RenderedTexture(mIconContainer[side.getIndex()], mRGBa);
+ sidedTextures.put(side, texture);
+ }
}
private int makeColor(short[] rgba) {
@@ -50,8 +62,10 @@ public class GT_SidedTexture implements ITexture {
@Override
@SideOnly(Side.CLIENT)
public List getQuads(Block aBlock, BlockPos blockPos, EnumFacing side, float offset) {
- return new GT_RenderedTexture(mIconContainer[side.getIndex()], mRGBa)
- .getQuads(aBlock, blockPos, side, offset);
+ if(side != null) {
+ return sidedTextures.get(side).getQuads(aBlock, blockPos, side, offset);
+ }
+ return Collections.emptyList();
}
@Override
diff --git a/src/main/java/gregtech/asm/ASM.java b/src/main/java/gregtech/asm/ASM.java
index 435c59cd..4815aef2 100644
--- a/src/main/java/gregtech/asm/ASM.java
+++ b/src/main/java/gregtech/asm/ASM.java
@@ -14,7 +14,7 @@ import java.util.Map;
public class ASM implements IFMLLoadingPlugin, IClassTransformer {
private static final String OBF_METHOD_NAME = "func_178125_b";
- private static final String BLOCK_RENDERER = "gregtech/common/render/newblocks/BlockRenderer";
+ private static final String BLOCK_RENDERER = "gregtech/common/render/GT_BlockRenderer";
private static final String SHOULD_HOOK_DESC = "(Lnet/minecraft/block/state/IBlockState;)Z";
private static final String HOOK_DESC = "(Lnet/minecraft/block/state/IBlockState;)Lnet/minecraft/client/renderer/block/model/IBakedModel;";
diff --git a/src/main/java/gregtech/common/GT_Client.java b/src/main/java/gregtech/common/GT_Client.java
index c723ab42..265f568d 100644
--- a/src/main/java/gregtech/common/GT_Client.java
+++ b/src/main/java/gregtech/common/GT_Client.java
@@ -7,16 +7,14 @@ package gregtech.common;
import gregtech.api.GregTech_API;
import gregtech.api.enums.*;
-import gregtech.api.util.GT_LanguageManager;
import gregtech.api.util.GT_Log;
import gregtech.api.util.GT_Utility;
import gregtech.common.entities.GT_Entity_Arrow;
import gregtech.common.entities.GT_Entity_Arrow_Potion;
-import gregtech.common.render.GT_CapeRenderer;
-import gregtech.common.render.GT_Renderer_Entity_Arrow;
-import gregtech.common.render.newitems.GT_IIconProvider_Item_Model;
+import gregtech.common.render.entity.GT_CapeRenderer;
+import gregtech.common.render.entity.GT_Renderer_Entity_Arrow;
+import gregtech.common.render.GT_RenderDispatcher;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.resources.IReloadableResourceManager;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.text.TextComponentString;
@@ -177,7 +175,7 @@ public class GT_Client extends GT_Proxy
Textures.ItemIcons.BUTCHERYKNIFE.getClass();
TextureSet.SET_DIAMOND.getClass();
- new GT_IIconProvider_Item_Model();
+ new GT_RenderDispatcher();
}
public void run() {
diff --git a/src/main/java/gregtech/common/blocks/GT_Block_Casings_Abstract.java b/src/main/java/gregtech/common/blocks/GT_Block_Casings_Abstract.java
index a8af5873..50144fb5 100644
--- a/src/main/java/gregtech/common/blocks/GT_Block_Casings_Abstract.java
+++ b/src/main/java/gregtech/common/blocks/GT_Block_Casings_Abstract.java
@@ -4,7 +4,7 @@ import com.google.common.collect.Lists;
import gregtech.api.GregTech_API;
import gregtech.api.items.GT_Generic_Block;
import gregtech.api.util.GT_LanguageManager;
-import gregtech.common.render.newblocks.IBlockIconProvider;
+import gregtech.common.render.blocks.IBlockIconProvider;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.BlockStateContainer;
@@ -47,11 +47,6 @@ public abstract class GT_Block_Casings_Abstract extends GT_Generic_Block impleme
return 2;
}
- @Override
- protected BlockStateContainer createBlockState() {
- return super.createBlockState();
- }
-
@Override
public float getBlockHardness(IBlockState blockState, World worldIn, BlockPos pos) {
return Blocks.IRON_BLOCK.getBlockHardness(blockState, worldIn, pos);
diff --git a/src/main/java/gregtech/common/blocks/GT_Block_Machines.java b/src/main/java/gregtech/common/blocks/GT_Block_Machines.java
index 4f1b0360..cb3b2d6b 100644
--- a/src/main/java/gregtech/common/blocks/GT_Block_Machines.java
+++ b/src/main/java/gregtech/common/blocks/GT_Block_Machines.java
@@ -14,7 +14,7 @@ import gregtech.api.util.GT_LanguageManager;
import gregtech.api.util.GT_Log;
import gregtech.api.util.GT_Utility;
import gregtech.common.render.IIconRegister;
-import gregtech.common.render.newblocks.ITextureBlockIconProvider;
+import gregtech.common.render.blocks.IBlockTextureProvider;
import net.minecraft.block.ITileEntityProvider;
import net.minecraft.block.SoundType;
import net.minecraft.block.state.IBlockState;
@@ -30,6 +30,7 @@ import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.AxisAlignedBB;
@@ -49,10 +50,7 @@ import java.util.Collections;
import java.util.List;
import java.util.Random;
-@SuppressWarnings("deprecation")
-public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlock, ITileEntityProvider, IIconRegister, ITextureBlockIconProvider {
-
- public static ThreadLocal mTemporaryTileEntity = new ThreadLocal<>();
+public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlock, ITileEntityProvider, IIconRegister, IBlockTextureProvider {
public GT_Block_Machines() {
super(GT_Item_Machines.class, "gt.blockmachines", new GT_Material_Machines());
@@ -327,7 +325,6 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo
if ((tTileEntity instanceof IGregTechTileEntity)) {
IGregTechTileEntity tGregTechTileEntity = (IGregTechTileEntity) tTileEntity;
Random tRandom = new Random();
- mTemporaryTileEntity.set(tGregTechTileEntity);
for (int i = 0; i < tGregTechTileEntity.getSizeInventory(); i++) {
ItemStack tItem = tGregTechTileEntity.getStackInSlot(i);
if ((tItem != null) && (tItem.stackSize > 0) && (tGregTechTileEntity.isValidSlot(i))) {
@@ -358,12 +355,7 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo
if(gregTechTileEntity != null) {
return gregTechTileEntity.getDrops();
}
- if(mTemporaryTileEntity.get() != null) {
- IGregTechTileEntity tempTile = mTemporaryTileEntity.get();
- mTemporaryTileEntity.remove();
- return tempTile.getDrops();
- }
- return Collections.emptyList();
+ return Collections.EMPTY_LIST;
}
@Override
@@ -526,4 +518,11 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo
return false;
}
+ @Override
+ @SideOnly(Side.CLIENT)
+ //for multilayer blocks
+ public BlockRenderLayer getBlockLayer() {
+ return BlockRenderLayer.CUTOUT;
+ }
+
}
diff --git a/src/main/java/gregtech/common/blocks/GT_Block_Metal.java b/src/main/java/gregtech/common/blocks/GT_Block_Metal.java
index 223c0a7a..9b086b1e 100644
--- a/src/main/java/gregtech/common/blocks/GT_Block_Metal.java
+++ b/src/main/java/gregtech/common/blocks/GT_Block_Metal.java
@@ -1,10 +1,8 @@
package gregtech.common.blocks;
-import gregtech.common.render.newblocks.IBlockIconProvider;
-import mezz.jei.Internal;
+import gregtech.common.render.blocks.IBlockIconProvider;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.util.EnumFacing;
-import net.minecraftforge.fml.common.Loader;
import gregtech.api.enums.Materials;
import gregtech.api.enums.OrePrefixes;
import gregtech.api.interfaces.IIconContainer;
diff --git a/src/main/java/gregtech/common/blocks/GT_Block_Ores_Abstract.java b/src/main/java/gregtech/common/blocks/GT_Block_Ores_Abstract.java
index 800dd8cb..d9078233 100644
--- a/src/main/java/gregtech/common/blocks/GT_Block_Ores_Abstract.java
+++ b/src/main/java/gregtech/common/blocks/GT_Block_Ores_Abstract.java
@@ -1,17 +1,5 @@
package gregtech.common.blocks;
-import gregtech.api.enums.TextureSet;
-import gregtech.api.util.GT_Utility;
-import gregtech.common.render.newblocks.ITextureBlockIconProvider;
-import gregtech.jei.JEI_Compat;
-import net.minecraft.block.SoundType;
-import net.minecraft.block.state.IBlockState;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.util.EnumFacing;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.Explosion;
-import net.minecraftforge.common.property.IExtendedBlockState;
-import net.minecraftforge.fml.common.Loader;
import gregtech.GT_Mod;
import gregtech.api.GregTech_API;
import gregtech.api.enums.Materials;
@@ -21,26 +9,34 @@ import gregtech.api.items.GT_Generic_Block;
import gregtech.api.util.GT_LanguageManager;
import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_OreDictUnificator;
+import gregtech.common.render.blocks.IBlockTextureProvider;
+import gregtech.jei.JEI_Compat;
import net.minecraft.block.Block;
import net.minecraft.block.ITileEntityProvider;
+import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
+import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
+import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.BlockRenderLayer;
+import net.minecraft.util.EnumFacing;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.world.Explosion;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
+import net.minecraftforge.common.property.IExtendedBlockState;
+import net.minecraftforge.fml.common.Loader;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
-import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
-public abstract class GT_Block_Ores_Abstract extends GT_Generic_Block implements ITileEntityProvider, ITextureBlockIconProvider {
-
- private static final ITexture[] EMPTY = new ITexture[0];
+public abstract class GT_Block_Ores_Abstract extends GT_Generic_Block implements ITileEntityProvider, IBlockTextureProvider {
protected GT_Block_Ores_Abstract(String aUnlocalizedName, Material aMaterial) {
super(GT_Item_Ores.class, aUnlocalizedName, aMaterial);
@@ -189,11 +185,8 @@ public abstract class GT_Block_Ores_Abstract extends GT_Generic_Block implements
@Override
@SideOnly(Side.CLIENT)
public ITexture[] getTexture(World world, BlockPos blockPos, IExtendedBlockState blockState, EnumFacing side) {
- if (!GT_Utility.isOpaqueBlock(world, blockPos.offset(side))) {
- GT_TileEntity_Ores oreTile = (GT_TileEntity_Ores) world.getTileEntity(blockPos);
- return oreTile.getTexture(this, (byte) side.getIndex());
- }
- return EMPTY;
+ GT_TileEntity_Ores oreTile = (GT_TileEntity_Ores) world.getTileEntity(blockPos);
+ return oreTile.getTexture(this, (byte) side.getIndex());
}
@Override
@@ -217,7 +210,7 @@ public abstract class GT_Block_Ores_Abstract extends GT_Generic_Block implements
if ((tTileEntity instanceof GT_TileEntity_Ores)) {
return ((GT_TileEntity_Ores) tTileEntity).getDrops(getDroppedBlock(), fortune);
}
- return Collections.emptyList();
+ return Collections.EMPTY_LIST;
}
public abstract OrePrefixes[] getProcessingPrefix(); //Must have 17 entries; an entry can be null to disable automatic recipes.
@@ -247,4 +240,11 @@ public abstract class GT_Block_Ores_Abstract extends GT_Generic_Block implements
return baseBlockType <= 8;
}
+ @Override
+ @SideOnly(Side.CLIENT)
+ //for multilayer blocks
+ public BlockRenderLayer getBlockLayer() {
+ return BlockRenderLayer.CUTOUT;
+ }
+
}
diff --git a/src/main/java/gregtech/common/blocks/GT_Block_Reinforced.java b/src/main/java/gregtech/common/blocks/GT_Block_Reinforced.java
index 6a43b905..5ea7ac9c 100644
--- a/src/main/java/gregtech/common/blocks/GT_Block_Reinforced.java
+++ b/src/main/java/gregtech/common/blocks/GT_Block_Reinforced.java
@@ -13,25 +13,17 @@ import gregtech.api.util.GT_LanguageManager;
import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_OreDictUnificator;
import gregtech.api.util.GT_Utility;
-import gregtech.common.render.newblocks.IBlockIconProvider;
-import ic2.core.block.EntityIC2Explosive;
-import ic2.core.block.EntityItnt;
+import gregtech.common.render.blocks.IBlockIconProvider;
import net.minecraft.block.SoundType;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
-import net.minecraft.entity.EntityLiving;
-import net.minecraft.entity.EntityLivingBase;
-import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
-import net.minecraft.init.SoundEvents;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumFacing;
-import net.minecraft.util.EnumHand;
-import net.minecraft.util.SoundCategory;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.Explosion;
import net.minecraft.world.IBlockAccess;
@@ -39,7 +31,6 @@ import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
-import javax.annotation.Nullable;
import java.util.List;
public class GT_Block_Reinforced extends GT_Generic_Block implements IBlockIconProvider {
diff --git a/src/main/java/gregtech/common/blocks/GT_Block_Stones.java b/src/main/java/gregtech/common/blocks/GT_Block_Stones.java
index ab5b6e77..1dee74d9 100644
--- a/src/main/java/gregtech/common/blocks/GT_Block_Stones.java
+++ b/src/main/java/gregtech/common/blocks/GT_Block_Stones.java
@@ -4,7 +4,7 @@ import gregtech.api.enums.Materials;
import gregtech.api.enums.OrePrefixes;
import gregtech.api.util.GT_LanguageManager;
import gregtech.api.util.GT_OreDictUnificator;
-import gregtech.common.render.newblocks.IBlockIconProvider;
+import gregtech.common.render.blocks.IBlockIconProvider;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.init.Blocks;
diff --git a/src/main/java/gregtech/common/blocks/GT_Block_Stones_Abstract.java b/src/main/java/gregtech/common/blocks/GT_Block_Stones_Abstract.java
index c13bcffd..a5d0811a 100644
--- a/src/main/java/gregtech/common/blocks/GT_Block_Stones_Abstract.java
+++ b/src/main/java/gregtech/common/blocks/GT_Block_Stones_Abstract.java
@@ -8,7 +8,7 @@ import gregtech.api.items.GT_Generic_Block;
import gregtech.api.util.GT_LanguageManager;
import gregtech.api.util.GT_ModHandler;
import gregtech.api.util.GT_Utility;
-import gregtech.common.render.newblocks.IBlockIconProvider;
+import gregtech.common.render.blocks.IBlockIconProvider;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
diff --git a/src/main/java/gregtech/common/blocks/GT_TileEntity_Ores.java b/src/main/java/gregtech/common/blocks/GT_TileEntity_Ores.java
index d1a0d8e5..8e46b5b2 100644
--- a/src/main/java/gregtech/common/blocks/GT_TileEntity_Ores.java
+++ b/src/main/java/gregtech/common/blocks/GT_TileEntity_Ores.java
@@ -35,27 +35,16 @@ public class GT_TileEntity_Ores extends TileEntity implements ITexturedTileEntit
public short mMetaData = 0;
public boolean mNatural = false;
- @Nullable
- @Override
- public SPacketUpdateTileEntity getUpdatePacket() {
- return new SPacketUpdateTileEntity(this.pos, -1, this.getUpdateTag());
- }
-
@Override
public NBTTagCompound getUpdateTag() {
- return writeToNBT(new NBTTagCompound());
- }
-
- @Override
- public void onDataPacket(NetworkManager net, SPacketUpdateTileEntity pkt) {
- readFromNBT(pkt.getNbtCompound());
- causeChunkUpdate();
+ //return writeToNBT(new NBTTagCompound());
+ return null;
}
@Override
public void handleUpdateTag(NBTTagCompound tag) {
readNBTInternal(tag);
- causeChunkUpdate();
+ //causeChunkUpdate();
}
@Override
diff --git a/src/main/java/gregtech/common/items/GT_FluidDisplayItem.java b/src/main/java/gregtech/common/items/GT_FluidDisplayItem.java
index 2d6c190a..a8c154ea 100644
--- a/src/main/java/gregtech/common/items/GT_FluidDisplayItem.java
+++ b/src/main/java/gregtech/common/items/GT_FluidDisplayItem.java
@@ -4,7 +4,7 @@ import gregtech.api.enums.GT_Values;
import gregtech.api.enums.ItemList;
import gregtech.api.items.GT_Generic_Item;
import gregtech.api.util.GT_Utility;
-import gregtech.common.render.IColorMultiplier;
+import gregtech.common.render.IItemColorMultiplier;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
@@ -19,7 +19,7 @@ import net.minecraftforge.fml.relauncher.SideOnly;
import java.util.List;
-public class GT_FluidDisplayItem extends GT_Generic_Item implements IColorMultiplier {
+public class GT_FluidDisplayItem extends GT_Generic_Item implements IItemColorMultiplier {
public GT_FluidDisplayItem() {
super("GregTech_FluidDisplay", "Fluid Display", null);
ItemList.Display_Fluid.set(this);
diff --git a/src/main/java/gregtech/common/items/ItemComb.java b/src/main/java/gregtech/common/items/ItemComb.java
index 46765aa7..d8e167ea 100644
--- a/src/main/java/gregtech/common/items/ItemComb.java
+++ b/src/main/java/gregtech/common/items/ItemComb.java
@@ -10,10 +10,9 @@ import gregtech.api.enums.Materials;
import gregtech.api.enums.OrePrefixes;
import gregtech.api.util.GT_OreDictUnificator;
import gregtech.api.util.GT_Utility;
-import gregtech.common.render.IColorMultiplier;
+import gregtech.common.render.IItemColorMultiplier;
import gregtech.common.render.IIconRegister;
-import gregtech.common.render.newitems.IItemIconProvider;
-import net.minecraft.client.renderer.color.IItemColor;
+import gregtech.common.render.items.IItemIconProvider;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.creativetab.CreativeTabs;
@@ -28,7 +27,7 @@ import java.util.List;
import static gregtech.api.enums.GT_Values.MOD_ID;
-public class ItemComb extends Item implements IItemIconProvider, IIconRegister, IColorMultiplier {
+public class ItemComb extends Item implements IItemIconProvider, IIconRegister, IItemColorMultiplier {
@SideOnly(Side.CLIENT)
private TextureAtlasSprite itemIcon, secondIcon;
diff --git a/src/main/java/gregtech/common/items/armor/ModularArmor_Item.java b/src/main/java/gregtech/common/items/armor/ModularArmor_Item.java
index 0fcbe089..6bfbcfd9 100644
--- a/src/main/java/gregtech/common/items/armor/ModularArmor_Item.java
+++ b/src/main/java/gregtech/common/items/armor/ModularArmor_Item.java
@@ -3,7 +3,7 @@ package gregtech.common.items.armor;
import gregtech.api.damagesources.GT_DamageSources;
import gregtech.api.enums.GT_Values;
import gregtech.common.render.IIconRegister;
-import gregtech.common.render.newitems.IItemIconProvider;
+import gregtech.common.render.items.IItemIconProvider;
import ic2.core.IC2;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
diff --git a/src/main/java/gregtech/common/render/newblocks/BlockRenderer.java b/src/main/java/gregtech/common/render/GT_BlockRenderer.java
similarity index 82%
rename from src/main/java/gregtech/common/render/newblocks/BlockRenderer.java
rename to src/main/java/gregtech/common/render/GT_BlockRenderer.java
index 7efe3528..59c70bac 100644
--- a/src/main/java/gregtech/common/render/newblocks/BlockRenderer.java
+++ b/src/main/java/gregtech/common/render/GT_BlockRenderer.java
@@ -1,21 +1,19 @@
-package gregtech.common.render.newblocks;
+package gregtech.common.render;
import com.google.common.collect.ImmutableList;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.ITexture;
import gregtech.api.items.GT_Generic_Block;
-import gregtech.common.render.newitems.ModelUtil;
+import gregtech.common.render.blocks.IBlockIconProvider;
+import gregtech.common.render.blocks.IBlockTextureProvider;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.renderer.GlStateManager;
-import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.block.model.BakedQuad;
import net.minecraft.client.renderer.block.model.IBakedModel;
import net.minecraft.client.renderer.block.model.ItemCameraTransforms;
import net.minecraft.client.renderer.block.model.ItemOverrideList;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
-import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
@@ -32,7 +30,7 @@ import java.util.HashMap;
import java.util.List;
@SideOnly(Side.CLIENT)
-public class BlockRenderer {
+public class GT_BlockRenderer {
/**
* Quads cache for standard icon provider blocks
@@ -44,8 +42,8 @@ public class BlockRenderer {
if(blockState.getBlock() instanceof IBlockIconProvider) {
return true;
}
- if(blockState.getBlock() instanceof ITextureBlockIconProvider) {
- return true;
+ if(blockState.getBlock() instanceof IBlockTextureProvider) {
+ return true;
}
return false;
}
@@ -54,21 +52,30 @@ public class BlockRenderer {
if(blockState.getBlock() instanceof IBlockIconProvider) {
return ICON_PROVIDER;
}
- if(blockState.getBlock() instanceof ITextureBlockIconProvider) {
+ if(blockState.getBlock() instanceof IBlockTextureProvider) {
return TEXTURE_PROVIDER;
}
return null;
}
- private static final IconProviderModel ICON_PROVIDER = new IconProviderModel();
- private static final TextureProviderModel TEXTURE_PROVIDER = new TextureProviderModel();
+ public static final IconProviderModel ICON_PROVIDER = new IconProviderModel();
+ public static final TextureProviderModel TEXTURE_PROVIDER = new TextureProviderModel();
+ public static IBakedModel getItemBlockModel(Block block, ItemStack stack, EntityLivingBase entity) {
+ if(block instanceof IBlockTextureProvider) {
+ return GT_BlockRenderer.makeTextureProviderItemblock(stack, entity);
+ } else if(block instanceof IBlockIconProvider) {
+ return GT_BlockRenderer.makeIconProviderItemblock(stack, entity);
+ } else {
+ return null;
+ }
+ }
- public static IBakedModel makeTextureProviderItemblock(ItemStack stack, EntityLivingBase holder) {
+ private static IBakedModel makeTextureProviderItemblock(ItemStack stack, EntityLivingBase holder) {
return new ItemblockTextureProviderModel(stack, holder instanceof EntityPlayer ? (EntityPlayer) holder : null);
}
- public static IBakedModel makeIconProviderItemblock(ItemStack stack, EntityLivingBase holder) {
+ private static IBakedModel makeIconProviderItemblock(ItemStack stack, EntityLivingBase holder) {
return new ItemblockIconProviderModel(stack, holder instanceof EntityPlayer ? (EntityPlayer) holder : null);
}
@@ -118,13 +125,13 @@ public class BlockRenderer {
}
ImmutableList faceQuad = quads.get(side);
if(faceQuad == null) {
- faceQuad = ImmutableList.of(RenderUtil.renderSide(DefaultVertexFormats.BLOCK, sideIcon, side, -1, 0.0F, -1, false));
+ faceQuad = ImmutableList.of(RenderUtil.renderSide(sideIcon, side, 0.0F, 0xFFFFFF));
quads.put(side, faceQuad);
}
return faceQuad;
}
}
- return Collections.emptyList();
+ return Collections.EMPTY_LIST;
}
public abstract TextureAtlasSprite getSideSprite(EnumFacing side, IBlockState blockState);
@@ -139,7 +146,7 @@ public class BlockRenderer {
ArrayList quads = new ArrayList<>();
IExtendedBlockState blockState = (IExtendedBlockState) state;
BlockPos pos = blockState.getValue(GT_Generic_Block.BLOCK_POS);
- ITextureBlockIconProvider provider = (ITextureBlockIconProvider) blockState.getBlock();
+ IBlockTextureProvider provider = (IBlockTextureProvider) blockState.getBlock();
ITexture[] textures = provider.getTexture(Minecraft.getMinecraft().theWorld, pos, blockState, side);
for (int i = 0; i < textures.length; i++) {
if(textures[i] != null) {
@@ -148,7 +155,7 @@ public class BlockRenderer {
}
return quads;
}
- return Collections.emptyList();
+ return Collections.EMPTY_LIST;
}
}
@@ -169,7 +176,7 @@ public class BlockRenderer {
public List getQuads(@Nullable IBlockState state, @Nullable EnumFacing side, long rand) {
if(side != null) {
ArrayList quads = new ArrayList<>();
- ITextureBlockIconProvider provider = (ITextureBlockIconProvider) block;
+ IBlockTextureProvider provider = (IBlockTextureProvider) block;
ITexture[] textures = provider.getItemblockTexture(holder, itemStack, side);
for (int i = 0; i < textures.length; i++) {
if(textures[i] != null) {
@@ -178,7 +185,7 @@ public class BlockRenderer {
}
return quads;
}
- return Collections.emptyList();
+ return Collections.EMPTY_LIST;
}
}
@@ -187,7 +194,7 @@ public class BlockRenderer {
@Override
public boolean isAmbientOcclusion() {
- return false;
+ return true;
}
@Override
diff --git a/src/main/java/gregtech/common/render/newitems/GT_IIconProvider_Item_Model.java b/src/main/java/gregtech/common/render/GT_RenderDispatcher.java
similarity index 77%
rename from src/main/java/gregtech/common/render/newitems/GT_IIconProvider_Item_Model.java
rename to src/main/java/gregtech/common/render/GT_RenderDispatcher.java
index bd56fa86..de3c3c46 100644
--- a/src/main/java/gregtech/common/render/newitems/GT_IIconProvider_Item_Model.java
+++ b/src/main/java/gregtech/common/render/GT_RenderDispatcher.java
@@ -1,20 +1,18 @@
-package gregtech.common.render.newitems;
+package gregtech.common.render;
import com.google.common.base.Optional;
import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
import gregtech.api.GregTech_API;
-import gregtech.common.render.IColorMultiplier;
-import gregtech.common.render.IIconRegister;
-import gregtech.common.render.newblocks.BlockRenderer;
-import gregtech.common.render.newblocks.IBlockIconProvider;
-import gregtech.common.render.newblocks.ITextureBlockIconProvider;
+import gregtech.common.render.blocks.IBlockIconProvider;
+import gregtech.common.render.blocks.IBlockTextureProvider;
+import gregtech.common.render.items.IItemIconProvider;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.Minecraft;
+import net.minecraft.client.renderer.ItemModelMesher;
import net.minecraft.client.renderer.block.model.*;
import net.minecraft.client.renderer.color.BlockColors;
-import net.minecraft.client.renderer.color.IBlockColor;
-import net.minecraft.client.renderer.color.IItemColor;
import net.minecraft.client.renderer.color.ItemColors;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
@@ -25,11 +23,10 @@ import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.ResourceLocation;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.client.event.ModelBakeEvent;
import net.minecraftforge.client.event.TextureStitchEvent;
+import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.client.model.pipeline.UnpackedBakedQuad;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.common.model.TRSRTransformation;
@@ -42,25 +39,29 @@ import javax.vecmath.Vector4f;
import java.util.*;
@SideOnly(Side.CLIENT)
-public class GT_IIconProvider_Item_Model implements IBakedModel {
+public class GT_RenderDispatcher implements IBakedModel {
private static final ModelResourceLocation RESOURCE_LOCATION = new ModelResourceLocation("gregtech", "IItemIconProvider");
- private ItemStack itemStack;
- private VertexFormat vertexFormat;
+ private static final ModelResourceLocation RESOURCE_LOCATION_BLOCK_TEXTURE = new ModelResourceLocation("gregtech", "IBlockTextureIconProvider");
+ private static final ModelResourceLocation RESOURCE_LOCATION_BLOCK_ICON = new ModelResourceLocation("gregtech", "IBlockIconProvider");
- public GT_IIconProvider_Item_Model() {
+ private ItemStack itemStack;
+
+ public GT_RenderDispatcher() {
MinecraftForge.EVENT_BUS.register(this);
- setupItemModels();
- this.vertexFormat = DefaultVertexFormats.ITEM;
+ setupModels();
}
@SubscribeEvent
public void onTextureMapStitch(TextureStitchEvent.Pre pre) {
+
ItemColors itemColors = Minecraft.getMinecraft().getItemColors();
+ BlockColors blockColors = Minecraft.getMinecraft().getBlockColors();
System.out.println("Texture map stitch");
- System.out.println("GT_Mod: Starting Item Icon Load Phase");
+ System.out.println("GT_Mod: Starting Icon Load Phase");
GregTech_API.sBlockIcons = pre.getMap();
+
for (Runnable tRunnable : GregTech_API.sGTItemIconload) {
try {
tRunnable.run();
@@ -69,6 +70,7 @@ public class GT_IIconProvider_Item_Model implements IBakedModel {
e.printStackTrace();
}
}
+
for (Runnable tRunnable : GregTech_API.sGTBlockIconload) {
try {
tRunnable.run();
@@ -77,22 +79,41 @@ public class GT_IIconProvider_Item_Model implements IBakedModel {
e.printStackTrace();
}
}
+
for(ResourceLocation itemId : Item.REGISTRY.getKeys()) {
Item item = Item.REGISTRY.getObject(itemId);
+
if(item instanceof IIconRegister) {
((IIconRegister) item).registerIcons(pre.getMap());
}
- if(item instanceof IColorMultiplier) {
- IColorMultiplier colorMultiplier = (IColorMultiplier) item;
+
+ if(item instanceof IItemColorMultiplier) {
+ IItemColorMultiplier colorMultiplier = (IItemColorMultiplier) item;
itemColors.registerItemColorHandler(colorMultiplier::getColorFromItemstack, item);
}
+
+ //we don't need color multiplier for standard blocks, only for ITexture-blocks
+ if(item instanceof ItemBlock && ((ItemBlock) item).block instanceof IBlockTextureProvider) {
+ //ITextures pass color as tint index
+ itemColors.registerItemColorHandler((stack, tintIndex) -> tintIndex, item);
+ }
+
}
for(ResourceLocation blockId : Block.REGISTRY.getKeys()) {
Block block = Block.REGISTRY.getObject(blockId);
+
if(block instanceof IIconRegister) {
((IIconRegister) block).registerIcons(pre.getMap());
}
+
+ //we don't need color multiplier for standard blocks, only for ITexture-blocks
+ if(block instanceof IBlockTextureProvider) {
+ //ITextures pass color as tint index
+ blockColors.registerBlockColorHandler((state, worldIn, pos, tintIndex) -> tintIndex, block);
+ }
+
}
+
System.out.println("GT_Mod: Finished Icon Load Phase");
}
@@ -100,18 +121,50 @@ public class GT_IIconProvider_Item_Model implements IBakedModel {
public void onModelsBake(ModelBakeEvent bakeEvent) {
System.out.println("Models bake");
bakeEvent.getModelRegistry().putObject(RESOURCE_LOCATION, this);
+ bakeEvent.getModelRegistry().putObject(RESOURCE_LOCATION_BLOCK_ICON, GT_BlockRenderer.ICON_PROVIDER);
+ bakeEvent.getModelRegistry().putObject(RESOURCE_LOCATION_BLOCK_TEXTURE, GT_BlockRenderer.TEXTURE_PROVIDER);
+ registerBlockModels();
}
- public static void setupItemModels() {
+ public static void setupModels() {
+
+ ItemModelMesher itemModelMesher = Minecraft.getMinecraft().getRenderItem().getItemModelMesher();
for(ResourceLocation itemId : Item.REGISTRY.getKeys()) {
Item item = Item.REGISTRY.getObject(itemId);
+
if(item instanceof IItemIconProvider || (item instanceof ItemBlock && (
Block.getBlockFromItem(item) instanceof IBlockIconProvider ||
- Block.getBlockFromItem(item) instanceof ITextureBlockIconProvider))) {
+ Block.getBlockFromItem(item) instanceof IBlockTextureProvider))) {
for (int i = 0; i < Short.MAX_VALUE; i++) {
- Minecraft.getMinecraft().getRenderItem().getItemModelMesher().register(item, i, RESOURCE_LOCATION);
+ itemModelMesher.register(item, i, RESOURCE_LOCATION);
}
}
+
+ }
+ }
+
+ public void registerBlockModels() {
+ for(ResourceLocation blockId : Block.REGISTRY.getKeys()) {
+ Block block = Block.REGISTRY.getObject(blockId);
+
+ if(block instanceof IBlockTextureProvider) {
+ ImmutableMap.Builder stateMap = ImmutableMap.builder();
+ for(IBlockState blockState : block.getBlockState().getValidStates()) {
+ stateMap.put(blockState, RESOURCE_LOCATION_BLOCK_TEXTURE);
+ }
+ ImmutableMap immutableStateMap = stateMap.build();
+ ModelLoader.setCustomStateMapper(block, block2 -> immutableStateMap);
+ }
+
+ else if(block instanceof IBlockIconProvider) {
+ ImmutableMap.Builder stateMap = ImmutableMap.builder();
+ for(IBlockState blockState : block.getBlockState().getValidStates()) {
+ stateMap.put(blockState, RESOURCE_LOCATION_BLOCK_ICON);
+ }
+ ImmutableMap immutableStateMap = stateMap.build();
+ ModelLoader.setCustomStateMapper(block, block2 -> immutableStateMap);
+ }
+
}
}
@@ -128,14 +181,52 @@ public class GT_IIconProvider_Item_Model implements IBakedModel {
for(int i = 0; i < iconProvider.getRenderPasses(itemStack) + 1; i++) {
TextureAtlasSprite atlasSprite = iconProvider.getIcon(itemStack, i);
if(atlasSprite != null) {
- resultQuads.addAll(getQuadsForSprite(i, atlasSprite, vertexFormat, Optional.absent()));
+ resultQuads.addAll(getQuadsForSprite(i, atlasSprite, DefaultVertexFormats.ITEM, Optional.absent()));
}
}
return resultQuads;
}
- return Collections.emptyList();
+ return Collections.EMPTY_LIST;
}
+
+ @Override
+ public ItemOverrideList getOverrides() {
+ return new ItemOverrideList(Collections.EMPTY_LIST) {
+ @Override
+ public IBakedModel handleItemState(IBakedModel originalModel, ItemStack stack, World world, EntityLivingBase entity) {
+ if(stack.getItem() instanceof ItemBlock) {
+ Block block = Block.getBlockFromItem(stack.getItem());
+ return GT_BlockRenderer.getItemBlockModel(block, stack, entity);
+ } else {
+ GT_RenderDispatcher.this.itemStack = stack;
+ return GT_RenderDispatcher.this;
+ }
+ }
+ };
+ }
+
+ @Override
+ public ItemCameraTransforms getItemCameraTransforms() {
+ if(itemStack != null) {
+ IItemIconProvider iconProvider = (IItemIconProvider) itemStack.getItem();
+ return iconProvider.isHandheld(itemStack) ?
+ ModelUtil.HANDHELD_TRANSFORMS :
+ ModelUtil.DEFAULT_TRANSFORMS;
+ }
+ return ItemCameraTransforms.DEFAULT;
+ }
+
+ @Override
+ public TextureAtlasSprite getParticleTexture() {
+ if(itemStack != null) {
+ IItemIconProvider iconProvider = (IItemIconProvider) itemStack.getItem();
+ return iconProvider.getIcon(itemStack, 0);
+ }
+ return null;
+ }
+
+
@Override
public boolean isAmbientOcclusion() {
return false;
@@ -151,48 +242,13 @@ public class GT_IIconProvider_Item_Model implements IBakedModel {
return false;
}
- @Override
- public TextureAtlasSprite getParticleTexture() {
- if(itemStack != null) {
- IItemIconProvider iconProvider = (IItemIconProvider) itemStack.getItem();
- return iconProvider.getIcon(itemStack, 0);
- }
- return null;
- }
- @Override
- public ItemCameraTransforms getItemCameraTransforms() {
- if(itemStack != null) {
- IItemIconProvider iconProvider = (IItemIconProvider) itemStack.getItem();
- return iconProvider.isHandheld(itemStack) ? ModelUtil.HANDHELD_TRANSFORMS : ModelUtil.DEFAULT_TRANSFORMS;
- }
- return ItemCameraTransforms.DEFAULT;
- }
- @Override
- public ItemOverrideList getOverrides() {
- return new ItemOverrideList(Collections.emptyList()) {
- @Override
- public IBakedModel handleItemState(IBakedModel originalModel, ItemStack stack, World world, EntityLivingBase entity) {
- if(stack.getItem() instanceof ItemBlock) {
- Block block = Block.getBlockFromItem(stack.getItem());
- if(block instanceof ITextureBlockIconProvider) {
- return BlockRenderer.makeTextureProviderItemblock(stack, entity);
- } else if(block instanceof IBlockIconProvider) {
- return BlockRenderer.makeIconProviderItemblock(stack, entity);
- } else {
- return null;
- }
- }
+ ///////////////////////////////////////////////////////////////////////
+ //ITEM RENDERING STUFF
+ ///////////////////////////////////////////////////////////////////////
- GT_IIconProvider_Item_Model.this.itemStack = stack;
- return GT_IIconProvider_Item_Model.this;
- }
- };
- }
-
- public static ImmutableList getQuadsForSprite(int tint, TextureAtlasSprite sprite, VertexFormat format, Optional transform)
- {
+ public static ImmutableList getQuadsForSprite(int tint, TextureAtlasSprite sprite, VertexFormat format, Optional transform) {
ImmutableList.Builder builder = ImmutableList.builder();
int uMax = sprite.getIconWidth();
@@ -414,6 +470,9 @@ public class GT_IIconProvider_Item_Model implements IBakedModel {
break;
}
}
+
}
+
+
}
diff --git a/src/main/java/gregtech/common/render/IIconRegister.java b/src/main/java/gregtech/common/render/IIconRegister.java
index 4a06ab1d..0dfea849 100644
--- a/src/main/java/gregtech/common/render/IIconRegister.java
+++ b/src/main/java/gregtech/common/render/IIconRegister.java
@@ -4,6 +4,16 @@ import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
+/**
+ * Implement on blocks and items to access texture map and allow icon registration
+ * You can register you own sprite using:
+ *
+ * TextureAtlasSprite icon = textureMap.registerSprite(ResourceLocation)
+ *
+ * @see TextureMap
+ * @see net.minecraft.client.renderer.texture.TextureAtlasSprite
+ * @see gregtech.common.render.items.IItemIconProvider
+ */
public interface IIconRegister {
@SideOnly(Side.CLIENT)
diff --git a/src/main/java/gregtech/common/render/IColorMultiplier.java b/src/main/java/gregtech/common/render/IItemColorMultiplier.java
similarity index 86%
rename from src/main/java/gregtech/common/render/IColorMultiplier.java
rename to src/main/java/gregtech/common/render/IItemColorMultiplier.java
index 8f850e25..291c74bd 100644
--- a/src/main/java/gregtech/common/render/IColorMultiplier.java
+++ b/src/main/java/gregtech/common/render/IItemColorMultiplier.java
@@ -4,7 +4,7 @@ import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
-public interface IColorMultiplier {
+public interface IItemColorMultiplier {
@SideOnly(Side.CLIENT)
int getColorFromItemstack(ItemStack stack, int tintIndex);
diff --git a/src/main/java/gregtech/common/render/newitems/ModelUtil.java b/src/main/java/gregtech/common/render/ModelUtil.java
similarity index 92%
rename from src/main/java/gregtech/common/render/newitems/ModelUtil.java
rename to src/main/java/gregtech/common/render/ModelUtil.java
index bb681e4b..d5f15958 100644
--- a/src/main/java/gregtech/common/render/newitems/ModelUtil.java
+++ b/src/main/java/gregtech/common/render/ModelUtil.java
@@ -1,4 +1,4 @@
-package gregtech.common.render.newitems;
+package gregtech.common.render;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.block.model.ItemCameraTransforms;
@@ -11,6 +11,9 @@ import net.minecraftforge.fml.relauncher.SideOnly;
import java.io.IOException;
import java.io.InputStreamReader;
+/**
+ * Simple util for gathering transforms from external model jsons
+ */
@SideOnly(Side.CLIENT)
public class ModelUtil {
diff --git a/src/main/java/gregtech/common/render/RenderUtil.java b/src/main/java/gregtech/common/render/RenderUtil.java
new file mode 100644
index 00000000..025057f6
--- /dev/null
+++ b/src/main/java/gregtech/common/render/RenderUtil.java
@@ -0,0 +1,64 @@
+package gregtech.common.render;
+
+import net.minecraft.client.renderer.block.model.*;
+import net.minecraft.client.renderer.texture.TextureAtlasSprite;
+import net.minecraft.util.EnumFacing;
+import net.minecraftforge.fml.relauncher.Side;
+import net.minecraftforge.fml.relauncher.SideOnly;
+import org.lwjgl.util.vector.Vector3f;
+
+/**
+ * Util for easy rendering quads based on side and with custom size
+ */
+@SideOnly(Side.CLIENT)
+public class RenderUtil {
+
+ private static FaceBakery FACE_BAKERY = new FaceBakery();
+ private static BlockFaceUV DEFAULT_UV = new BlockFaceUV(new float[] {0F, 0F, 16F, 16F}, 0);
+
+ public static BakedQuad renderSide(TextureAtlasSprite sprite, EnumFacing side, float offset, int color) {
+ switch (side) {
+ case DOWN:
+ return renderQuadCustom(0F, 0F - offset, 0F, 16F, 16F, sprite, side, color);
+ case UP:
+ return renderQuadCustom(0F, 16F + offset, 0F, 16F, 16F, sprite, side, color);
+ case WEST:
+ return renderQuadCustom(0F - offset, 0F, 0F, 16F, 16F, sprite, side, color);
+ case EAST:
+ return renderQuadCustom(16F + offset, 0F, 0F, 16F, 16F, sprite, side, color);
+ case NORTH:
+ return renderQuadCustom(0F, 0F, 0F - offset, 16F, 16F, sprite, side, color);
+ case SOUTH:
+ return renderQuadCustom(0F, 0F, 16F + offset, 16F, 16F, sprite, side, color);
+ default:
+ throw new IllegalArgumentException();
+ }
+ }
+
+ public static BakedQuad renderQuadCustom(float x, float y, float z, float width, float height, TextureAtlasSprite sprite, EnumFacing side, int color) {
+ Vector3f from = new Vector3f(x, y, z);
+ Vector3f to;
+ switch (side) {
+ case DOWN:
+ case UP:
+ to = new Vector3f(x + width, y, z + height);
+ break;
+ case WEST:
+ case EAST:
+ to = new Vector3f(x, y + width, z + height);
+ break;
+ case NORTH:
+ case SOUTH:
+ to = new Vector3f(x + width, y + height, z);
+ break;
+ default:
+ to = new Vector3f(x, y, z);
+ }
+
+ return FACE_BAKERY.makeBakedQuad(from, to,
+ new BlockPartFace(side, color, sprite.getIconName(), DEFAULT_UV),
+ sprite, side, ModelRotation.X0_Y0, null, false, true);
+ }
+
+
+}
diff --git a/src/main/java/gregtech/common/render/newblocks/IBlockIconProvider.java b/src/main/java/gregtech/common/render/blocks/IBlockIconProvider.java
similarity index 66%
rename from src/main/java/gregtech/common/render/newblocks/IBlockIconProvider.java
rename to src/main/java/gregtech/common/render/blocks/IBlockIconProvider.java
index 87d87ed6..fc9e03f7 100644
--- a/src/main/java/gregtech/common/render/newblocks/IBlockIconProvider.java
+++ b/src/main/java/gregtech/common/render/blocks/IBlockIconProvider.java
@@ -1,4 +1,4 @@
-package gregtech.common.render.newblocks;
+package gregtech.common.render.blocks;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.entity.player.EntityPlayer;
@@ -9,6 +9,15 @@ import net.minecraft.world.IBlockAccess;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
+/**
+ * Implement on simple blocks which have only 1 sprite on each side
+ * For simple behavior just implement on block class and override {@link IBlockIconProvider#getIcon(EnumFacing, int)}
+ * If you care about {@link BlockPos} or @{@link ItemStack}, you can override getIcon based on them
+ *
+ * @see gregtech.common.render.IIconRegister
+ * @see TextureAtlasSprite
+ * @see IBlockIconProvider
+ */
public interface IBlockIconProvider {
@SideOnly(Side.CLIENT)
diff --git a/src/main/java/gregtech/common/render/blocks/IBlockTextureProvider.java b/src/main/java/gregtech/common/render/blocks/IBlockTextureProvider.java
new file mode 100644
index 00000000..3ecdcf07
--- /dev/null
+++ b/src/main/java/gregtech/common/render/blocks/IBlockTextureProvider.java
@@ -0,0 +1,30 @@
+package gregtech.common.render.blocks;
+
+import gregtech.api.interfaces.ITexture;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.EnumFacing;
+import net.minecraft.util.math.BlockPos;
+import net.minecraft.world.World;
+import net.minecraftforge.common.property.IExtendedBlockState;
+import net.minecraftforge.fml.relauncher.Side;
+import net.minecraftforge.fml.relauncher.SideOnly;
+
+/**
+ * Implement on blocks which care about {@link BlockPos} or {@link ItemStack} AND
+ * have custom rendering behaviour defined in {@link ITexture}s
+ *
+ * @see ITexture
+ * @see gregtech.common.render.IIconRegister
+ * @see IBlockIconProvider
+ */
+public interface IBlockTextureProvider {
+
+
+ @SideOnly(Side.CLIENT)
+ ITexture[] getTexture(World world, BlockPos blockPos, IExtendedBlockState blockState, EnumFacing side);
+
+ @SideOnly(Side.CLIENT)
+ ITexture[] getItemblockTexture(EntityPlayer player, ItemStack itemStack, EnumFacing side);
+
+}
diff --git a/src/main/java/gregtech/common/render/GT_CapeRenderer.java b/src/main/java/gregtech/common/render/entity/GT_CapeRenderer.java
similarity index 97%
rename from src/main/java/gregtech/common/render/GT_CapeRenderer.java
rename to src/main/java/gregtech/common/render/entity/GT_CapeRenderer.java
index abc9bea0..39976872 100644
--- a/src/main/java/gregtech/common/render/GT_CapeRenderer.java
+++ b/src/main/java/gregtech/common/render/entity/GT_CapeRenderer.java
@@ -1,90 +1,90 @@
-package gregtech.common.render;
-
-import net.minecraft.client.Minecraft;
-import net.minecraft.client.renderer.entity.RenderPlayer;
-import net.minecraft.util.ResourceLocation;
-import net.minecraftforge.client.event.RenderPlayerEvent;
-import net.minecraftforge.fml.relauncher.Side;
-import net.minecraftforge.fml.relauncher.SideOnly;
-
-import java.util.Collection;
-
-@SideOnly(Side.CLIENT)
-public class GT_CapeRenderer extends RenderPlayer {
-
- private final ResourceLocation[] mCapes = {new ResourceLocation("gregtech:textures/BrainTechCape.png"), new ResourceLocation("gregtech:textures/GregTechCape.png"), new ResourceLocation("gregtech:textures/MrBrainCape.png"), new ResourceLocation("gregtech:textures/GregoriusCape.png")};
- private final Collection mCapeList;
-
- public GT_CapeRenderer(Collection aCapeList) {
- super(Minecraft.getMinecraft().getRenderManager());
- this.mCapeList = aCapeList;
- }
-
- public void receiveRenderSpecialsEvent(RenderPlayerEvent.Specials.Pre aEvent) {
- /*AbstractClientPlayer aPlayer = (AbstractClientPlayer) aEvent.getEntityPlayer();
- if (GT_Utility.getFullInvisibility(aPlayer)) {
- aEvent.setCanceled(true);
- return;
- }
- float aPartialTicks = aEvent.partialRenderTick;
- if (aPlayer.isInvisible()) {
- return;
- }
- if (GT_Utility.getPotion(aPlayer, Integer.valueOf(Potion.invisibility.id).intValue())) {
- return;
- }
- try {
- ResourceLocation tResource = null;
- if (aPlayer.getDisplayName().equalsIgnoreCase("Friedi4321")) {
- tResource = this.mCapes[0];
- }
- if (this.mCapeList.contains(aPlayer.getDisplayName().toLowerCase())) {
- tResource = this.mCapes[1];
- }
- if (aPlayer.getDisplayName().equalsIgnoreCase("Mr_Brain")) {
- tResource = this.mCapes[2];
- }
- if (aPlayer.getDisplayName().equalsIgnoreCase("GregoriusT")) {
- tResource = this.mCapes[3];
- }
- if ((tResource != null) && (!aPlayer.getHideCape())) {
- bindTexture(tResource);
- GL11.glPushMatrix();
- GL11.glTranslatef(0.0F, 0.0F, 0.125F);
- double d0 = aPlayer.field_71091_bM + (aPlayer.field_71094_bP - aPlayer.field_71091_bM) * aPartialTicks - (aPlayer.prevPosX + (aPlayer.posX - aPlayer.prevPosX) * aPartialTicks);
- double d1 = aPlayer.field_71096_bN + (aPlayer.field_71095_bQ - aPlayer.field_71096_bN) * aPartialTicks - (aPlayer.prevPosY + (aPlayer.posY - aPlayer.prevPosY) * aPartialTicks);
- double d2 = aPlayer.field_71097_bO + (aPlayer.field_71085_bR - aPlayer.field_71097_bO) * aPartialTicks - (aPlayer.prevPosZ + (aPlayer.posZ - aPlayer.prevPosZ) * aPartialTicks);
- float f6 = aPlayer.prevRenderYawOffset + (aPlayer.renderYawOffset - aPlayer.prevRenderYawOffset) * aPartialTicks;
- double d3 = MathHelper.sin(f6 * 3.141593F / 180.0F);
- double d4 = -MathHelper.cos(f6 * 3.141593F / 180.0F);
- float f7 = (float) d1 * 10.0F;
- float f8 = (float) (d0 * d3 + d2 * d4) * 100.0F;
- float f9 = (float) (d0 * d4 - d2 * d3) * 100.0F;
- if (f7 < -6.0F) {
- f7 = -6.0F;
- }
- if (f7 > 32.0F) {
- f7 = 32.0F;
- }
- if (f8 < 0.0F) {
- f8 = 0.0F;
- }
- float f10 = aPlayer.prevCameraYaw + (aPlayer.cameraYaw - aPlayer.prevCameraYaw) * aPartialTicks;
- f7 += MathHelper.sin((aPlayer.prevDistanceWalkedModified + (aPlayer.distanceWalkedModified - aPlayer.prevDistanceWalkedModified) * aPartialTicks) * 6.0F) * 32.0F * f10;
- if (aPlayer.isSneaking()) {
- f7 += 25.0F;
- }
- GL11.glRotatef(6.0F + f8 / 2.0F + f7, 1.0F, 0.0F, 0.0F);
- GL11.glRotatef(f9 / 2.0F, 0.0F, 0.0F, 1.0F);
- GL11.glRotatef(-f9 / 2.0F, 0.0F, 1.0F, 0.0F);
- GL11.glRotatef(180.0F, 0.0F, 1.0F, 0.0F);
- ((ModelBiped) this.mainModel).renderCloak(0.0625F);
- GL11.glPopMatrix();
- }
- } catch (Throwable e) {
- if (GT_Values.D1) {
- e.printStackTrace(GT_Log.err);
- }
- }*/
- }
-}
+package gregtech.common.render.entity;
+
+import net.minecraft.client.Minecraft;
+import net.minecraft.client.renderer.entity.RenderPlayer;
+import net.minecraft.util.ResourceLocation;
+import net.minecraftforge.client.event.RenderPlayerEvent;
+import net.minecraftforge.fml.relauncher.Side;
+import net.minecraftforge.fml.relauncher.SideOnly;
+
+import java.util.Collection;
+
+@SideOnly(Side.CLIENT)
+public class GT_CapeRenderer extends RenderPlayer {
+
+ private final ResourceLocation[] mCapes = {new ResourceLocation("gregtech:textures/BrainTechCape.png"), new ResourceLocation("gregtech:textures/GregTechCape.png"), new ResourceLocation("gregtech:textures/MrBrainCape.png"), new ResourceLocation("gregtech:textures/GregoriusCape.png")};
+ private final Collection mCapeList;
+
+ public GT_CapeRenderer(Collection aCapeList) {
+ super(Minecraft.getMinecraft().getRenderManager());
+ this.mCapeList = aCapeList;
+ }
+
+ public void receiveRenderSpecialsEvent(RenderPlayerEvent.Specials.Pre aEvent) {
+ /*AbstractClientPlayer aPlayer = (AbstractClientPlayer) aEvent.getEntityPlayer();
+ if (GT_Utility.getFullInvisibility(aPlayer)) {
+ aEvent.setCanceled(true);
+ return;
+ }
+ float aPartialTicks = aEvent.partialRenderTick;
+ if (aPlayer.isInvisible()) {
+ return;
+ }
+ if (GT_Utility.getPotion(aPlayer, Integer.valueOf(Potion.invisibility.id).intValue())) {
+ return;
+ }
+ try {
+ ResourceLocation tResource = null;
+ if (aPlayer.getDisplayName().equalsIgnoreCase("Friedi4321")) {
+ tResource = this.mCapes[0];
+ }
+ if (this.mCapeList.contains(aPlayer.getDisplayName().toLowerCase())) {
+ tResource = this.mCapes[1];
+ }
+ if (aPlayer.getDisplayName().equalsIgnoreCase("Mr_Brain")) {
+ tResource = this.mCapes[2];
+ }
+ if (aPlayer.getDisplayName().equalsIgnoreCase("GregoriusT")) {
+ tResource = this.mCapes[3];
+ }
+ if ((tResource != null) && (!aPlayer.getHideCape())) {
+ bindTexture(tResource);
+ GL11.glPushMatrix();
+ GL11.glTranslatef(0.0F, 0.0F, 0.125F);
+ double d0 = aPlayer.field_71091_bM + (aPlayer.field_71094_bP - aPlayer.field_71091_bM) * aPartialTicks - (aPlayer.prevPosX + (aPlayer.posX - aPlayer.prevPosX) * aPartialTicks);
+ double d1 = aPlayer.field_71096_bN + (aPlayer.field_71095_bQ - aPlayer.field_71096_bN) * aPartialTicks - (aPlayer.prevPosY + (aPlayer.posY - aPlayer.prevPosY) * aPartialTicks);
+ double d2 = aPlayer.field_71097_bO + (aPlayer.field_71085_bR - aPlayer.field_71097_bO) * aPartialTicks - (aPlayer.prevPosZ + (aPlayer.posZ - aPlayer.prevPosZ) * aPartialTicks);
+ float f6 = aPlayer.prevRenderYawOffset + (aPlayer.renderYawOffset - aPlayer.prevRenderYawOffset) * aPartialTicks;
+ double d3 = MathHelper.sin(f6 * 3.141593F / 180.0F);
+ double d4 = -MathHelper.cos(f6 * 3.141593F / 180.0F);
+ float f7 = (float) d1 * 10.0F;
+ float f8 = (float) (d0 * d3 + d2 * d4) * 100.0F;
+ float f9 = (float) (d0 * d4 - d2 * d3) * 100.0F;
+ if (f7 < -6.0F) {
+ f7 = -6.0F;
+ }
+ if (f7 > 32.0F) {
+ f7 = 32.0F;
+ }
+ if (f8 < 0.0F) {
+ f8 = 0.0F;
+ }
+ float f10 = aPlayer.prevCameraYaw + (aPlayer.cameraYaw - aPlayer.prevCameraYaw) * aPartialTicks;
+ f7 += MathHelper.sin((aPlayer.prevDistanceWalkedModified + (aPlayer.distanceWalkedModified - aPlayer.prevDistanceWalkedModified) * aPartialTicks) * 6.0F) * 32.0F * f10;
+ if (aPlayer.isSneaking()) {
+ f7 += 25.0F;
+ }
+ GL11.glRotatef(6.0F + f8 / 2.0F + f7, 1.0F, 0.0F, 0.0F);
+ GL11.glRotatef(f9 / 2.0F, 0.0F, 0.0F, 1.0F);
+ GL11.glRotatef(-f9 / 2.0F, 0.0F, 1.0F, 0.0F);
+ GL11.glRotatef(180.0F, 0.0F, 1.0F, 0.0F);
+ ((ModelBiped) this.mainModel).renderCloak(0.0625F);
+ GL11.glPopMatrix();
+ }
+ } catch (Throwable e) {
+ if (GT_Values.D1) {
+ e.printStackTrace(GT_Log.err);
+ }
+ }*/
+ }
+}
diff --git a/src/main/java/gregtech/common/render/GT_Renderer_Entity_Arrow.java b/src/main/java/gregtech/common/render/entity/GT_Renderer_Entity_Arrow.java
similarity index 94%
rename from src/main/java/gregtech/common/render/GT_Renderer_Entity_Arrow.java
rename to src/main/java/gregtech/common/render/entity/GT_Renderer_Entity_Arrow.java
index 929cd94d..c5bbd504 100644
--- a/src/main/java/gregtech/common/render/GT_Renderer_Entity_Arrow.java
+++ b/src/main/java/gregtech/common/render/entity/GT_Renderer_Entity_Arrow.java
@@ -1,28 +1,28 @@
-package gregtech.common.render;
-
-import net.minecraft.client.renderer.entity.RenderManager;
-import net.minecraft.entity.projectile.EntityArrow;
-import net.minecraftforge.fml.client.registry.RenderingRegistry;
-import net.minecraft.client.renderer.entity.RenderArrow;
-import net.minecraft.entity.Entity;
-import net.minecraft.util.ResourceLocation;
-import net.minecraftforge.fml.relauncher.Side;
-import net.minecraftforge.fml.relauncher.SideOnly;
-
-@SideOnly(Side.CLIENT)
-public class GT_Renderer_Entity_Arrow extends RenderArrow {
-
- private final ResourceLocation mTexture;
-
- public GT_Renderer_Entity_Arrow(Class extends Entity> aArrowClass, String aTextureName, RenderManager renderManager) {
- super(renderManager);
- this.mTexture = new ResourceLocation("gregtech:textures/entity/" + aTextureName + ".png");
- RenderingRegistry.registerEntityRenderingHandler(aArrowClass, this);
- }
-
- @Override
- protected ResourceLocation getEntityTexture(Entity entity) {
- return this.mTexture;
- }
-
-}
+package gregtech.common.render.entity;
+
+import net.minecraft.client.renderer.entity.RenderManager;
+import net.minecraft.entity.projectile.EntityArrow;
+import net.minecraftforge.fml.client.registry.RenderingRegistry;
+import net.minecraft.client.renderer.entity.RenderArrow;
+import net.minecraft.entity.Entity;
+import net.minecraft.util.ResourceLocation;
+import net.minecraftforge.fml.relauncher.Side;
+import net.minecraftforge.fml.relauncher.SideOnly;
+
+@SideOnly(Side.CLIENT)
+public class GT_Renderer_Entity_Arrow extends RenderArrow {
+
+ private final ResourceLocation mTexture;
+
+ public GT_Renderer_Entity_Arrow(Class extends Entity> aArrowClass, String aTextureName, RenderManager renderManager) {
+ super(renderManager);
+ this.mTexture = new ResourceLocation("gregtech:textures/entity/" + aTextureName + ".png");
+ RenderingRegistry.registerEntityRenderingHandler(aArrowClass, this);
+ }
+
+ @Override
+ protected ResourceLocation getEntityTexture(Entity entity) {
+ return this.mTexture;
+ }
+
+}
diff --git a/src/main/java/gregtech/common/render/newitems/IItemIconContainerProvider.java b/src/main/java/gregtech/common/render/items/IItemIconContainerProvider.java
similarity index 83%
rename from src/main/java/gregtech/common/render/newitems/IItemIconContainerProvider.java
rename to src/main/java/gregtech/common/render/items/IItemIconContainerProvider.java
index a1f40098..7343c666 100644
--- a/src/main/java/gregtech/common/render/newitems/IItemIconContainerProvider.java
+++ b/src/main/java/gregtech/common/render/items/IItemIconContainerProvider.java
@@ -1,4 +1,4 @@
-package gregtech.common.render.newitems;
+package gregtech.common.render.items;
import gregtech.api.interfaces.IIconContainer;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
@@ -6,6 +6,12 @@ import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
+/**
+ * Simple multilayer implementation of {@link IItemIconProvider} for {@link IIconContainer} icons
+ *
+ * @see IIconContainer
+ * @see IItemIconProvider
+ */
@SideOnly(Side.CLIENT)
public interface IItemIconContainerProvider extends IItemIconProvider {
diff --git a/src/main/java/gregtech/common/render/items/IItemIconProvider.java b/src/main/java/gregtech/common/render/items/IItemIconProvider.java
new file mode 100644
index 00000000..a28caf82
--- /dev/null
+++ b/src/main/java/gregtech/common/render/items/IItemIconProvider.java
@@ -0,0 +1,43 @@
+package gregtech.common.render.items;
+
+import net.minecraft.client.renderer.texture.TextureAtlasSprite;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.fml.relauncher.Side;
+import net.minecraftforge.fml.relauncher.SideOnly;
+
+/**
+ * Implement on items which need either simple or advanced rendering
+ * If you need simple behavior, implement {@link IItemIconProvider#getIcon(ItemStack, int)}
+ *
+ * If you need multilayer, you can override {@link IItemIconProvider#getRenderPasses(ItemStack)}
+ * If you need handheld item, return true in {@link IItemIconProvider#isHandheld(ItemStack)}
+ *
+ * @see gregtech.common.render.IIconRegister
+ * @see TextureAtlasSprite
+ * @see IItemIconContainerProvider
+ */
+public interface IItemIconProvider {
+
+ @SideOnly(Side.CLIENT)
+ TextureAtlasSprite getIcon(ItemStack stack, int pass);
+
+ /**
+ * Returns amount of additional render passes needed for item
+ * @param stack item stack
+ * @return 0 if dont need multilayer rendering, amount of layers otherwise
+ */
+ @SideOnly(Side.CLIENT)
+ default int getRenderPasses(ItemStack stack) {
+ return 0;
+ }
+
+ /**
+ * @param stack item stack
+ * @return true in item is handheld
+ */
+ @SideOnly(Side.CLIENT)
+ default boolean isHandheld(ItemStack stack) {
+ return false;
+ }
+
+}
diff --git a/src/main/java/gregtech/common/render/newblocks/ITextureBlockIconProvider.java b/src/main/java/gregtech/common/render/newblocks/ITextureBlockIconProvider.java
deleted file mode 100644
index 9f993111..00000000
--- a/src/main/java/gregtech/common/render/newblocks/ITextureBlockIconProvider.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package gregtech.common.render.newblocks;
-
-import gregtech.api.interfaces.ITexture;
-import net.minecraft.entity.player.EntityPlayer;
-import net.minecraft.item.ItemStack;
-import net.minecraft.util.EnumFacing;
-import net.minecraft.util.math.BlockPos;
-import net.minecraft.world.World;
-import net.minecraftforge.common.property.IExtendedBlockState;
-import net.minecraftforge.fml.relauncher.Side;
-import net.minecraftforge.fml.relauncher.SideOnly;
-
-public interface ITextureBlockIconProvider {
-
- @SideOnly(Side.CLIENT)
- public ITexture[] getTexture(World world, BlockPos blockPos, IExtendedBlockState blockState, EnumFacing side);
-
- @SideOnly(Side.CLIENT)
- public ITexture[] getItemblockTexture(EntityPlayer player, ItemStack itemStack, EnumFacing side);
-
-}
diff --git a/src/main/java/gregtech/common/render/newblocks/RenderUtil.java b/src/main/java/gregtech/common/render/newblocks/RenderUtil.java
deleted file mode 100644
index dfb353d5..00000000
--- a/src/main/java/gregtech/common/render/newblocks/RenderUtil.java
+++ /dev/null
@@ -1,169 +0,0 @@
-package gregtech.common.render.newblocks;
-
-import net.minecraft.client.renderer.block.model.BakedQuad;
-import net.minecraft.client.renderer.texture.TextureAtlasSprite;
-import net.minecraft.client.renderer.vertex.VertexFormat;
-import net.minecraft.util.EnumFacing;
-import net.minecraftforge.client.model.pipeline.UnpackedBakedQuad;
-import net.minecraftforge.fml.relauncher.Side;
-import net.minecraftforge.fml.relauncher.SideOnly;
-
-@SideOnly(Side.CLIENT)
-public class RenderUtil {
-
- public static BakedQuad renderSide(VertexFormat vertexFormat, TextureAtlasSprite sprite, EnumFacing side, int tint, float offset, int color, boolean hideSiding) {
- switch (side) {
- case NORTH:
- return buildQuad(vertexFormat, hideSiding ? null : EnumFacing.NORTH, sprite, tint,
- 0, 0, -offset, sprite.getMaxU(), sprite.getMaxV(),
- 0, 1, -offset, sprite.getMaxU(), sprite.getMinV(),
- 1, 1, -offset, sprite.getMinU(), sprite.getMinV(),
- 1, 0, -offset, sprite.getMinU(), sprite.getMaxV(),
- color);
- case SOUTH:
- return buildQuad(vertexFormat, hideSiding ? null : EnumFacing.SOUTH, sprite, tint,
- 1, 0, 1 + offset, sprite.getMinU(), sprite.getMaxV(),
- 1, 1, 1 + offset, sprite.getMinU(), sprite.getMinV(),
- 0, 1, 1 + offset, sprite.getMaxU(), sprite.getMinV(),
- 0, 0, 1 + offset, sprite.getMaxU(), sprite.getMaxV(),
- color);
- case WEST:
- return buildQuad(vertexFormat, hideSiding ? null : EnumFacing.WEST, sprite, tint,
- -offset, 0, 1, sprite.getMaxU(), sprite.getMaxV(),
- -offset, 1, 1 , sprite.getMaxU(), sprite.getMinV(),
- -offset, 1, 0, sprite.getMinU(), sprite.getMinV(),
- -offset, 0, 0, sprite.getMinU(), sprite.getMaxV(),
- color);
- case EAST:
- return buildQuad(vertexFormat, hideSiding ? null : EnumFacing.EAST, sprite, tint,
- 1 + offset, 0, 0, sprite.getMaxU(), sprite.getMaxV(),
- 1 + offset, 1, 0 , sprite.getMaxU(), sprite.getMinV(),
- 1 + offset, 1, 1, sprite.getMinU(), sprite.getMinV(),
- 1 + offset, 0, 1, sprite.getMinU(), sprite.getMaxV(),
- color);
- case DOWN:
- return buildQuad(vertexFormat, hideSiding ? null : EnumFacing.DOWN, sprite, tint,
- 0, -offset, 0, sprite.getMinU(), sprite.getMinV(),
- 1, -offset, 0, sprite.getMaxU(), sprite.getMinV(),
- 1, -offset, 1, sprite.getMaxU(), sprite.getMaxV(),
- 0, -offset, 1, sprite.getMinU(), sprite.getMaxV(),
- color);
- case UP:
- return buildQuad(vertexFormat, hideSiding ? null : EnumFacing.UP, sprite, tint,
- 0, 1 + offset, 1, sprite.getMinU(), sprite.getMaxV(),
- 1, 1 + offset, 1, sprite.getMaxU(), sprite.getMaxV(),
- 1, 1 + offset, 0, sprite.getMaxU(), sprite.getMinV(),
- 0, 1 + offset, 0, sprite.getMinU(), sprite.getMinV(),
- color);
-
- default:
- System.out.println("Can't render side " + side);
- throw new IllegalArgumentException();
- }
- }
-
- public static BakedQuad renderQuadCustom(float x, float y, float z, float width, float height, VertexFormat vertexFormat, TextureAtlasSprite sprite, EnumFacing side, int tint, int color, boolean hide) {
- //float spriteCut = Math.min((width + height) / 2.0F, 1.0F); TODO
- switch (side) {
- case NORTH:
- return buildQuad(vertexFormat, EnumFacing.NORTH, sprite, tint,
- x, y, z, sprite.getMaxU(), sprite.getMaxV(),
- x, y + height, z, sprite.getMaxU(), sprite.getMinV(),
- x + width, y + height, z, sprite.getMinU(), sprite.getMinV(),
- x + width, y, z, sprite.getMinU(), sprite.getMaxV(),
- color);
- case SOUTH:
- return buildQuad(vertexFormat, EnumFacing.SOUTH, sprite, tint,
- x + width, y, z, sprite.getMinU(), sprite.getMaxV(),
- x + width, y + height, z, sprite.getMinU(), sprite.getMinV(),
- x, y + height, z, sprite.getMaxU(), sprite.getMinV(),
- x, y, z, sprite.getMaxU(), sprite.getMaxV(),
- color);
- case WEST:
- return buildQuad(vertexFormat, EnumFacing.WEST, sprite, tint,
- x, y, z + height, sprite.getMaxU(), sprite.getMaxV(),
- x, y + width, z + height, sprite.getMaxU(), sprite.getMinV(),
- x, y + width, z, sprite.getMinU(), sprite.getMinV(),
- x, y, z, sprite.getMinU(), sprite.getMaxV(),
- color);
- case EAST:
- return buildQuad(vertexFormat, EnumFacing.EAST, sprite, tint,
- x, y, z, sprite.getMaxU(), sprite.getMaxV(),
- x, y + width, z, sprite.getMaxU(), sprite.getMinV(),
- x, y + width, z + height, sprite.getMinU(), sprite.getMinV(),
- x, y, z + height, sprite.getMinU(), sprite.getMaxV(),
- color);
- case DOWN:
- return buildQuad(vertexFormat, EnumFacing.DOWN, sprite, tint,
- x, y, z, sprite.getMinU(), sprite.getMinV(),
- x + width, y, z, sprite.getMaxU(), sprite.getMinV(),
- x + width, y, z + height, sprite.getMaxU(), sprite.getMaxV(),
- x, y, z + height, sprite.getMinU(), sprite.getMaxV(),
- color);
- case UP:
- return buildQuad(vertexFormat, hide ? null : EnumFacing.UP, sprite, tint,
- x, y, z + height, sprite.getMinU(), sprite.getMaxV(),
- x + width, y, z + height, sprite.getMaxU(), sprite.getMaxV(),
- x + width, y, z, sprite.getMaxU(), sprite.getMinV(),
- x, y, z, sprite.getMinU(), sprite.getMinV(),
- color);
-
- default:
- System.out.println("Can't render side " + side);
- return null;
- }
- }
-
- private static BakedQuad buildQuad(
- VertexFormat format, EnumFacing side, TextureAtlasSprite sprite, int tint,
- float x0, float y0, float z0, float u0, float v0,
- float x1, float y1, float z1, float u1, float v1,
- float x2, float y2, float z2, float u2, float v2,
- float x3, float y3, float z3, float u3, float v3, int color)
- {
- UnpackedBakedQuad.Builder builder = new UnpackedBakedQuad.Builder(format);
- builder.setQuadTint(tint);
- builder.setQuadOrientation(side);
- builder.setTexture(sprite);
-
- putVertex(builder, format, side, x0, y0, z0, u0, v0, color);
- putVertex(builder, format, side, x1, y1, z1, u1, v1, color);
- putVertex(builder, format, side, x2, y2, z2, u2, v2, color);
- putVertex(builder, format, side, x3, y3, z3, u3, v3, color);
- return builder.build();
- }
-
- private static void putVertex(UnpackedBakedQuad.Builder builder, VertexFormat format, EnumFacing side, float x, float y, float z, float u, float v, int color) {
- for(int e = 0; e < format.getElementCount(); e++)
- {
- switch(format.getElement(e).getUsage())
- {
- case POSITION:
- builder.put(e, x, y, z, 1);
- break;
- case COLOR:
- if(color == -1) {
- builder.put(e, 1f, 1f, 1f, 1f);
- } else {
- builder.put(e,
- ((color >> 16) & 0xFF) / 255.0F,
- ((color >> 8) & 0xFF) / 255.0F,
- ((color) & 0xFF) / 255.0F, 1f);
- }
- break;
- case UV: if(format.getElement(e).getIndex() == 0)
- {
- builder.put(e, u, v, 0f, 1f);
- break;
- }
- case NORMAL:
- builder.put(e, 0.0F, 0.0F, 1.0F, 0.0F);
- break;
- default:
- builder.put(e);
- break;
- }
- }
- }
-
-}
diff --git a/src/main/java/gregtech/common/render/newitems/IItemIconProvider.java b/src/main/java/gregtech/common/render/newitems/IItemIconProvider.java
deleted file mode 100644
index 6b6cfce1..00000000
--- a/src/main/java/gregtech/common/render/newitems/IItemIconProvider.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package gregtech.common.render.newitems;
-
-import net.minecraft.client.renderer.texture.TextureAtlasSprite;
-import net.minecraft.item.ItemStack;
-import net.minecraftforge.fml.relauncher.Side;
-import net.minecraftforge.fml.relauncher.SideOnly;
-
-public interface IItemIconProvider {
-
- @SideOnly(Side.CLIENT)
- TextureAtlasSprite getIcon(ItemStack stack, int pass);
-
- @SideOnly(Side.CLIENT)
- default int getRenderPasses(ItemStack stack) {
- return 0;
- }
-
- @SideOnly(Side.CLIENT)
- default boolean isHandheld(ItemStack stack) {
- return false;
- }
-
-}