diff --git a/assets/forbidden/lang/en_US.lang b/assets/forbidden/lang/en_US.lang
index 4556494..d9de5bd 100644
--- a/assets/forbidden/lang/en_US.lang
+++ b/assets/forbidden/lang/en_US.lang
@@ -34,6 +34,7 @@ item.DiabolistFork.name=Diabolist Fork
item.DiabolistSpork.name=Spork of Doom
item.GluttonyShard.name=Gluttony Shard
item.Bloodwell.name=Bloody Scrivener's Tools
+item.Crystalwell.name=Crystal Scribing Tools
#
# Wand components
item.Wand.tainted.rod=Tainted
@@ -187,4 +188,8 @@ forbidden.research_page.TAINTBASICS.2=Tainted Lands can be found naturally in th
forbidden.research_name.BLOODWELL=Bloody Scrivener's Tools
forbidden.research_text.BLOODWELL="I'll complete this research if it kills me!"
forbidden.research_page.BLOODWELL.1=There's nothing more frustrating than having to pause your research to refill your inkwell. Sometimes, you're just so desperate to complete a research you'd rather use your own blood as ink than stop to go find a refill.
The Bloody Scrivener's Tools will refill using Life Points from their owner's network, at a rate of 25 LP per point. This ability requires human warmth to activate, requiring you to remove the tools from the research table, but without having to actually leave the research area.
+#
+forbidden.research_name.CRYSTALWELL=Crystal Scribing Tools
+forbidden.research_text.CRYSTALWELL=Arcane Research Grant
+forbidden.research_page.CRYSTALWELL.1=Combining elemental shards with your inkwell results in some interesting effects. The Crystal Scribing Tools seem to absorb knowledge as you use them to write. Once the well is empty of ink, you can absorb this knowledge for a small burst of research points by holding the tools in your hand and right clicking. Unfortunately, this burns the tool out and turns it back into a mundane Scribing Tool again.
#
\ No newline at end of file
diff --git a/assets/forbidden/textures/items/crystalwell.png b/assets/forbidden/textures/items/crystalwell.png
new file mode 100644
index 0000000..0974033
Binary files /dev/null and b/assets/forbidden/textures/items/crystalwell.png differ
diff --git a/src/com/spiteful/forbidden/Config.java b/src/com/spiteful/forbidden/Config.java
index 780c405..d54c28c 100644
--- a/src/com/spiteful/forbidden/Config.java
+++ b/src/com/spiteful/forbidden/Config.java
@@ -42,6 +42,7 @@ public class Config
public static int wandCapID;
public static int gluttonyShardID;
public static int bloodwellID;
+ public static int crystalwellID;
public static int arcaneCakeBlockID;
public static int blackFlowerBlockID;
@@ -100,6 +101,7 @@ public class Config
wandCapID = conf.getItem("Wand Caps", idCount++).getInt();
gluttonyShardID = conf.getItem("Gluttony Shard", idCount++).getInt();
bloodwellID = conf.getItem("Bloody Scrivener's Tools", idCount++).getInt();
+ crystalwellID = conf.getItem("Crystal Scribing Tools", idCount++).getInt();
int blockCount = 3000;
arcaneCakeBlockID = conf.getBlock("Thaumic Cake", blockCount++).getInt();
diff --git a/src/com/spiteful/forbidden/ForbiddenRecipes.java b/src/com/spiteful/forbidden/ForbiddenRecipes.java
index ae12bc8..8ff2d7c 100644
--- a/src/com/spiteful/forbidden/ForbiddenRecipes.java
+++ b/src/com/spiteful/forbidden/ForbiddenRecipes.java
@@ -58,6 +58,8 @@ public class ForbiddenRecipes
ForbiddenResearch.recipes.put("BlackFlower", ThaumcraftApi.addCrucibleRecipe("BLACKFLOWER", new ItemStack(ForbiddenBlocks.blackFlower, 1, 0), new ItemStack(Block.plantRed), (new AspectList()).merge(Aspect.DARKNESS, 5).merge(Aspect.LIFE, 5)));
ForbiddenResearch.recipes.put("BlackInk", CraftingManager.getInstance().addRecipe(new ItemStack(ForbiddenItems.resource, 2, 1), new Object[]{"#", Character.valueOf('#'), new ItemStack(ForbiddenBlocks.blackFlower, 1, 0)}));
+ ForbiddenResearch.recipes.put("Crystalwell", ThaumcraftApi.addShapelessArcaneCraftingRecipe("CRYSTALWELL", new ItemStack(ForbiddenItems.crystalwell, 1, 0), (new AspectList()).add(Aspect.EARTH, 5).add(Aspect.FIRE, 5).add(Aspect.AIR, 5).add(Aspect.WATER, 5).add(Aspect.ORDER, 5).add(Aspect.ENTROPY, 5), new Object[]{ItemApi.getItem("itemInkwell", 100), "dyeBlack", ItemApi.getBlock("blockCrystal", 6)}));
+
ForbiddenResearch.recipes.put("Cluster", ThaumcraftApi.addInfusionEnchantmentRecipe("CLUSTER", DarkEnchantments.cluster, 3, (new AspectList()).add(Aspect.FIRE, 4).add(Aspect.METAL, 4).add(Aspect.GREED, 4), new ItemStack[]{ItemApi.getItem("itemPickElemental", 0), ItemApi.getItem("itemResource", 14)}));
if(Config.greedyEnch)
ForbiddenResearch.recipes.put("Greedy", ThaumcraftApi.addInfusionEnchantmentRecipe("GREEDY", DarkEnchantments.greedy, 4, (new AspectList()).add(DarkAspects.NETHER, 16).add(Aspect.WEAPON, 8).add(Aspect.GREED, 16), new ItemStack[]{new ItemStack(Item.swordGold), new ItemStack(Item.diamond), new ItemStack(Block.blockGold), ItemApi.getItem("itemResource", 14)}));
diff --git a/src/com/spiteful/forbidden/ForbiddenResearch.java b/src/com/spiteful/forbidden/ForbiddenResearch.java
index 8d72162..e93bc14 100644
--- a/src/com/spiteful/forbidden/ForbiddenResearch.java
+++ b/src/com/spiteful/forbidden/ForbiddenResearch.java
@@ -48,6 +48,8 @@ public class ForbiddenResearch
(new DarkResearchItem("TRANSEMERALD", "FORBIDDEN", (new AspectList()).add(Aspect.CRYSTAL, 2).add(Aspect.EXCHANGE, 5).add(Aspect.GREED, 4), -6, 4, 3, new ItemStack(ForbiddenItems.resource, 1, 0))).setPages(new ResearchPage[]{new ResearchPage("forbidden.research_page.TRANSEMERALD.1"), new ResearchPage((CrucibleRecipe)recipes.get("TransEmerald"))}).setSecondary().setConcealed().setParents(new String[]{"TRANSGOLD"}).registerResearchItem();
(new DarkResearchItem("BLACKFLOWER", "FORBIDDEN", (new AspectList()).add(Aspect.PLANT, 3).add(Aspect.SENSES, 2).add(Aspect.DARKNESS, 4), -7, 4, 3, new ItemStack(ForbiddenBlocks.blackFlower, 1, 0))).setPages(new ResearchPage[]{new ResearchPage("forbidden.research_page.BLACKFLOWER.1"), new ResearchPage((CrucibleRecipe)recipes.get("BlackFlower")), new ResearchPage((IRecipe)recipes.get("BlackInk"))}).setAspectTriggers(new Aspect[]{Aspect.SENSES}).registerResearchItem();
+ (new DarkResearchItem("CRYSTALWELL", "FORBIDDEN", (new AspectList()).add(Aspect.MIND, 3).add(Aspect.CRYSTAL, 2).add(Aspect.MAGIC, 1), -9, 4, 3, new ItemStack(ForbiddenItems.crystalwell, 1, 0))).setPages(new ResearchPage[]{new ResearchPage("forbidden.research_page.CRYSTALWELL.1"), new ResearchPage((IArcaneRecipe)recipes.get("Crystalwell"))}).setParents(new String[]{"RESEARCH"}).setAspectTriggers(new Aspect[]{Aspect.MIND}).setConcealed().registerResearchItem();
+
(new DarkResearchItem("CONSUMING", "FORBIDDEN", (new AspectList()).add(Aspect.VOID, 4).add(Aspect.ENTROPY, 3).add(Aspect.MAGIC, 2), -1, 2, 3, new ResourceLocation("forbidden", "textures/misc/consuming.png"))).setPages(new ResearchPage[]{new ResearchPage("forbidden.research_page.CONSUMING.1"), new ResearchPage((InfusionEnchantmentRecipe)recipes.get("Consuming"))}).setParents(new String[]{"INFAUXSIONENCHANTMENT"}).setSecondary().setConcealed().registerResearchItem();
(new DarkResearchItem("PIGBANE", "FORBIDDEN", (new AspectList()).add(Aspect.HUNGER, 3).add(Aspect.WEAPON, 4).add(Aspect.MAGIC, 2), -1, 3, 2, new ResourceLocation("forbidden", "textures/misc/pigbane.png"))).setPages(new ResearchPage[]{new ResearchPage("forbidden.research_page.PIGBANE.1"), new ResearchPage((InfusionEnchantmentRecipe)recipes.get("Pigbane"))}).setParents(new String[]{"INFAUXSIONENCHANTMENT"}).setSecondary().setConcealed().registerResearchItem();
diff --git a/src/com/spiteful/forbidden/items/ForbiddenItems.java b/src/com/spiteful/forbidden/items/ForbiddenItems.java
index d5f3b20..ef8d0d6 100644
--- a/src/com/spiteful/forbidden/items/ForbiddenItems.java
+++ b/src/com/spiteful/forbidden/items/ForbiddenItems.java
@@ -33,6 +33,7 @@ public class ForbiddenItems
public static Item morphShovel;
public static Item morphAxe;
public static Item bloodwell;
+ public static Item crystalwell;
public static WandRod WAND_ROD_TAINTED;
public static WandRod WAND_ROD_INFERNAL;
@@ -131,5 +132,8 @@ public class ForbiddenItems
GameRegistry.registerItem(bloodwell, "Bloodwell");
}
+ crystalwell = new ItemCrystalwell(Config.crystalwellID).setUnlocalizedName("Crystalwell");
+ GameRegistry.registerItem(crystalwell, "Crystalwell");
+
}
}
\ No newline at end of file
diff --git a/src/com/spiteful/forbidden/items/ItemCrystalwell.java b/src/com/spiteful/forbidden/items/ItemCrystalwell.java
new file mode 100644
index 0000000..ca68be2
--- /dev/null
+++ b/src/com/spiteful/forbidden/items/ItemCrystalwell.java
@@ -0,0 +1,83 @@
+package com.spiteful.forbidden.items;
+
+import com.spiteful.forbidden.*;
+
+import java.util.List;
+import java.util.Iterator;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import net.minecraft.client.renderer.texture.IconRegister;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.EntityPlayerMP;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.Icon;
+import net.minecraft.world.World;
+import net.minecraftforge.common.ForgeDirection;
+import thaumcraft.api.IScribeTools;
+import thaumcraft.api.ItemApi;
+import thaumcraft.api.aspects.Aspect;
+import thaumcraft.common.Thaumcraft;
+import thaumcraft.common.lib.PacketHandler;
+
+public class ItemCrystalwell extends Item implements IScribeTools {
+
+ @SideOnly(Side.CLIENT)
+ public Icon icon;
+
+ public ItemCrystalwell(int id) {
+ super(id);
+ maxStackSize = 1;
+ canRepair = false;
+ setMaxDamage(100);
+ setCreativeTab(Forbidden.tab);
+ setHasSubtypes(false);
+
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void registerIcons(IconRegister ir) {
+ this.icon = ir.registerIcon("forbidden:crystalwell");
+ }
+
+ @SideOnly(Side.CLIENT)
+ public Icon getIconFromDamage(int par1) {
+ return this.icon;
+ }
+
+ @Override
+ public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
+ {
+ if(stack.getItemDamage() >= 100)
+ {
+ if(!world.isRemote)
+ {
+ Iterator count = Aspect.getPrimalAspects().iterator();
+
+ while(count.hasNext()) {
+ Aspect aspect = (Aspect)count.next();
+ short amount = (short)(world.rand.nextInt(3) + 4);
+ Thaumcraft.proxy.playerKnowledge.addAspectPool(player.username, aspect, amount);
+ Thaumcraft.proxy.getResearchManager().updateAspectNBT(player);
+ PacketHandler.sendAspectPoolPacket(aspect.getTag(), amount, Thaumcraft.proxy.playerKnowledge.getAspectPoolFor(player.username, aspect), (EntityPlayerMP)player);
+ }
+ }
+ player.swingItem();
+ return ItemApi.getItem("itemInkwell", 100);
+ }
+ else
+ return stack;
+ }
+
+ /**
+ * Render Pass sensitive version of hasEffect()
+ */
+ @SideOnly(Side.CLIENT)
+ public boolean hasEffect(ItemStack stack, int pass)
+ {
+ return stack.getItemDamage() >= 100;
+ }
+
+}
\ No newline at end of file