A bunch of rendering rejects updated.

This commit is contained in:
RainWarrior 2016-03-01 19:22:21 +03:00
parent c1744f00e0
commit c9a01a439d
18 changed files with 262 additions and 314 deletions

View File

@ -1267,7 +1267,7 @@
+ * Queries if this block should render in a given layer.
+ * ISmartBlockModel can use MinecraftForgeClient.getRenderLayer to alter their model based on layer
+ */
+ public boolean canRenderInLayer(EnumWorldBlockLayer layer)
+ public boolean canRenderInLayer(BlockRenderLayer layer)
+ {
+ return getBlockLayer() == layer;
+ }

View File

@ -0,0 +1,31 @@
--- ../src-base/minecraft/net/minecraft/client/renderer/BlockRendererDispatcher.java
+++ ../src-work/minecraft/net/minecraft/client/renderer/BlockRendererDispatcher.java
@@ -29,7 +29,7 @@
public BlockRendererDispatcher(BlockModelShapes p_i46577_1_, BlockColors p_i46577_2_)
{
this.blockModelShapes = p_i46577_1_;
- this.blockModelRenderer = new BlockModelRenderer(p_i46577_2_);
+ this.blockModelRenderer = new net.minecraftforge.client.model.pipeline.ForgeBlockModelRenderer(p_i46577_2_);
this.fluidRenderer = new BlockFluidRenderer(p_i46577_2_);
}
@@ -44,7 +44,7 @@
{
state = state.func_185899_b(blockAccess, pos);
IBakedModel ibakedmodel = this.blockModelShapes.getModelForState(state);
- IBakedModel ibakedmodel1 = (new SimpleBakedModel.Builder(state, ibakedmodel, texture, pos)).makeBakedModel();
+ IBakedModel ibakedmodel1 = net.minecraftforge.client.ForgeHooksClient.getDamageModel(ibakedmodel, texture, state, blockAccess, pos);
this.blockModelRenderer.renderModel(blockAccess, ibakedmodel1, state, pos, Tessellator.getInstance().getWorldRenderer(), true);
}
}
@@ -76,7 +76,9 @@
switch (enumblockrendertype)
{
case MODEL:
- return this.blockModelRenderer.renderModel(blockAccess, this.func_184389_a(state), state, pos, worldRendererIn, true);
+ IBakedModel model = this.func_184389_a(state);
+ state = state.getBlock().getExtendedState(state, blockAccess, pos);
+ return this.blockModelRenderer.renderModel(blockAccess, model, state, pos, worldRendererIn, true);
case ENTITYBLOCK_ANIMATED:
return false;
case LIQUID:

View File

@ -7,14 +7,22 @@
- if (!this.mc.thePlayer.getActivePotionEffects().isEmpty())
+ boolean hasVisibleEffect = false;
+ for(PotionEffect potioneffect : this.mc.thePlayer.getActivePotionEffects()) {
+ Potion potion = Potion.potionTypes[potioneffect.getPotionID()];
+ Potion potion = potioneffect.func_188419_a();
+ if(potion.shouldRender(potioneffect)) { hasVisibleEffect = true; break; }
+ }
+ if (!this.mc.thePlayer.getActivePotionEffects().isEmpty() && hasVisibleEffect)
{
this.guiLeft = 160 + (this.width - this.xSize - 200) / 2;
this.hasActivePotionEffects = true;
@@ -81,6 +86,8 @@
@@ -71,6 +76,7 @@
for (PotionEffect potioneffect : Ordering.natural().sortedCopy(collection))
{
Potion potion = potioneffect.func_188419_a();
+ if(!potion.shouldRender(potioneffect)) continue;
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
this.mc.getTextureManager().bindTexture(inventoryBackground);
this.drawTexturedModalRect(i, j, 0, 166, 140, 32);
@@ -81,6 +87,8 @@
this.drawTexturedModalRect(i + 6, j + 7, 0 + i1 % 8 * 18, 198 + i1 / 8 * 18, 18, 18);
}

View File

@ -1,5 +1,14 @@
--- ../src-base/minecraft/net/minecraft/client/renderer/ItemRenderer.java
+++ ../src-work/minecraft/net/minecraft/client/renderer/ItemRenderer.java
@@ -360,7 +360,7 @@
this.func_187456_a(p_187457_7_, p_187457_5_, enumhandside);
}
}
- else if (p_187457_6_.getItem() == Items.filled_map)
+ else if (p_187457_6_.getItem() instanceof net.minecraft.item.ItemMap)
{
if (flag && this.field_187468_e == null)
{
@@ -444,6 +444,7 @@
if (this.mc.thePlayer.isEntityInsideOpaqueBlock())
{
@ -8,7 +17,21 @@
EntityPlayer entityplayer = this.mc.thePlayer;
for (int i = 0; i < 8; ++i)
@@ -470,11 +471,13 @@
@@ -457,11 +458,13 @@
if (iblockstate1.getBlock().isVisuallyOpaque())
{
iblockstate = iblockstate1;
+ overlayPos = blockpos;
}
}
if (iblockstate.func_185901_i() != EnumBlockRenderType.INVISIBLE)
{
+ if (!net.minecraftforge.event.ForgeEventFactory.renderBlockOverlay(mc.thePlayer, partialTicks, net.minecraftforge.client.event.RenderBlockOverlayEvent.OverlayType.BLOCK, iblockstate, overlayPos))
this.func_178108_a(partialTicks, this.mc.getBlockRendererDispatcher().getBlockModelShapes().getTexture(iblockstate));
}
}
@@ -470,11 +473,13 @@
{
if (this.mc.thePlayer.isInsideOfMaterial(Material.water))
{
@ -22,3 +45,14 @@
this.renderFireInFirstPerson(partialTicks);
}
}
@@ -596,8 +601,8 @@
else
{
float f = entityplayersp.func_184825_o(1.0F);
- this.field_187469_f += MathHelper.clamp_float((Objects.equal(this.field_187467_d, itemstack) ? f * f * f : 0.0F) - this.field_187469_f, -0.4F, 0.4F);
- this.field_187471_h += MathHelper.clamp_float((float)(Objects.equal(this.field_187468_e, itemstack1) ? 1 : 0) - this.field_187471_h, -0.4F, 0.4F);
+ this.field_187469_f += MathHelper.clamp_float((net.minecraftforge.client.ForgeHooksClient.shouldCauseReequipAnimation(this.field_187467_d, itemstack) ? f * f * f : 0.0F) - this.field_187469_f, -0.4F, 0.4F);
+ this.field_187471_h += MathHelper.clamp_float((float)(net.minecraftforge.client.ForgeHooksClient.shouldCauseReequipAnimation(this.field_187468_e, itemstack1) ? 1 : 0) - this.field_187471_h, -0.4F, 0.4F);
}
if (this.field_187469_f < 0.1F)

View File

@ -1,4 +1,6 @@
++++ REJECTED PATCH 1
--- ../src-base/minecraft/net/minecraft/client/renderer/VertexBuffer.java
+++ ../src-work/minecraft/net/minecraft/client/renderer/VertexBuffer.java
@@ -510,15 +510,15 @@
break;
case USHORT:
case SHORT:
@ -20,22 +22,13 @@
}
this.nextVertexFormatIndex();
++++ END PATCH
++++ REJECTED PATCH 2
@@ -609,4 +609,9 @@
return this.stateVertexFormat;
}
}
+ public void checkAndGrow()
+ {
+ this.growBuffer(vertexFormat.getNextOffset()/* / 4 * 4 */);
+ }
+
+ public boolean isColorDisabled()
+ {
+ return noColor;
+ return noColor;
+ }
+
@SideOnly(Side.CLIENT)
public class State
{
++++ END PATCH
}

