From 51b8f75bb1c8e5b65de8a615caabb538d761ff60 Mon Sep 17 00:00:00 2001 From: Matt Caughey Date: Wed, 25 Dec 2013 12:38:11 -0500 Subject: [PATCH] Work on christmas lights --- src/main/java/biomesoplenty/ClientProxy.java | 3 + .../blocks/BlockBOPColorizedLeaves.java | 2 + .../biomesoplenty/blocks/BlockBOPLeaves.java | 12 +++ .../renderers/ColorizedLeavesRenderer.java | 47 ++++++---- .../blocks/renderers/LeavesRenderer.java | 84 ++++++++++++++++++ .../blocks/renderers/RenderUtils.java | 1 + .../textures/blocks/christmaslights.png | Bin 596 -> 1000 bytes .../blocks/christmaslights.png.mcmeta | 5 ++ .../textures/blocks/christmaslightsoff.png | Bin 0 -> 582 bytes 9 files changed, 137 insertions(+), 17 deletions(-) create mode 100644 src/main/java/biomesoplenty/blocks/renderers/LeavesRenderer.java create mode 100644 src/main/resources/assets/biomesoplenty/textures/blocks/christmaslights.png.mcmeta create mode 100644 src/main/resources/assets/biomesoplenty/textures/blocks/christmaslightsoff.png diff --git a/src/main/java/biomesoplenty/ClientProxy.java b/src/main/java/biomesoplenty/ClientProxy.java index 24455c017..67fd5c3d0 100644 --- a/src/main/java/biomesoplenty/ClientProxy.java +++ b/src/main/java/biomesoplenty/ClientProxy.java @@ -14,6 +14,7 @@ import biomesoplenty.blocks.renderers.BambooRenderer; import biomesoplenty.blocks.renderers.ColorizedLeavesRenderer; import biomesoplenty.blocks.renderers.FoliageRenderer; import biomesoplenty.blocks.renderers.GraveRenderer; +import biomesoplenty.blocks.renderers.LeavesRenderer; import biomesoplenty.blocks.renderers.PlantsRenderer; import biomesoplenty.blocks.renderers.PuddleRender; import biomesoplenty.blocks.renderers.RenderUtils; @@ -57,6 +58,7 @@ public class ClientProxy extends CommonProxy { RenderUtils.graveModel = RenderingRegistry.getNextAvailableRenderId(); RenderUtils.bambooModel = RenderingRegistry.getNextAvailableRenderId(); RenderUtils.colorizedLeavesModel = RenderingRegistry.getNextAvailableRenderId(); + RenderUtils.leavesModel = RenderingRegistry.getNextAvailableRenderId(); RenderingRegistry.registerEntityRenderingHandler(EntityMudball.class, new RenderSnowball(Items.mudball.get(), 0)); RenderingRegistry.registerEntityRenderingHandler(EntityDart.class, new RenderDart()); @@ -103,6 +105,7 @@ public class ClientProxy extends CommonProxy { RenderingRegistry.registerBlockHandler(new GraveRenderer()); RenderingRegistry.registerBlockHandler(new BambooRenderer()); RenderingRegistry.registerBlockHandler(new ColorizedLeavesRenderer()); + RenderingRegistry.registerBlockHandler(new LeavesRenderer()); } @Override diff --git a/src/main/java/biomesoplenty/blocks/BlockBOPColorizedLeaves.java b/src/main/java/biomesoplenty/blocks/BlockBOPColorizedLeaves.java index 9d773dc73..ea837d1bc 100644 --- a/src/main/java/biomesoplenty/blocks/BlockBOPColorizedLeaves.java +++ b/src/main/java/biomesoplenty/blocks/BlockBOPColorizedLeaves.java @@ -42,6 +42,7 @@ public class BlockBOPColorizedLeaves extends BlockLeavesBase implements IShearab private static final String[] leaves = new String[] {"acacia", "mangrove", "palm", "redwood", "willow", "pine"}; private Icon[][] textures; public Icon christmasLights; + public Icon christmasLightsOff; private final ColourizedLeafCategory category; int[] adjacentTreeBlocks; @@ -77,6 +78,7 @@ public class BlockBOPColorizedLeaves extends BlockLeavesBase implements IShearab } christmasLights = iconRegister.registerIcon("biomesoplenty:christmaslights"); + christmasLightsOff = iconRegister.registerIcon("biomesoplenty:christmaslightsoff"); } public Icon getIconBetterLeaves(int metadata, float randomIndex) diff --git a/src/main/java/biomesoplenty/blocks/BlockBOPLeaves.java b/src/main/java/biomesoplenty/blocks/BlockBOPLeaves.java index dd6cfc4f8..41b5270b0 100644 --- a/src/main/java/biomesoplenty/blocks/BlockBOPLeaves.java +++ b/src/main/java/biomesoplenty/blocks/BlockBOPLeaves.java @@ -18,6 +18,7 @@ import net.minecraftforge.common.IShearable; import biomesoplenty.BiomesOPlenty; import biomesoplenty.api.Blocks; import biomesoplenty.api.Items; +import biomesoplenty.blocks.renderers.RenderUtils; import cpw.mods.fml.common.Loader; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -56,6 +57,8 @@ public class BlockBOPLeaves extends BlockLeavesBase implements IShearable private static final float[] fallingLeavesChance = new float[] {0.1F, 0.008F, 0.016F, 0.008F, 0.0F, 0.008F, 0.016F, 0.1F, 0.008F, 0.1F, 0.008F, 0.1F, 0.008F, 0.008F}; private Icon[][] textures; + public Icon christmasLights; + public Icon christmasLightsOff; private final LeafCategory category; int[] adjacentTreeBlocks; @@ -87,6 +90,9 @@ public class BlockBOPLeaves extends BlockLeavesBase implements IShearable textures[0][i] = iconRegister.registerIcon("biomesoplenty:leaves_" + leaves[i] + "_fancy"); textures[1][i] = iconRegister.registerIcon("biomesoplenty:leaves_" + leaves[i] + "_fast"); } + + christmasLights = iconRegister.registerIcon("biomesoplenty:christmaslights"); + christmasLightsOff = iconRegister.registerIcon("biomesoplenty:christmaslightsoff"); } public Icon getIconBetterLeaves(int metadata, float randomIndex) @@ -119,6 +125,12 @@ public class BlockBOPLeaves extends BlockLeavesBase implements IShearable { return Block.leaves.isOpaqueCube(); } + + @Override + public int getRenderType() + { + return RenderUtils.leavesModel; + } @Override @SuppressWarnings({ "rawtypes", "unchecked" }) diff --git a/src/main/java/biomesoplenty/blocks/renderers/ColorizedLeavesRenderer.java b/src/main/java/biomesoplenty/blocks/renderers/ColorizedLeavesRenderer.java index 89e3d9d0e..2741619e3 100644 --- a/src/main/java/biomesoplenty/blocks/renderers/ColorizedLeavesRenderer.java +++ b/src/main/java/biomesoplenty/blocks/renderers/ColorizedLeavesRenderer.java @@ -3,10 +3,12 @@ package biomesoplenty.blocks.renderers; import java.util.Calendar; import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.util.Icon; import net.minecraft.world.IBlockAccess; import net.minecraftforge.common.ForgeDirection; +import biomesoplenty.api.Blocks; import biomesoplenty.blocks.BlockBOPColorizedLeaves; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; @@ -25,6 +27,7 @@ public class ColorizedLeavesRenderer implements ISimpleBlockRenderingHandler BlockBOPColorizedLeaves colorizedLeaves = (BlockBOPColorizedLeaves)block; Icon christmasLights = colorizedLeaves.christmasLights; + Icon christmasLightsOff = colorizedLeaves.christmasLightsOff; renderer.renderStandardBlock(block, x, y, z); @@ -32,23 +35,33 @@ public class ColorizedLeavesRenderer implements ISimpleBlockRenderingHandler if (calendar.get(2) + 1 == 12 && calendar.get(5) >= 24 && calendar.get(5) <= 26) { - if (world.getBlockMetadata(x, y, z) == 5 || world.getBlockMetadata(x, y, z) == 9) - { - for (ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS) - { - if (direction != ForgeDirection.UP && direction != ForgeDirection.DOWN) - { - RenderUtils.renderFace(renderer, block, christmasLights, world, x, y, z, 200, direction); - } - else - { - renderer.aoBrightnessXYNN = 150; - renderer.aoBrightnessYZNN = 150; - renderer.aoBrightnessYZNP = 150; - renderer.aoBrightnessXYPN = 150; - } - } - } + if (world.getBlockId(x, y, z) == Blocks.leavesColorized2.get().blockID) + { + if (world.getBlockMetadata(x, y, z) == 1 || world.getBlockMetadata(x, y, z) == 5 || world.getBlockMetadata(x, y, z) == 9) + { + for (ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS) + { + if (direction != ForgeDirection.UP && direction != ForgeDirection.DOWN) + { + if (Minecraft.getMinecraft().theWorld.isDaytime()) + { + RenderUtils.renderFace(renderer, block, christmasLightsOff, world, x, y, z, direction); + } + else + { + RenderUtils.renderFace(renderer, block, christmasLights, world, x, y, z, 200, direction); + } + } + else + { + renderer.aoBrightnessXYNN = 150; + renderer.aoBrightnessYZNN = 150; + renderer.aoBrightnessYZNP = 150; + renderer.aoBrightnessXYPN = 150; + } + } + } + } } diff --git a/src/main/java/biomesoplenty/blocks/renderers/LeavesRenderer.java b/src/main/java/biomesoplenty/blocks/renderers/LeavesRenderer.java new file mode 100644 index 000000000..47f477e4c --- /dev/null +++ b/src/main/java/biomesoplenty/blocks/renderers/LeavesRenderer.java @@ -0,0 +1,84 @@ +package biomesoplenty.blocks.renderers; + +import java.util.Calendar; + +import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.util.Icon; +import net.minecraft.world.IBlockAccess; +import net.minecraftforge.common.ForgeDirection; +import biomesoplenty.api.Blocks; +import biomesoplenty.blocks.BlockBOPColorizedLeaves; +import biomesoplenty.blocks.BlockBOPLeaves; +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; + +public class LeavesRenderer implements ISimpleBlockRenderingHandler +{ + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer) + { + RenderUtils.renderStandardInvBlock(renderer, block, metadata); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) + { + BlockBOPLeaves leaves = (BlockBOPLeaves)block; + + Icon christmasLights = leaves.christmasLights; + Icon christmasLightsOff = leaves.christmasLightsOff; + + renderer.renderStandardBlock(block, x, y, z); + + Calendar calendar = Calendar.getInstance(); + + if (calendar.get(2) + 1 == 12 && calendar.get(5) >= 24 && calendar.get(5) <= 26) + { + if (world.getBlockId(x, y, z) == Blocks.leaves2.get().blockID) + { + if (world.getBlockMetadata(x, y, z) == 1 || world.getBlockMetadata(x, y, z) == 5 || world.getBlockMetadata(x, y, z) == 9) + { + for (ForgeDirection direction : ForgeDirection.VALID_DIRECTIONS) + { + if (direction != ForgeDirection.UP && direction != ForgeDirection.DOWN) + { + if (Minecraft.getMinecraft().theWorld.isDaytime()) + { + RenderUtils.renderFace(renderer, block, christmasLightsOff, world, x, y, z, direction); + } + else + { + RenderUtils.renderFace(renderer, block, christmasLights, world, x, y, z, 200, direction); + } + } + else + { + renderer.aoBrightnessXYNN = 150; + renderer.aoBrightnessYZNN = 150; + renderer.aoBrightnessYZNP = 150; + renderer.aoBrightnessXYPN = 150; + } + } + } + } + } + + + + return true; + } + + @Override + public boolean shouldRender3DInInventory() + { + return true; + } + + @Override + public int getRenderId() + { + return RenderUtils.leavesModel; + } +} diff --git a/src/main/java/biomesoplenty/blocks/renderers/RenderUtils.java b/src/main/java/biomesoplenty/blocks/renderers/RenderUtils.java index e138cc2e7..db4ef8b30 100644 --- a/src/main/java/biomesoplenty/blocks/renderers/RenderUtils.java +++ b/src/main/java/biomesoplenty/blocks/renderers/RenderUtils.java @@ -20,6 +20,7 @@ public class RenderUtils public static int graveModel = -1; public static int bambooModel = -1; public static int colorizedLeavesModel = -1; + public static int leavesModel = -1; public static void renderStandardInvBlock(RenderBlocks renderblocks, Block block, int meta) { diff --git a/src/main/resources/assets/biomesoplenty/textures/blocks/christmaslights.png b/src/main/resources/assets/biomesoplenty/textures/blocks/christmaslights.png index 8a662679ff3d54f98d655ba6181e9a78c2540fba..7c80e4cead6d871bc5c70e48ea0feb4ea2c8d87a 100644 GIT binary patch delta 918 zcmV;H18Mx!1n38l7YZ;41^@s67+?BVks(cg17t}=K~zXfFzmV&ypZw)1ADghE{yqbHfpygTRJ_j=EJXP&ed1g-$dM=2{SOTwFB&|MAm_NoDY z8SRmF(V_p^7D7*e8vAFCQD>};0k;n&IB07FfQfF@wtC8kpLOP#&_v=-!X2Q9JTm3t>K6iQMLVNWpu4>~rP{ zLiLz~@6;|hZe+5OSUa-Pma1)^L@;%KCfW|JmlPBdpbjOc%aPYofKsnnyiC;~$8M~Wqz>7n%l0x6MvOaLB_2vFw0N%34V02X)JJ7>SO+^w`Ap8JYzyzf8(V z*ET;OuMCF)t5y6R^MaY5l|Hl<_=N(k9}s~GO!ti8xuiM`C2+oW?wp8!N0PU*Lg<=` zqvZimdw7kL_+mbISG~gKnIG}03E2xqM}hi!CQ!lB`2l}e*5yBcH~DudsBBZZ{=6S( z30gncS~|sR{>#;Jj_v3NR4gh8?Sas02(}kCLD+nzZZd+_59pgPB%3ccC;?rbm?tCM zNwMVP&Y*1Q+-@L$ z9L9~wM2VOdLqZShv6T(+j5V>GKw0YKYQaC%$`PT34p#TB_~7cVL}1Q?nqDg+8!{>b zMUZCNVU-FX^sRNn(q(3X=w^VP!FeyLLKfJ9#cbI3KldzmL8$VcGO~NR?WZ6IDJ@|_ z5Bs^Da-sPLB#vO{vuBe2I7wVBmr#;_zKyCPYq2mbm%f$=+ z3*YoT*C?jM-v_--#o&YB|(ZKO8+}AezQO2lbz`GrTC$hR$&}D&#_Gw2aiV zkNGwd5G^_FN+})KJZ#*Wf-F%k6<#lg=+575J19pig(%|9W@8$9^RLH>YEgX)lBm0` zV}hsiAj=6}TaA?`I}ks}TON2bPDNB8 zb~7$DE-^7j^FlWO00F{DL_t(IPnAGyMmSu~M5$YD9Y%(2_;W`o&L&@R@5 zEASNq=+g!;W>2Cw+>fd947%5Q;4S#jx!Mi3`>vy7rBf38`?Gu} z>CEy%82&RI(x^3M?2CH7 z1IdL2NzyV}+o2&^EUREvzdlkFnP4;9za