diff options
20 files changed, 401 insertions, 171 deletions
@@ -70,6 +70,6 @@ <classpathentry exported="true" kind="lib" path="C:/Users/Sorin/.gradle/caches/modules-2/files-2.1/com.google.guava/guava/17.0/9c6ef172e8de35fd8d4d8783e4821e57cdef7445/guava-17.0.jar" sourcepath="C:/Users/Sorin/.gradle/caches/modules-2/files-2.1/com.google.guava/guava/17.0/7ca0efbeb87ca845b5d7a0ac9c21a4b7b95f7b28/guava-17.0-sources.jar"/> <classpathentry exported="true" kind="lib" path="C:/Users/Sorin/.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-lang3/3.3.2/90a3822c38ec8c996e84c16a3477ef632cbc87a3/commons-lang3-3.3.2.jar" sourcepath="C:/Users/Sorin/.gradle/caches/modules-2/files-2.1/org.apache.commons/commons-lang3/3.3.2/d2a489573c0ed2c4942b3660decad5d65087b406/commons-lang3-3.3.2-sources.jar"/> <classpathentry exported="true" kind="lib" path="C:/Users/Sorin/.gradle/caches/minecraft/net/minecraftforge/forge/1.7.10-10.13.3.1395-1710ls/start"/> - <classpathentry kind="lib" path="H:/Jewelrycraft/1.7.10/libs/EquivalentExchange3-1.7.10-0.3.496.jar"/> + <classpathentry kind="lib" path="H:/Jewelrycraft/1.7.10/libs/EquivalentExchange3-1.7.10-0.3.505.jar"/> <classpathentry kind="output" path="bin"/> </classpath> diff --git a/changelog.txt b/changelog.txt index 0d439ac..327cfa2 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1 +1,2 @@ --
\ No newline at end of file +- Changed Crystal from craftable items to blocks that generate in the world +- Fixed NEI from overlapping the guide GUI
\ No newline at end of file diff --git a/src/main/java/darkknight/jewelrycraft/block/BlockCrystal.java b/src/main/java/darkknight/jewelrycraft/block/BlockCrystal.java new file mode 100644 index 0000000..975f89f --- /dev/null +++ b/src/main/java/darkknight/jewelrycraft/block/BlockCrystal.java @@ -0,0 +1,99 @@ +/** + * + */ +package darkknight.jewelrycraft.block; + +import java.io.IOException; +import java.util.List; +import java.util.Random; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import darkknight.jewelrycraft.proxy.ClientProxy.BlockRenderIDs; +import darkknight.jewelrycraft.tileentity.TileEntityCrystal; +import darkknight.jewelrycraft.tileentity.TileEntityShadowEye; +import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.ITileEntityProvider; +import net.minecraft.block.material.Material; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +/** + * @author Sorin + * + */ +public class BlockCrystal extends Block implements ITileEntityProvider +{ + public static int[] colors = {1973019, 11743532, 3887386, 5320730, 2437522, 8073150, 2651799, 11250603, 4408131, 14188952, 4312372, 14602026, 6719955, 12801229, 15435844, 15790320}; + + protected BlockCrystal() + { + super(Material.glass); + setBlockBounds(0.2F, 0F, 0.2F, 0.8F, 1.0F, 0.8F); + } + + @Override + public TileEntity createNewTileEntity(World world, int var2) + { + return new TileEntityCrystal(); + } + + @Override + public boolean renderAsNormalBlock() + { + return false; + } + + @Override + public boolean isOpaqueCube() + { + return false; + } + + @SideOnly(Side.CLIENT) + public int getRenderBlockPass() + { + return 1; + } + + @SideOnly(Side.CLIENT) + public void getSubBlocks(Item item, CreativeTabs tab, List list) + { + for(int i = 0; i < 16; ++i) list.add(new ItemStack(item, 1, i)); + } + + @Override + public int getRenderType() + { + return BlockRenderIDs.CRYSTAL.id(); + } + + @Override + @SideOnly (Side.CLIENT) + public int colorMultiplier(IBlockAccess world, int i, int j, int k) + { + return colors[world.getBlockMetadata(i, j, k)]; + } + + public int damageDropped(int meta) + { + return meta; + } + + public void breakBlock(World world, int x, int y, int z, Block block, int meta) + { + super.breakBlock(world, x, y, z, block, meta); + world.removeTileEntity(x, y, z); + } + + public boolean onBlockEventReceived(World world, int x, int y, int z, int eventNo, int arg) + { + super.onBlockEventReceived(world, x, y, z, eventNo, arg); + TileEntity tileentity = world.getTileEntity(x, y, z); + return tileentity != null ? tileentity.receiveClientEvent(eventNo, arg) : false; + } +} diff --git a/src/main/java/darkknight/jewelrycraft/block/BlockItemCrystal.java b/src/main/java/darkknight/jewelrycraft/block/BlockItemCrystal.java new file mode 100644 index 0000000..a8fb0b1 --- /dev/null +++ b/src/main/java/darkknight/jewelrycraft/block/BlockItemCrystal.java @@ -0,0 +1,36 @@ +package darkknight.jewelrycraft.block; + +import java.io.IOException; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; + +public class BlockItemCrystal extends ItemBlock +{ + public BlockItemCrystal(Block block) { + super(block); + setHasSubtypes(true); + } + + @Override + public int getMetadata (int damageValue) + { + return damageValue; + } + + @Override + public String getUnlocalizedName(ItemStack itemstack) + { + return getUnlocalizedName() + "." + itemstack.getItemDamage(); + } + + @Override + @SideOnly (Side.CLIENT) + public int getColorFromItemStack(ItemStack stack, int pass) + { + return stack.getItemDamage() < 16 ? BlockCrystal.colors[stack.getItemDamage()] : 0; + } + +}
\ No newline at end of file diff --git a/src/main/java/darkknight/jewelrycraft/block/BlockList.java b/src/main/java/darkknight/jewelrycraft/block/BlockList.java index a02b264..990a77f 100644 --- a/src/main/java/darkknight/jewelrycraft/block/BlockList.java +++ b/src/main/java/darkknight/jewelrycraft/block/BlockList.java @@ -10,6 +10,7 @@ import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.registry.GameRegistry; import darkknight.jewelrycraft.JewelrycraftMod; import darkknight.jewelrycraft.tileentity.TileEntityBlockShadow; +import darkknight.jewelrycraft.tileentity.TileEntityCrystal; import darkknight.jewelrycraft.tileentity.TileEntityDisplayer; import darkknight.jewelrycraft.tileentity.TileEntityHandPedestal; import darkknight.jewelrycraft.tileentity.TileEntityJewelrsCraftingTable; @@ -22,7 +23,7 @@ import darkknight.jewelrycraft.util.Variables; public class BlockList { - public static Block shadowOre, smelter, molder, displayer, jewelCraftingTable, shadowBlock, shadowEye, handPedestal, shadowHand, midasTouchBlock; + public static Block shadowOre, smelter, molder, displayer, jewelCraftingTable, shadowBlock, shadowEye, handPedestal, shadowHand, midasTouchBlock, crystal; public static BlockMoltenMetal moltenMetal; public static Fluid moltenMetalFluid; private static boolean isInitialized = false; @@ -42,6 +43,7 @@ public class BlockList moltenMetalFluid = new Fluid("metal.molten").setLuminosity(15).setDensity(3000).setTemperature(2000).setViscosity(6000); if (!FluidRegistry.registerFluid(moltenMetalFluid)) moltenMetalFluid = FluidRegistry.getFluid("metal.molten"); moltenMetal = new BlockMoltenMetal(moltenMetalFluid, Material.lava); + crystal = new BlockCrystal().setHardness(2.0F).setResistance(5.0F).setStepSound(Block.soundTypeGlass).setBlockTextureName(Variables.MODID + ":blockCrystal").setBlockName(Variables.MODID + ".blockCrystal").setCreativeTab(JewelrycraftMod.jewelrycraft); GameRegistry.registerBlock(shadowOre, "shadowOre"); GameRegistry.registerBlock(shadowBlock, "shadowBlock"); @@ -54,6 +56,7 @@ public class BlockList GameRegistry.registerBlock(shadowHand, "Shadow Hand"); GameRegistry.registerBlock(midasTouchBlock, "Midas Touch Block"); GameRegistry.registerBlock(moltenMetal, "moltenMetalLiquid"); + GameRegistry.registerBlock(crystal, BlockItemCrystal.class, "crystalBlock"); GameRegistry.registerTileEntity(TileEntitySmelter.class, Variables.MODID + ":smelter"); GameRegistry.registerTileEntity(TileEntityMolder.class, Variables.MODID + ":molder"); @@ -64,6 +67,7 @@ public class BlockList GameRegistry.registerTileEntity(TileEntityHandPedestal.class, Variables.MODID + ":handPedestal"); GameRegistry.registerTileEntity(TileEntityShadowHand.class, Variables.MODID + ":shadowHand"); GameRegistry.registerTileEntity(TileEntityMidasTouch.class, Variables.MODID + ":midsaTouch"); + GameRegistry.registerTileEntity(TileEntityCrystal.class, Variables.MODID + ":crystalBlock"); OreDictionary.registerOre("oreShadow", new ItemStack(BlockList.shadowOre)); } diff --git a/src/main/java/darkknight/jewelrycraft/block/render/BlockCrystalRenderer.java b/src/main/java/darkknight/jewelrycraft/block/render/BlockCrystalRenderer.java new file mode 100644 index 0000000..2a81007 --- /dev/null +++ b/src/main/java/darkknight/jewelrycraft/block/render/BlockCrystalRenderer.java @@ -0,0 +1,145 @@ +/** + * + */ +package darkknight.jewelrycraft.block.render; + +import java.util.Random; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import org.lwjgl.opengl.GL11; +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import darkknight.jewelrycraft.block.BlockCrystal; +import darkknight.jewelrycraft.config.ConfigHandler; +import darkknight.jewelrycraft.proxy.ClientProxy.BlockRenderIDs; +import darkknight.jewelrycraft.tileentity.TileEntityCrystal; + +/** + * @author Sorin + */ +@SideOnly (Side.CLIENT) +public class BlockCrystalRenderer implements ISimpleBlockRenderingHandler +{ + @Override + public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer) + { + Tessellator tessellator = Tessellator.instance; + GL11.glDisable(GL11.GL_LIGHTING); + tessellator.startDrawingQuads(); + if (metadata < 16) tessellator.setColorRGBA_I(((BlockCrystal)block).colors[metadata], 100); + GL11.glTranslatef(-0.5f, 0f, -0.5f); + this.renderWorldBlock(null, 0, 0, 0, block, modelID, renderer); + tessellator.draw(); + GL11.glTranslatef(0.5f, 0f, 0.5f); + GL11.glEnable(GL11.GL_LIGHTING); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) + { + int crystals = 5; + Random rnd = new Random(); + Tessellator tessellator = Tessellator.instance; + IIcon icon = ((BlockCrystal)block).getIcon(0, 0); + double umin = icon.getMinU(); + double vmin = icon.getMinV(); + double umax = icon.getMaxU(); + double vmax = icon.getMaxV(); + tessellator.addTranslation(x, y, z); + if (world != null && world.getTileEntity(x, y, z) != null && ConfigHandler.CRYSTAL_GLOW) tessellator.setBrightness(((TileEntityCrystal)world.getTileEntity(x, y, z)).shine); + else tessellator.setBrightness(230); + // 37435, 76464 + if (world != null) rnd.setSeed(2 * x * 3 * y * z * 5); + else rnd.setSeed(76464); + if (world != null && world.getBlockMetadata(x, y, z) < 16) tessellator.setColorRGBA_I(((BlockCrystal)block).colors[world.getBlockMetadata(x, y, z)], 100); + crystal(tessellator, umin, vmin, umax, vmax, 0.8D, 0.2D, 0D, 0D, 0D, 0.0D, 0.0D); + for(int i = 0; i < crystals; i++){ + double rotation = Math.PI * 2.0f / (float)crystals * (float)i; + double xp1 = Math.sin(rotation) * 0.2f; + double zp1 = Math.cos(rotation) * 0.2f; + double height = 0.2f + rnd.nextFloat(); + double topHeight = 0.1f + rnd.nextFloat() / 2f; + crystal(tessellator, umin, vmin, umax, vmax, height, topHeight, -xp1, 0D, zp1, xp1, zp1); + } + if (world != null){ + crystals = 4; + for(int i = 0; i < crystals; i++){ + double rotation = Math.PI * 2.0f / (float)crystals * (float)i; + double xp1 = Math.sin(rotation) * 0.2f; + double zp1 = Math.cos(rotation) * 0.2f; + double height = 0.2f + rnd.nextFloat(); + double topHeight = 0.1f + rnd.nextFloat() / 2f; + float xOff = (rnd.nextFloat() * 1.5f - 0.5f) * 0.2f; + float zOff = (rnd.nextFloat() * 1.5f - 0.5f) * 0.2f; + crystal(tessellator, umin, vmin, umax, vmax, height, topHeight, xOff, 0D, zOff, xp1, zp1); + } + } + tessellator.addTranslation(-x, -y, -z); + return true; + } + + private void crystal(Tessellator tessellator, double umin, double vmin, double umax, double vmax, double height, double topHeight, double posX, double posY, double posZ, double rotX, double rotZ) + { + // Negative X + tessellator.addVertexWithUV(0.4 + rotX + posX, 0.0 + posY, 0.6 - rotZ + posZ, umin, vmin); + tessellator.addVertexWithUV(0.4 - rotX + posX, height + posY, 0.6 + rotZ + posZ, umin, vmax); + tessellator.addVertexWithUV(0.4 - rotX + posX, height + posY, 0.4 + rotZ + posZ, umax, vmax); + tessellator.addVertexWithUV(0.4 + rotX + posX, 0.0 + posY, 0.4 - rotZ + posZ, umax, vmin); + // Positive X + tessellator.addVertexWithUV(0.6 + rotX + posX, 0.0 + posY, 0.4 - rotZ + posZ, umin, vmin); + tessellator.addVertexWithUV(0.6 - rotX + posX, height + posY, 0.4 + rotZ + posZ, umin, vmax); + tessellator.addVertexWithUV(0.6 - rotX + posX, height + posY, 0.6 + rotZ + posZ, umax, vmax); + tessellator.addVertexWithUV(0.6 + rotX + posX, 0.0 + posY, 0.6 - rotZ + posZ, umax, vmin); + // Negative Z + tessellator.addVertexWithUV(0.4 + rotX + posX, 0.0 + posY, 0.4 - rotZ + posZ, umin, vmin); + tessellator.addVertexWithUV(0.4 - rotX + posX, height + posY, 0.4 + rotZ + posZ, umin, vmax); + tessellator.addVertexWithUV(0.6 - rotX + posX, height + posY, 0.4 + rotZ + posZ, umax, vmax); + tessellator.addVertexWithUV(0.6 + rotX + posX, 0.0 + posY, 0.4 - rotZ + posZ, umax, vmin); + // Positive Z + tessellator.addVertexWithUV(0.6 + rotX + posX, 0.0 + posY, 0.6 - rotZ + posZ, umin, vmin); + tessellator.addVertexWithUV(0.6 - rotX + posX, height + posY, 0.6 + rotZ + posZ, umin, vmax); + tessellator.addVertexWithUV(0.4 - rotX + posX, height + posY, 0.6 + rotZ + posZ, umax, vmax); + tessellator.addVertexWithUV(0.4 + rotX + posX, 0.0 + posY, 0.6 - rotZ + posZ, umax, vmin); + // Top -X + tessellator.addVertexWithUV(0.4 - rotX + posX, height + posY, 0.6 + rotZ + posZ, umin, vmin); + tessellator.addVertexWithUV(0.5 - rotX - rotX + posX, height + topHeight + posY, 0.5 + rotZ + rotZ + posZ, umin, vmax); + tessellator.addVertexWithUV(0.5 - rotX - rotX + posX, height + topHeight + posY, 0.5 + rotZ + rotZ + posZ, umax, vmax); + tessellator.addVertexWithUV(0.4 - rotX + posX, height + posY, 0.4 + rotZ + posZ, umax, vmin); + // Top +X + tessellator.addVertexWithUV(0.6 - rotX + posX, height + posY, 0.4 + rotZ + posZ, umin, vmin); + tessellator.addVertexWithUV(0.5 - rotX - rotX + posX, height + topHeight + posY, 0.5 + rotZ + rotZ + posZ, umin, vmax); + tessellator.addVertexWithUV(0.5 - rotX - rotX + posX, height + topHeight + posY, 0.5 + rotZ + rotZ + posZ, umax, vmax); + tessellator.addVertexWithUV(0.6 - rotX + posX, height + posY, 0.6 + rotZ + posZ, umax, vmin); + // Top +Z + tessellator.addVertexWithUV(0.6 - rotX + posX, height + posY, 0.6 + rotZ + posZ, umin, vmin); + tessellator.addVertexWithUV(0.5 - rotX - rotX + posX, height + topHeight + posY, 0.5 + rotZ + rotZ + posZ, umin, vmax); + tessellator.addVertexWithUV(0.5 - rotX - rotX + posX, height + topHeight + posY, 0.5 + rotZ + rotZ + posZ, umax, vmax); + tessellator.addVertexWithUV(0.4 - rotX + posX, height + posY, 0.6 + rotZ + posZ, umax, vmin); + // Top -Z + tessellator.addVertexWithUV(0.4 - rotX + posX, height + posY, 0.4 + rotZ + posZ, umin, vmin); + tessellator.addVertexWithUV(0.5 - rotX - rotX + posX, height + topHeight + posY, 0.5 + rotZ + rotZ + posZ, umin, vmax); + tessellator.addVertexWithUV(0.5 - rotX - rotX + posX, height + topHeight + posY, 0.5 + rotZ + rotZ + posZ, umax, vmax); + tessellator.addVertexWithUV(0.6 - rotX + posX, height + posY, 0.4 + rotZ + posZ, umax, vmin); + // Bottom + tessellator.addVertexWithUV(0.4 + rotX + posX, 0.0 + posY, 0.6 - rotZ + posZ, umin, vmin); + tessellator.addVertexWithUV(0.4 + rotX + posX, 0.0 + posY, 0.4 - rotZ + posZ, umin, vmax); + tessellator.addVertexWithUV(0.6 + rotX + posX, 0.0 + posY, 0.4 - rotZ + posZ, umax, vmax); + tessellator.addVertexWithUV(0.6 + rotX + posX, 0.0 + posY, 0.6 - rotZ + posZ, umax, vmin); + } + + @Override + public boolean shouldRender3DInInventory(int modelId) + { + return true; + } + + @Override + public int getRenderId() + { + return BlockRenderIDs.CRYSTAL.id(); + } +} diff --git a/src/main/java/darkknight/jewelrycraft/client/gui/GuiGuide.java b/src/main/java/darkknight/jewelrycraft/client/gui/GuiGuide.java index a0b2e6d..1ff2ef3 100644 --- a/src/main/java/darkknight/jewelrycraft/client/gui/GuiGuide.java +++ b/src/main/java/darkknight/jewelrycraft/client/gui/GuiGuide.java @@ -44,6 +44,7 @@ public class GuiGuide extends GuiContainer activeTab = tabs[0]; pageTexture = pageTex; flippedPageTexture = flipPageTex; + this.xSize = 240; } /** diff --git a/src/main/java/darkknight/jewelrycraft/client/gui/GuiTabBlocks.java b/src/main/java/darkknight/jewelrycraft/client/gui/GuiTabBlocks.java index ef7eabc..c6450d3 100644 --- a/src/main/java/darkknight/jewelrycraft/client/gui/GuiTabBlocks.java +++ b/src/main/java/darkknight/jewelrycraft/client/gui/GuiTabBlocks.java @@ -138,6 +138,14 @@ public class GuiTabBlocks extends GuiTab text = "you do that simply right click the eye to activate the ritual. Be careful not to leave the premise or you'll die! When the ritual is done, Shift+Right Click on the central hand pedestal to retrieve your newly modified item!"; Page.addTextPage(gui, gui.getLeft() + xPos, gui.getTop(), text); break; + case 22: + if (del == 0) values++; + del++; + if (del >= 300) del = 0; + if (values >= 15) values = 0; + text = "Crystals don't do much as of yet. They spawn naturally in caves and come in all 16 colors."; + Page.addImageTextPage(gui, gui.getLeft() + xPos, gui.getTop(), new ItemStack(BlockList.crystal, 1, values), text, 40f, true); + break; default: ; } @@ -149,7 +157,7 @@ public class GuiTabBlocks extends GuiTab @Override public int getMaxPages() { - return 21; + return 22; } /** diff --git a/src/main/java/darkknight/jewelrycraft/client/gui/GuiTabItems.java b/src/main/java/darkknight/jewelrycraft/client/gui/GuiTabItems.java index a1818e0..495b1ad 100644 --- a/src/main/java/darkknight/jewelrycraft/client/gui/GuiTabItems.java +++ b/src/main/java/darkknight/jewelrycraft/client/gui/GuiTabItems.java @@ -93,18 +93,6 @@ public class GuiTabItems extends GuiTab Page.addSmeltingRecipeTextPage(gui, gui.getLeft() + xPos, gui.getTop(), text, x, y, true, new ItemStack(ItemList.clayMolds, 1, values), new ItemStack(ItemList.molds, 1, values)); break; case 10: - text = "Crystals don't do much as of yet. They can be dyed in any color and used as gems to create a nice jewelry."; - Page.addCraftingRecipeTextPage(gui, gui.getLeft() + xPos, gui.getTop(), false, text, x, y, true, new ItemStack(ItemList.crystal, 1, 15), null, new ItemStack(Blocks.glass), null, new ItemStack(Blocks.glass), null, new ItemStack(Blocks.glass), null, new ItemStack(Blocks.glass), null); - break; - case 11: - if (del == 0) values++; - del++; - if (del >= 300) del = 0; - if (values >= 15) values = 0; - Page.addCraftingRecipeTextPage(gui, gui.getLeft() + xPos, gui.getTop(), true, text, x, y, true, new ItemStack(ItemList.crystal, 1, values), new ItemStack(Items.dye, 1, values), new ItemStack(ItemList.crystal, 1, 15)); - Page.addCraftingRecipeTextPage(gui, gui.getLeft() + xPos, gui.getTop() + 60, true, text, x, y, true, new ItemStack(ItemList.crystal, 1, 15), new ItemStack(Items.dye, 1, 15), new ItemStack(ItemList.crystal, 1, values)); - break; - case 12: if (del == 0) values++; del++; if (del >= 300) del = 0; @@ -112,13 +100,13 @@ public class GuiTabItems extends GuiTab text = "It's this exact guide. I don't even know why you're reading this. I added this recipe in case you lose the original. Even if this is more helpful than NEI, I do suggest"; Page.addCraftingRecipeTextPage(gui, gui.getLeft() + xPos, gui.getTop(), true, text, x, y, true, new ItemStack(ItemList.guide), new ItemStack(ItemList.molds, 1, values), new ItemStack(Items.book)); break; - case 13: + case 11: String link = "HERE"; if (x >= gui.getLeft() && x <= gui.getLeft() + 30 && y >= gui.getTop() + 104 && y <= gui.getTop() + 124) link = EnumChatFormatting.DARK_BLUE + "HERE" + EnumChatFormatting.BLACK; text = "installing it so you can see all the recipes. Since you are reading this, how about making a youtube video spotlighting this mod. I'd really appreciate it. After that you can share it in the main thread " + link + "."; Page.addTextPage(gui, gui.getLeft() + xPos, gui.getTop(), text); break; - case 14: + case 12: ItemStack item = new ItemStack(ItemList.bucket); if (del == 0) values++; del++; @@ -128,11 +116,11 @@ public class GuiTabItems extends GuiTab text = "These buckets contain molten metal. To obtain one simply Right Click a full Smelter to get a bucket. You can pour the metal, other than that it has no use. You can place the molten metal back in a Smelter by Right Clicking one with it."; Page.addImageTextPage(gui, gui.getLeft() + xPos, gui.getTop() - 5, item, text, 40f, 0, 0, true, 45, 10, true); break; - case 15: + case 13: text = "This item is a creative only item! Right click it while in creative mode to open a GUI. Place a piece of jewelery inside the slot, select what you want to add, then click on 'Add Items'. If you selected Modifiers, you can select multiple"; Page.addImageTextPage(gui, gui.getLeft() + xPos, gui.getTop() - 5, new ItemStack(ItemList.jewelryModifier), text, 40f, 0, 0, true, 45, 10, true); break; - case 16: + case 14: text = "items at once. The 'Item' button is to add an Item to a Golden Object, which can not be obtained normally. This tool can be really useful, especially for those who want to test the mod and can't wait for the normal processes to finish (Smelter, Jewelers Table, Ritual)."; Page.addTextPage(gui, gui.getLeft() + xPos, gui.getTop(), text); break; diff --git a/src/main/java/darkknight/jewelrycraft/config/ConfigHandler.java b/src/main/java/darkknight/jewelrycraft/config/ConfigHandler.java index 309494c..c1e4612 100644 --- a/src/main/java/darkknight/jewelrycraft/config/ConfigHandler.java +++ b/src/main/java/darkknight/jewelrycraft/config/ConfigHandler.java @@ -11,7 +11,7 @@ public class ConfigHandler { public static Configuration config; public static final ConfigHandler INSTANCE = new ConfigHandler(); - public static final String[] categories = {"Timers", "Village Generation"}; + public static final String[] categories = {"Timers", "Village Generation", "Misc"}; public static int INGOT_COOLING_TIME; public static int INGOT_MELTING_TIME; @@ -21,6 +21,7 @@ public class ConfigHandler public static boolean GENERATE_VILLAGE_NETHERSTAR; public static boolean CAN_FURNACE_GENERATE_INGOTS; + public static boolean CRYSTAL_GLOW; public static int MAX_VILLAGE_JEWELERS; public static int JEWELER_WEIGHT; public static int INGOT_CHEST_MIN; @@ -48,6 +49,8 @@ public class ConfigHandler GENERATE_VILLAGE_NETHERSTAR = config.getBoolean("Netherstar Generation", categories[1], false, "If set to true Nether Stars will be able to generate in Jewelers chests."); CAN_FURNACE_GENERATE_INGOTS = config.getBoolean("Furnace Ingots Generation", categories[1], true, "If set to true jewelers will generate ingots in furnaces."); + CRYSTAL_GLOW = config.getBoolean("Crystal Glow", categories[2], false, "If true, then crystal will slowly glow (can cause lag)"); + MAX_VILLAGE_JEWELERS = config.getInt("Maximum Jewelers", categories[1], 1, 0, Integer.MAX_VALUE, "Sets how many jewelers can be in a village."); JEWELER_WEIGHT = config.getInt("Jewelers Weight", categories[1], 30, 0, Integer.MAX_VALUE, "Chance of getting a jeweler in a village. The higher the value, the higher the chance."); INGOT_CHEST_MIN = config.getInt("Ingot Chest Min", categories[1], 1, 0, Integer.MAX_VALUE, "Minimum number of ingots that can be found in a chest from the Jeweler. (It's the chest from the back part)"); diff --git a/src/main/java/darkknight/jewelrycraft/item/ItemBaseJewelry.java b/src/main/java/darkknight/jewelrycraft/item/ItemBaseJewelry.java index dcf7804..41a44e1 100644 --- a/src/main/java/darkknight/jewelrycraft/item/ItemBaseJewelry.java +++ b/src/main/java/darkknight/jewelrycraft/item/ItemBaseJewelry.java @@ -11,13 +11,13 @@ import java.util.List; import java.util.Map; import javax.imageio.ImageIO; import net.minecraft.block.Block; +import net.minecraft.block.BlockAir; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.client.resources.IResourceManager; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; -import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.DamageSource; @@ -89,7 +89,7 @@ public abstract class ItemBaseJewelry extends Item int color = getMostCommonColour(m); if (JewelryNBT.ingot(stack) != null && JewelryNBT.ingot(stack).getItem().getColorFromItemStack(JewelryNBT.ingot(stack), 1) != 16777215) JewelryNBT.addIngotColor(stack, JewelryNBT.ingot(stack).getItem().getColorFromItemStack(JewelryNBT.ingot(stack), 1)); else JewelryNBT.addIngotColor(stack, color); - }else if (pass == 1 && stack != null && JewelryNBT.gem(stack) != null && JewelryNBT.gem(stack).getIconIndex() != null && JewelryNBT.gem(stack) != null){ + }else if (pass == 1 && stack != null && stack.getItem() != null && JewelryNBT.gem(stack) != null && !(Block.getBlockFromItem(JewelryNBT.gem(stack).getItem()) instanceof BlockAir) && JewelryNBT.gem(stack).getIconIndex() != null){ ItemStack gem = JewelryNBT.gem(stack); icon = ImageIO.read(rm.getResource(getLocation(gem, stack, true)).getInputStream()); int height = icon.getHeight(); diff --git a/src/main/java/darkknight/jewelrycraft/item/ItemCrystal.java b/src/main/java/darkknight/jewelrycraft/item/ItemCrystal.java deleted file mode 100644 index 43e6b5b..0000000 --- a/src/main/java/darkknight/jewelrycraft/item/ItemCrystal.java +++ /dev/null @@ -1,114 +0,0 @@ -package darkknight.jewelrycraft.item; - -import java.util.List; -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.creativetab.CreativeTabs; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.util.IIcon; -import net.minecraft.world.World; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import darkknight.jewelrycraft.util.Variables; - -public class ItemCrystal extends Item -{ - public IIcon overlay; - public static final int[] dyeColors = new int[]{1973019, 11743532, 3887386, 5320730, 2437522, 8073150, 2651799, 11250603, 4408131, 14188952, 4312372, 14602026, 6719955, 12801229, 15435844, 15790320}; - - /** - * - */ - public ItemCrystal() - { - super(); - setHasSubtypes(true); - setMaxDamage(0); - } - - /** - * @param iconRegister - */ - @Override - public void registerIcons(IIconRegister iconRegister) - { - itemIcon = iconRegister.registerIcon(Variables.MODID + ":crystal"); - overlay = iconRegister.registerIcon(Variables.MODID + ":crystalOverlay"); - } - - /** - * @return - */ - @Override - public boolean requiresMultipleRenderPasses() - { - return true; - } - - /** - * @param stack - * @param pass - * @return - */ - @Override - @SideOnly (Side.CLIENT) - public int getColorFromItemStack(ItemStack stack, int pass) - { - if (pass == 1 && getDamage(stack) != 16) return dyeColors[getDamage(stack)]; - return 16777215; - } - - /** - * @param stack - * @param pass - * @return - */ - @Override - public IIcon getIcon(ItemStack stack, int pass) - { - return pass == 0 ? itemIcon : overlay; - } - - /** - * @param stack - * @param player - * @param world - * @param i - * @param j - * @param k - * @param side - * @param par8 - * @param par9 - * @param par10 - * @return - */ - @Override - public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int i, int j, int k, int side, float par8, float par9, float par10) - { - return true; - } - - /** - * @param stack - * @return - */ - @Override - public String getUnlocalizedName(ItemStack stack) - { - return super.getUnlocalizedName() + "." + stack.getItemDamage(); - } - - /** - * @param par1 - * @param par2CreativeTabs - * @param par3List - */ - @Override - @SuppressWarnings ({"unchecked", "rawtypes"}) - public void getSubItems(Item par1, CreativeTabs par2CreativeTabs, List par3List) - { - for(int j = 0; j < 16; ++j) - par3List.add(new ItemStack(par1, 1, j)); - } -} diff --git a/src/main/java/darkknight/jewelrycraft/item/ItemList.java b/src/main/java/darkknight/jewelrycraft/item/ItemList.java index 1ec3fc3..0d8c61c 100644 --- a/src/main/java/darkknight/jewelrycraft/item/ItemList.java +++ b/src/main/java/darkknight/jewelrycraft/item/ItemList.java @@ -14,7 +14,6 @@ public class ItemList public static Item shadowIngot; public static Item molds; public static Item clayMolds; - public static Item crystal; public static ItemRing ring; public static ItemNecklace necklace; public static ItemBracelet bracelet; @@ -39,7 +38,6 @@ public class ItemList necklace = (ItemNecklace)new ItemNecklace().setUnlocalizedName(Variables.MODID + ".necklace").setTextureName(Variables.MODID + ":necklace").setCreativeTab(JewelrycraftMod.jewelrycraft); bracelet = (ItemBracelet)new ItemBracelet().setUnlocalizedName(Variables.MODID + ".bracelet").setTextureName(Variables.MODID + ":bracelet").setCreativeTab(JewelrycraftMod.jewelrycraft); earrings = (ItemEarrings)new ItemEarrings().setUnlocalizedName(Variables.MODID + ".earrings").setTextureName(Variables.MODID + ":earrings").setCreativeTab(JewelrycraftMod.jewelrycraft); - crystal = new ItemCrystal().setUnlocalizedName(Variables.MODID + ".crystal").setTextureName(Variables.MODID + ":crystal").setCreativeTab(JewelrycraftMod.jewelrycraft); guide = new ItemGuide().setUnlocalizedName(Variables.MODID + ".guide").setTextureName(Variables.MODID + ":guide").setCreativeTab(JewelrycraftMod.jewelrycraft); bucket = (ItemMoltenMetalBucket)new ItemMoltenMetalBucket().setUnlocalizedName(Variables.MODID + ".bucket"); metal = (ItemMoltenMetal)new ItemMoltenMetal().setUnlocalizedName(Variables.MODID + ".bucket"); @@ -54,7 +52,6 @@ public class ItemList GameRegistry.registerItem(necklace, "necklace"); GameRegistry.registerItem(bracelet, "bracelet"); GameRegistry.registerItem(earrings, "earrings"); - GameRegistry.registerItem(crystal, "crystal"); GameRegistry.registerItem(guide, "guide"); GameRegistry.registerItem(bucket, "moltenMetalBucket"); GameRegistry.registerItem(metal, "moltenMetal"); diff --git a/src/main/java/darkknight/jewelrycraft/proxy/ClientProxy.java b/src/main/java/darkknight/jewelrycraft/proxy/ClientProxy.java index 1b9ef1f..8c58e47 100644 --- a/src/main/java/darkknight/jewelrycraft/proxy/ClientProxy.java +++ b/src/main/java/darkknight/jewelrycraft/proxy/ClientProxy.java @@ -10,6 +10,7 @@ import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.registry.VillagerRegistry; import cpw.mods.fml.relauncher.Side; import darkknight.jewelrycraft.block.BlockList; +import darkknight.jewelrycraft.block.render.BlockCrystalRenderer; import darkknight.jewelrycraft.client.InventoryTabVanilla; import darkknight.jewelrycraft.client.TabJewelry; import darkknight.jewelrycraft.client.TabRegistry; @@ -52,6 +53,22 @@ import darkknight.jewelrycraft.util.Variables; public class ClientProxy extends CommonProxy { + public enum BlockRenderIDs { + CRYSTAL; + + private final int ID; + + BlockRenderIDs() + { + ID = RenderingRegistry.getNextAvailableRenderId(); + } + + public int id() + { + return ID; + } + } + @Override public void preInit() { @@ -80,6 +97,8 @@ public class ClientProxy extends CommonProxy RenderingRegistry.registerEntityRenderingHandler(EntityHeart.class, new HeartRender(new ModelHeart(), 0.25F)); RenderingRegistry.registerEntityRenderingHandler(EntityHalfHeart.class, new HeartRender(new ModelHalfHeart(), 0.25F)); + + RenderingRegistry.registerBlockHandler(new BlockCrystalRenderer()); TabRegistry.registerTab(new InventoryTabVanilla()); TabRegistry.registerTab(new TabJewelry()); diff --git a/src/main/java/darkknight/jewelrycraft/recipes/CraftingRecipes.java b/src/main/java/darkknight/jewelrycraft/recipes/CraftingRecipes.java index 2bda05e..b22ec6e 100644 --- a/src/main/java/darkknight/jewelrycraft/recipes/CraftingRecipes.java +++ b/src/main/java/darkknight/jewelrycraft/recipes/CraftingRecipes.java @@ -28,11 +28,6 @@ public class CraftingRecipes GameRegistry.addRecipe(new ItemStack(ItemList.clayMolds, 1, 4), "x x", 'x', Items.clay_ball); GameRegistry.addRecipe(new ItemStack(BlockList.handPedestal, 1, 4), "bbb", " x ", "yxy", 'x', Blocks.stonebrick, 'y', new ItemStack(Blocks.stone_slab, 1, 5), 'b', Blocks.cobblestone_wall); GameRegistry.addRecipe(new ItemStack(BlockList.shadowEye, 1, 4), "bcb", "cec", "bcb", 'b', Blocks.stonebrick, 'c', new ItemStack(Blocks.stained_hardened_clay, 1, 15), 'e', Items.ender_eye); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ItemList.crystal, 1, 15), " x ", "x x", " x ", 'x', Blocks.glass)); - for(int i = 0; i < 15; i++){ - GameRegistry.addShapelessRecipe(new ItemStack(ItemList.crystal, 1, i), new Object[]{new ItemStack(ItemList.crystal, 1, 15), new ItemStack(Items.dye, 1, i)}); - GameRegistry.addShapelessRecipe(new ItemStack(ItemList.crystal, 1, 15), new Object[]{new ItemStack(ItemList.crystal, 1, i), new ItemStack(Items.dye, 1, 15)}); - } GameRegistry.addShapelessRecipe(new ItemStack(ItemList.shadowIngot, 9), new Object[]{new ItemStack(BlockList.shadowBlock)}); GameRegistry.addShapelessRecipe(new ItemStack(ItemList.guide), new Object[]{new ItemStack(Items.book), new ItemStack(ItemList.molds, 1, 0)}); GameRegistry.addShapelessRecipe(new ItemStack(ItemList.guide), new Object[]{new ItemStack(Items.book), new ItemStack(ItemList.molds, 1, 1)}); diff --git a/src/main/java/darkknight/jewelrycraft/thirdparty/EE3.java b/src/main/java/darkknight/jewelrycraft/thirdparty/EE3.java index b375521..76770b7 100644 --- a/src/main/java/darkknight/jewelrycraft/thirdparty/EE3.java +++ b/src/main/java/darkknight/jewelrycraft/thirdparty/EE3.java @@ -1,22 +1,18 @@ package darkknight.jewelrycraft.thirdparty; -import java.util.Arrays; -import java.util.List; import net.minecraft.item.ItemStack; -import com.pahimar.ee3.api.EnergyValueRegistryProxy; +import com.pahimar.ee3.api.exchange.EnergyValueRegistryProxy; +import darkknight.jewelrycraft.block.BlockCrystal; import darkknight.jewelrycraft.block.BlockList; +import darkknight.jewelrycraft.item.ItemClayMolds; import darkknight.jewelrycraft.item.ItemList; +import darkknight.jewelrycraft.item.ItemMolds; public class EE3 implements IThirdParty { @Override public void preInit() - { - EnergyValueRegistryProxy.addPostAssignedEnergyValue(new ItemStack(BlockList.shadowOre), 4096); - EnergyValueRegistryProxy.addPostAssignedEnergyValue(new ItemStack(ItemList.shadowIngot), 4096); - EnergyValueRegistryProxy.addPostAssignedEnergyValue(new ItemStack(ItemList.clayMolds), 128); - EnergyValueRegistryProxy.addPostAssignedEnergyValue(new ItemStack(ItemList.molds), 128); - } + {} @Override public void init() @@ -25,6 +21,14 @@ public class EE3 implements IThirdParty @Override public void postInit() { + EnergyValueRegistryProxy.addPostAssignedEnergyValue(new ItemStack(BlockList.shadowOre), 4096); + EnergyValueRegistryProxy.addPostAssignedEnergyValue(new ItemStack(BlockList.shadowBlock), 36864); + EnergyValueRegistryProxy.addPostAssignedEnergyValue(new ItemStack(ItemList.shadowIngot), 4096); + EnergyValueRegistryProxy.addPostAssignedEnergyValue(new ItemStack(BlockList.jewelCraftingTable), 16640); + EnergyValueRegistryProxy.addPostAssignedEnergyValue(new ItemStack(ItemList.guide), 288); + for(int i = 0; i < ItemClayMolds.moldsItemNames.length; i++) EnergyValueRegistryProxy.addPostAssignedEnergyValue(new ItemStack(ItemList.clayMolds, 1, i), 128); + for(int i = 0; i < ItemMolds.moldsItemNames.length; i++) EnergyValueRegistryProxy.addPostAssignedEnergyValue(new ItemStack(ItemList.molds, 1, i), 128); + for(int i = 0; i < BlockCrystal.colors.length; i++) EnergyValueRegistryProxy.addPostAssignedEnergyValue(new ItemStack(BlockList.crystal, 1, i), 64); } @Override diff --git a/src/main/java/darkknight/jewelrycraft/tileentity/TileEntityCrystal.java b/src/main/java/darkknight/jewelrycraft/tileentity/TileEntityCrystal.java new file mode 100644 index 0000000..7eac88f --- /dev/null +++ b/src/main/java/darkknight/jewelrycraft/tileentity/TileEntityCrystal.java @@ -0,0 +1,42 @@ +/** + * + */ +package darkknight.jewelrycraft.tileentity; + +import darkknight.jewelrycraft.config.ConfigHandler; +import net.minecraft.tileentity.TileEntity; + +/** + * @author Sorin + */ +public class TileEntityCrystal extends TileEntity +{ + public int shine = 120; + boolean descent = false; + int timer = 0; + + @Override + public void updateEntity() + { + if (ConfigHandler.CRYSTAL_GLOW){ + timer++; + if (timer > 20){ + if (shine < 230 && !descent){ + shine += 2; + if (shine >= 230) descent = true; + }else if (shine > 100 && descent){ + shine -= 2; + if (shine <= 100) descent = false; + } + this.worldObj.markBlockRangeForRenderUpdate(xCoord, yCoord, zCoord, xCoord, yCoord, zCoord); + timer = 0; + } + } + } + + public boolean canUpdate() + { + return ConfigHandler.CRYSTAL_GLOW; + } + +} diff --git a/src/main/java/darkknight/jewelrycraft/util/JewelrycraftUtil.java b/src/main/java/darkknight/jewelrycraft/util/JewelrycraftUtil.java index 45eddd1..3325f0d 100644 --- a/src/main/java/darkknight/jewelrycraft/util/JewelrycraftUtil.java +++ b/src/main/java/darkknight/jewelrycraft/util/JewelrycraftUtil.java @@ -18,6 +18,7 @@ import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.registry.GameData; import cpw.mods.fml.relauncher.Side; import darkknight.jewelrycraft.JewelrycraftMod; +import darkknight.jewelrycraft.block.BlockList; import darkknight.jewelrycraft.item.ItemList; public class JewelrycraftUtil @@ -40,7 +41,7 @@ public class JewelrycraftUtil { // Jewels for(int i = 0; i < 16; i++) - gem.add(new ItemStack(ItemList.crystal, 1, i)); + gem.add(new ItemStack(BlockList.crystal, 1, i)); gem.add(new ItemStack(Blocks.redstone_block)); gem.add(new ItemStack(Blocks.lapis_block)); gem.add(new ItemStack(Blocks.obsidian)); diff --git a/src/main/resources/assets/jewelrycraft2/lang/en_US.lang b/src/main/resources/assets/jewelrycraft2/lang/en_US.lang index 23795c3..fdd3773 100644 --- a/src/main/resources/assets/jewelrycraft2/lang/en_US.lang +++ b/src/main/resources/assets/jewelrycraft2/lang/en_US.lang @@ -17,22 +17,6 @@ item.jewelrycraft2.earrings.name=Earrings item.jewelrycraft2.guide.name=Jewelrycraft 2 Guide item.jewelrycraft2.bucket.name=Bucket of Molten -item.jewelrycraft2.crystal.0.name=Black Crystal -item.jewelrycraft2.crystal.1.name=Red Crystal -item.jewelrycraft2.crystal.2.name=Green Crystal -item.jewelrycraft2.crystal.3.name=Brown Crystal -item.jewelrycraft2.crystal.4.name=Blue Crystal -item.jewelrycraft2.crystal.5.name=Purple Crystal -item.jewelrycraft2.crystal.6.name=Cyan Crystal -item.jewelrycraft2.crystal.7.name=Light Gray Crystal -item.jewelrycraft2.crystal.8.name=Gray Crystal -item.jewelrycraft2.crystal.9.name=Pink Crystal -item.jewelrycraft2.crystal.10.name=Lime Crystal -item.jewelrycraft2.crystal.11.name=Yellow Crystal -item.jewelrycraft2.crystal.12.name=Light Blue Crystal -item.jewelrycraft2.crystal.13.name=Magenta Crystal -item.jewelrycraft2.crystal.14.name=Orange Crystal -item.jewelrycraft2.crystal.15.name=White Crystal item.jewelrycraft2.jewelryModifier.name=Jewelry Modifier (Creative Only) item.jewelrycraft2.goldObject.name=Golden Object @@ -57,6 +41,23 @@ tile.jewelrycraft2.shadowEye.name=Cursed Eye tile.jewelrycraft2.handPedestal.name=Hand Pedestal tile.jewelrycraft2.midasTouchBlock.name=Golden Creature +tile.jewelrycraft2.blockCrystal.0.name=Black Crystal +tile.jewelrycraft2.blockCrystal.1.name=Red Crystal +tile.jewelrycraft2.blockCrystal.2.name=Green Crystal +tile.jewelrycraft2.blockCrystal.3.name=Brown Crystal +tile.jewelrycraft2.blockCrystal.4.name=Blue Crystal +tile.jewelrycraft2.blockCrystal.5.name=Purple Crystal +tile.jewelrycraft2.blockCrystal.6.name=Cyan Crystal +tile.jewelrycraft2.blockCrystal.7.name=Light Gray Crystal +tile.jewelrycraft2.blockCrystal.8.name=Gray Crystal +tile.jewelrycraft2.blockCrystal.9.name=Pink Crystal +tile.jewelrycraft2.blockCrystal.10.name=Lime Crystal +tile.jewelrycraft2.blockCrystal.11.name=Yellow Crystal +tile.jewelrycraft2.blockCrystal.12.name=Light Blue Crystal +tile.jewelrycraft2.blockCrystal.13.name=Magenta Crystal +tile.jewelrycraft2.blockCrystal.14.name=Orange Crystal +tile.jewelrycraft2.blockCrystal.15.name=White Crystal + itemGroup.jewelrycraft2=Jewelrycraft 2 itemGroup.Liquids=Liquids diff --git a/src/main/resources/assets/jewelrycraft2/textures/blocks/blockCrystal.png b/src/main/resources/assets/jewelrycraft2/textures/blocks/blockCrystal.png Binary files differnew file mode 100644 index 0000000..50bf5ec --- /dev/null +++ b/src/main/resources/assets/jewelrycraft2/textures/blocks/blockCrystal.png |