View File

@ -0,0 +1,57 @@
--- ../src-base/minecraft/net/minecraft/client/renderer/WorldVertexBufferUploader.java
+++ ../src-work/minecraft/net/minecraft/client/renderer/WorldVertexBufferUploader.java
@@ -28,26 +28,8 @@
int l = vertexformatelement.getIndex();
bytebuffer.position(vertexformat.func_181720_d(j));
- switch (vertexformatelement$enumusage)
- {
- case POSITION:
- GlStateManager.func_187427_b(vertexformatelement.getElementCount(), k, i, bytebuffer);
- GlStateManager.func_187410_q(32884);
- break;
- case UV:
- OpenGlHelper.setClientActiveTexture(OpenGlHelper.defaultTexUnit + l);
- GlStateManager.func_187404_a(vertexformatelement.getElementCount(), k, i, bytebuffer);
- GlStateManager.func_187410_q(32888);
- OpenGlHelper.setClientActiveTexture(OpenGlHelper.defaultTexUnit);
- break;
- case COLOR:
- GlStateManager.func_187400_c(vertexformatelement.getElementCount(), k, i, bytebuffer);
- GlStateManager.func_187410_q(32886);
- break;
- case NORMAL:
- GlStateManager.func_187446_a(k, i, bytebuffer);
- GlStateManager.func_187410_q(32885);
- }
+ // moved to VertexFormatElement.preDraw
+ vertexformatelement.getUsage().preDraw(vertexformat, j, i, bytebuffer);
}
GlStateManager.func_187439_f(p_181679_1_.getDrawMode(), 0, p_181679_1_.getVertexCount());
@@ -59,23 +41,8 @@
VertexFormatElement.EnumUsage vertexformatelement$enumusage1 = vertexformatelement1.getUsage();
int k1 = vertexformatelement1.getIndex();
- switch (vertexformatelement$enumusage1)
- {
- case POSITION:
- GlStateManager.func_187429_p(32884);
- break;
- case UV:
- OpenGlHelper.setClientActiveTexture(OpenGlHelper.defaultTexUnit + k1);
- GlStateManager.func_187429_p(32888);
- OpenGlHelper.setClientActiveTexture(OpenGlHelper.defaultTexUnit);
- break;
- case COLOR:
- GlStateManager.func_187429_p(32886);
- GlStateManager.resetColor();
- break;
- case NORMAL:
- GlStateManager.func_187429_p(32885);
- }
+ // moved to VertexFormatElement.postDraw
+ vertexformatelement1.getUsage().postDraw(vertexformat, i1, i, bytebuffer);
}
}

View File

