summaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorOnyxDarkKnight <sor1n.iliutza16@gmail.com>2015-05-24 19:10:19 +0100
committerOnyxDarkKnight <sor1n.iliutza16@gmail.com>2015-05-24 19:10:19 +0100
commitae89bf1f9d0e93d249162011416246298fe763f0 (patch)
tree7b41deea2b61bd4ff2388efb223c59f52fb561ea /src/main/java
parent225ae96f35d34393f25a8ea329745d2c678fe586 (diff)
Crystals!!!
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/darkknight/jewelrycraft/block/BlockCrystal.java99
-rw-r--r--src/main/java/darkknight/jewelrycraft/block/BlockItemCrystal.java36
-rw-r--r--src/main/java/darkknight/jewelrycraft/block/BlockList.java6
-rw-r--r--src/main/java/darkknight/jewelrycraft/block/render/BlockCrystalRenderer.java145
-rw-r--r--src/main/java/darkknight/jewelrycraft/client/gui/GuiGuide.java1
-rw-r--r--src/main/java/darkknight/jewelrycraft/client/gui/GuiTabBlocks.java10
-rw-r--r--src/main/java/darkknight/jewelrycraft/client/gui/GuiTabItems.java20
-rw-r--r--src/main/java/darkknight/jewelrycraft/config/ConfigHandler.java5
-rw-r--r--src/main/java/darkknight/jewelrycraft/item/ItemBaseJewelry.java4
-rw-r--r--src/main/java/darkknight/jewelrycraft/item/ItemCrystal.java114
-rw-r--r--src/main/java/darkknight/jewelrycraft/item/ItemList.java3
-rw-r--r--src/main/java/darkknight/jewelrycraft/proxy/ClientProxy.java19
-rw-r--r--src/main/java/darkknight/jewelrycraft/recipes/CraftingRecipes.java5
-rw-r--r--src/main/java/darkknight/jewelrycraft/thirdparty/EE3.java22
-rw-r--r--src/main/java/darkknight/jewelrycraft/tileentity/TileEntityCrystal.java42
-rw-r--r--src/main/java/darkknight/jewelrycraft/util/JewelrycraftUtil.java3
16 files changed, 381 insertions, 153 deletions
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));