diff --git a/src/main/java/appeng/client/render/ColorableTileBlockColor.java b/src/main/java/appeng/client/render/ColorableTileBlockColor.java index 24ee91a01..992833f04 100644 --- a/src/main/java/appeng/client/render/ColorableTileBlockColor.java +++ b/src/main/java/appeng/client/render/ColorableTileBlockColor.java @@ -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 diff --git a/src/main/java/appeng/client/render/DelegateBakedModel.java b/src/main/java/appeng/client/render/DelegateBakedModel.java index 93ca2fe74..bfafcb2dc 100644 --- a/src/main/java/appeng/client/render/DelegateBakedModel.java +++ b/src/main/java/appeng/client/render/DelegateBakedModel.java @@ -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 handlePerspective( ItemCameraTransforms.TransformType type ) + public IBakedModel handlePerspective( ItemCameraTransforms.TransformType cameraTransformType, MatrixStack mat ) { - Pair pair = this.baseModel.handlePerspective( type ); - return Pair.of( this, pair.getValue() ); + baseModel.handlePerspective( cameraTransformType, mat ); + return this; } @Override diff --git a/src/main/java/appeng/client/render/DummyFluidBakedModel.java b/src/main/java/appeng/client/render/DummyFluidBakedModel.java index c858ee1f3..d7f7eaeaa 100644 --- a/src/main/java/appeng/client/render/DummyFluidBakedModel.java +++ b/src/main/java/appeng/client/render/DummyFluidBakedModel.java @@ -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 getQuads( @Nullable BlockState state, @Nullable Direction side, long rand ) + public List 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() { diff --git a/src/main/java/appeng/client/render/DummyFluidDispatcherBakedModel.java b/src/main/java/appeng/client/render/DummyFluidDispatcherBakedModel.java index beda7611a..70bef8da1 100644 --- a/src/main/java/appeng/client/render/DummyFluidDispatcherBakedModel.java +++ b/src/main/java/appeng/client/render/DummyFluidDispatcherBakedModel.java @@ -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 bakedTextureGetter; - public DummyFluidDispatcherBakedModel( IBakedModel baseModel, VertexFormat format, Function bakedTextureGetter ) + public DummyFluidDispatcherBakedModel( IBakedModel baseModel, Function bakedTextureGetter ) { super( baseModel ); - this.format = format; this.bakedTextureGetter = bakedTextureGetter; } // This is never used. See the item override list below. @Override - public List getQuads( @Nullable BlockState state, @Nullable Direction side, long rand ) + public List 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() ) ); } }; } diff --git a/src/main/java/appeng/client/render/DummyFluidItemModel.java b/src/main/java/appeng/client/render/DummyFluidItemModel.java index 6d609b56b..6dd4bdd7d 100644 --- a/src/main/java/appeng/client/render/DummyFluidItemModel.java +++ b/src/main/java/appeng/client/render/DummyFluidItemModel.java @@ -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 diff --git a/src/main/java/appeng/client/render/FacadeBakedItemModel.java b/src/main/java/appeng/client/render/FacadeBakedItemModel.java index f1407262b..8ef147e08 100644 --- a/src/main/java/appeng/client/render/FacadeBakedItemModel.java +++ b/src/main/java/appeng/client/render/FacadeBakedItemModel.java @@ -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 getQuads( @Nullable BlockState state, @Nullable Direction side, long rand ) + public List getQuads( @Nullable BlockState state, @Nullable Direction side, Random rand ) + { + return getQuads( state, side, rand, EmptyModelData.INSTANCE ); + } + + @Override + public List 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() { diff --git a/src/main/java/appeng/client/render/FacadeDispatcherBakedModel.java b/src/main/java/appeng/client/render/FacadeDispatcherBakedModel.java index ae45f49cf..4dee1a29c 100644 --- a/src/main/java/appeng/client/render/FacadeDispatcherBakedModel.java +++ b/src/main/java/appeng/client/render/FacadeDispatcherBakedModel.java @@ -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 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 getQuads( @Nullable BlockState state, @Nullable Direction side, long rand ) + public List 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; } diff --git a/src/main/java/appeng/client/render/FacadeItemModel.java b/src/main/java/appeng/client/render/FacadeItemModel.java index cc05a07d5..20e14bb8f 100644 --- a/src/main/java/appeng/client/render/FacadeItemModel.java +++ b/src/main/java/appeng/client/render/FacadeItemModel.java @@ -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 diff --git a/src/main/java/appeng/client/render/FacingToRotation.java b/src/main/java/appeng/client/render/FacingToRotation.java index 2a89cae7c..e6edb0048 100644 --- a/src/main/java/appeng/client/render/FacingToRotation.java +++ b/src/main/java/appeng/client/render/FacingToRotation.java @@ -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()]; } - -} \ No newline at end of file +} diff --git a/src/main/java/appeng/client/render/SpatialSkyRender.java b/src/main/java/appeng/client/render/SpatialSkyRender.java index c891bb30c..3a98fe545 100644 --- a/src/main/java/appeng/client/render/SpatialSkyRender.java +++ b/src/main/java/appeng/client/render/SpatialSkyRender.java @@ -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(); diff --git a/src/main/java/appeng/client/render/TesrRenderHelper.java b/src/main/java/appeng/client/render/TesrRenderHelper.java index 116ebd8e8..a659547c4 100644 --- a/src/main/java/appeng/client/render/TesrRenderHelper.java +++ b/src/main/java/appeng/client/render/TesrRenderHelper.java @@ -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 ); + // + // } } diff --git a/src/main/java/appeng/client/render/VertexFormats.java b/src/main/java/appeng/client/render/VertexFormats.java deleted file mode 100644 index 063286d51..000000000 --- a/src/main/java/appeng/client/render/VertexFormats.java +++ /dev/null @@ -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 . - */ - -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; - } -} diff --git a/src/main/java/appeng/client/render/model/UVLModelLoader.java b/src/main/java/appeng/client/render/model/UVLModelLoader.java index 23eb3484d..2c28d1edd 100644 --- a/src/main/java/appeng/client/render/model/UVLModelLoader.java +++ b/src/main/java/appeng/client/render/model/UVLModelLoader.java @@ -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 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; } -} \ No newline at end of file +} diff --git a/src/main/java/appeng/util/Platform.java b/src/main/java/appeng/util/Platform.java index 42630878a..4f9f1c5c0 100644 --- a/src/main/java/appeng/util/Platform.java +++ b/src/main/java/appeng/util/Platform.java @@ -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;