Pipes and cables rendering

This commit is contained in:
Dragon2488 2016-09-18 00:02:46 +07:00
parent a5d2eaffa3
commit d94f16ea07
17 changed files with 337 additions and 139 deletions

View file

@ -35,7 +35,7 @@ public enum Dyes implements IColorModulationContainer {
/** /**
* Additional Colors only used for direct Color referencing * Additional Colors only used for direct Color referencing
*/ */
CABLE_INSULATION(-1, 64, 64, 64, "Cable Insulation"), INSULATION(-1, 64, 64, 64, "Cable Insulation"),
CONSTRUCTION_FOAM(-1, 64, 64, 64, "Construction Foam"), CONSTRUCTION_FOAM(-1, 64, 64, 64, "Construction Foam"),
MACHINE_METAL(-1, 230, 230, 255, "Machine Metal"); MACHINE_METAL(-1, 230, 230, 255, "Machine Metal");
@ -67,6 +67,10 @@ public enum Dyes implements IColorModulationContainer {
return aDefaultModulation; return aDefaultModulation;
} }
public static short[] getOrDef(int get, Dyes def) {
return getModulation(get, def);
}
public static Dyes get(String aColor) { public static Dyes get(String aColor) {
Object tObject = GT_Utility.getFieldContent(Dyes.class, aColor, false, false); Object tObject = GT_Utility.getFieldContent(Dyes.class, aColor, false, false);
if (tObject != null && tObject instanceof Dyes) return (Dyes) tObject; if (tObject != null && tObject instanceof Dyes) return (Dyes) tObject;

View file

@ -318,11 +318,6 @@ public interface IMetaTileEntity extends ISidedInventory, IFluidTank, IFluidHand
*/ */
public String[] getDescription(); public String[] getDescription();
/**
* In case the Output Voltage varies.
*/
public String getSpecialVoltageToolTip();
/** /**
* Icon of the Texture. If this returns null then it falls back to getTextureIndex. * Icon of the Texture. If this returns null then it falls back to getTextureIndex.
* *
@ -334,11 +329,6 @@ public interface IMetaTileEntity extends ISidedInventory, IFluidTank, IFluidHand
*/ */
public ITexture[] getTexture(@Nullable IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aFacing, byte aColorIndex, boolean aActive, boolean aRedstone); public ITexture[] getTexture(@Nullable IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aFacing, byte aColorIndex, boolean aActive, boolean aRedstone);
/**
* The Textures used for the Item rendering. Return null if you want the regular 3D Block Rendering.
*/
//public ITexture[] getItemTexture(ItemStack aStack);
/** /**
* Register Icons here. This gets called when the Icons get initialized by the Base Block * Register Icons here. This gets called when the Icons get initialized by the Base Block
* Best is you put your Icons in a static Array for quick and easy access without relying on the MetaTileList. * Best is you put your Icons in a static Array for quick and easy access without relying on the MetaTileList.
@ -348,18 +338,6 @@ public interface IMetaTileEntity extends ISidedInventory, IFluidTank, IFluidHand
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public void registerIcons(TextureMap aBlockIconRegister); public void registerIcons(TextureMap aBlockIconRegister);
/**
* @return true if you override the Rendering.
*/
@SideOnly(Side.CLIENT)
public boolean renderInInventory(Block aBlock, int aMeta);
/**
* @return true if you override the Rendering.
*/
@SideOnly(Side.CLIENT)
public boolean renderInWorld(IBlockAccess aWorld, int aX, int aY, int aZ, Block aBlock);
/** /**
* Gets the Output for the comparator on the given Side * Gets the Output for the comparator on the given Side
*/ */

View file

@ -1,6 +1,7 @@
package gregtech.api.items; package gregtech.api.items;
import gregtech.api.util.GT_LanguageManager; import gregtech.api.util.GT_LanguageManager;
import gregtech.common.blocks.GT_Block_Machines;
import gregtech.common.blocks.UnlistedBlockPosProperty; import gregtech.common.blocks.UnlistedBlockPosProperty;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
@ -13,6 +14,7 @@ import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockRenderLayer; import net.minecraft.util.BlockRenderLayer;
import net.minecraft.util.EnumBlockRenderType; import net.minecraft.util.EnumBlockRenderType;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.RayTraceResult; import net.minecraft.util.math.RayTraceResult;
import net.minecraft.world.IBlockAccess; import net.minecraft.world.IBlockAccess;
@ -81,4 +83,13 @@ public abstract class GT_Generic_Block extends Block {
return BlockRenderLayer.CUTOUT; 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);
}
} }

View file

