 @@ -64 +64 @@ public class ModelResourceLocation extends ResourceLocation
 -            ModelResourceLocation modelresourcelocation = (ModelResourceLocation)p_equals_1_;
 +            ModelResourceLocation modelresourcelocation = (ModelResourceLocation) other;
-diff --git a/minecraft/client/renderer/chunk/RenderChunk.java b/minecraft/client/renderer/chunk/RenderChunk.java
-index ddb2ec5..860a856 100644
---- a/minecraft/client/renderer/chunk/RenderChunk.java
-+++ b/minecraft/client/renderer/chunk/RenderChunk.java
-@@ -51 +51 @@ public class RenderChunk
--    private IBlockAccess field_189564_r;
-+    private IBlockAccess blockAccess;
-@@ -53 +53 @@ public class RenderChunk
--    public RenderChunk(World p_i47120_1_, RenderGlobal p_i47120_2_, int p_i47120_3_)
-+    public RenderChunk(World world, RenderGlobal renderGlobal, int p_i47120_3_)
-@@ -60,2 +60,2 @@ public class RenderChunk
--        this.world = p_i47120_1_;
--        this.renderGlobal = p_i47120_2_;
-+        this.world = world;
-+        this.renderGlobal = renderGlobal;
-@@ -91 +91 @@ public class RenderChunk
--    public void func_189562_a(int p_189562_1_, int p_189562_2_, int p_189562_3_)
-+    public void setPosition(int x, int y, int z)
-@@ -93 +93 @@ public class RenderChunk
--        if (p_189562_1_ != this.position.getX() || p_189562_2_ != this.position.getY() || p_189562_3_ != this.position.getZ())
-+        if (x != this.position.getX() || y != this.position.getY() || z != this.position.getZ())
-@@ -96,2 +96,2 @@ public class RenderChunk
--            this.position.set(p_189562_1_, p_189562_2_, p_189562_3_);
--            this.boundingBox = new AxisAlignedBB((double)p_189562_1_, (double)p_189562_2_, (double)p_189562_3_, (double)(p_189562_1_ + 16), (double)(p_189562_2_ + 16), (double)(p_189562_3_ + 16));
-+            this.position.set(x, y, z);
-+            this.boundingBox = new AxisAlignedBB((double)x, (double)y, (double)z, (double)(x + 16), (double)(y + 16), (double)(z + 16));
-@@ -124,2 +124,2 @@ public class RenderChunk
--        BlockPos blockpos = this.position;
--        BlockPos blockpos1 = blockpos.add(15, 15, 15);
-+        BlockPos minPos = this.position;
-+        BlockPos maxPos = minPos.add(15, 15, 15);
-@@ -142,2 +142,2 @@ public class RenderChunk
--        VisGraph lvt_9_1_ = new VisGraph();
--        HashSet lvt_10_1_ = Sets.newHashSet();
-+        VisGraph visGraph = new VisGraph();
-+        HashSet hashSet = Sets.newHashSet();
-@@ -145 +145 @@ public class RenderChunk
--        if (!this.field_189564_r.extendedLevelsInChunkCache())
-+        if (!this.blockAccess.extendedLevelsInChunkCache())
-@@ -151 +151 @@ public class RenderChunk
--            for (BlockPos.MutableBlockPos blockpos$mutableblockpos : BlockPos.getAllInBoxMutable(blockpos, blockpos1))
-+            for (BlockPos.MutableBlockPos mutablePos : BlockPos.getAllInBoxMutable(minPos, maxPos))
-@@ -153 +153 @@ public class RenderChunk
--                IBlockState iblockstate = this.field_189564_r.getBlockState(blockpos$mutableblockpos);
-+                IBlockState iblockstate = this.blockAccess.getBlockState(mutablePos);
-@@ -158 +158 @@ public class RenderChunk
--                    lvt_9_1_.setOpaqueCube(blockpos$mutableblockpos);
-+                    visGraph.setOpaqueCube(mutablePos);
-@@ -163 +163 @@ public class RenderChunk
--                    TileEntity tileentity = this.field_189564_r.getTileEntity(new BlockPos(blockpos$mutableblockpos));
-+                    TileEntity tileEntity = this.blockAccess.getTileEntity(new BlockPos(mutablePos));
-@@ -165 +165 @@ public class RenderChunk
--                    if (tileentity != null)
-+                    if (tileEntity != null)
-@@ -167 +167 @@ public class RenderChunk
--                        TileEntitySpecialRenderer<TileEntity> tileentityspecialrenderer = TileEntityRendererDispatcher.instance.<TileEntity>getSpecialRenderer(tileentity);
-+                        TileEntitySpecialRenderer<TileEntity> tileEntityRenderer = TileEntityRendererDispatcher.instance.<TileEntity>getSpecialRenderer(tileEntity);
-@@ -169 +169 @@ public class RenderChunk
--                        if (tileentityspecialrenderer != null)
-+                        if (tileEntityRenderer != null)
-@@ -171 +171 @@ public class RenderChunk
--                            compiledchunk.addTileEntity(tileentity);
-+                            compiledchunk.addTileEntity(tileEntity);
-@@ -173 +173 @@ public class RenderChunk
--                            if (tileentityspecialrenderer.isGlobalRenderer(tileentity))
-+                            if (tileEntityRenderer.isGlobalRenderer(tileEntity))
-@@ -175 +175 @@ public class RenderChunk
--                                lvt_10_1_.add(tileentity);
-+                                hashSet.add(tileEntity);
-@@ -191 +191 @@ public class RenderChunk
--                        this.preRenderBlocks(vertexbuffer, blockpos);
-+                        this.preRenderBlocks(vertexbuffer, minPos);
-@@ -194 +194 @@ public class RenderChunk
--                    aboolean[j] |= blockrendererdispatcher.renderBlock(iblockstate, blockpos$mutableblockpos, this.field_189564_r, vertexbuffer);
-+                    aboolean[j] |= blockrendererdispatcher.renderBlock(iblockstate, mutablePos, this.blockAccess, vertexbuffer);
-@@ -212 +212 @@ public class RenderChunk
--        compiledchunk.setVisibility(lvt_9_1_.computeVisibility());
-+        compiledchunk.setVisibility(visGraph.computeVisibility());
-@@ -217 +217 @@ public class RenderChunk
--            Set<TileEntity> set = Sets.newHashSet(lvt_10_1_);
-+            Set<TileEntity> set = Sets.newHashSet(hashSet);
-@@ -220 +220 @@ public class RenderChunk
--            set1.removeAll(lvt_10_1_);
-+            set1.removeAll(hashSet);
-@@ -222 +222 @@ public class RenderChunk
--            this.setTileEntities.addAll(lvt_10_1_);
-+            this.setTileEntities.addAll(hashSet);
-@@ -263 +263 @@ public class RenderChunk
--            this.func_189563_q();
-+            this.initBlockAccess();
-@@ -274 +274 @@ public class RenderChunk
--    private void func_189563_q()
-+    private void initBlockAccess()
-@@ -277 +277 @@ public class RenderChunk
--        this.field_189564_r = new ChunkCache(this.world, this.position.add(-1, -1, -1), this.position.add(16, 16, 16), 1);
-+        this.blockAccess = new ChunkCache(this.world, this.position.add(-1, -1, -1), this.position.add(16, 16, 16), 1);
-diff --git a/minecraft/client/renderer/chunk/VboChunkFactory.java b/minecraft/client/renderer/chunk/VboChunkFactory.java
-index c2be3f9..a9705d9 100644
---- a/minecraft/client/renderer/chunk/VboChunkFactory.java
-+++ b/minecraft/client/renderer/chunk/VboChunkFactory.java
-@@ -8 +8 @@ public class VboChunkFactory implements IRenderChunkFactory
--    public RenderChunk func_189565_a(World p_189565_1_, RenderGlobal p_189565_2_, int p_189565_3_)
-+    public RenderChunk func_189565_a(World world, RenderGlobal renderGlobal, int p_189565_3_)
-@@ -10 +10 @@ public class VboChunkFactory implements IRenderChunkFactory
--        return new RenderChunk(p_189565_1_, p_189565_2_, p_189565_3_);
-+        return new RenderChunk(world, renderGlobal, p_189565_3_);
 diff --git a/minecraft/client/renderer/texture/AbstractTexture.java b/minecraft/client/renderer/texture/AbstractTexture.java
 index 1b72624..94e5a37 100644
 --- a/minecraft/client/renderer/texture/AbstractTexture.java