@ -20,7 +20,18 @@
{
TileEntity tileentity = iblockaccess.getTileEntity(new BlockPos(blockpos$mutableblockpos));
TileEntitySpecialRenderer<TileEntity> tileentityspecialrenderer = TileEntityRendererDispatcher.instance.<TileEntity>getSpecialRenderer(tileentity);
@@ -191,6 +193,7 @@
@@ -176,7 +178,9 @@
}
}
- BlockRenderLayer blockrenderlayer1 = block.getBlockLayer();
+ for(BlockRenderLayer blockrenderlayer1 : BlockRenderLayer.values()) {
+ if(!block.canRenderInLayer(blockrenderlayer1)) continue;
+ net.minecraftforge.client.ForgeHooksClient.setRenderLayer(blockrenderlayer1);
int j = blockrenderlayer1.ordinal();
if (block.getDefaultState().func_185901_i() != EnumBlockRenderType.INVISIBLE)
@@ -191,6 +195,7 @@
aboolean[j] |= blockrendererdispatcher.renderBlock(iblockstate, blockpos$mutableblockpos, iblockaccess, vertexbuffer);
}
@ -28,7 +39,7 @@
}
for (BlockRenderLayer blockrenderlayer : BlockRenderLayer.values())
@@ -413,6 +416,26 @@
@@ -413,6 +418,26 @@
return this.needsUpdate && this.field_188284_q;
}

View File

@ -40,11 +40,62 @@
}
private void initMissingImage()
@@ -139,9 +152,13 @@
@@ -88,12 +101,26 @@
int j = Integer.MAX_VALUE;
int k = 1 << this.mipmapLevels;
+ net.minecraftforge.client.ForgeHooksClient.onTextureStitchedPre(this);
+ net.minecraftforge.fml.common.FMLLog.info("Max texture size: %d", i);
+ net.minecraftforge.fml.common.ProgressManager.ProgressBar bar = net.minecraftforge.fml.common.ProgressManager.push("Texture stitching", skipFirst ? 0 : this.mapRegisteredSprites.size());
+
+ if(!skipFirst)
for (Entry<String, TextureAtlasSprite> entry : this.mapRegisteredSprites.entrySet())
{
TextureAtlasSprite textureatlassprite = (TextureAtlasSprite)entry.getValue();
ResourceLocation resourcelocation = this.func_184396_a(textureatlassprite);
+ bar.step(resourcelocation.getResourcePath());
IResource iresource = null;
+ if (textureatlassprite.hasCustomLoader(resourceManager, resourcelocation))
+ {
+ if (textureatlassprite.load(resourceManager, resourcelocation))
+ {
+ continue;
+ }
+ }
+ else
try
{
PngSizeInfo pngsizeinfo = PngSizeInfo.func_188532_a(resourceManager.getResource(resourcelocation));
@@ -103,12 +130,14 @@
}
catch (RuntimeException runtimeexception)
{
- logger.error((String)("Unable to parse metadata from " + resourcelocation), (Throwable)runtimeexception);
+ //logger.error((String)("Unable to parse metadata from " + resourcelocation), (Throwable)runtimeexception);
+ net.minecraftforge.fml.client.FMLClientHandler.instance().trackBrokenTexture(resourcelocation, runtimeexception.getMessage());
continue;
}
catch (IOException ioexception)
{
- logger.error((String)("Using missing texture, unable to load " + resourcelocation), (Throwable)ioexception);
+ //logger.error((String)("Using missing texture, unable to load " + resourcelocation), (Throwable)ioexception);
+ net.minecraftforge.fml.client.FMLClientHandler.instance().trackMissingTexture(resourcelocation);
continue;
}
finally
@@ -128,6 +157,7 @@
stitcher.addSprite(textureatlassprite);
}
+ net.minecraftforge.fml.common.ProgressManager.pop(bar);
int l = Math.min(j, k);
int i1 = MathHelper.calculateLogBaseTwo(l);
@@ -139,9 +169,12 @@
this.missingImage.generateMipmaps(this.mipmapLevels);
stitcher.addSprite(this.missingImage);
+ net.minecraftforge.fml.common.ProgressManager.pop(bar);
+ skipFirst = false;
+ bar = net.minecraftforge.fml.common.ProgressManager.push("Texture creation", 3);
@ -54,9 +105,21 @@
stitcher.doStitch();
}
catch (StitcherException stitcherexception)
@@ -253,6 +270,13 @@
crashreportcategory.addCrashSection("Mipmap levels", Integer.valueOf(this.mipmapLevels));
throw new ReportedException(crashreport);
@@ -150,9 +183,11 @@
}
logger.info("Created: {}x{} {}-atlas", new Object[] {Integer.valueOf(stitcher.getCurrentWidth()), Integer.valueOf(stitcher.getCurrentHeight()), this.basePath});
+ bar.step("Allocating GL texture");
TextureUtil.allocateTextureImpl(this.getGlTextureId(), this.mipmapLevels, stitcher.getCurrentWidth(), stitcher.getCurrentHeight());
Map<String, TextureAtlasSprite> map = Maps.<String, TextureAtlasSprite>newHashMap(this.mapRegisteredSprites);
+ bar.step("Uploading GL texture");
for (TextureAtlasSprite textureatlassprite1 : stitcher.getStichSlots())
{
if (textureatlassprite1 == this.missingImage || this.func_184397_a(resourceManager, textureatlassprite1))
@@ -185,6 +220,13 @@
{
textureatlassprite2.copyFrom(this.missingImage);
}
+
+ net.minecraftforge.client.ForgeHooksClient.onTextureStitchedPost(this);
@ -67,8 +130,8 @@
+ net.minecraftforge.fml.common.ProgressManager.pop(bar);
}
private ResourceLocation func_184396_a(TextureAtlasSprite p_184396_1_)
@@ -317,4 +341,37 @@
private boolean func_184397_a(IResourceManager p_184397_1_, final TextureAtlasSprite p_184397_2_)
@@ -317,4 +359,37 @@
{
return this.missingImage;
}

