Some models and render stuff compiles

This commit is contained in:
covers1624
2020-06-02 11:59:29 +09:30
parent 7483314190
commit d32dbfd3c8
14 changed files with 207 additions and 230 deletions
@@ -26,6 +26,7 @@ import net.minecraft.client.renderer.color.IBlockColor;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockReader;
import net.minecraft.world.ILightReader;
import appeng.api.implementations.tiles.IColorableTile;
import appeng.api.util.AEColor;
@@ -40,7 +41,7 @@ public class ColorableTileBlockColor implements IBlockColor
public static final ColorableTileBlockColor INSTANCE = new ColorableTileBlockColor();
@Override
public int colorMultiplier( BlockState state, @Nullable IBlockReader worldIn, @Nullable BlockPos pos, int tintIndex )
public int getColor( BlockState state, @Nullable ILightReader worldIn, @Nullable BlockPos pos, int tintIndex )
{
AEColor color = AEColor.TRANSPARENT; // Default to a neutral color
@@ -19,12 +19,12 @@
package appeng.client.render;
import javax.vecmath.Matrix4f;
import com.mojang.blaze3d.matrix.MatrixStack;
import org.apache.commons.lang3.tuple.Pair;
import net.minecraft.client.renderer.block.model.IBakedModel;
import net.minecraft.client.renderer.block.model.ItemCameraTransforms;
import net.minecraft.client.renderer.model.IBakedModel;
import net.minecraft.client.renderer.model.ItemCameraTransforms;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
@@ -38,10 +38,10 @@ public abstract class DelegateBakedModel implements IBakedModel
}
@Override
public Pair<? extends IBakedModel, Matrix4f> handlePerspective( ItemCameraTransforms.TransformType type )
public IBakedModel handlePerspective( ItemCameraTransforms.TransformType cameraTransformType, MatrixStack mat )
{
Pair<? extends IBakedModel, Matrix4f> pair = this.baseModel.handlePerspective( type );
return Pair.of( this, pair.getValue() );
baseModel.handlePerspective( cameraTransformType, mat );
return this;
}
@Override
@@ -20,6 +20,7 @@ package appeng.client.render;
import java.util.List;
import java.util.Random;
import javax.annotation.Nullable;
@@ -27,8 +28,8 @@ import com.google.common.collect.ImmutableList;
import net.minecraft.block.BlockState;
import net.minecraft.client.renderer.model.BakedQuad;
import net.minecraft.client.renderer.block.model.IBakedModel;
import net.minecraft.client.renderer.block.model.ItemOverrideList;
import net.minecraft.client.renderer.model.IBakedModel;
import net.minecraft.client.renderer.model.ItemOverrideList;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.util.Direction;
@@ -48,7 +49,7 @@ public class DummyFluidBakedModel implements IBakedModel
}
@Override
public List<BakedQuad> getQuads( @Nullable BlockState state, @Nullable Direction side, long rand )
public List<BakedQuad> getQuads( @Nullable BlockState state, @Nullable Direction side, Random rand )
{
return this.quads;
}
@@ -65,6 +66,12 @@ public class DummyFluidBakedModel implements IBakedModel
return false;
}
@Override
public boolean func_230044_c_()
{
return false;
}
@Override
public boolean isBuiltInRenderer()
{
@@ -21,19 +21,18 @@ package appeng.client.render;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import java.util.Random;
import java.util.function.Function;
import javax.annotation.Nullable;
import com.google.common.collect.ImmutableList;
import net.minecraft.block.BlockState;
import net.minecraft.client.renderer.TransformationMatrix;
import net.minecraft.client.renderer.model.BakedQuad;
import net.minecraft.client.renderer.block.model.IBakedModel;
import net.minecraft.client.renderer.block.model.ItemOverrideList;
import net.minecraft.client.renderer.model.IBakedModel;
import net.minecraft.client.renderer.model.ItemOverrideList;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.renderer.vertex.VertexFormat;
import net.minecraft.entity.LivingEntity;
import net.minecraft.fluid.Fluids;
import net.minecraft.item.ItemStack;
@@ -41,8 +40,7 @@ import net.minecraft.util.Direction;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World;
import net.minecraftforge.client.model.ItemLayerModel;
import net.minecraft.fluid.Fluid;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidAttributes;
import net.minecraftforge.fluids.FluidStack;
import appeng.fluids.items.FluidDummyItem;
@@ -55,19 +53,17 @@ import appeng.fluids.items.FluidDummyItem;
*/
public class DummyFluidDispatcherBakedModel extends DelegateBakedModel
{
private final VertexFormat format;
private final Function<ResourceLocation, TextureAtlasSprite> bakedTextureGetter;
public DummyFluidDispatcherBakedModel( IBakedModel baseModel, VertexFormat format, Function<ResourceLocation, TextureAtlasSprite> bakedTextureGetter )
public DummyFluidDispatcherBakedModel( IBakedModel baseModel, Function<ResourceLocation, TextureAtlasSprite> bakedTextureGetter )
{
super( baseModel );
this.format = format;
this.bakedTextureGetter = bakedTextureGetter;
}
// This is never used. See the item override list below.
@Override
public List<BakedQuad> getQuads( @Nullable BlockState state, @Nullable Direction side, long rand )
public List<BakedQuad> getQuads( @Nullable BlockState state, @Nullable Direction side, Random rand )
{
return Collections.emptyList();
}
@@ -78,6 +74,12 @@ public class DummyFluidDispatcherBakedModel extends DelegateBakedModel
return this.getBaseModel().isGui3d();
}
@Override
public boolean func_230044_c_()
{
return getBaseModel().func_230044_c_();
}
@Override
public boolean isBuiltInRenderer()
{
@@ -87,10 +89,10 @@ public class DummyFluidDispatcherBakedModel extends DelegateBakedModel
@Override
public ItemOverrideList getOverrides()
{
return new ItemOverrideList( Collections.emptyList() )
return new ItemOverrideList()
{
@Override
public IBakedModel handleItemState( IBakedModel originalModel, ItemStack stack, World world, LivingEntity entity )
public IBakedModel getModelWithOverrides( IBakedModel originalModel, ItemStack stack, World world, LivingEntity entity )
{
if( !( stack.getItem() instanceof FluidDummyItem ) )
{
@@ -105,13 +107,14 @@ public class DummyFluidDispatcherBakedModel extends DelegateBakedModel
fluidStack = new FluidStack( Fluids.WATER, FluidAttributes.BUCKET_VOLUME );
}
TextureAtlasSprite sprite = DummyFluidDispatcherBakedModel.this.bakedTextureGetter.apply( fluidStack.getFluid().getStill( fluidStack ) );
FluidAttributes attributes = fluidStack.getFluid().getAttributes();
TextureAtlasSprite sprite = DummyFluidDispatcherBakedModel.this.bakedTextureGetter.apply( attributes.getStillTexture( fluidStack ) );
if( sprite == null )
{
return new DummyFluidBakedModel( ImmutableList.of() );
}
return new DummyFluidBakedModel( ItemLayerModel.getQuadsForSprite( 0, sprite, DummyFluidDispatcherBakedModel.this.format, Optional.empty() ) );
return new DummyFluidBakedModel( ItemLayerModel.getQuadsForSprite( 0, sprite, TransformationMatrix.identity() ) );
}
};
}
@@ -78,7 +78,7 @@ public class DummyFluidItemModel implements IModel
{
IBakedModel bakedBaseModel = this.getBaseModel().bake( state, format, bakedTextureGetter );
return new DummyFluidDispatcherBakedModel( bakedBaseModel, format, bakedTextureGetter );
return new DummyFluidDispatcherBakedModel( bakedBaseModel, bakedTextureGetter );
}
@Override
@@ -22,15 +22,18 @@ package appeng.client.render;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
import javax.annotation.Nullable;
import net.minecraft.block.BlockState;
import net.minecraft.client.renderer.model.BakedQuad;
import net.minecraft.client.renderer.block.model.IBakedModel;
import net.minecraft.client.renderer.block.model.ItemOverrideList;
import net.minecraft.client.renderer.model.IBakedModel;
import net.minecraft.client.renderer.model.ItemOverrideList;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Direction;
import net.minecraftforge.client.model.data.EmptyModelData;
import net.minecraftforge.client.model.data.IModelData;
import appeng.client.render.cablebus.FacadeBuilder;
@@ -55,7 +58,13 @@ public class FacadeBakedItemModel extends DelegateBakedModel
}
@Override
public List<BakedQuad> getQuads( @Nullable BlockState state, @Nullable Direction side, long rand )
public List<BakedQuad> getQuads( @Nullable BlockState state, @Nullable Direction side, Random rand )
{
return getQuads( state, side, rand, EmptyModelData.INSTANCE );
}
@Override
public List<BakedQuad> getQuads( @Nullable BlockState state, @Nullable Direction side, Random rand, IModelData data )
{
if( side != null )
{
@@ -65,7 +74,7 @@ public class FacadeBakedItemModel extends DelegateBakedModel
{
quads = new ArrayList<>();
quads.addAll( this.facadeBuilder.buildFacadeItemQuads( this.textureStack, Direction.NORTH ) );
quads.addAll( this.getBaseModel().getQuads( state, side, rand ) );
quads.addAll( this.getBaseModel().getQuads( state, side, rand, data ) );
quads = Collections.unmodifiableList( quads );
}
return quads;
@@ -77,6 +86,12 @@ public class FacadeBakedItemModel extends DelegateBakedModel
return false;
}
@Override
public boolean func_230044_c_()
{
return false;
}
@Override
public boolean isBuiltInRenderer()
{
@@ -22,21 +22,21 @@ package appeng.client.render;
import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.Random;
import javax.annotation.Nullable;
import it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import net.minecraft.block.BlockState;
import net.minecraft.client.renderer.model.BakedQuad;
import net.minecraft.client.renderer.block.model.IBakedModel;
import net.minecraft.client.renderer.block.model.ItemOverrideList;
import net.minecraft.client.renderer.vertex.VertexFormat;
import net.minecraft.client.renderer.model.IBakedModel;
import net.minecraft.client.renderer.model.ItemOverrideList;
import net.minecraft.entity.LivingEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Direction;
import net.minecraft.world.World;
import it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import appeng.client.render.cablebus.FacadeBuilder;
import appeng.items.parts.ItemFacade;
@@ -48,20 +48,18 @@ import appeng.items.parts.ItemFacade;
*/
public class FacadeDispatcherBakedModel extends DelegateBakedModel
{
private final VertexFormat format;
private final FacadeBuilder facadeBuilder;
private final Int2ObjectMap<FacadeBakedItemModel> cache = new Int2ObjectArrayMap<>();
public FacadeDispatcherBakedModel( IBakedModel baseModel, VertexFormat format, FacadeBuilder facadeBuilder )
public FacadeDispatcherBakedModel( IBakedModel baseModel, FacadeBuilder facadeBuilder )
{
super( baseModel );
this.format = format;
this.facadeBuilder = facadeBuilder;
}
// This is never used. See the item override list below.
@Override
public List<BakedQuad> getQuads( @Nullable BlockState state, @Nullable Direction side, long rand )
public List<BakedQuad> getQuads( @Nullable BlockState state, @Nullable Direction side, Random rand )
{
return Collections.emptyList();
}
@@ -72,6 +70,12 @@ public class FacadeDispatcherBakedModel extends DelegateBakedModel
return this.getBaseModel().isGui3d();
}
@Override
public boolean func_230044_c_()
{
return false;
}
@Override
public boolean isBuiltInRenderer()
{
@@ -81,10 +85,10 @@ public class FacadeDispatcherBakedModel extends DelegateBakedModel
@Override
public ItemOverrideList getOverrides()
{
return new ItemOverrideList( Collections.emptyList() )
return new ItemOverrideList()
{
@Override
public IBakedModel handleItemState( IBakedModel originalModel, ItemStack stack, World world, LivingEntity entity )
public IBakedModel getModelWithOverrides( IBakedModel originalModel, ItemStack stack, World world, LivingEntity entity )
{
if( !( stack.getItem() instanceof ItemFacade ) )
{
@@ -95,13 +99,13 @@ public class FacadeDispatcherBakedModel extends DelegateBakedModel
ItemStack textureItem = itemFacade.getTextureItem( stack );
int hash = Objects.hash( textureItem.getItem().getRegistryName(), textureItem.getMetadata(), textureItem.getTag() );
int hash = Objects.hash( textureItem.getItem().getRegistryName(), textureItem.getTag() );
FacadeBakedItemModel model = FacadeDispatcherBakedModel.this.cache.get( hash );
if( model == null )
{
model = new FacadeBakedItemModel(FacadeDispatcherBakedModel.this.getBaseModel(), textureItem, FacadeDispatcherBakedModel.this.facadeBuilder);
FacadeDispatcherBakedModel.this.cache.put(hash, model);
}
model = new FacadeBakedItemModel( FacadeDispatcherBakedModel.this.getBaseModel(), textureItem, FacadeDispatcherBakedModel.this.facadeBuilder );
FacadeDispatcherBakedModel.this.cache.put( hash, model );
}
return model;
}
@@ -74,7 +74,7 @@ public class FacadeItemModel implements IModel
IBakedModel bakedBaseModel = this.getBaseModel().bake( state, format, bakedTextureGetter );
FacadeBuilder facadeBuilder = new FacadeBuilder();
return new FacadeDispatcherBakedModel( bakedBaseModel, format, facadeBuilder );
return new FacadeDispatcherBakedModel( bakedBaseModel, facadeBuilder );
}
@Override
@@ -19,12 +19,14 @@
package appeng.client.render;
import javax.vecmath.Matrix4f;
import javax.vecmath.Vector3f;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.Matrix4f;
import net.minecraft.client.renderer.Quaternion;
import net.minecraft.client.renderer.Vector3f;
import net.minecraft.client.renderer.Vector4f;
import net.minecraft.util.Direction;
import net.minecraftforge.common.model.TRSRTransformation;
import net.minecraft.util.math.Vec3i;
/**
@@ -74,15 +76,19 @@ public enum FacingToRotation
// @formatter:on
private final Vector3f rot;
private final Quaternion xRot;
private final Quaternion yRot;
private final Quaternion zRot;
private final Matrix4f mat;
private FacingToRotation( Vector3f rot )
{
this.rot = rot;
this.mat = TRSRTransformation
.toVecmath( new org.lwjgl.util.vector.Matrix4f().rotate( (float) Math.toRadians( rot.x ), new org.lwjgl.util.vector.Vector3f( 1, 0, 0 ) )
.rotate( (float) Math.toRadians( rot.y ), new org.lwjgl.util.vector.Vector3f( 0, 1, 0 ) )
.rotate( (float) Math.toRadians( rot.z ), new org.lwjgl.util.vector.Vector3f( 0, 0, 1 ) ) );
this.mat = new Matrix4f();
this.mat.setIdentity();
this.mat.mul( xRot = Vector3f.XP.rotationDegrees( rot.getX() ) );
this.mat.mul( yRot = Vector3f.YP.rotationDegrees( rot.getY() ) );
this.mat.mul( zRot = Vector3f.ZP.rotationDegrees( rot.getZ() ) );
}
public Vector3f getRot()
@@ -95,16 +101,19 @@ public enum FacingToRotation
return new Matrix4f( this.mat );
}
public void glRotateCurrentMat()
public void push( MatrixStack mStack )
{
GlStateManager.rotate( this.rot.x, 1, 0, 0 );
GlStateManager.rotate( this.rot.y, 0, 1, 0 );
GlStateManager.rotate( this.rot.z, 0, 0, 1 );
mStack.rotate( xRot );
mStack.rotate( yRot );
mStack.rotate( zRot );
}
public Direction rotate( Direction facing )
{
return TRSRTransformation.rotate( this.mat, facing );
Vec3i dir = facing.getDirectionVec();
Vector4f vec = new Vector4f( dir.getX(), dir.getY(), dir.getZ(), 1 );
vec.transform( mat );
return Direction.getFacingFromVector( vec.getX(), vec.getY(), vec.getZ() );
}
public Direction resultingRotate( Direction facing )
@@ -123,5 +132,4 @@ public enum FacingToRotation
{
return values()[forward.ordinal() * 6 + up.ordinal()];
}
}
}
@@ -21,21 +21,22 @@ package appeng.client.render;
import java.util.Random;
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import org.lwjgl.opengl.GL11;
import net.minecraft.client.Minecraft;
import net.minecraft.client.world.ClientWorld;
import net.minecraft.client.renderer.BufferBuilder;
import net.minecraft.client.renderer.GLAllocation;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.client.world.ClientWorld;
import net.minecraftforge.client.IRenderHandler;
public class SpatialSkyRender extends IRenderHandler
//TODO https://github.com/MinecraftForge/MinecraftForge/pull/6537
public class SpatialSkyRender implements IRenderHandler
{
private static final SpatialSkyRender INSTANCE = new SpatialSkyRender();
@@ -46,25 +47,26 @@ public class SpatialSkyRender extends IRenderHandler
public SpatialSkyRender()
{
this.dspList = GLAllocation.generateDisplayLists( 1 );
this.dspList = GL11.glGenLists( 1 );
}
public static IRenderHandler getInstance()
{
return INSTANCE;
}
//FIXME, Do not use this until the above PR is merged.
// public static IRenderHandler getInstance()
// {
// return INSTANCE;
// }
@Override
public void render(final float partialTicks, final ClientWorld world, final Minecraft mc )
public void render( final int ticks, final float partialTicks, final ClientWorld world, final Minecraft mc )
{
final long now = System.currentTimeMillis();
if( now - this.cycle > 2000 )
{
this.cycle = now;
GlStateManager.glNewList( this.dspList, GL11.GL_COMPILE );
GL11.glNewList( this.dspList, GL11.GL_COMPILE );
this.renderTwinkles();
GlStateManager.glEndList();
GL11.glEndList();
}
float fade = now - this.cycle;
@@ -72,7 +74,7 @@ public class SpatialSkyRender extends IRenderHandler
fade = 0.15f * ( 1.0f - Math.abs( ( fade - 1.0f ) * ( fade - 1.0f ) ) );
GlStateManager.disableFog();
GlStateManager.disableAlpha();
GlStateManager.disableAlphaTest();
RenderSystem.disableBlend();
GlStateManager.depthMask( false );
RenderSystem.color4f( 0.0f, 0.0f, 0.0f, 1.0f );
@@ -87,30 +89,30 @@ public class SpatialSkyRender extends IRenderHandler
if( i == 1 )
{
GlStateManager.rotate( 90.0F, 1.0F, 0.0F, 0.0F );
GlStateManager.rotatef( 90.0F, 1.0F, 0.0F, 0.0F );
}
if( i == 2 )
{
GlStateManager.rotate( -90.0F, 1.0F, 0.0F, 0.0F );
GlStateManager.rotatef( -90.0F, 1.0F, 0.0F, 0.0F );
}
if( i == 3 )
{
GlStateManager.rotate( 180.0F, 1.0F, 0.0F, 0.0F );
GlStateManager.rotatef( 180.0F, 1.0F, 0.0F, 0.0F );
}
if( i == 4 )
{
GlStateManager.rotate( 90.0F, 0.0F, 0.0F, 1.0F );
GlStateManager.rotatef( 90.0F, 0.0F, 0.0F, 1.0F );
}
if( i == 5 )
{
GlStateManager.rotate( -90.0F, 0.0F, 0.0F, 1.0F );
GlStateManager.rotatef( -90.0F, 0.0F, 0.0F, 1.0F );
}
GlStateManager.disableTexture2D();
GlStateManager.disableTexture();
VertexBuffer.begin( GL11.GL_QUADS, DefaultVertexFormats.POSITION );
VertexBuffer.pos( -100.0D, -100.0D, -100.0D ).endVertex();
VertexBuffer.pos( -100.0D, -100.0D, 100.0D ).endVertex();
@@ -126,21 +128,21 @@ public class SpatialSkyRender extends IRenderHandler
if( fade > 0.0f )
{
GlStateManager.disableFog();
GlStateManager.disableAlpha();
GlStateManager.disableAlphaTest();
RenderSystem.enableBlend();
GlStateManager.disableTexture2D();
GlStateManager.disableTexture();
GlStateManager.depthMask( false );
OpenGlHelper.glBlendFunc( GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, 1, 0 );
GlStateManager.blendFuncSeparate( GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, 1, 0 );
RenderHelper.disableStandardItemLighting();
RenderSystem.color4f( fade, fade, fade, 1.0f );
GlStateManager.callList( this.dspList );
GL11.glCallList( this.dspList );
}
GlStateManager.depthMask( true );
RenderSystem.enableBlend();
GlStateManager.enableAlpha();
GlStateManager.enableAlphaTest();
RenderSystem.enableTexture();
GlStateManager.enableFog();
@@ -19,15 +19,11 @@
package appeng.client.render;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.RenderItem;
import net.minecraft.item.ItemStack;
import com.mojang.blaze3d.matrix.MatrixStack;
import net.minecraft.client.renderer.Vector3f;
import net.minecraft.util.Direction;
import appeng.api.storage.data.IAEItemStack;
import appeng.util.IWideReadableNumberConverter;
import appeng.util.ReadableNumberConverter;
@@ -44,9 +40,9 @@ public class TesrRenderHelper
* Move the current coordinate system to the center of the given block face, assuming that the origin is currently
* at the center of a block.
*/
public static void moveToFace( Direction face )
public static void moveToFace( MatrixStack mStack, Direction face )
{
GlStateManager.translate( face.getXOffset() * 0.50, face.getYOffset() * 0.50, face.getZOffset() * 0.50 );
mStack.translate( face.getXOffset() * 0.50, face.getYOffset() * 0.50, face.getZOffset() * 0.50 );
}
/**
@@ -54,39 +50,39 @@ public class TesrRenderHelper
* the given face as if it was
* a 2D canvas.
*/
public static void rotateToFace( Direction face, byte spin )
public static void rotateToFace( MatrixStack mStack, Direction face, byte spin )
{
switch( face )
{
case UP:
GlStateManager.scale( 1.0f, -1.0f, 1.0f );
GlStateManager.rotate( 90.0f, 1.0f, 0.0f, 0.0f );
GlStateManager.rotate( spin * 90.0F, 0, 0, 1 );
mStack.scale( 1.0f, -1.0f, 1.0f );
mStack.rotate( Vector3f.XP.rotationDegrees( 90.0F ) );
mStack.rotate( Vector3f.ZP.rotationDegrees( spin * 90.0F ) );
break;
case DOWN:
GlStateManager.scale( 1.0f, -1.0f, 1.0f );
GlStateManager.rotate( -90.0f, 1.0f, 0.0f, 0.0f );
GlStateManager.rotate( spin * -90.0F, 0, 0, 1 );
mStack.scale( 1.0f, -1.0f, 1.0f );
mStack.rotate( Vector3f.XP.rotationDegrees( -90.0F ) );
mStack.rotate( Vector3f.ZP.rotationDegrees( spin * -90.0F ) );
break;
case EAST:
GlStateManager.scale( -1.0f, -1.0f, -1.0f );
GlStateManager.rotate( -90.0f, 0.0f, 1.0f, 0.0f );
mStack.scale( -1.0f, -1.0f, -1.0f );
mStack.rotate( Vector3f.YP.rotationDegrees( -90.0F ) );
break;
case WEST:
GlStateManager.scale( -1.0f, -1.0f, -1.0f );
GlStateManager.rotate( 90.0f, 0.0f, 1.0f, 0.0f );
mStack.scale( -1.0f, -1.0f, -1.0f );
mStack.rotate( Vector3f.YP.rotationDegrees( 90.0F ) );
break;
case NORTH:
GlStateManager.scale( -1.0f, -1.0f, -1.0f );
mStack.scale( -1.0f, -1.0f, -1.0f );
break;
case SOUTH:
GlStateManager.scale( -1.0f, -1.0f, -1.0f );
GlStateManager.rotate( 180.0f, 0.0f, 1.0f, 0.0f );
mStack.scale( -1.0f, -1.0f, -1.0f );
mStack.rotate( Vector3f.YP.rotationDegrees( 180.0F ) );
break;
default:
@@ -94,53 +90,53 @@ public class TesrRenderHelper
}
}
/**
* Render an item in 2D.
*/
public static void renderItem2d( ItemStack itemStack, float scale )
{
if( !itemStack.isEmpty() )
{
OpenGlHelper.setLightmapTextureCoords( OpenGlHelper.lightmapTexUnit, 240.f, 240.0f );
GlStateManager.pushMatrix();
// The Z-scaling by 0.0001 causes the model to be visually "flattened"
// This cannot replace a proper projection, but it's cheap and gives the desired
// effect at least from head-on
GlStateManager.scale( scale / 32.0f, scale / 32.0f, 0.0001f );
// Position the item icon at the top middle of the panel
GlStateManager.translate( -8, -11, 0 );
RenderItem renderItem = Minecraft.getInstance().getRenderItem();
renderItem.renderItemAndEffectIntoGUI( itemStack, 0, 0 );
GlStateManager.popMatrix();
}
}
/**
* Render an item in 2D and the given text below it.
*
* @param spacing Specifies how far apart the item and the item stack amount are rendered.
*/
public static void renderItem2dWithAmount( IAEItemStack itemStack, float itemScale, float spacing )
{
final ItemStack renderStack = itemStack.asItemStackRepresentation();
TesrRenderHelper.renderItem2d( renderStack, itemScale );
final long stackSize = itemStack.getStackSize();
final String renderedStackSize = NUMBER_CONVERTER.toWideReadableForm( stackSize );
// Render the item count
final FontRenderer fr = Minecraft.getInstance().fontRenderer;
final int width = fr.getStringWidth( renderedStackSize );
GlStateManager.translate( 0.0f, spacing, 0 );
GlStateManager.scale( 1.0f / 62.0f, 1.0f / 62.0f, 1.0f / 62.0f );
GlStateManager.translate( -0.5f * width, 0.0f, 0.5f );
fr.drawString( renderedStackSize, 0, 0, 0 );
}
//TODO, A different approach will have to be used for this from TESRs, -covers, i have ideas.
// /**
// * Render an item in 2D.
// */
// public static void renderItem2d( ItemStack itemStack, float scale )
// {
// if( !itemStack.isEmpty() )
// {
// RenderSystem.glMultiTexCoord2f( GL13.GL_TEXTURE22, 240.f, 240.0f );
//
// RenderSystem.pushMatrix();
//
// // The Z-scaling by 0.0001 causes the model to be visually "flattened"
// // This cannot replace a proper projection, but it's cheap and gives the desired
// // effect at least from head-on
// RenderSystem.scaled( scale / 32.0f, scale / 32.0f, 0.0001f );
// // Position the item icon at the top middle of the panel
// RenderSystem.translated( -8, -11, 0 );
//
// ItemRenderer renderItem = Minecraft.getInstance().getItemRenderer();
// renderItem.renderItemAndEffectIntoGUI( itemStack, 0, 0 );
//
// RenderSystem.popMatrix();
// }
// }
//
// /**
// * Render an item in 2D and the given text below it.
// *
// * @param spacing Specifies how far apart the item and the item stack amount are rendered.
// */
// public static void renderItem2dWithAmount( IAEItemStack itemStack, float itemScale, float spacing )
// {
// final ItemStack renderStack = itemStack.asItemStackRepresentation();
//
// TesrRenderHelper.renderItem2d( renderStack, itemScale );
//
// final long stackSize = itemStack.getStackSize();
// final String renderedStackSize = NUMBER_CONVERTER.toWideReadableForm( stackSize );
//
// // Render the item count
// final FontRenderer fr = Minecraft.getInstance().fontRenderer;
// final int width = fr.getStringWidth( renderedStackSize );
// RenderSystem.translated( 0.0f, spacing, 0 );
// RenderSystem.scaled( 1.0f / 62.0f, 1.0f / 62.0f, 1.0f / 62.0f );
// RenderSystem.translated( -0.5f * width, 0.0f, 0.5f );
// fr.drawString( renderedStackSize, 0, 0, 0 );
//
// }
}
@@ -1,69 +0,0 @@
/*
* This file is part of Applied Energistics 2.
* Copyright (c) 2013 - 2015, AlgorithmX2, All rights reserved.
*
* Applied Energistics 2 is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Applied Energistics 2 is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Applied Energistics 2. If not, see <http://www.gnu.org/licenses/lgpl>.
*/
package appeng.client.render;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.client.renderer.vertex.VertexFormat;
import net.minecraftforge.common.ForgeModContainer;
import net.minecraftforge.fml.client.FMLClientHandler;
/**
* Utility for managing extended Vertex Formats without having to re-clone existing vertex formats over and over again.
*/
public final class VertexFormats
{
// Standard item format extended with lightmap coordinates
private static final VertexFormat itemFormatWithLightMap = new VertexFormat( DefaultVertexFormats.ITEM ).addElement( DefaultVertexFormats.TEX_2S );
private VertexFormats()
{
}
public static VertexFormat getFormatWithLightMap( VertexFormat format )
{
// Do not use this when Optifine is present or if the vanilla lighting pipeline is used
if( FMLClientHandler.instance().hasOptifine() || !ForgeModContainer.forgeLightPipelineEnabled )
{
return format;
}
VertexFormat result;
if( format == DefaultVertexFormats.BLOCK )
{
result = DefaultVertexFormats.BLOCK;
}
else if( format == DefaultVertexFormats.ITEM )
{
result = itemFormatWithLightMap;
}
else if( !format.hasUvOffset( 1 ) )
{
result = new VertexFormat( format );
result.addElement( DefaultVertexFormats.TEX_2S );
}
else
{
result = format; // Already has the needed UV, so keep it
}
return result;
}
}
@@ -64,6 +64,7 @@ import net.minecraft.client.renderer.model.ItemOverride;
import net.minecraft.client.renderer.model.ItemTransformVec3f;
import net.minecraft.client.renderer.model.ModelBakery;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.client.renderer.vertex.VertexFormat;
import net.minecraft.resources.IResource;
import net.minecraft.resources.IResourceManager;
@@ -351,7 +352,7 @@ public enum UVLModelLoader implements ICustomModelLoader
Pair<Float, Float> brightness = UVLModelWrapper.this.uvlightmap.get( face );
if( brightness != null )
{
VertexFormat newFormat = VertexFormats.getFormatWithLightMap( quad.getFormat() );
VertexFormat newFormat = DefaultVertexFormats.BLOCK;
UnpackedBakedQuad.Builder builder = new UnpackedBakedQuad.Builder( newFormat );
VertexLighterFlat trans = new VertexLighterFlat( Minecraft.getInstance().getBlockColors() )
{
@@ -392,4 +393,4 @@ public enum UVLModelLoader implements ICustomModelLoader
boolean ae2_uvl_marker = false;
}
}
}
+9
View File
@@ -24,20 +24,29 @@ import appeng.api.config.PowerMultiplier;
import appeng.api.config.SecurityPermissions;
import appeng.api.definitions.IItemDefinition;
import appeng.api.implementations.items.IAEWrench;
import appeng.api.networking.IGrid;
import appeng.api.networking.IGridNode;
import appeng.api.networking.energy.IEnergyGrid;
import appeng.api.networking.energy.IEnergySource;
import appeng.api.networking.security.IActionHost;
import appeng.api.networking.security.IActionSource;
import appeng.api.networking.storage.IStorageGrid;
import appeng.api.storage.IMEInventory;
import appeng.api.storage.IMEMonitorHandlerReceiver;
import appeng.api.storage.IStorageChannel;
import appeng.api.storage.data.IAEFluidStack;
import appeng.api.storage.data.IAEItemStack;
import appeng.api.storage.data.IAEStack;
import appeng.api.storage.data.IItemList;
import appeng.api.util.DimensionalCoord;
import appeng.core.AEConfig;
import appeng.core.AELog;
import appeng.core.Api;
import appeng.core.features.AEFeature;
import appeng.core.stats.AeStats;
import appeng.fluids.util.AEFluidStack;
import appeng.me.GridAccessException;
import appeng.me.GridNode;
import appeng.util.helpers.ItemComparisonHelper;
import appeng.util.item.AEItemStack;