-                ;
-            }
-
@@ -1038 +1021 @@ public class Minecraft implements IThreadListener, ISnooperInfo
-            ((GuiScreen)guiScreenIn).setWorldAndResolution(this, i, j);
+            guiScreenIn.setWorldAndResolution(this, i, j);
@@ -1040,3 +1023 @@ public class Minecraft implements IThreadListener, ISnooperInfo
-        }
-        else
-        {
+        } else {
@@ -1150 +1130,0 @@ public class Minecraft implements IThreadListener, ISnooperInfo
-        this.framebufferMc.bindFramebuffer(true);
@@ -1158 +1138,2 @@ public class Minecraft implements IThreadListener, ISnooperInfo
-            this.entityRenderer.updateCameraAndRender(this.timer.renderPartialTicks, i);
+            entityRenderer.updateCamera(timer.renderPartialTicks, i);
+            nova.updateCameraAndRender(timer.renderPartialTicks, i, this);
@@ -1181 +1161,0 @@ public class Minecraft implements IThreadListener, ISnooperInfo
-        this.framebufferMc.unbindFramebuffer();
@@ -1184 +1163,0 @@ public class Minecraft implements IThreadListener, ISnooperInfo
-        this.framebufferMc.framebufferRender(this.displayWidth, this.displayHeight);
@@ -1187 +1165,0 @@ public class Minecraft implements IThreadListener, ISnooperInfo
-        this.entityRenderer.renderStreamIndicator(this.timer.renderPartialTicks);
@@ -1227 +1205 @@ public class Minecraft implements IThreadListener, ISnooperInfo
-        Display.update();
+        //Display.update();
@@ -1234 +1212 @@ public class Minecraft implements IThreadListener, ISnooperInfo
-        if (!this.fullscreen && Display.wasResized())
+        if (nova.wasResized())
@@ -1236,4 +1214,2 @@ public class Minecraft implements IThreadListener, ISnooperInfo
-            int i = this.displayWidth;
-            int j = this.displayHeight;
-            this.displayWidth = Display.getWidth();
-            this.displayHeight = Display.getHeight();
+            this.displayWidth = nova.getWidth();
+            this.displayHeight = nova.getHeight();
@@ -1241,11 +1216,0 @@ public class Minecraft implements IThreadListener, ISnooperInfo
-            if (this.displayWidth != i || this.displayHeight != j)
-            {
-                if (this.displayWidth <= 0)

+        return whiteImage;
+    }
+
diff --git a/minecraft/client/renderer/texture/TextureUtil.java b/minecraft/client/renderer/texture/TextureUtil.java
index b0a0490..d121ce3 100644
--- a/minecraft/client/renderer/texture/TextureUtil.java