View File

@ -1,6 +1,21 @@
--- ../src-base/minecraft/net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher.java
+++ ../src-work/minecraft/net/minecraft/client/renderer/tileentity/TileEntityRendererDispatcher.java
@@ -129,6 +129,11 @@
@@ -106,11 +106,14 @@
{
if (tileentityIn.getDistanceSq(this.entityX, this.entityY, this.entityZ) < tileentityIn.getMaxRenderDistanceSquared())
{
+ if(!tileentityIn.hasFastRenderer())
+ {
int i = this.worldObj.getCombinedLight(tileentityIn.getPos(), 0);
int j = i % 65536;
int k = i / 65536;
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)j, (float)k);
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
+ }
BlockPos blockpos = tileentityIn.getPos();
this.renderTileEntityAt(tileentityIn, (double)blockpos.getX() - staticPlayerX, (double)blockpos.getY() - staticPlayerY, (double)blockpos.getZ() - staticPlayerZ, partialTicks, destroyStage);
}
@@ -129,6 +132,11 @@
{
try
{
@ -12,7 +27,7 @@
tileentityspecialrenderer.renderTileEntityAt(tileEntityIn, x, y, z, partialTicks, destroyStage);
}
catch (Throwable throwable)
@@ -155,4 +160,49 @@
@@ -155,4 +163,49 @@
{
return this.fontRenderer;
}

View File

@ -1,23 +0,0 @@
++++ REJECTED PATCH 1
@SideOnly(Side.CLIENT)
public static enum EnumNeighborInfo
{
- DOWN(new EnumFacing[]{EnumFacing.WEST, EnumFacing.EAST, EnumFacing.NORTH, EnumFacing.SOUTH}, 0.5F, false, new BlockModelRenderer.Orientation[0], new BlockModelRenderer.Orientation[0], new BlockModelRenderer.Orientation[0], new BlockModelRenderer.Orientation[0]),
- UP(new EnumFacing[]{EnumFacing.EAST, EnumFacing.WEST, EnumFacing.NORTH, EnumFacing.SOUTH}, 1.0F, false, new BlockModelRenderer.Orientation[0], new BlockModelRenderer.Orientation[0], new BlockModelRenderer.Orientation[0], new BlockModelRenderer.Orientation[0]),
+ // -- Forge Patch to Fix Top/Bottom Lighting Interpolation --
+ // Forge PR - https://github.com/MinecraftForge/MinecraftForge/pull/1892
+ // Mojang Bug - https://bugs.mojang.com/browse/MC-80148
+ DOWN( new EnumFacing[]{ EnumFacing.WEST, EnumFacing.EAST, EnumFacing.NORTH, EnumFacing.SOUTH }, 0.5F, true,
+ new Orientation[]{ Orientation.FLIP_WEST, Orientation.SOUTH, Orientation.FLIP_WEST, Orientation.FLIP_SOUTH, Orientation.WEST, Orientation.FLIP_SOUTH, Orientation.WEST, Orientation.SOUTH },
+ new Orientation[]{ Orientation.FLIP_WEST, Orientation.NORTH, Orientation.FLIP_WEST, Orientation.FLIP_NORTH, Orientation.WEST, Orientation.FLIP_NORTH, Orientation.WEST, Orientation.NORTH },
+ new Orientation[]{ Orientation.FLIP_EAST, Orientation.NORTH, Orientation.FLIP_EAST, Orientation.FLIP_NORTH, Orientation.EAST, Orientation.FLIP_NORTH, Orientation.EAST, Orientation.NORTH },
+ new Orientation[]{ Orientation.FLIP_EAST, Orientation.SOUTH, Orientation.FLIP_EAST, Orientation.FLIP_SOUTH, Orientation.EAST, Orientation.FLIP_SOUTH, Orientation.EAST, Orientation.SOUTH } ),
+ UP( new EnumFacing[]{ EnumFacing.EAST, EnumFacing.WEST, EnumFacing.NORTH, EnumFacing.SOUTH }, 1.0F, true,
+ new Orientation[]{ Orientation.EAST, Orientation.SOUTH, Orientation.EAST, Orientation.FLIP_SOUTH, Orientation.FLIP_EAST, Orientation.FLIP_SOUTH, Orientation.FLIP_EAST, Orientation.SOUTH },
+ new Orientation[]{ Orientation.EAST, Orientation.NORTH, Orientation.EAST, Orientation.FLIP_NORTH, Orientation.FLIP_EAST, Orientation.FLIP_NORTH, Orientation.FLIP_EAST, Orientation.NORTH },
+ new Orientation[]{ Orientation.WEST, Orientation.NORTH, Orientation.WEST, Orientation.FLIP_NORTH, Orientation.FLIP_WEST, Orientation.FLIP_NORTH, Orientation.FLIP_WEST, Orientation.NORTH },
+ new Orientation[]{ Orientation.WEST, Orientation.SOUTH, Orientation.WEST, Orientation.FLIP_SOUTH, Orientation.FLIP_WEST, Orientation.FLIP_SOUTH, Orientation.FLIP_WEST, Orientation.SOUTH } ),
NORTH(new EnumFacing[]{EnumFacing.UP, EnumFacing.DOWN, EnumFacing.EAST, EnumFacing.WEST}, 0.8F, true, new BlockModelRenderer.Orientation[]{BlockModelRenderer.Orientation.UP, BlockModelRenderer.Orientation.FLIP_WEST, BlockModelRenderer.Orientation.UP, BlockModelRenderer.Orientation.WEST, BlockModelRenderer.Orientation.FLIP_UP, BlockModelRenderer.Orientation.WEST, BlockModelRenderer.Orientation.FLIP_UP, BlockModelRenderer.Orientation.FLIP_WEST}, new BlockModelRenderer.Orientation[]{BlockModelRenderer.Orientation.UP, BlockModelRenderer.Orientation.FLIP_EAST, BlockModelRenderer.Orientation.UP, BlockModelRenderer.Orientation.EAST, BlockModelRenderer.Orientation.FLIP_UP, BlockModelRenderer.Orientation.EAST, BlockModelRenderer.Orientation.FLIP_UP, BlockModelRenderer.Orientation.FLIP_EAST}, new BlockModelRenderer.Orientation[]{BlockModelRenderer.Orientation.DOWN, BlockModelRenderer.Orientation.FLIP_EAST, BlockModelRenderer.Orientation.DOWN, BlockModelRenderer.Orientation.EAST, BlockModelRenderer.Orientation.FLIP_DOWN, BlockModelRenderer.Orientation.EAST, BlockModelRenderer.Orientation.FLIP_DOWN, BlockModelRenderer.Orientation.FLIP_EAST}, new BlockModelRenderer.Orientation[]{BlockModelRenderer.Orientation.DOWN, BlockModelRenderer.Orientation.FLIP_WEST, BlockModelRenderer.Orientation.DOWN, BlockModelRenderer.Orientation.WEST, BlockModelRenderer.Orientation.FLIP_DOWN, BlockModelRenderer.Orientation.WEST, BlockModelRenderer.Orientation.FLIP_DOWN, BlockModelRenderer.Orientation.FLIP_WEST}),
SOUTH(new EnumFacing[]{EnumFacing.WEST, EnumFacing.EAST, EnumFacing.DOWN, EnumFacing.UP}, 0.8F, true, new BlockModelRenderer.Orientation[]{BlockModelRenderer.Orientation.UP, BlockModelRenderer.Orientation.FLIP_WEST, BlockModelRenderer.Orientation.FLIP_UP, BlockModelRenderer.Orientation.FLIP_WEST, BlockModelRenderer.Orientation.FLIP_UP, BlockModelRenderer.Orientation.WEST, BlockModelRenderer.Orientation.UP, BlockModelRenderer.Orientation.WEST}, new BlockModelRenderer.Orientation[]{BlockModelRenderer.Orientation.DOWN, BlockModelRenderer.Orientation.FLIP_WEST, BlockModelRenderer.Orientation.FLIP_DOWN, BlockModelRenderer.Orientation.FLIP_WEST, BlockModelRenderer.Orientation.FLIP_DOWN, BlockModelRenderer.Orientation.WEST, BlockModelRenderer.Orientation.DOWN, BlockModelRenderer.Orientation.WEST}, new BlockModelRenderer.Orientation[]{BlockModelRenderer.Orientation.DOWN, BlockModelRenderer.Orientation.FLIP_EAST, BlockModelRenderer.Orientation.FLIP_DOWN, BlockModelRenderer.Orientation.FLIP_EAST, BlockModelRenderer.Orientation.FLIP_DOWN, BlockModelRenderer.Orientation.EAST, BlockModelRenderer.Orientation.DOWN, BlockModelRenderer.Orientation.EAST}, new BlockModelRenderer.Orientation[]{BlockModelRenderer.Orientation.UP, BlockModelRenderer.Orientation.FLIP_EAST, BlockModelRenderer.Orientation.FLIP_UP, BlockModelRenderer.Orientation.FLIP_EAST, BlockModelRenderer.Orientation.FLIP_UP, BlockModelRenderer.Orientation.EAST, BlockModelRenderer.Orientation.UP, BlockModelRenderer.Orientation.EAST}),
WEST(new EnumFacing[]{EnumFacing.UP, EnumFacing.DOWN, EnumFacing.NORTH, EnumFacing.SOUTH}, 0.6F, true, new BlockModelRenderer.Orientation[]{BlockModelRenderer.Orientation.UP, BlockModelRenderer.Orientation.SOUTH, BlockModelRenderer.Orientation.UP, BlockModelRenderer.Orientation.FLIP_SOUTH, BlockModelRenderer.Orientation.FLIP_UP, BlockModelRenderer.Orientation.FLIP_SOUTH, BlockModelRenderer.Orientation.FLIP_UP, BlockModelRenderer.Orientation.SOUTH}, new BlockModelRenderer.Orientation[]{BlockModelRenderer.Orientation.UP, BlockModelRenderer.Orientation.NORTH, BlockModelRenderer.Orientation.UP, BlockModelRenderer.Orientation.FLIP_NORTH, BlockModelRenderer.Orientation.FLIP_UP, BlockModelRenderer.Orientation.FLIP_NORTH, BlockModelRenderer.Orientation.FLIP_UP, BlockModelRenderer.Orientation.NORTH}, new BlockModelRenderer.Orientation[]{BlockModelRenderer.Orientation.DOWN, BlockModelRenderer.Orientation.NORTH, BlockModelRenderer.Orientation.DOWN, BlockModelRenderer.Orientation.FLIP_NORTH, BlockModelRenderer.Orientation.FLIP_DOWN, BlockModelRenderer.Orientation.FLIP_NORTH, BlockModelRenderer.Orientation.FLIP_DOWN, BlockModelRenderer.Orientation.NORTH}, new BlockModelRenderer.Orientation[]{BlockModelRenderer.Orientation.DOWN, BlockModelRenderer.Orientation.SOUTH, BlockModelRenderer.Orientation.DOWN, BlockModelRenderer.Orientation.FLIP_SOUTH, BlockModelRenderer.Orientation.FLIP_DOWN, BlockModelRenderer.Orientation.FLIP_SOUTH, BlockModelRenderer.Orientation.FLIP_DOWN, BlockModelRenderer.Orientation.SOUTH}),
++++ END PATCH

View File

@ -1,50 +0,0 @@
++++ REJECTED PATCH 1
{
private BlockModelShapes blockModelShapes;
private final GameSettings gameSettings;
- private final BlockModelRenderer blockModelRenderer = new BlockModelRenderer();
+ private final BlockModelRenderer blockModelRenderer = new net.minecraftforge.client.model.pipeline.ForgeBlockModelRenderer();
private final ChestRenderer chestRenderer = new ChestRenderer();
private final BlockFluidRenderer fluidRenderer = new BlockFluidRenderer();
++++ END PATCH
++++ REJECTED PATCH 2
{
state = block.getActualState(state, blockAccess, pos);
IBakedModel ibakedmodel = this.blockModelShapes.getModelForState(state);
+
+ if(ibakedmodel instanceof net.minecraftforge.client.model.ISmartBlockModel)
+ {
+ IBlockState extendedState = block.getExtendedState(state, blockAccess, pos);
+ for ( net.minecraft.util.EnumWorldBlockLayer layer : net.minecraft.util.EnumWorldBlockLayer.values() )
+ {
+ if ( block.canRenderInLayer( layer ) )
+ {
+ net.minecraftforge.client.ForgeHooksClient.setRenderLayer(layer);
+
+ IBakedModel targetLayer = ((net.minecraftforge.client.model.ISmartBlockModel)ibakedmodel).handleBlockState(extendedState);
+ IBakedModel damageModel = (new SimpleBakedModel.Builder(targetLayer, texture)).makeBakedModel();
+ this.blockModelRenderer.renderModel(blockAccess, damageModel, state, pos, Tessellator.getInstance().getWorldRenderer());
+ }
+ }
+ return;
+ }
+
IBakedModel ibakedmodel1 = (new SimpleBakedModel.Builder(ibakedmodel, texture)).makeBakedModel();
this.blockModelRenderer.renderModel(blockAccess, ibakedmodel1, state, pos, Tessellator.getInstance().getWorldRenderer());
}
++++ END PATCH
++++ REJECTED PATCH 3
ibakedmodel = ((WeightedBakedModel)ibakedmodel).getAlternativeModel(MathHelper.getPositionRandom(pos));
}
+ if(ibakedmodel instanceof net.minecraftforge.client.model.ISmartBlockModel)
+ {
+ IBlockState extendedState = block.getExtendedState(state, worldIn, pos);
+ ibakedmodel = ((net.minecraftforge.client.model.ISmartBlockModel)ibakedmodel).handleBlockState(extendedState);
+ }
+
return ibakedmodel;
}
++++ END PATCH

View File

@ -1,9 +0,0 @@
++++ REJECTED PATCH 2
for (PotionEffect potioneffect : this.mc.thePlayer.getActivePotionEffects())
{
Potion potion = Potion.potionTypes[potioneffect.getPotionID()];
+ if(!potion.shouldRender(potioneffect)) continue;
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
this.mc.getTextureManager().bindTexture(inventoryBackground);
this.drawTexturedModalRect(i, j, 0, 166, 140, 32);
++++ END PATCH

View File

@ -1,39 +0,0 @@
++++ REJECTED PATCH 1
if (this.itemToRender != null)
{
- if (this.itemToRender.getItem() == Items.filled_map)
+ if (this.itemToRender.getItem() instanceof net.minecraft.item.ItemMap)
{
this.renderItemMap(abstractclientplayer, f2, f, f1);
}
++++ END PATCH
++++ REJECTED PATCH 3
if (iblockstate1.getBlock().isVisuallyOpaque())
{
iblockstate = iblockstate1;
+ overlayPos = blockpos;
}
}
if (iblockstate.getBlock().getRenderType() != -1)
{
+ if (!net.minecraftforge.event.ForgeEventFactory.renderBlockOverlay(mc.thePlayer, partialTicks, net.minecraftforge.client.event.RenderBlockOverlayEvent.OverlayType.BLOCK, iblockstate, overlayPos))
this.func_178108_a(partialTicks, this.mc.getBlockRendererDispatcher().getBlockModelShapes().getTexture(iblockstate));
}
}
++++ END PATCH
++++ REJECTED PATCH 5
{
if (!this.itemToRender.getIsItemStackEqual(itemstack))
{
+ if (!this.itemToRender.getItem().shouldCauseReequipAnimation(this.itemToRender, itemstack, equippedItemSlot != entityplayer.inventory.currentItem))
+ {
+ this.itemToRender = itemstack;
+ this.equippedItemSlot = entityplayer.inventory.currentItem;
+ return;
+ }
flag = true;
}
}
++++ END PATCH

View File

@ -1,66 +0,0 @@
++++ REJECTED PATCH 1
for (int j = 0; j < list.size(); ++j)
{
+ // moved to VertexFormatElement.preDraw
VertexFormatElement vertexformatelement = (VertexFormatElement)list.get(j);
- VertexFormatElement.EnumUsage vertexformatelement$enumusage = vertexformatelement.getUsage();
- int k = vertexformatelement.getType().getGlConstant();
- int l = vertexformatelement.getIndex();
- bytebuffer.position(vertexformat.func_181720_d(j));
-
- switch (vertexformatelement$enumusage)
- {
- case POSITION:
- GL11.glVertexPointer(vertexformatelement.getElementCount(), k, i, bytebuffer);
- GL11.glEnableClientState(GL11.GL_VERTEX_ARRAY);
- break;
- case UV:
- OpenGlHelper.setClientActiveTexture(OpenGlHelper.defaultTexUnit + l);
- GL11.glTexCoordPointer(vertexformatelement.getElementCount(), k, i, bytebuffer);
- GL11.glEnableClientState(GL11.GL_TEXTURE_COORD_ARRAY);
- OpenGlHelper.setClientActiveTexture(OpenGlHelper.defaultTexUnit);
- break;
- case COLOR:
- GL11.glColorPointer(vertexformatelement.getElementCount(), k, i, bytebuffer);
- GL11.glEnableClientState(GL11.GL_COLOR_ARRAY);
- break;
- case NORMAL:
- GL11.glNormalPointer(k, i, bytebuffer);
- GL11.glEnableClientState(GL11.GL_NORMAL_ARRAY);
- }
+ vertexformatelement.getUsage().preDraw(vertexformat, j, i, bytebuffer);
}
GL11.glDrawArrays(p_181679_1_.getDrawMode(), 0, p_181679_1_.getVertexCount());
++++ END PATCH
++++ REJECTED PATCH 2
for (int j1 = list.size(); i1 < j1; ++i1)
{
VertexFormatElement vertexformatelement1 = (VertexFormatElement)list.get(i1);
- VertexFormatElement.EnumUsage vertexformatelement$enumusage1 = vertexformatelement1.getUsage();
- int k1 = vertexformatelement1.getIndex();
-
- switch (vertexformatelement$enumusage1)
- {
- case POSITION:
- GL11.glDisableClientState(GL11.GL_VERTEX_ARRAY);
- break;
- case UV:
- OpenGlHelper.setClientActiveTexture(OpenGlHelper.defaultTexUnit + k1);
- GL11.glDisableClientState(GL11.GL_TEXTURE_COORD_ARRAY);
- OpenGlHelper.setClientActiveTexture(OpenGlHelper.defaultTexUnit);
- break;
- case COLOR:
- GL11.glDisableClientState(GL11.GL_COLOR_ARRAY);
- GlStateManager.resetColor();
- break;
- case NORMAL:
- GL11.glDisableClientState(GL11.GL_NORMAL_ARRAY);
- }
+ // moved to VertexFormatElement.postDraw
+ vertexformatelement1.getUsage().postDraw(vertexformat, i1, i, bytebuffer);
}
}
++++ END PATCH

