diff --git a/resources/assets/tinker/lang/en_US.lang b/resources/assets/tinker/lang/en_US.lang
index 714592e028b..2a76c8882ae 100644
--- a/resources/assets/tinker/lang/en_US.lang
+++ b/resources/assets/tinker/lang/en_US.lang
@@ -479,7 +479,7 @@ LiquidMetal.Steel.name=Molten Steel
LiquidMetal.Glass.name=Molten Glass
LiquidMetal.Stone.name=Seared Stone
LiquidMetal.Villager.name=Liquified Emerald
-LiquidMetal.Cow.name=Blood
+LiquidMetal.Cow.name=Blo
LiquidMetal.Nickel.name=Molten Nickel
LiquidMetal.Silver.name=Molten Silver
LiquidMetal.Lead.name=Molten Lead
@@ -491,9 +491,14 @@ LiquidMetal.Ender.name=Liquified Ender
item.food.apple.diamond.name=Jeweled Apple
item.tconstruct.strangefood.edibleslime.name=Gelatinous Slime
item.tconstruct.strangefood.edibleblood.name=Coagulated Blood
+item.tconstruct.strangefood.bacon.name=Bacon
item.tconstruct.canister.empty.name=Empty Canister
item.tconstruct.canister.miniheart.red.name=Miniature Red Heart
-item.tconstruct.canister.heart.name=Heart Canister
+item.tconstruct.canister.red.name=Red Heart Canister
+item.tconstruct.canister.miniheart.yellow.name=Miniature Yellow Heart
+item.tconstruct.canister.yellow.name=Yellow Heart Canister
+item.tconstruct.canister.miniheart.green.name=Miniature Green Heart
+item.tconstruct.canister.green.name=Green Heart Canister
item.tconstruct.glove.name=Dirtmover Gloves
SearedBlock.Table.name=Casting Table
@@ -623,8 +628,9 @@ strangefood3.tooltip=It seems edible, but somehow
strangefood4.tooltip=it's just not appealing.
strangefood5.tooltip=Stretchy food!
strangefood6.tooltip=One vampiric appetizer
+strangefood7.tooltip=The mysteriously appearing snack
hambone1.tooltip=Hambone!
-hambone2.tooltip=Usable for Beacon bases
+hambone2.tooltip=Usable for Bacon bases
metalblock.tooltip=Usable for Beacon bases
craftedsoil1.tooltip=Heals Undead
craftedsoil2.tooltip=Harmful to Undead
@@ -655,11 +661,15 @@ oreberries3.tooltip=Tastes like metal
oreberries4.tooltip=Tin Man
oreberries5.tooltip=White Chocolate
oreberries6.tooltip=Tastes like Creeper
-hearthcanister1.tooltip=Crafting Item
-hearthcanister2.tooltip=Crafting Item
-hearthcanister3.tooltip=Part of low-level Heart Canisters
-hearthcanister4.tooltip=Accessory
-hearthcanister5.tooltip=Permanent health increase
+item.crafting.tooltip=Crafting Item
+item.accessory.tooltip=Accessory
+canister.tooltip=Permanent health increase
+canister.red.tooltip1=Part of low-level Heart Canisters
+canister.red.tooltip2=Can be eaten to restore 10 hearts
+canister.yellow.tooltip1=Part of mid-level Heart Canisters
+canister.yellow.tooltip2=Can be eaten to restore 20 hearts
+canister.green.tooltip1=Part of high-level Heart Canisters
+canister.green.tooltip2=Can be eaten to restore 30 hearts
landmine1.tooltip=everything
landmine2.tooltip=mobs, players and redstone
landmine3.tooltip=players and redstone
@@ -723,3 +733,5 @@ gui.toolstation15=Mining Level:
gui.toolstation16=Usage Speed:
gui.toolstation17=Modifiers
gui.toolstation18=Modifiers remaining:
+
+attribute.generic.ammo.attackDamage=Average Shot Damage
\ No newline at end of file
diff --git a/resources/assets/tinker/manuals/materials.xml b/resources/assets/tinker/manuals/materials.xml
index 8717d313a3d..87b184f0a4c 100644
--- a/resources/assets/tinker/manuals/materials.xml
+++ b/resources/assets/tinker/manuals/materials.xml
@@ -11,6 +11,7 @@ By Skyla
Table of Contents
+Table of Contents
Tools
ironpick
@@ -484,7 +485,8 @@ Class: Ranged Projectile Launcher
- Reinforced: 10% chance per level of not using durability
- Stonebound: The tool mines faster as it wears out, but does less damage
- Jagged: The tool attacks with does more damage as it wears out, but mines slower
-- Writable: One extra modifier per piece
+- Writable: One extra modifier per piece
+- Tasty: Sometimes drops food items
@@ -874,6 +876,7 @@ Stackable: Yes
Effects:
- Allows blocks to be harvested directly
+- Scythes modified with Silky act as shears on blocks
- Not compatible with Luck or Auto-Smelt
Type: Single-use
diff --git a/resources/assets/tinker/textures/gui/armorextended.png b/resources/assets/tinker/textures/gui/armorextended.png
index ef2ce92ca22..be2099c667d 100644
Binary files a/resources/assets/tinker/textures/gui/armorextended.png and b/resources/assets/tinker/textures/gui/armorextended.png differ
diff --git a/resources/assets/tinker/textures/items/canister_heart_yellow.png b/resources/assets/tinker/textures/items/canister_heart_yellow.png
new file mode 100644
index 00000000000..8b7ebcdbaef
Binary files /dev/null and b/resources/assets/tinker/textures/items/canister_heart_yellow.png differ
diff --git a/resources/assets/tinker/textures/items/food/bacon.png b/resources/assets/tinker/textures/items/food/bacon.png
new file mode 100644
index 00000000000..713505afaaf
Binary files /dev/null and b/resources/assets/tinker/textures/items/food/bacon.png differ
diff --git a/src/main/java/tconstruct/client/gui/ToolStationGui.java b/src/main/java/tconstruct/client/gui/ToolStationGui.java
index 2ae64f1650a..3c26fc6c9f4 100644
--- a/src/main/java/tconstruct/client/gui/ToolStationGui.java
+++ b/src/main/java/tconstruct/client/gui/ToolStationGui.java
@@ -214,7 +214,7 @@ void drawModularToolStats (ItemStack stack, ToolCore tool, NBTTagCompound tags)
// Attack
if (categories.contains("weapon"))
{
- int attack = (int) (tags.getInteger("Attack"));
+ int attack = (int) (tags.getInteger("Attack")) + 1;
float stoneboundDamage = (float) Math.log(durability / 72f + 1) * -2 * stonebound;
attack += stoneboundDamage;
attack *= tool.getDamageModifier();
@@ -295,7 +295,7 @@ void drawModularToolStats (ItemStack stack, ToolCore tool, NBTTagCompound tags)
{
float mineSpeed = tags.getInteger("MiningSpeed") / 100f;
float mineSpeed2 = tags.getInteger("MiningSpeed2") / 100f;
- float stoneboundSpeed = (float) Math.log(durability / 90f + 1) * 2 * stonebound;
+ float stoneboundSpeed = (float) Math.log(durability / 72f + 1) * 2 * stonebound;
DecimalFormat df = new DecimalFormat("##.##");
df.setRoundingMode(RoundingMode.DOWN);
float trueSpeed = mineSpeed + stoneboundSpeed;
@@ -344,7 +344,7 @@ else if (categories.contains("harvest"))
float trueSpeed = mineSpeed / (heads * 100f);
- float stoneboundSpeed = (float) Math.log(durability / 90f + 1) * 2 * stonebound;
+ float stoneboundSpeed = (float) Math.log(durability / 72f + 1) * 2 * stonebound;
DecimalFormat df = new DecimalFormat("##.##");
df.setRoundingMode(RoundingMode.DOWN);
trueSpeed += stoneboundSpeed;
diff --git a/src/main/java/tconstruct/common/TRecipes.java b/src/main/java/tconstruct/common/TRecipes.java
index d2cf5c6645d..84a911526a7 100644
--- a/src/main/java/tconstruct/common/TRecipes.java
+++ b/src/main/java/tconstruct/common/TRecipes.java
@@ -1284,7 +1284,7 @@ protected static void addRecipesForSmeltery ()
TConstruct.ingotLiquidValue), new FluidStack(TRepo.moltenArditeFluid, TConstruct.ingotLiquidValue)); // Manyullyn
Smeltery.addAlloyMixing(new FluidStack(TRepo.pigIronFluid, (int) (TConstruct.ingotLiquidValue * PHConstruct.ingotsPigironAlloy)), new FluidStack(TRepo.moltenIronFluid,
TConstruct.ingotLiquidValue), new FluidStack(TRepo.moltenEmeraldFluid, 640), new FluidStack(TRepo.bloodFluid, 80)); // Pigiron
-
+ Smeltery.addAlloyMixing(new FluidStack(TRepo.moltenObsidianFluid, TConstruct.oreLiquidValue), new FluidStack(FluidRegistry.LAVA, 1000), new FluidStack(FluidRegistry.WATER, 1000)); //Obsidian
// Stone parts
for (int sc = 0; sc < TRepo.patternOutputs.length; sc++)
{
diff --git a/src/main/java/tconstruct/items/StrangeFood.java b/src/main/java/tconstruct/items/StrangeFood.java
index 46c8d35818a..1340234aa46 100644
--- a/src/main/java/tconstruct/items/StrangeFood.java
+++ b/src/main/java/tconstruct/items/StrangeFood.java
@@ -15,7 +15,7 @@ public class StrangeFood extends SpecialFood
{
public StrangeFood()
{
- super(new int[] { 2, 2 }, new float[] { 1f, 1f }, new String[] { "edibleslime", "edibleblood" }, new String[] { "food/edibleslime", "food/edibleblood" });
+ super(new int[] { 2, 2 }, new float[] { 1f, 1f }, new String[] { "edibleslime", "edibleblood", "bacon" }, new String[] { "food/edibleslime", "food/edibleblood", "food/bacon" });
}
@Override
@@ -40,6 +40,9 @@ public void addInformation (ItemStack stack, EntityPlayer player, List list, boo
list.add("\u00a74\u00a7o" + StatCollector.translateToLocal("strangefood3.tooltip"));
list.add("\u00a74\u00a7o" + StatCollector.translateToLocal("strangefood4.tooltip"));
break;
+ case 2:
+ list.add("\u00a7c" + StatCollector.translateToLocal("strangefood7.tooltip"));
+ break;
}
}
}
diff --git a/src/main/java/tconstruct/items/armor/HeartCanister.java b/src/main/java/tconstruct/items/armor/HeartCanister.java
index fd26d611845..c5a06d082ad 100644
--- a/src/main/java/tconstruct/items/armor/HeartCanister.java
+++ b/src/main/java/tconstruct/items/armor/HeartCanister.java
@@ -62,7 +62,7 @@ public ItemStack onEaten (ItemStack stack, World world, EntityPlayer player)
{
int meta = stack.getItemDamage();
--stack.stackSize;
- player.heal((meta + 1) * 5);
+ player.heal((meta + 1) * 10);
world.playSoundAtEntity(player, "random.burp", 0.5F, world.rand.nextFloat() * 0.1F + 0.9F);
return stack;
}
diff --git a/src/main/java/tconstruct/items/tools/Arrow.java b/src/main/java/tconstruct/items/tools/Arrow.java
index 8267587e96a..619cda3b593 100644
--- a/src/main/java/tconstruct/items/tools/Arrow.java
+++ b/src/main/java/tconstruct/items/tools/Arrow.java
@@ -7,6 +7,7 @@
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import tconstruct.TConstruct;
import tconstruct.common.TRepo;
@@ -234,6 +235,9 @@ else if (power > this.getMaxEnergyStored(stack) * 2 / 3)
}
}
}
+ int attack = (int) (tags.getCompoundTag("InfiTool").getInteger("Attack") * this.getDamageModifier());
+ list.add("\u00A79+" + attack + " " + StatCollector.translateToLocalFormatted("attribute.name.generic.attackDamage"));
+ list.add("\u00A79+" + tags.getCompoundTag("InfiTool").getInteger("Attack") + " " + StatCollector.translateToLocalFormatted("attribute.name.ammo.attackDamage"));
}
}
diff --git a/src/main/java/tconstruct/items/tools/BowBase.java b/src/main/java/tconstruct/items/tools/BowBase.java
index 69e056b745d..72223288a2b 100644
--- a/src/main/java/tconstruct/items/tools/BowBase.java
+++ b/src/main/java/tconstruct/items/tools/BowBase.java
@@ -232,12 +232,6 @@ public ItemStack onItemRightClick (ItemStack stack, World par2World, EntityPlaye
return stack;
}
- @Override
- public boolean onItemUse (ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float clickX, float clickY, float clickZ)
- {
- return false;
- }
-
@SideOnly(Side.CLIENT)
@Override
public boolean requiresMultipleRenderPasses ()
diff --git a/src/main/java/tconstruct/items/tools/Cleaver.java b/src/main/java/tconstruct/items/tools/Cleaver.java
index 96915ed65ca..4d387499e75 100644
--- a/src/main/java/tconstruct/items/tools/Cleaver.java
+++ b/src/main/java/tconstruct/items/tools/Cleaver.java
@@ -18,7 +18,7 @@ public class Cleaver extends Weapon
{
public Cleaver()
{
- super(6);
+ super(5);
this.setUnlocalizedName("InfiTool.Cleaver");
}
diff --git a/src/main/java/tconstruct/items/tools/Scythe.java b/src/main/java/tconstruct/items/tools/Scythe.java
index 426ab0175d1..2359208f417 100644
--- a/src/main/java/tconstruct/items/tools/Scythe.java
+++ b/src/main/java/tconstruct/items/tools/Scythe.java
@@ -1,17 +1,24 @@
package tconstruct.items.tools;
+import java.util.ArrayList;
import java.util.List;
+import java.util.Random;
import mantle.world.WorldHelper;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
+import net.minecraft.enchantment.Enchantment;
+import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.entity.Entity;
+import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.stats.StatList;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World;
+import net.minecraftforge.common.IShearable;
import tconstruct.common.TRepo;
import tconstruct.library.ActiveToolMod;
import tconstruct.library.TConstructRegistry;
@@ -38,10 +45,9 @@ protected Material[] getEffectiveMaterials ()
return materials;
}
- static Material[] materials = new Material[] { Material.web, Material.cactus, Material.plants
- , Material.leaves, Material.vine };// TODO find this//, Material.pumpkin,
- // Material.plants, Material.vine,
- // Material.leaves };
+ static Material[] materials = new Material[] { Material.web, Material.cactus, Material.plants, Material.leaves, Material.vine };// TODO find this//, Material.pumpkin,
+ // Material.plants, Material.vine,
+ // Material.leaves };
@Override
public Item getHeadItem ()
@@ -162,6 +168,7 @@ public boolean onBlockStartBreak (ItemStack stack, int x, int y, int z, EntityPl
if (!stack.hasTagCompound())
return false;
NBTTagCompound tags = stack.getTagCompound().getCompoundTag("InfiTool");
+ boolean butter = EnchantmentHelper.getEnchantmentLevel(Enchantment.silkTouch.effectId, stack) > 0;
for (int xPos = x - 1; xPos <= x + 1; xPos++)
{
for (int yPos = y - 1; yPos <= y + 1; yPos++)
@@ -179,21 +186,55 @@ public boolean onBlockStartBreak (ItemStack stack, int x, int y, int z, EntityPl
if (!cancelHarvest)
{
- Block block = world.getBlock(xPos, yPos, zPos);
- if ((block != null))
+ Block localBlock = world.getBlock(xPos, yPos, zPos);
+ int localMeta = world.getBlockMetadata(xPos, yPos, zPos);
+ float localHardness = localBlock == null ? Float.MAX_VALUE : localBlock.getBlockHardness(world, xPos, yPos, zPos);
+ if (localBlock != null)// && (block.blockMaterial == Material.leaves || block.isLeaves(world, xPos, yPos, zPos)))
{
for (int iter = 0; iter < materials.length; iter++)
{
- if (materials[iter] == block.getMaterial())
+ if (materials[iter] == localBlock.getMaterial())
{
- int localMeta = world.getBlockMetadata(xPos, yPos, zPos);
- WorldHelper.setBlockToAir(world, xPos, yPos, zPos);
if (!player.capabilities.isCreativeMode)
{
- block.onBlockDestroyedByPlayer(world, x, y, z, meta);
- block.harvestBlock(world, player, xPos, yPos, zPos, localMeta);
- block.onBlockHarvested(world, x, y, z, localMeta, player);
- onBlockDestroyed(stack, world, blockB, xPos, yPos, zPos, player);
+ if (butter && localBlock instanceof IShearable && ((IShearable) localBlock).isShearable(stack, player.worldObj, x, y, z))
+ {
+ ArrayList drops = ((IShearable) localBlock).onSheared(stack, player.worldObj, x, y, z,
+ EnchantmentHelper.getEnchantmentLevel(Enchantment.fortune.effectId, stack));
+ Random rand = new Random();
+
+ if (!world.isRemote)
+ for (ItemStack dropStack : drops)
+ {
+ float f = 0.7F;
+ double d = (double) (rand.nextFloat() * f) + (double) (1.0F - f) * 0.5D;
+ double d1 = (double) (rand.nextFloat() * f) + (double) (1.0F - f) * 0.5D;
+ double d2 = (double) (rand.nextFloat() * f) + (double) (1.0F - f) * 0.5D;
+ EntityItem entityitem = new EntityItem(player.worldObj, (double) xPos + d, (double) yPos + d1, (double) zPos + d2, dropStack);
+ entityitem.delayBeforeCanPickup = 10;
+ player.worldObj.spawnEntityInWorld(entityitem);
+ }
+
+ if (localHardness > 0f)
+ onBlockDestroyed(stack, world, localBlock, xPos, yPos, zPos, player);
+ player.addStat(StatList.mineBlockStatArray[Block.getIdFromBlock(localBlock)], 1);
+ world.setBlockToAir(xPos, yPos, zPos);
+ }
+ else
+ {
+ if (localBlock.removedByPlayer(world, player, xPos, yPos, zPos))
+ {
+ localBlock.onBlockDestroyedByPlayer(world, xPos, yPos, zPos, localMeta);
+ }
+ localBlock.harvestBlock(world, player, xPos, yPos, zPos, localMeta);
+ localBlock.onBlockHarvested(world, xPos, yPos, zPos, localMeta, player);
+ if (localHardness > 0f)
+ onBlockDestroyed(stack, world, localBlock, xPos, yPos, zPos, player);
+ }
+ }
+ else
+ {
+ world.setBlockToAir(xPos, yPos, zPos);
}
}
}
diff --git a/src/main/java/tconstruct/items/tools/Shortbow.java b/src/main/java/tconstruct/items/tools/Shortbow.java
index 8867544665b..c4c89b5324e 100644
--- a/src/main/java/tconstruct/items/tools/Shortbow.java
+++ b/src/main/java/tconstruct/items/tools/Shortbow.java
@@ -8,6 +8,7 @@
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import tconstruct.common.TRepo;
import cpw.mods.fml.relauncher.Side;
@@ -175,6 +176,9 @@ else if (power > this.getMaxEnergyStored(stack) * 2 / 3)
}
}
}
+ list.add("");
+ list.add("\u00A79+" + tags.getCompoundTag("InfiTool").getInteger("Attack") + " " + StatCollector.translateToLocalFormatted("attribute.name.generic.attackDamage"));
+
}
public String getBowstringName (int type)
diff --git a/src/main/java/tconstruct/library/tools/AbilityHelper.java b/src/main/java/tconstruct/library/tools/AbilityHelper.java
index 0374f1eba8b..ee6c2e57e76 100644
--- a/src/main/java/tconstruct/library/tools/AbilityHelper.java
+++ b/src/main/java/tconstruct/library/tools/AbilityHelper.java
@@ -523,22 +523,26 @@ public static boolean hoeGround (ItemStack stack, EntityPlayer player, World wor
}
}
+ public static void spawnItemAtEntity (Entity entity, ItemStack stack, int delay)
+ {
+ if (!entity.worldObj.isRemote)
+ {
+ EntityItem entityitem = new EntityItem(entity.worldObj, entity.posX + 0.5D, entity.posY + 0.5D, entity.posZ + 0.5D, stack);
+ entityitem.delayBeforeCanPickup = delay;
+ entity.worldObj.spawnEntityInWorld(entityitem);
+ }
+ }
+
public static void spawnItemAtPlayer (EntityPlayer player, ItemStack stack)
{
- EntityItem entityitem = new EntityItem(player.worldObj, player.posX + 0.5D, player.posY + 0.5D, player.posZ + 0.5D, stack);
- player.worldObj.spawnEntityInWorld(entityitem);
- if (!(player instanceof FakePlayer))
- entityitem.onCollideWithPlayer(player);
- /*
- * if (!player.inventory.addItemStackToInventory(stack)) { if
- * (!player.worldObj.isRemote) { EntityItem entityitem = new
- * EntityItem(player.worldObj, player.posX + 0.5D, player.posY + 0.5D,
- * player.posZ + 0.5D, stack);
- * player.worldObj.spawnEntityInWorld(entityitem);
- * entityitem.onCollideWithPlayer(player); } } else {
- * player.worldObj.playSoundAtEntity(player, "random.pop", 0.2F,
- * ((random.nextFloat() - random.nextFloat()) * 0.7F + 1.0F) * 2.0F); }
- */
+ if (!player.worldObj.isRemote)
+ {
+ EntityItem entityitem = new EntityItem(player.worldObj, player.posX + 0.5D, player.posY + 0.5D, player.posZ + 0.5D, stack);
+ player.worldObj.spawnEntityInWorld(entityitem);
+ if (!(player instanceof FakePlayer))
+ entityitem.onCollideWithPlayer(player);
+ }
+
}
/* Ranged weapons */
@@ -632,4 +636,5 @@ public static MovingObjectPosition raytraceFromEntity (World world, Entity playe
Vec3 vec31 = vec3.addVector((double) f7 * d3, (double) f6 * d3, (double) f8 * d3);
return world.func_147447_a(vec3, vec31, par3, !par3, par3);
}
+
}
diff --git a/src/main/java/tconstruct/library/tools/HarvestTool.java b/src/main/java/tconstruct/library/tools/HarvestTool.java
index fbd409418af..367b17c2f67 100644
--- a/src/main/java/tconstruct/library/tools/HarvestTool.java
+++ b/src/main/java/tconstruct/library/tools/HarvestTool.java
@@ -5,6 +5,8 @@
import net.minecraft.block.material.Material;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
@@ -194,4 +196,85 @@ public String[] toolCategories ()
protected abstract Material[] getEffectiveMaterials ();
protected abstract String getHarvestType ();
+
+ //Right-click
+ @Override
+ public boolean onItemUse (ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float clickX, float clickY, float clickZ)
+ {
+ /*if (world.isRemote)
+ return true;*/
+
+ boolean used = false;
+ int hotbarSlot = player.inventory.currentItem;
+ int itemSlot = hotbarSlot == 0 ? 8 : hotbarSlot + 1;
+ ItemStack nearbyStack = null;
+
+ if (hotbarSlot < 8)
+ {
+ nearbyStack = player.inventory.getStackInSlot(itemSlot);
+ if (nearbyStack != null)
+ {
+ Item item = nearbyStack.getItem();
+ if (item instanceof ItemBlock)
+ {
+ int posX = x;
+ int posY = y;
+ int posZ = z;
+ int playerPosX = (int) Math.floor(player.posX);
+ int playerPosY = (int) Math.floor(player.posY);
+ int playerPosZ = (int) Math.floor(player.posZ);
+ if (side == 0)
+ {
+ --posY;
+ }
+
+ if (side == 1)
+ {
+ ++posY;
+ }
+
+ if (side == 2)
+ {
+ --posZ;
+ }
+
+ if (side == 3)
+ {
+ ++posZ;
+ }
+
+ if (side == 4)
+ {
+ --posX;
+ }
+
+ if (side == 5)
+ {
+ ++posX;
+ }
+ if (posX == playerPosX && (posY == playerPosY || posY == playerPosY + 1 || posY == playerPosY - 1) && posZ == playerPosZ)
+ {
+ return false;
+ }
+
+ used = item.onItemUse(nearbyStack, player, world, x, y, z, side, clickX, clickY, clickZ);
+ if (nearbyStack.stackSize < 1)
+ {
+ nearbyStack = null;
+ player.inventory.setInventorySlotContents(itemSlot, null);
+ }
+ }
+ }
+ }
+
+ /*
+ if (used) //Update client
+ {
+ Packet103SetSlot packet = new Packet103SetSlot(player.openContainer.windowId, itemSlot, nearbyStack);
+ ((EntityPlayerMP)player).playerNetServerHandler.sendPacketToPlayer(packet);
+ }
+ */
+
+ return used;
+ }
}
diff --git a/src/main/java/tconstruct/library/tools/ToolCore.java b/src/main/java/tconstruct/library/tools/ToolCore.java
index 5e8eb519677..4087acb002e 100644
--- a/src/main/java/tconstruct/library/tools/ToolCore.java
+++ b/src/main/java/tconstruct/library/tools/ToolCore.java
@@ -19,6 +19,7 @@
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.IIcon;
+import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
import tconstruct.library.ActiveToolMod;
@@ -408,6 +409,10 @@ else if (RF > this.getMaxEnergyStored(stack) * 2 / 3)
}
}
}
+ list.add("");
+ int attack = (int) (tags.getCompoundTag("InfiTool").getInteger("Attack") * this.getDamageModifier());
+ list.add("\u00A79+" + attack + " " + StatCollector.translateToLocalFormatted("attribute.name.generic.attackDamage"));
+
}
public static String getStyleForType (int type)
@@ -674,87 +679,6 @@ public float getDamageModifier ()
return 1.0f;
}
- // Right-click
- @Override
- public boolean onItemUse (ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float clickX, float clickY, float clickZ)
- {
- /*
- * if (world.isRemote) return true;
- */
-
- boolean used = false;
- int hotbarSlot = player.inventory.currentItem;
- int itemSlot = hotbarSlot == 0 ? 8 : hotbarSlot + 1;
- ItemStack nearbyStack = null;
-
- if (hotbarSlot < 8)
- {
- nearbyStack = player.inventory.getStackInSlot(itemSlot);
- if (nearbyStack != null)
- {
- Item item = nearbyStack.getItem();
- if (item instanceof ItemBlock)
- {
- int posX = x;
- int posY = y;
- int posZ = z;
- int playerPosX = (int) Math.floor(player.posX);
- int playerPosY = (int) Math.floor(player.posY);
- int playerPosZ = (int) Math.floor(player.posZ);
- if (side == 0)
- {
- --posY;
- }
-
- if (side == 1)
- {
- ++posY;
- }
-
- if (side == 2)
- {
- --posZ;
- }
-
- if (side == 3)
- {
- ++posZ;
- }
-
- if (side == 4)
- {
- --posX;
- }
-
- if (side == 5)
- {
- ++posX;
- }
- if (posX == playerPosX && (posY == playerPosY || posY == playerPosY + 1 || posY == playerPosY - 1) && posZ == playerPosZ)
- {
- return false;
- }
-
- used = item.onItemUse(nearbyStack, player, world, x, y, z, side, clickX, clickY, clickZ);
- if (nearbyStack.stackSize < 1)
- {
- nearbyStack = null;
- player.inventory.setInventorySlotContents(itemSlot, null);
- }
- }
- }
- }
-
- /*
- * if (used) //Update client { Packet103SetSlot packet = new
- * Packet103SetSlot(player.openContainer.windowId, itemSlot,
- * nearbyStack);
- * ((EntityPlayerMP)player).playerNetServerHandler.sendPacketToPlayer
- * (packet); }
- */
- return used;
- }
-
@Override
public ItemStack onItemRightClick (ItemStack stack, World world, EntityPlayer player)
{
diff --git a/src/main/java/tconstruct/modifiers/tools/TActiveOmniMod.java b/src/main/java/tconstruct/modifiers/tools/TActiveOmniMod.java
index 72eea31bb3a..076474ec2df 100644
--- a/src/main/java/tconstruct/modifiers/tools/TActiveOmniMod.java
+++ b/src/main/java/tconstruct/modifiers/tools/TActiveOmniMod.java
@@ -51,11 +51,13 @@ public void updateTool (ToolCore tool, ItemStack stack, World world, Entity enti
@Override
public boolean beforeBlockBreak (ToolCore tool, ItemStack stack, int x, int y, int z, EntityLivingBase entity)
{
+ NBTTagCompound tags = stack.getTagCompound().getCompoundTag("InfiTool");
+ baconator(tool, stack, entity, tags);
+
if (entity instanceof EntityPlayer && ((EntityPlayer) entity).capabilities.isCreativeMode)
return false;
TRepo.modLapis.midStreamModify(stack, tool);
- NBTTagCompound tags = stack.getTagCompound().getCompoundTag("InfiTool");
World world = entity.worldObj;
Block block = entity.worldObj.getBlock(x, y, z);
int meta = world.getBlockMetadata(x, y, z);
@@ -150,9 +152,27 @@ else if (f < 1.0F)
public int baseAttackDamage (int earlyModDamage, int damage, ToolCore tool, NBTTagCompound tags, NBTTagCompound toolTags, ItemStack stack, EntityLivingBase player, Entity entity)
{
TRepo.modLapis.midStreamModify(stack, tool);
+ baconator(tool, stack, player, tags);
return 0;
}
+ private void baconator (ToolCore tool, ItemStack stack, EntityLivingBase entity, NBTTagCompound tags)
+ {
+ int bacon = 0;
+ bacon += tags.getInteger("Head") == 18 ? 1 : 0;
+ bacon += tags.getInteger("Handle") == 18 ? 1 : 0;
+ bacon += tags.getInteger("Accessory") == 18 ? 1 : 0;
+ bacon += tags.getInteger("Extra") == 18 ? 1 : 0;
+ int chance = tool.getPartAmount() * 100;
+ if (random.nextInt(chance) < bacon)
+ {
+ if (entity instanceof EntityPlayer)
+ AbilityHelper.spawnItemAtPlayer((EntityPlayer) entity, new ItemStack(TRepo.strangeFood, 1, 2));
+ else
+ AbilityHelper.spawnItemAtEntity(entity, new ItemStack(TRepo.strangeFood, 1, 2), 0);
+ }
+ }
+
@Override
public int attackDamage (int modDamage, int currentDamage, ToolCore tool, NBTTagCompound tags, NBTTagCompound toolTags, ItemStack stack, EntityLivingBase player, Entity entity)
{