@ -87,6 +87,11 @@ public class GT_Generic_Item extends Item implements IProjectileItem, IIconRegis
return getHasSubtypes() ? mName + "." + getDamage(aStack) : mName; return getHasSubtypes() ? mName + "." + getDamage(aStack) : mName;
} }
@Override
public String getUnlocalizedNameInefficiently(ItemStack stack) {
return getUnlocalizedName(stack);
}
@Override @Override
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public void registerIcons(TextureMap aIconRegister) { public void registerIcons(TextureMap aIconRegister) {

View file

@ -91,7 +91,7 @@ public abstract class GT_MetaGenerated_Item extends GT_MetaBase_Item implements
mItemAmount = (short) Math.min(aItemAmount, 32766 - mOffset); mItemAmount = (short) Math.min(aItemAmount, 32766 - mOffset);
sInstances.put(getUnlocalizedName(), this); sInstances.put(getUnlocalizedName(), this);
invokeOnClient(this::initClient); invokeOnClient(() -> initClient());
} }
@ -107,7 +107,6 @@ public abstract class GT_MetaGenerated_Item extends GT_MetaBase_Item implements
* @param aID The Id of the assigned Item [0 - mItemAmount] (The MetaData gets auto-shifted by +mOffset) * @param aID The Id of the assigned Item [0 - mItemAmount] (The MetaData gets auto-shifted by +mOffset)
* @param aEnglish The Default Localized Name of the created Item * @param aEnglish The Default Localized Name of the created Item
* @param aToolTip The Default ToolTip of the created Item, you can also insert null for having no ToolTip * @param aToolTip The Default ToolTip of the created Item, you can also insert null for having no ToolTip
* @param aFoodBehavior The Food Value of this Item. Can be null aswell. Just a convenience thing.
* @param aRandomData The OreDict Names you want to give the Item. Also used for TC Aspects and some other things. * @param aRandomData The OreDict Names you want to give the Item. Also used for TC Aspects and some other things.
* @return An ItemStack containing the newly created Item. * @return An ItemStack containing the newly created Item.
*/ */
@ -117,7 +116,6 @@ public abstract class GT_MetaGenerated_Item extends GT_MetaBase_Item implements
ItemStack rStack = new ItemStack(this, 1, mOffset + aID); ItemStack rStack = new ItemStack(this, 1, mOffset + aID);
mEnabledItems.set(aID); mEnabledItems.set(aID);
mVisibleItems.set(aID); mVisibleItems.set(aID);
GT_LanguageManager.addStringLocalization(getUnlocalizedName(rStack), aEnglish);
GT_LanguageManager.addStringLocalization(getUnlocalizedName(rStack) + ".name", aEnglish); GT_LanguageManager.addStringLocalization(getUnlocalizedName(rStack) + ".name", aEnglish);
GT_LanguageManager.addStringLocalization(getUnlocalizedName(rStack) + ".tooltip", aToolTip); GT_LanguageManager.addStringLocalization(getUnlocalizedName(rStack) + ".tooltip", aToolTip);
List<TC_AspectStack> tAspects = new ArrayList<TC_AspectStack>(); List<TC_AspectStack> tAspects = new ArrayList<TC_AspectStack>();
@ -234,10 +232,6 @@ public abstract class GT_MetaGenerated_Item extends GT_MetaBase_Item implements
/** /**
* @param aMetaValue the Meta Value of the Item you want to set it to. [0 - 32765] * @param aMetaValue the Meta Value of the Item you want to set it to. [0 - 32765]
* @param aMaxCharge Maximum Charge. (if this is == 0 it will remove the Electric Behavior)
* @param aTransferLimit Transfer Limit.
* @param aTier The electric Tier.
* @param aSpecialData If this Item has a Fixed Charge, like a SingleUse Battery (if > 0).
* Use -1 if you want to make this Battery chargeable (the use and canUse Functions will still discharge if you just use this) * Use -1 if you want to make this Battery chargeable (the use and canUse Functions will still discharge if you just use this)
* Use -2 if you want to make this Battery dischargeable. * Use -2 if you want to make this Battery dischargeable.
* Use -3 if you want to make this Battery charge/discharge-able. * Use -3 if you want to make this Battery charge/discharge-able.

View file

@ -725,9 +725,15 @@ public class BaseMetaPipeEntity extends BaseTileEntity implements IGregTechTileE
@Override @Override
public ITexture[] getTexture(Block aBlock, byte aSide) { public ITexture[] getTexture(Block aBlock, byte aSide) {
ITexture[] uncovered = getTextureUncovered(aSide);
ITexture rIcon = getCoverTexture(aSide); ITexture rIcon = getCoverTexture(aSide);
if (rIcon != null) return new ITexture[]{rIcon}; if (rIcon != null) {
return getTextureUncovered(aSide); ITexture[] res = new ITexture[uncovered.length + 1];
System.arraycopy(uncovered, 0, res, 0, uncovered.length);
res[uncovered.length] = rIcon;
return res;
}
return uncovered;
} }
@Override @Override

View file

@ -95,7 +95,7 @@ public abstract class MetaPipeEntity implements IMetaTileEntity {
if (GT.isClientSide()) { if (GT.isClientSide()) {
ItemStack tStack = new ItemStack(GregTech_API.sBlockMachines, 1, aID); ItemStack tStack = new ItemStack(GregTech_API.sBlockMachines, 1, aID);
tStack.getItem().addInformation(tStack, null, new ArrayList<String>(), true); tStack.getItem().addInformation(tStack, null, new ArrayList<>(), true);
} }
} }
@ -402,11 +402,6 @@ public abstract class MetaPipeEntity implements IMetaTileEntity {
return false; return false;
} }
@Override
public String getSpecialVoltageToolTip() {
return null;
}
@Override @Override
public boolean isGivingInformation() { public boolean isGivingInformation() {
return false; return false;
@ -606,18 +601,6 @@ public abstract class MetaPipeEntity implements IMetaTileEntity {
return 0; return 0;
} }
@Override
@SideOnly(Side.CLIENT)
public boolean renderInInventory(Block aBlock, int aMeta) {
return false;
}
@Override
@SideOnly(Side.CLIENT)
public boolean renderInWorld(IBlockAccess aWorld, int aX, int aY, int aZ, Block aBlock) {
return false;
}
@Override @Override
public void doExplosion(long aExplosionPower) { public void doExplosion(long aExplosionPower) {
float tStrength = aExplosionPower < V[0] ? 1.0F : aExplosionPower < V[1] ? 2.0F : aExplosionPower < V[2] ? 3.0F : aExplosionPower < V[3] ? 4.0F : aExplosionPower < V[4] ? 5.0F : aExplosionPower < V[4] * 2 ? 6.0F : aExplosionPower < V[5] ? 7.0F : aExplosionPower < V[6] ? 8.0F : aExplosionPower < V[7] ? 9.0F : 10.0F; float tStrength = aExplosionPower < V[0] ? 1.0F : aExplosionPower < V[1] ? 2.0F : aExplosionPower < V[2] ? 3.0F : aExplosionPower < V[3] ? 4.0F : aExplosionPower < V[4] ? 5.0F : aExplosionPower < V[4] * 2 ? 6.0F : aExplosionPower < V[5] ? 7.0F : aExplosionPower < V[6] ? 8.0F : aExplosionPower < V[7] ? 9.0F : 10.0F;

View file

@ -587,11 +587,6 @@ public abstract class MetaTileEntity implements IMetaTileEntity {
return false; return false;
} }
@Override
public String getSpecialVoltageToolTip() {
return null;
}
@Override @Override
public boolean isGivingInformation() { public boolean isGivingInformation() {
return false; return false;
@ -794,18 +789,6 @@ public abstract class MetaTileEntity implements IMetaTileEntity {
// //
} }
@Override
@SideOnly(Side.CLIENT)
public boolean renderInInventory(Block aBlock, int aMeta) {
return false;
}
@Override
@SideOnly(Side.CLIENT)
public boolean renderInWorld(IBlockAccess aWorld, int aX, int aY, int aZ, Block aBlock) {
return false;
}
@Override @Override
public void doExplosion(long aExplosionPower) { public void doExplosion(long aExplosionPower) {
float tStrength = aExplosionPower < V[0] ? 1.0F : aExplosionPower < V[1] ? 2.0F : aExplosionPower < V[2] ? 3.0F : aExplosionPower < V[3] ? 4.0F : aExplosionPower < V[4] ? 5.0F : aExplosionPower < V[4] * 2 ? 6.0F : aExplosionPower < V[5] ? 7.0F : aExplosionPower < V[6] ? 8.0F : aExplosionPower < V[7] ? 9.0F : 10.0F; float tStrength = aExplosionPower < V[0] ? 1.0F : aExplosionPower < V[1] ? 2.0F : aExplosionPower < V[2] ? 3.0F : aExplosionPower < V[3] ? 4.0F : aExplosionPower < V[4] ? 5.0F : aExplosionPower < V[4] * 2 ? 6.0F : aExplosionPower < V[5] ? 7.0F : aExplosionPower < V[6] ? 8.0F : aExplosionPower < V[7] ? 9.0F : 10.0F;

View file

@ -2,10 +2,8 @@ package gregtech.api.metatileentity.implementations;
import gregtech.GT_Mod; import gregtech.GT_Mod;
import gregtech.api.GregTech_API; import gregtech.api.GregTech_API;
import gregtech.api.enums.Dyes; import gregtech.api.enums.*;
import gregtech.api.enums.Materials; import gregtech.api.interfaces.IIconContainer;
import gregtech.api.enums.TextureSet;
import gregtech.api.enums.Textures;
import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.metatileentity.IMetaTileEntityCable; import gregtech.api.interfaces.metatileentity.IMetaTileEntityCable;
@ -14,6 +12,7 @@ import gregtech.api.interfaces.tileentity.IEnergyConnected;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.BaseMetaPipeEntity; import gregtech.api.metatileentity.BaseMetaPipeEntity;
import gregtech.api.metatileentity.MetaPipeEntity; import gregtech.api.metatileentity.MetaPipeEntity;
import gregtech.api.objects.GT_PipeRenderedTexture;
import gregtech.api.objects.GT_RenderedTexture; import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.util.GT_Utility; import gregtech.api.util.GT_Utility;
import ic2.api.energy.tile.IEnergySink; import ic2.api.energy.tile.IEnergySink;
@ -75,21 +74,38 @@ public class GT_MetaPipeEntity_Cable extends MetaPipeEntity implements IMetaTile
@Override @Override
public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aConnections, byte aColorIndex, boolean aConnected, boolean aRedstone) { public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aConnections, byte aColorIndex, boolean aConnected, boolean aRedstone) {
if (!mInsulated) if (aBaseMetaTileEntity == null) {
return new ITexture[]{new GT_RenderedTexture(mMaterial.mIconSet.mTextures[TextureSet.INDEX_wire], mMaterial.mRGBa)}; //itemblock
if (aConnected) { switch (aSide) {
float tThickNess = getThickNess(); case 2:
if (tThickNess < 0.37F) case 3:
return new ITexture[]{new GT_RenderedTexture(mMaterial.mIconSet.mTextures[TextureSet.INDEX_wire], mMaterial.mRGBa), new GT_RenderedTexture(Textures.BlockIcons.INSULATION_TINY, Dyes.getModulation(aColorIndex, Dyes.CABLE_INSULATION.mRGBa))}; aConnected = true;
if (tThickNess < 0.49F) }
return new ITexture[]{new GT_RenderedTexture(mMaterial.mIconSet.mTextures[TextureSet.INDEX_wire], mMaterial.mRGBa), new GT_RenderedTexture(Textures.BlockIcons.INSULATION_SMALL, Dyes.getModulation(aColorIndex, Dyes.CABLE_INSULATION.mRGBa))}; } else if (aConnections == 0) {
if (tThickNess < 0.74F) aConnected = false;
return new ITexture[]{new GT_RenderedTexture(mMaterial.mIconSet.mTextures[TextureSet.INDEX_wire], mMaterial.mRGBa), new GT_RenderedTexture(Textures.BlockIcons.INSULATION_MEDIUM, Dyes.getModulation(aColorIndex, Dyes.CABLE_INSULATION.mRGBa))};
if (tThickNess < 0.99F)
return new ITexture[]{new GT_RenderedTexture(mMaterial.mIconSet.mTextures[TextureSet.INDEX_wire], mMaterial.mRGBa), new GT_RenderedTexture(Textures.BlockIcons.INSULATION_LARGE, Dyes.getModulation(aColorIndex, Dyes.CABLE_INSULATION.mRGBa))};
return new ITexture[]{new GT_RenderedTexture(mMaterial.mIconSet.mTextures[TextureSet.INDEX_wire], mMaterial.mRGBa), new GT_RenderedTexture(Textures.BlockIcons.INSULATION_HUGE, Dyes.getModulation(aColorIndex, Dyes.CABLE_INSULATION.mRGBa))};
} }
return new ITexture[]{new GT_RenderedTexture(Textures.BlockIcons.INSULATION_FULL, Dyes.getModulation(aColorIndex, Dyes.CABLE_INSULATION.mRGBa))};
if (!mInsulated) {
return new ITexture[]{new GT_PipeRenderedTexture(mThickNess, aConnected, mMaterial.mIconSet.mTextures[TextureSet.INDEX_wire], mMaterial.mRGBa)};
}
float tThickNess = getThickNess();
short[] rgba = Dyes.getOrDef(aColorIndex, Dyes.INSULATION);
IIconContainer[] textures = mMaterial.mIconSet.mTextures;
if (tThickNess < 0.37F)
return new ITexture[]{new GT_PipeRenderedTexture(tThickNess, aConnected, textures[TextureSet.INDEX_wire], mMaterial.mRGBa, Textures.BlockIcons.INSULATION_FULL, rgba)};
if (tThickNess < 0.49F)
return new ITexture[]{new GT_PipeRenderedTexture(tThickNess, aConnected, textures[TextureSet.INDEX_wire], mMaterial.mRGBa, Textures.BlockIcons.INSULATION_FULL, rgba)};
if (tThickNess < 0.74F)
return new ITexture[]{new GT_PipeRenderedTexture(tThickNess, aConnected, textures[TextureSet.INDEX_wire], mMaterial.mRGBa, Textures.BlockIcons.INSULATION_FULL, rgba)};
if (tThickNess < 0.99F)
return new ITexture[]{new GT_PipeRenderedTexture(tThickNess, aConnected, textures[TextureSet.INDEX_wire], mMaterial.mRGBa, Textures.BlockIcons.INSULATION_FULL, rgba)};
return new ITexture[]{new GT_PipeRenderedTexture(tThickNess, aConnected, textures[TextureSet.INDEX_wire], mMaterial.mRGBa, Textures.BlockIcons.INSULATION_FULL, rgba)};
} }
@Override @Override

View file

@ -5,12 +5,14 @@ import gregtech.api.enums.Dyes;
import gregtech.api.enums.Materials; import gregtech.api.enums.Materials;
import gregtech.api.enums.OrePrefixes; import gregtech.api.enums.OrePrefixes;
import gregtech.api.enums.SubTag; import gregtech.api.enums.SubTag;
import gregtech.api.interfaces.IIconContainer;
import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.ICoverable; import gregtech.api.interfaces.tileentity.ICoverable;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.BaseMetaPipeEntity; import gregtech.api.metatileentity.BaseMetaPipeEntity;
import gregtech.api.metatileentity.MetaPipeEntity; import gregtech.api.metatileentity.MetaPipeEntity;
import gregtech.api.objects.GT_PipeRenderedTexture;
import gregtech.api.objects.GT_RenderedTexture; import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.util.GT_Log; import gregtech.api.util.GT_Log;
import gregtech.api.util.GT_Utility; import gregtech.api.util.GT_Utility;
@ -74,19 +76,34 @@ public class GT_MetaPipeEntity_Fluid extends MetaPipeEntity {
@Override @Override
public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aConnections, byte aColorIndex, boolean aConnected, boolean aRedstone) { public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aConnections, byte aColorIndex, boolean aConnected, boolean aRedstone) {
if (aConnected) { if (aBaseMetaTileEntity == null) {
float tThickNess = getThickNess(); //itemblock
if (tThickNess < 0.37F) switch (aSide) {
return new ITexture[]{new GT_RenderedTexture(mMaterial.mIconSet.mTextures[OrePrefixes.pipeTiny.mTextureIndex], Dyes.getModulation(aColorIndex, mMaterial.mRGBa))}; case 2:
if (tThickNess < 0.49F) case 3:
return new ITexture[]{new GT_RenderedTexture(mMaterial.mIconSet.mTextures[OrePrefixes.pipeSmall.mTextureIndex], Dyes.getModulation(aColorIndex, mMaterial.mRGBa))}; aConnected = true;
if (tThickNess < 0.74F) }
return new ITexture[]{new GT_RenderedTexture(mMaterial.mIconSet.mTextures[OrePrefixes.pipeMedium.mTextureIndex], Dyes.getModulation(aColorIndex, mMaterial.mRGBa))}; } else if (aConnections == 0) {
if (tThickNess < 0.99F) aConnected = false;
return new ITexture[]{new GT_RenderedTexture(mMaterial.mIconSet.mTextures[OrePrefixes.pipeLarge.mTextureIndex], Dyes.getModulation(aColorIndex, mMaterial.mRGBa))};
return new ITexture[]{new GT_RenderedTexture(mMaterial.mIconSet.mTextures[OrePrefixes.pipeHuge.mTextureIndex], Dyes.getModulation(aColorIndex, mMaterial.mRGBa))};
} }
return new ITexture[]{new GT_RenderedTexture(mMaterial.mIconSet.mTextures[OrePrefixes.pipe.mTextureIndex], Dyes.getModulation(aColorIndex, mMaterial.mRGBa))};
float tThickNess = getThickNess();
short[] rgba = Dyes.getModulation(aColorIndex, mMaterial.mRGBa);
IIconContainer[] textures = mMaterial.mIconSet.mTextures;
if (tThickNess < 0.37F)
return new ITexture[]{new GT_PipeRenderedTexture(tThickNess, aConnected, textures[OrePrefixes.pipeTiny.mTextureIndex], rgba, textures[OrePrefixes.pipe.mTextureIndex], rgba)};
if (tThickNess < 0.49F)
return new ITexture[]{new GT_PipeRenderedTexture(tThickNess, aConnected, textures[OrePrefixes.pipeSmall.mTextureIndex], rgba, textures[OrePrefixes.pipe.mTextureIndex], rgba)};
if (tThickNess < 0.74F)
return new ITexture[]{new GT_PipeRenderedTexture(tThickNess, aConnected, textures[OrePrefixes.pipeMedium.mTextureIndex], rgba, textures[OrePrefixes.pipe.mTextureIndex], rgba)};
if (tThickNess < 0.99F)
return new ITexture[]{new GT_PipeRenderedTexture(tThickNess, aConnected, textures[OrePrefixes.pipeLarge.mTextureIndex], rgba, textures[OrePrefixes.pipe.mTextureIndex], rgba)};
return new ITexture[]{new GT_PipeRenderedTexture(tThickNess, aConnected, textures[OrePrefixes.pipeHuge.mTextureIndex], rgba, textures[OrePrefixes.pipe.mTextureIndex], rgba)};
} }
@Override @Override

View file

@ -1,6 +1,7 @@
package gregtech.api.metatileentity.implementations; package gregtech.api.metatileentity.implementations;
import gregtech.api.enums.*; import gregtech.api.enums.*;
import gregtech.api.interfaces.IIconContainer;
import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.ITexture;
import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.metatileentity.IMetaTileEntityItemPipe; import gregtech.api.interfaces.metatileentity.IMetaTileEntityItemPipe;
@ -8,6 +9,7 @@ import gregtech.api.interfaces.tileentity.ICoverable;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.BaseMetaPipeEntity; import gregtech.api.metatileentity.BaseMetaPipeEntity;
import gregtech.api.metatileentity.MetaPipeEntity; import gregtech.api.metatileentity.MetaPipeEntity;
import gregtech.api.objects.GT_PipeRenderedTexture;
import gregtech.api.objects.GT_RenderedTexture; import gregtech.api.objects.GT_RenderedTexture;
import gregtech.api.util.GT_Utility; import gregtech.api.util.GT_Utility;
import net.minecraft.inventory.IInventory; import net.minecraft.inventory.IInventory;
@ -70,34 +72,34 @@ public class GT_MetaPipeEntity_Item extends MetaPipeEntity implements IMetaTileE
@Override @Override
public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aConnections, byte aColorIndex, boolean aConnected, boolean aRedstone) { public ITexture[] getTexture(IGregTechTileEntity aBaseMetaTileEntity, byte aSide, byte aConnections, byte aColorIndex, boolean aConnected, boolean aRedstone) {
if (mIsRestrictive) { if (aBaseMetaTileEntity == null) {
if (aConnected) { //itemblock
float tThickNess = getThickNess(); switch (aSide) {
if (tThickNess < 0.37F) case 2:
return new ITexture[]{new GT_RenderedTexture(mMaterial.mIconSet.mTextures[OrePrefixes.pipeTiny.mTextureIndex], Dyes.getModulation(aColorIndex, mMaterial.mRGBa)), new GT_RenderedTexture(Textures.BlockIcons.PIPE_RESTRICTOR)}; case 3:
if (tThickNess < 0.49F) aConnected = true;
return new ITexture[]{new GT_RenderedTexture(mMaterial.mIconSet.mTextures[OrePrefixes.pipeSmall.mTextureIndex], Dyes.getModulation(aColorIndex, mMaterial.mRGBa)), new GT_RenderedTexture(Textures.BlockIcons.PIPE_RESTRICTOR)};
if (tThickNess < 0.74F)
return new ITexture[]{new GT_RenderedTexture(mMaterial.mIconSet.mTextures[OrePrefixes.pipeMedium.mTextureIndex], Dyes.getModulation(aColorIndex, mMaterial.mRGBa)), new GT_RenderedTexture(Textures.BlockIcons.PIPE_RESTRICTOR)};
if (tThickNess < 0.99F)
return new ITexture[]{new GT_RenderedTexture(mMaterial.mIconSet.mTextures[OrePrefixes.pipeLarge.mTextureIndex], Dyes.getModulation(aColorIndex, mMaterial.mRGBa)), new GT_RenderedTexture(Textures.BlockIcons.PIPE_RESTRICTOR)};
return new ITexture[]{new GT_RenderedTexture(mMaterial.mIconSet.mTextures[OrePrefixes.pipeHuge.mTextureIndex], Dyes.getModulation(aColorIndex, mMaterial.mRGBa)), new GT_RenderedTexture(Textures.BlockIcons.PIPE_RESTRICTOR)};
} }
return new ITexture[]{new GT_RenderedTexture(mMaterial.mIconSet.mTextures[OrePrefixes.pipe.mTextureIndex], Dyes.getModulation(aColorIndex, mMaterial.mRGBa)), new GT_RenderedTexture(Textures.BlockIcons.PIPE_RESTRICTOR)}; } else if (aConnections == 0) {
aConnected = false;
} }
if (aConnected) {
float tThickNess = getThickNess(); float tThickNess = getThickNess();
if (tThickNess < 0.37F) short[] rgba = Dyes.getModulation(aColorIndex, mMaterial.mRGBa);
return new ITexture[]{new GT_RenderedTexture(mMaterial.mIconSet.mTextures[OrePrefixes.pipeTiny.mTextureIndex], Dyes.getModulation(aColorIndex, mMaterial.mRGBa))}; IIconContainer[] textures = mMaterial.mIconSet.mTextures;
if (tThickNess < 0.49F)
return new ITexture[]{new GT_RenderedTexture(mMaterial.mIconSet.mTextures[OrePrefixes.pipeSmall.mTextureIndex], Dyes.getModulation(aColorIndex, mMaterial.mRGBa))}; if (tThickNess < 0.37F)
if (tThickNess < 0.74F) return new ITexture[]{new GT_PipeRenderedTexture(tThickNess, aConnected, textures[OrePrefixes.pipeTiny.mTextureIndex], rgba, textures[OrePrefixes.pipe.mTextureIndex], rgba)};
return new ITexture[]{new GT_RenderedTexture(mMaterial.mIconSet.mTextures[OrePrefixes.pipeMedium.mTextureIndex], Dyes.getModulation(aColorIndex, mMaterial.mRGBa))};
if (tThickNess < 0.99F) if (tThickNess < 0.49F)
return new ITexture[]{new GT_RenderedTexture(mMaterial.mIconSet.mTextures[OrePrefixes.pipeLarge.mTextureIndex], Dyes.getModulation(aColorIndex, mMaterial.mRGBa))}; return new ITexture[]{new GT_PipeRenderedTexture(tThickNess, aConnected, textures[OrePrefixes.pipeSmall.mTextureIndex], rgba, textures[OrePrefixes.pipe.mTextureIndex], rgba)};
return new ITexture[]{new GT_RenderedTexture(mMaterial.mIconSet.mTextures[OrePrefixes.pipeHuge.mTextureIndex], Dyes.getModulation(aColorIndex, mMaterial.mRGBa))};
} if (tThickNess < 0.74F)
return new ITexture[]{new GT_RenderedTexture(mMaterial.mIconSet.mTextures[OrePrefixes.pipe.mTextureIndex], Dyes.getModulation(aColorIndex, mMaterial.mRGBa))}; return new ITexture[]{new GT_PipeRenderedTexture(tThickNess, aConnected, textures[OrePrefixes.pipeMedium.mTextureIndex], rgba, textures[OrePrefixes.pipe.mTextureIndex], rgba)};
if (tThickNess < 0.99F)
return new ITexture[]{new GT_PipeRenderedTexture(tThickNess, aConnected, textures[OrePrefixes.pipeLarge.mTextureIndex], rgba, textures[OrePrefixes.pipe.mTextureIndex], rgba)};
return new ITexture[]{new GT_PipeRenderedTexture(tThickNess, aConnected, textures[OrePrefixes.pipeHuge.mTextureIndex], rgba, textures[OrePrefixes.pipe.mTextureIndex], rgba)};
} }
@Override @Override

View file

@ -0,0 +1,157 @@
package gregtech.api.objects;
import com.google.common.collect.Lists;
import gregtech.api.interfaces.IIconContainer;
import gregtech.api.interfaces.ITexture;
import gregtech.common.render.newblocks.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.List;
public class GT_PipeRenderedTexture implements ITexture {
private float thickness;
private boolean connected;
private TextureAtlasSprite connectedSprite;
private TextureAtlasSprite insulationSprite;
private int rgbaConnection = -1;
private int rgbaInsulation = -1;
public GT_PipeRenderedTexture(float thickness, boolean connected, TextureAtlasSprite spriteConnected, TextureAtlasSprite spriteInsulation, short[] rgbaConnected, short[] rgbaInsulation) {
this.thickness = thickness;
this.connected = connected;
this.connectedSprite = spriteConnected;
this.insulationSprite = spriteInsulation;
if(rgbaConnected != null) {
this.rgbaConnection = GT_RenderedTexture.makeColor(rgbaConnected);
}
if(rgbaInsulation != null) {
this.rgbaInsulation = GT_RenderedTexture.makeColor(rgbaInsulation);
}
}
public GT_PipeRenderedTexture(float thickness, boolean connected, IIconContainer sprite, short[] rgba) {
this(thickness, connected, sprite, rgba, sprite, rgba);
}
public GT_PipeRenderedTexture(float thickness, boolean connected, IIconContainer connection, short[] rgbaCon, IIconContainer insulation, short[] rgbaInsul) {
this(thickness, connected, connection.getIcon(), insulation.getIcon(), rgbaCon, rgbaInsul);
}
@Override
public List<BakedQuad> getQuads(Block aBlock, BlockPos blockPos, EnumFacing side, float offset) {
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);
} 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);
BakedQuad west = makeQuad(insulationSprite, wireOffset, wireOffset + thickness, wireOffset, wireOffset, thickness, EnumFacing.WEST, rgbaInsulation);
BakedQuad east = makeQuad(insulationSprite, wireOffset + thickness, wireOffset + thickness, wireOffset, wireOffset, thickness, EnumFacing.EAST, rgbaInsulation);
BakedQuad up = makeQuad(connectedSprite, wireOffset, 1f, wireOffset, thickness, thickness, EnumFacing.UP, rgbaConnection);
return Lists.newArrayList(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);
} 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);
BakedQuad west = makeQuad(insulationSprite, wireOffset, 0f, wireOffset, wireOffset, thickness, EnumFacing.WEST, rgbaInsulation);
BakedQuad east = makeQuad(insulationSprite, wireOffset + thickness, 0f, wireOffset, wireOffset, thickness, EnumFacing.EAST, rgbaInsulation);
BakedQuad down = makeQuad(connectedSprite, wireOffset, 0f, wireOffset, thickness, thickness, EnumFacing.DOWN, rgbaConnection);
return Lists.newArrayList(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);
} 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);
BakedQuad north = makeQuad(insulationSprite, wireOffset + thickness, wireOffset, wireOffset, wireOffset, thickness, EnumFacing.NORTH, rgbaInsulation);
BakedQuad south = makeQuad(insulationSprite, wireOffset + thickness, wireOffset, wireOffset + thickness, wireOffset, thickness, EnumFacing.SOUTH, rgbaInsulation);
BakedQuad end = makeQuad(connectedSprite, 1f, wireOffset, wireOffset, thickness, thickness, EnumFacing.EAST, rgbaConnection);
return Lists.newArrayList(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);
} 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);
BakedQuad north = makeQuad(insulationSprite, 0f, wireOffset, wireOffset, wireOffset, thickness, EnumFacing.NORTH, rgbaInsulation);
BakedQuad south = makeQuad(insulationSprite, 0f, wireOffset, wireOffset + thickness, wireOffset, thickness, EnumFacing.SOUTH, rgbaInsulation);
BakedQuad end = makeQuad(connectedSprite, 0f, wireOffset, wireOffset, thickness, thickness, EnumFacing.WEST, rgbaConnection);
return Lists.newArrayList(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);
} 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);
BakedQuad east = makeQuad(insulationSprite, wireOffset + thickness, wireOffset, 0f, thickness, wireOffset, EnumFacing.EAST, rgbaInsulation);
BakedQuad west = makeQuad(insulationSprite, wireOffset, wireOffset, 0f, thickness, wireOffset, EnumFacing.WEST, rgbaInsulation);
BakedQuad end = makeQuad(connectedSprite, wireOffset, wireOffset, 0f, thickness, thickness, EnumFacing.NORTH, rgbaConnection);
return Lists.newArrayList(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);
} 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);
BakedQuad east = makeQuad(insulationSprite, wireOffset + thickness, wireOffset, wireOffset + thickness, thickness, wireOffset, EnumFacing.EAST, rgbaInsulation);
BakedQuad west = makeQuad(insulationSprite, wireOffset, wireOffset, wireOffset + thickness, thickness, wireOffset, EnumFacing.WEST, rgbaInsulation);
BakedQuad end = makeQuad(connectedSprite, wireOffset, wireOffset, 1f, thickness, thickness, EnumFacing.SOUTH, rgbaConnection);
return Lists.newArrayList(down, up, end, east, west);
}
}
return Collections.emptyList();
}
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);
}
@Override
public boolean isValidTexture() {
return thickness > 0.0F;
}
}

View file

@ -38,7 +38,7 @@ public class GT_RenderedTexture implements ITexture {
} }
} }
private int makeColor(short[] rgba) { public static int makeColor(short[] rgba) {
try { try {
for(int i = 0; i < 4; i++) for(int i = 0; i < 4; i++)
rgba[i] = (short) Math.max(0, rgba[i]); rgba[i] = (short) Math.max(0, rgba[i]);

View file

@ -32,7 +32,7 @@ public class GT_LanguageManager {
public static Configuration sEnglishFile; public static Configuration sEnglishFile;
public static String addStringLocalization(String aKey, String aEnglish) { public static String addStringLocalization(String aKey, String aEnglish) {
return addStringLocalization(aKey, aEnglish, true); return addStringLocalization(aKey, aEnglish, false);
} }
public static String addStringLocalization(String aKey, String aEnglish, boolean aWriteIntoLangFile) { public static String addStringLocalization(String aKey, String aEnglish, boolean aWriteIntoLangFile) {

View file

@ -196,7 +196,7 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo
int tDamage = itemStack.getItemDamage(); int tDamage = itemStack.getItemDamage();
if(GregTech_API.METATILEENTITIES.length > tDamage) { if(GregTech_API.METATILEENTITIES.length > tDamage) {
if (GregTech_API.METATILEENTITIES[tDamage] != null) { if (GregTech_API.METATILEENTITIES[tDamage] != null) {
return GregTech_API.METATILEENTITIES[tDamage].getTexture(null, (byte) side.getIndex(), (byte) 0, (byte) 0, false, false); return GregTech_API.METATILEENTITIES[tDamage].getTexture(null, (byte) side.getIndex(), (byte) 2, (byte) -1, false, false);
} else { } else {
System.out.println("METATILEENTITY WAS NULL FOR MACHINE " + tDamage); System.out.println("METATILEENTITY WAS NULL FOR MACHINE " + tDamage);
} }
@ -298,10 +298,9 @@ public class GT_Block_Machines extends GT_Generic_Block implements IDebugableBlo
return false; return false;
} }
if(!worldIn.isRemote && gregTechTileEntity.isUseableByPlayer(playerIn)) { if(!worldIn.isRemote && gregTechTileEntity.isUseableByPlayer(playerIn)) {
gregTechTileEntity.onRightclick(playerIn, (byte) side.getIndex(), hitX, hitY, hitZ, hand); return gregTechTileEntity.onRightclick(playerIn, (byte) side.getIndex(), hitX, hitY, hitZ, hand);
return true;
} }
return true; return false;
} }
@Override @Override

View file

@ -142,7 +142,7 @@ public class GT_TileEntity_Ores extends TileEntity implements ITexturedTileEntit
} else { } else {
this.mMetaData = ((short) (this.mMetaData + 3000)); this.mMetaData = ((short) (this.mMetaData + 3000));
} }
} else if (aOverridingStoneBlock.isReplaceableOreGen(worldObj.getBlockState(getPos()), this.worldObj, getPos(), state -> state.getBlock() == GregTech_API.sBlockStones)) { } else if (aOverridingStoneBlock.isReplaceableOreGen(worldObj.getBlockState(getPos()), this.worldObj, getPos(), GT_Worldgen_Ore_Normal.ANY)) {
if (aOverridingStoneBlock == GregTech_API.sBlockStones) { if (aOverridingStoneBlock == GregTech_API.sBlockStones) {
if (aOverridingStoneMeta < 8) { if (aOverridingStoneMeta < 8) {
this.mMetaData = ((short) (this.mMetaData + 5000)); this.mMetaData = ((short) (this.mMetaData + 5000));
@ -168,14 +168,6 @@ public class GT_TileEntity_Ores extends TileEntity implements ITexturedTileEntit
GT_TickHandler_Ores.loadChunkOre(this); GT_TickHandler_Ores.loadChunkOre(this);
} }
public boolean isBlocked() {
for(EnumFacing offset : EnumFacing.VALUES) {
if(!GT_Utility.isOpaqueBlock(worldObj, pos.offset(offset)))
return false;
}
return true;
}
public void convertOreBlock(World aWorld, int aX, int aY, int aZ) { public void convertOreBlock(World aWorld, int aX, int aY, int aZ) {
short aMeta = ((short) (int) (this.mMetaData % 1000 + (this.mMetaData / 16000 * 16000))); short aMeta = ((short) (int) (this.mMetaData % 1000 + (this.mMetaData / 16000 * 16000)));
aWorld.setBlockState(new BlockPos(aX, aY, aZ), GregTech_API.sBlockOres1.getStateFromMeta(getHarvestData(aMeta))); aWorld.setBlockState(new BlockPos(aX, aY, aZ), GregTech_API.sBlockOres1.getStateFromMeta(getHarvestData(aMeta)));

View file

@ -12,7 +12,6 @@ import net.minecraftforge.fml.relauncher.SideOnly;
public class RenderUtil { public class RenderUtil {
public static BakedQuad renderSide(VertexFormat vertexFormat, TextureAtlasSprite sprite, EnumFacing side, int tint, float offset, int color, boolean hideSiding) { public static BakedQuad renderSide(VertexFormat vertexFormat, TextureAtlasSprite sprite, EnumFacing side, int tint, float offset, int color, boolean hideSiding) {
switch (side) { switch (side) {
case NORTH: case NORTH:
return buildQuad(vertexFormat, hideSiding ? null : EnumFacing.NORTH, sprite, tint, return buildQuad(vertexFormat, hideSiding ? null : EnumFacing.NORTH, sprite, tint,
@ -63,6 +62,58 @@ public class RenderUtil {
} }
} }
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( private static BakedQuad buildQuad(
VertexFormat format, EnumFacing side, TextureAtlasSprite sprite, int tint, VertexFormat format, EnumFacing side, TextureAtlasSprite sprite, int tint,
float x0, float y0, float z0, float u0, float v0, float x0, float y0, float z0, float u0, float v0,