View File

@ -1,12 +0,0 @@
++++ REJECTED PATCH 3
}
}
- EnumWorldBlockLayer enumworldblocklayer1 = block.getBlockLayer();
+ for(EnumWorldBlockLayer enumworldblocklayer1 : EnumWorldBlockLayer.values()) {
+ if(!block.canRenderInLayer(enumworldblocklayer1)) continue;
+ net.minecraftforge.client.ForgeHooksClient.setRenderLayer(enumworldblocklayer1);
int j = enumworldblocklayer1.ordinal();
if (block.getRenderType() != -1)
++++ END PATCH

View File

@ -1,60 +1,3 @@
++++ REJECTED PATCH 4
int j = Integer.MAX_VALUE;
int k = 1 << this.mipmapLevels;
+ net.minecraftforge.client.ForgeHooksClient.onTextureStitchedPre(this);
+ net.minecraftforge.fml.common.FMLLog.info("Max texture size: %d", i);
+ net.minecraftforge.fml.common.ProgressManager.ProgressBar bar = net.minecraftforge.fml.common.ProgressManager.push("Texture stitching", skipFirst ? 0 : this.mapRegisteredSprites.size());
+
+ if(!skipFirst)
for (Entry<String, TextureAtlasSprite> entry : this.mapRegisteredSprites.entrySet())
{
TextureAtlasSprite textureatlassprite = (TextureAtlasSprite)entry.getValue();
ResourceLocation resourcelocation = new ResourceLocation(textureatlassprite.getIconName());
ResourceLocation resourcelocation1 = this.completeResourceLocation(resourcelocation, 0);
+ bar.step(resourcelocation1.getResourcePath());
+ if (textureatlassprite.hasCustomLoader(resourceManager, resourcelocation))
+ {
+ if (!textureatlassprite.load(resourceManager, resourcelocation))
+ {
+ j = Math.min(j, Math.min(textureatlassprite.getIconWidth(), textureatlassprite.getIconHeight()));
+ stitcher.addSprite(textureatlassprite);
+ }
+ continue;
+ }
+
try
{
IResource iresource = resourceManager.getResource(resourcelocation1);
++++ END PATCH
++++ REJECTED PATCH 5
}
catch (RuntimeException runtimeexception)
{
- logger.error((String)("Unable to parse metadata from " + resourcelocation1), (Throwable)runtimeexception);
+ //logger.error((String)("Unable to parse metadata from " + resourcelocation1), (Throwable)runtimeexception);
+ net.minecraftforge.fml.client.FMLClientHandler.instance().trackBrokenTexture(resourcelocation1, runtimeexception.getMessage());
continue;
}
catch (IOException ioexception1)
{
- logger.error((String)("Using missing texture, unable to load " + resourcelocation1), (Throwable)ioexception1);
+ //logger.error((String)("Using missing texture, unable to load " + resourcelocation1), (Throwable)ioexception1);
+ net.minecraftforge.fml.client.FMLClientHandler.instance().trackMissingTexture(resourcelocation1);
continue;
}
++++ END PATCH
++++ REJECTED PATCH 6
stitcher.addSprite(textureatlassprite);
}
+ net.minecraftforge.fml.common.ProgressManager.pop(bar);
int j1 = Math.min(j, k);
int k1 = MathHelper.calculateLogBaseTwo(j1);
++++ END PATCH
++++ REJECTED PATCH 7
this.mipmapLevels = k1;
}
@ -68,16 +11,3 @@
{
textureatlassprite1.generateMipmaps(this.mipmapLevels);
++++ END PATCH
++++ REJECTED PATCH 9
}
logger.info("Created: {}x{} {}-atlas", new Object[] {Integer.valueOf(stitcher.getCurrentWidth()), Integer.valueOf(stitcher.getCurrentHeight()), this.basePath});
+ bar.step("Allocating GL texture");
TextureUtil.allocateTextureImpl(this.getGlTextureId(), this.mipmapLevels, stitcher.getCurrentWidth(), stitcher.getCurrentHeight());
Map<String, TextureAtlasSprite> map = Maps.<String, TextureAtlasSprite>newHashMap(this.mapRegisteredSprites);
+ bar.step("Uploading GL texture");
for (TextureAtlasSprite textureatlassprite2 : stitcher.getStichSlots())
{
String s = textureatlassprite2.getIconName();
++++ END PATCH

View File

@ -1,16 +0,0 @@
++++ REJECTED PATCH 1
{
if (tileentityIn.getDistanceSq(this.entityX, this.entityY, this.entityZ) < tileentityIn.getMaxRenderDistanceSquared())
{
+ if(!tileentityIn.hasFastRenderer())
+ {
int i = this.worldObj.getCombinedLight(tileentityIn.getPos(), 0);
int j = i % 65536;
int k = i / 65536;
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float)j / 1.0F, (float)k / 1.0F);
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
+ }
BlockPos blockpos = tileentityIn.getPos();
this.renderTileEntityAt(tileentityIn, (double)blockpos.getX() - staticPlayerX, (double)blockpos.getY() - staticPlayerY, (double)blockpos.getZ() - staticPlayerZ, partialTicks, destroyStage);
}
++++ END PATCH

