diff --git a/assets/tinker/manuals/materials.xml b/assets/tinker/manuals/materials.xml
index 9be2af4d..4b45474d 100644
--- a/assets/tinker/manuals/materials.xml
+++ b/assets/tinker/manuals/materials.xml
@@ -436,6 +436,47 @@ Class: Heavy Melee Weapon
+
+Shortbow
+The Shortbow is a weapon used to fire arrows. It has a quick, short range.
+Right-click: Draw bow
+- The further a bow is drawn, the further an arrow flies and the more damage it does.
+
+Class: Ranged Projectile Launcher
+shortbowIcon
+-
+ Tool Rod
+ toolrod
+
+-
+ Bowstring
+ bowstring
+
+-
+ Tool Rod
+ toolrod
+
+
+
+
+Arrow
+Arrows are fired from bows as projectiles. They can also be used as stabbing weapons in a pinch.
+Class: Ammunition
+arrowIcon
+-
+ Arrowhead
+ arrowhead
+
+-
+ Tool Rod
+ toolrod
+
+-
+ Fletching
+ fletching
+
+
+
Material Traits
Some materials have traits that augment their natural uses.
diff --git a/mods/tinker/textures/items/arrow/thaumium_arrow_head.png b/mods/tinker/textures/items/arrow/thaumium_arrow_head.png
new file mode 100644
index 00000000..b5effc73
Binary files /dev/null and b/mods/tinker/textures/items/arrow/thaumium_arrow_head.png differ
diff --git a/mods/tinker/textures/items/arrow/thuamium_arrow_shaft.png b/mods/tinker/textures/items/arrow/thuamium_arrow_shaft.png
new file mode 100644
index 00000000..50070b32
Binary files /dev/null and b/mods/tinker/textures/items/arrow/thuamium_arrow_shaft.png differ
diff --git a/mods/tinker/textures/items/parts/thaumium_arrowhead.png b/mods/tinker/textures/items/parts/thaumium_arrowhead.png
new file mode 100644
index 00000000..06f155f5
Binary files /dev/null and b/mods/tinker/textures/items/parts/thaumium_arrowhead.png differ
diff --git a/tconstruct/TConstruct.java b/tconstruct/TConstruct.java
index 8640640d..dcf730bd 100644
--- a/tconstruct/TConstruct.java
+++ b/tconstruct/TConstruct.java
@@ -88,6 +88,7 @@ public class TConstruct
chiselDetailing = new Detailing();
content = new TContent();
+ content.modRecipes();
events = new TEventHandler();
events.unfuxOreDictionary();
diff --git a/tconstruct/client/TProxyClient.java b/tconstruct/client/TProxyClient.java
index 51b3eb95..89729dad 100644
--- a/tconstruct/client/TProxyClient.java
+++ b/tconstruct/client/TProxyClient.java
@@ -502,6 +502,10 @@ public class TProxyClient extends TProxyCommon
TConstructClientRegistry.registerManualIcon("toughrod", new ItemStack(TContent.toughRod, 1, 0));
TConstructClientRegistry.registerManualIcon("toughbinding", new ItemStack(TContent.toughBinding, 1, 17));
TConstructClientRegistry.registerManualIcon("largeplate", new ItemStack(TContent.heavyPlate, 1, 17));
+
+ TConstructClientRegistry.registerManualIcon("bowstring", new ItemStack(TContent.bowstring, 1, 0));
+ TConstructClientRegistry.registerManualIcon("arrowhead", new ItemStack(TContent.arrowhead, 1, 2));
+ TConstructClientRegistry.registerManualIcon("fletching", new ItemStack(TContent.fletching, 1, 0));
// ToolIcons
TConstructClientRegistry.registerManualIcon("pickicon",
@@ -521,6 +525,8 @@ public class TProxyClient extends TProxyCommon
TConstructClientRegistry.registerManualIcon("frypanicon", ToolBuilder.instance.buildTool(new ItemStack(TContent.frypanHead, 1, 10), new ItemStack(TContent.toolRod, 1, 11), null, ""));
TConstructClientRegistry.registerManualIcon("battlesignicon", ToolBuilder.instance.buildTool(new ItemStack(TContent.signHead, 1, 10), new ItemStack(TContent.toolRod, 1, 11), null, ""));
TConstructClientRegistry.registerManualIcon("chiselicon", ToolBuilder.instance.buildTool(new ItemStack(TContent.chiselHead, 1, 10), new ItemStack(TContent.toolRod, 1, 11), null, ""));
+ TConstructClientRegistry.registerManualIcon("shortbowIcon", ToolBuilder.instance.buildTool(new ItemStack(TContent.toolRod, 1, 10), new ItemStack(TContent.bowstring, 1, 0), new ItemStack(TContent.toolRod, 1, 12), ""));
+ TConstructClientRegistry.registerManualIcon("arrowIcon", ToolBuilder.instance.buildTool(new ItemStack(TContent.arrowhead, 1, 10), new ItemStack(TContent.toolRod, 1, 11), new ItemStack(TContent.fletching, 1, 0), ""));
TConstructClientRegistry.registerManualIcon("hammericon", ToolBuilder.instance.buildTool(new ItemStack(TContent.hammerHead, 1, 10), new ItemStack(TContent.toughRod, 1, 11), new ItemStack(
TContent.heavyPlate, 1, 12), new ItemStack(TContent.heavyPlate, 8), ""));
diff --git a/tconstruct/client/gui/PartCrafterGui.java b/tconstruct/client/gui/PartCrafterGui.java
index 0635c737..fbb0e753 100644
--- a/tconstruct/client/gui/PartCrafterGui.java
+++ b/tconstruct/client/gui/PartCrafterGui.java
@@ -57,13 +57,15 @@ public class PartCrafterGui extends NewContainerGui
void drawMaterialInformation ()
{
ItemStack top = logic.getStackInSlot(2);
+ //ItemStack topResult = logic.getStackInSlot(4);
ItemStack bottom = logic.getStackInSlot(3);
+ //ItemStack bottomResult = logic.getStackInSlot(6);
if (topMaterial != top)
{
topMaterial = top;
int topID = PatternBuilder.instance.getPartID(top);
- if (topID != Short.MAX_VALUE)
+ if (topID != Short.MAX_VALUE)// && topResult != null)
{
topEnum = TConstructRegistry.getMaterial(topID);
hasTop = true;
@@ -78,7 +80,7 @@ public class PartCrafterGui extends NewContainerGui
bottomMaterial = bottom;
int bottomID = PatternBuilder.instance.getPartID(bottom);
- if (bottomID != Short.MAX_VALUE)
+ if (bottomID != Short.MAX_VALUE)// && bottomResult != null)
{
bottomEnum = TConstructRegistry.getMaterial(bottomID);
hasBottom = true;
diff --git a/tconstruct/client/gui/SmelteryGui.java b/tconstruct/client/gui/SmelteryGui.java
index 64b32eaa..8720fc11 100644
--- a/tconstruct/client/gui/SmelteryGui.java
+++ b/tconstruct/client/gui/SmelteryGui.java
@@ -184,7 +184,7 @@ public class SmelteryGui extends NewContainerGui
{
int total = logic.getTotalLiquid();
int liquidLayers = (total / 20000 + 1) * 20000;
- if (liquidLayers != 0)
+ if (liquidLayers > 0)
{
int liquidSize = liquid.amount * 52 / liquidLayers;
if (liquidSize == 0)
@@ -280,7 +280,7 @@ public class SmelteryGui extends NewContainerGui
float emeralds = liquid.amount / 320f;
list.add("Emeralds: " + emeralds);
}
- else
+ else if (name.contains("Molten"))
{
int ingots = liquid.amount / 144;
if (ingots > 0)
@@ -296,6 +296,22 @@ public class SmelteryGui extends NewContainerGui
list.add("mB: " + mB);
}
}
+ else if (name.equals("Seared Stone"))
+ {
+ int ingots = liquid.amount / 144;
+ if (ingots > 0)
+ list.add("Blocks: " + ingots);
+ int mB = liquid.amount % 144;
+ if (mB > 0)
+ {
+ list.add("mB: " + mB);
+ }
+ }
+ else
+ {
+ int mB = liquid.amount;
+ list.add("mB: " + mB);
+ }
}
return list;
}
diff --git a/tconstruct/common/TContent.java b/tconstruct/common/TContent.java
index 173aad2f..aea55c00 100644
--- a/tconstruct/common/TContent.java
+++ b/tconstruct/common/TContent.java
@@ -35,6 +35,21 @@ import net.minecraft.block.material.*;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.*;
import net.minecraft.item.crafting.*;
+
+import net.minecraft.block.Block;
+import net.minecraft.block.BlockDispenser;
+import net.minecraft.block.material.MapColor;
+import net.minecraft.block.material.Material;
+import net.minecraft.block.material.MaterialLiquid;
+import net.minecraft.entity.EnumCreatureType;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.item.crafting.CraftingManager;
+import net.minecraft.item.crafting.FurnaceRecipes;
+import net.minecraft.item.crafting.RecipesTools;
+import net.minecraft.item.crafting.RecipesWeapons;
+import net.minecraft.item.crafting.ShapedRecipes;
+
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.potion.Potion;
import net.minecraft.util.WeightedRandomChestContent;
@@ -1565,8 +1580,15 @@ public class TContent implements IFuelHandler
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(Block.cloth, 8, i), pattern, 'm', dyeTypes[15 - i], '#', new ItemStack(Block.cloth, 1, Short.MAX_VALUE)));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(stainedGlassClear, 8, i), pattern, 'm', dyeTypes[15 - i], '#', clearGlass));
GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(stainedGlassClear, 1, i), dyeTypes[15 - i], clearGlass));
+ GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(stainedGlassClearPane, 8, i), pattern, 'm', dyeTypes[15 - i], '#', glassPane));
+ GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(stainedGlassClearPane, 1, i), dyeTypes[15 - i], glassPane));
}
+ //Glass
+ GameRegistry.addRecipe(new ItemStack(Item.glassBottle, 3), new Object[] {"# #", " # ", '#', clearGlass});
+ GameRegistry.addRecipe(new ItemStack(Block.daylightSensor), new Object[] {"GGG", "QQQ", "WWW", 'G', Block.glass, 'Q', Item.netherQuartz, 'W', Block.woodSingleSlab});
+ GameRegistry.addRecipe(new ItemStack(Block.beacon, 1), new Object[] {"GGG", "GSG", "OOO", 'G', clearGlass, 'S', Item.netherStar, 'O', Block.obsidian});
+
//Smeltery
ItemStack searedBrick = new ItemStack(materials, 1, 2);
GameRegistry.addRecipe(new ItemStack(smeltery, 1, 0), "bbb", "b b", "bbb", 'b', searedBrick); //Controller
@@ -1576,6 +1598,10 @@ public class TContent implements IFuelHandler
GameRegistry.addRecipe(new ItemStack(lavaTank, 1, 0), "bbb", "bgb", "bbb", 'b', searedBrick, 'g', Block.glass); //Tank
GameRegistry.addRecipe(new ItemStack(lavaTank, 1, 1), "bgb", "ggg", "bgb", 'b', searedBrick, 'g', Block.glass); //Glass
GameRegistry.addRecipe(new ItemStack(lavaTank, 1, 2), "bgb", "bgb", "bgb", 'b', searedBrick, 'g', Block.glass); //Window
+
+ GameRegistry.addRecipe(new ItemStack(lavaTank, 1, 0), "bbb", "bgb", "bbb", 'b', searedBrick, 'g', clearGlass); //Tank
+ GameRegistry.addRecipe(new ItemStack(lavaTank, 1, 1), "bgb", "ggg", "bgb", 'b', searedBrick, 'g', clearGlass); //Glass
+ GameRegistry.addRecipe(new ItemStack(lavaTank, 1, 2), "bgb", "bgb", "bgb", 'b', searedBrick, 'g', clearGlass); //Window
GameRegistry.addRecipe(new ItemStack(searedBlock, 1, 0), "bbb", "b b", "b b", 'b', searedBrick); //Table
GameRegistry.addRecipe(new ItemStack(searedBlock, 1, 1), "b b", " b ", 'b', searedBrick); //Faucet
@@ -1627,7 +1653,7 @@ public class TContent implements IFuelHandler
}
//Drying rack
- DryingRackRecipes.addDryingRecipe(Item.rottenFlesh, 20, Item.leather);
+ DryingRackRecipes.addDryingRecipe(Item.rottenFlesh, 20*60*5, Item.leather);
//Slabs
for (int i = 0; i < 7; i++)
diff --git a/tconstruct/entity/projectile/ArrowEntity.java b/tconstruct/entity/projectile/ArrowEntity.java
index 1f72ffaa..3a5580a0 100644
--- a/tconstruct/entity/projectile/ArrowEntity.java
+++ b/tconstruct/entity/projectile/ArrowEntity.java
@@ -226,6 +226,25 @@ public class ArrowEntity extends EntityArrow implements IEntityAdditionalSpawnDa
movingobjectposition.entityHit.setFire(5);
}
+ if (returnStack.hasTagCompound())
+ {
+ int fireAspect = 0;
+ NBTTagCompound toolTags = returnStack.getTagCompound().getCompoundTag("InfiTool");
+ if (toolTags.hasKey("Fiery") || toolTags.hasKey("Lava"))
+ {
+ fireAspect *= 4;
+ if (toolTags.hasKey("Fiery"))
+ {
+ fireAspect += toolTags.getInteger("Fiery") / 5 + 1;
+ }
+ if (toolTags.getBoolean("Lava"))
+ {
+ fireAspect += 3;
+ }
+ entity.setFire(fireAspect);
+ }
+ }
+
if (movingobjectposition.entityHit.attackEntityFrom(damagesource, damageInflicted))
{
if (movingobjectposition.entityHit instanceof EntityLivingBase)
diff --git a/tconstruct/inventory/ToolForgeContainer.java b/tconstruct/inventory/ToolForgeContainer.java
index e4d76094..fbb1c168 100644
--- a/tconstruct/inventory/ToolForgeContainer.java
+++ b/tconstruct/inventory/ToolForgeContainer.java
@@ -70,6 +70,7 @@ public class ToolForgeContainer extends ToolStationContainer
}
}
+ @Override
protected void craftTool (ItemStack stack)
{
NBTTagCompound tags = stack.getTagCompound();
diff --git a/tconstruct/inventory/ToolStationContainer.java b/tconstruct/inventory/ToolStationContainer.java
index 064e8fcc..19c455f9 100644
--- a/tconstruct/inventory/ToolStationContainer.java
+++ b/tconstruct/inventory/ToolStationContainer.java
@@ -139,8 +139,6 @@ public class ToolStationContainer extends ActiveContainer
logic.decrStackSize(1, amount);
logic.worldObj.playSoundEffect(logic.xCoord, logic.yCoord, logic.zCoord, "tinker:little_saw", 1.0F, (random.nextFloat() - random.nextFloat()) * 0.2F + 1.0F);
- /*if (!player.worldObj.isRemote)
- player.worldObj.playAuxSFX(1021, (int)player.posX, (int)player.posY, (int)player.posZ, 0);*/
}
}
diff --git a/tconstruct/items/GoldenHead.java b/tconstruct/items/GoldenHead.java
index 1e253722..e676ba31 100644
--- a/tconstruct/items/GoldenHead.java
+++ b/tconstruct/items/GoldenHead.java
@@ -68,11 +68,13 @@ public class GoldenHead extends ItemFood
public void registerIcons (IconRegister iconRegister)
{
this.itemIcon = iconRegister.registerIcon("tinker:skull_char_gold");
- /*this.icons = new Icon[textureNames.length];
-
- for (int i = 0; i < this.icons.length; ++i)
- {
- this.icons[i] = iconRegister.registerIcon("tinker:"+textureNames[i]);
- }*/
+ }
+
+ @Override
+ @SideOnly(Side.CLIENT)
+ public void addInformation (ItemStack stack, EntityPlayer player, List list, boolean par4)
+ {
+ list.add("\u00a75\u00a7oSome say consuming the head of a");
+ list.add("\u00a75\u00a7ofallen foe strengthens the blood");
}
}
diff --git a/tconstruct/util/player/TPlayerHandler.java b/tconstruct/util/player/TPlayerHandler.java
index 3dbff3c4..49231f71 100644
--- a/tconstruct/util/player/TPlayerHandler.java
+++ b/tconstruct/util/player/TPlayerHandler.java
@@ -19,6 +19,7 @@ import tconstruct.library.tools.AbilityHelper;
import tconstruct.util.PHConstruct;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.IPlayerTracker;
+import cpw.mods.fml.common.Loader;
import cpw.mods.fml.common.network.PacketDispatcher;
import cpw.mods.fml.common.network.Player;
import cpw.mods.fml.relauncher.Side;
@@ -83,7 +84,7 @@ public class TPlayerHandler implements IPlayerTracker
entityplayer.addChatMessage("Solution 2: Disable Auto-Smelt/Fortune interaction from TConstruct.");
}
}
-
+
updatePlayerInventory(entityplayer, stats);
}
diff --git a/test/XinStick.java b/test/XinStick.java
index 83b1f160..b554da12 100644
--- a/test/XinStick.java
+++ b/test/XinStick.java
@@ -2,7 +2,6 @@ package test;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
-import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.passive.EntityChicken;
import net.minecraft.entity.player.EntityPlayer;