From 6db479f94eaafa45ee1304a4bd512e7018aafbca Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Fri, 8 Jan 2016 23:36:35 +0100 Subject: [PATCH] More stuff & special render fix testing --- specialPeopleStuff.properties | 2 +- .../render/RenderReconstructorLens.java | 2 +- .../mod/misc/cloud/SmileyCloudEasterEggs.java | 2 +- .../mod/misc/special/RenderSpecial.java | 24 ++++++++++++------- .../mod/misc/special/SpecialRenderInit.java | 3 +-- .../actuallyadditions/mod/util/AssetUtil.java | 24 +++++++++---------- 6 files changed, 31 insertions(+), 26 deletions(-) diff --git a/specialPeopleStuff.properties b/specialPeopleStuff.properties index 6425701a3..2ac022d8c 100644 --- a/specialPeopleStuff.properties +++ b/specialPeopleStuff.properties @@ -1,4 +1,4 @@ -ellpeck=ActuallyAdditions:blockMiner@0 +ellpeck=ActuallyAdditions:itemBooklet@0 dqmhose=minecraft:torch@0 twoofeight=ActuallyAdditions:blockHeatCollector@0 larixine=ActuallyAdditions:blockBlackLotus@0 \ No newline at end of file diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/render/RenderReconstructorLens.java b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/render/RenderReconstructorLens.java index 92b0645a4..f728a533b 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/render/RenderReconstructorLens.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/blocks/render/RenderReconstructorLens.java @@ -69,7 +69,7 @@ public class RenderReconstructorLens extends TileEntitySpecialRenderer{ } GlStateManager.scale(0.5F, 0.5F, 0.5F); - AssetUtil.renderItemInWorld(stack, 0); + AssetUtil.renderItemInWorld(stack); GlStateManager.popMatrix(); } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/misc/cloud/SmileyCloudEasterEggs.java b/src/main/java/de/ellpeck/actuallyadditions/mod/misc/cloud/SmileyCloudEasterEggs.java index a9d33c467..6907bb2ac 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/misc/cloud/SmileyCloudEasterEggs.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/misc/cloud/SmileyCloudEasterEggs.java @@ -385,7 +385,7 @@ public class SmileyCloudEasterEggs{ GlStateManager.translate(-0.5F, 0.2F, leftHand ? 0.55F : -0.5F); GlStateManager.scale(0.75F, 0.75F, 0.75F); - AssetUtil.renderItemInWorld(stack, 0); + AssetUtil.renderItemInWorld(stack); GlStateManager.popMatrix(); } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/misc/special/RenderSpecial.java b/src/main/java/de/ellpeck/actuallyadditions/mod/misc/special/RenderSpecial.java index c22f3a5e3..afe50f1b1 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/misc/special/RenderSpecial.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/misc/special/RenderSpecial.java @@ -20,6 +20,7 @@ import net.minecraft.entity.player.EnumPlayerModelParts; import net.minecraft.init.Blocks; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; +import net.minecraft.util.Vec3; import java.util.Calendar; @@ -32,18 +33,18 @@ public class RenderSpecial{ this.theThingToRender = stack; } - public void render(EntityPlayer player){ - if(player.isInvisible() || player.isWearing(EnumPlayerModelParts.CAPE)){ + public void render(EntityPlayer player, float partialTicks){ + if(player.isInvisible() || !player.isWearing(EnumPlayerModelParts.CAPE)){ return; } boolean isBlock = this.theThingToRender.getItem() instanceof ItemBlock; - float size = isBlock ? 0.3F : 0.4F; + float size = isBlock ? 0.5F : 0.6F; double offsetUp = isBlock ? 0F : 0.2F; if(ClientProxy.pumpkinBlurPumpkinBlur){ this.theThingToRender = new ItemStack(Calendar.getInstance().get(Calendar.DAY_OF_MONTH)%2 == 0 ? Blocks.lit_pumpkin : Blocks.pumpkin); - size = 0.3F; + size = 0.5F; offsetUp = 0; } @@ -56,15 +57,20 @@ public class RenderSpecial{ } GlStateManager.pushMatrix(); - GlStateManager.translate(0D, -0.775D+offsetUp, 0D); + + Vec3 currentPos = Minecraft.getMinecraft().thePlayer.getPositionEyes(partialTicks); + Vec3 playerPos = player.getPositionEyes(partialTicks); + GlStateManager.translate(playerPos.xCoord-currentPos.xCoord, playerPos.yCoord-currentPos.yCoord-(player.isSneaking() || Minecraft.getMinecraft().thePlayer.isSneaking() ? 0.125D : 0D), playerPos.zCoord-currentPos.zCoord); + + GlStateManager.translate(0D, 2.535D+offsetUp, 0D); GlStateManager.rotate(180F, 1.0F, 0.0F, 1.0F); GlStateManager.scale(size, size, size); if(time-(bobHeight/2) >= lastTimeForBobbing){ - GlStateManager.translate(0, (time-this.lastTimeForBobbing)/100, 0); + GlStateManager.translate(0D, (time-this.lastTimeForBobbing)/100D, 0D); } else{ - GlStateManager.translate(0, -(time-lastTimeForBobbing)/100+bobHeight/100, 0); + GlStateManager.translate(0D, -(time-lastTimeForBobbing)/100D+bobHeight/100D, 0D); } GlStateManager.rotate((float)(theTime/20), 0, 1, 0); @@ -75,8 +81,8 @@ public class RenderSpecial{ AssetUtil.renderBlockInWorld(Block.getBlockFromItem(this.theThingToRender.getItem()), this.theThingToRender.getItemDamage()); } else{ - GlStateManager.translate(-0.5F, 0F, 0F); - AssetUtil.renderItemInWorld(this.theThingToRender, 0); + GlStateManager.translate(-0.5D, 0D, 0D); + AssetUtil.renderItemInWorld(this.theThingToRender); } } GlStateManager.enableLighting(); diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/misc/special/SpecialRenderInit.java b/src/main/java/de/ellpeck/actuallyadditions/mod/misc/special/SpecialRenderInit.java index e86f3323f..3bf0f506e 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/misc/special/SpecialRenderInit.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/misc/special/SpecialRenderInit.java @@ -68,14 +68,13 @@ public class SpecialRenderInit{ } @SubscribeEvent(priority = EventPriority.HIGHEST) - //TODO Fix floating item public void onPlayerRender(RenderPlayerEvent.Pre event){ if(!specialList.isEmpty()){ for(Map.Entry entry : specialList.entrySet()){ //Does the player have one of the names from the list? if(StringUtil.equalsToLowerCase(entry.getKey(), event.entityPlayer.getName())){ //Render the special Item/Block - entry.getValue().render(event.entityPlayer); + entry.getValue().render(event.entityPlayer, event.partialRenderTick); break; } } diff --git a/src/main/java/de/ellpeck/actuallyadditions/mod/util/AssetUtil.java b/src/main/java/de/ellpeck/actuallyadditions/mod/util/AssetUtil.java index a448d5ed0..4870fa947 100644 --- a/src/main/java/de/ellpeck/actuallyadditions/mod/util/AssetUtil.java +++ b/src/main/java/de/ellpeck/actuallyadditions/mod/util/AssetUtil.java @@ -18,6 +18,7 @@ import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.WorldRenderer; +import net.minecraft.client.renderer.block.model.ItemCameraTransforms.TransformType; import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; @@ -53,22 +54,21 @@ public class AssetUtil{ } @SideOnly(Side.CLIENT) - public static void renderItemInWorld(ItemStack stack, int renderPass){ - //TODO Fix rendering items in world - /*IIcon icon = stack.getItem().getIcon(stack, renderPass); - float f = icon.getMinU(); - float f1 = icon.getMaxU(); - float f2 = icon.getMinV(); - float f3 = icon.getMaxV(); - Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationItemsTexture); - ItemRenderer.renderItemIn2D(Tessellator.instance, f1, f2, f, f3, icon.getIconWidth(), icon.getIconHeight(), 1F/16F);*/ + public static void renderItemInWorld(ItemStack stack){ + GlStateManager.pushMatrix(); + GlStateManager.disableLighting(); + GlStateManager.pushAttrib(); + RenderHelper.enableStandardItemLighting(); + Minecraft.getMinecraft().getRenderItem().renderItem(stack, TransformType.FIXED); + RenderHelper.disableStandardItemLighting(); + GlStateManager.popAttrib(); + GlStateManager.enableLighting(); + GlStateManager.popMatrix(); } @SideOnly(Side.CLIENT) public static void renderBlockInWorld(Block block, int meta){ - //TODO Fix rendering blocks in world - /*Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationBlocksTexture); - RenderBlocks.getInstance().renderBlockAsItem(block, meta, 1F);*/ + renderItemInWorld(new ItemStack(block, 1, meta)); } @SideOnly(Side.CLIENT)