View File

@ -26,6 +26,7 @@ import net.minecraft.client.renderer.EntityRenderer;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.RenderGlobal;
import net.minecraft.client.renderer.VertexBuffer;
import net.minecraft.client.renderer.block.model.BakedQuad;
import net.minecraft.client.renderer.block.model.IBakedModel;
import net.minecraft.client.renderer.block.model.ItemCameraTransforms;
@ -34,6 +35,8 @@ import net.minecraft.client.renderer.block.model.ModelBakery;
import net.minecraft.client.renderer.block.model.ModelManager;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.client.renderer.block.model.ModelRotation;
import net.minecraft.client.renderer.block.model.SimpleBakedModel;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.renderer.texture.TextureManager;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
@ -83,6 +86,7 @@ import net.minecraftforge.fml.common.FMLLog;
import org.apache.commons.lang3.tuple.Pair;
import org.lwjgl.BufferUtils;
import com.google.common.base.Objects;
import com.google.common.base.Optional;
import com.google.common.collect.Maps;
@ -594,4 +598,21 @@ public class ForgeHooksClient
}
}
}
public static IBakedModel getDamageModel(IBakedModel ibakedmodel, TextureAtlasSprite texture, IBlockState state, IBlockAccess world, BlockPos pos)
{
// TODO custom damage models
// state = state.block.getExtendedState(state, world, pos);
return (new SimpleBakedModel.Builder(state, ibakedmodel, texture, pos)).makeBakedModel();
}
public static boolean shouldCauseReequipAnimation(ItemStack from, ItemStack to)
{
if(!Objects.equal(from, to) || from == null)
{
return false;
}
// FIXME: 3rd argument?
return from.getItem().shouldCauseReequipAnimation(from, to);
}
}