diff --git a/.gitignore b/.gitignore index 475ae5f3..b02625fb 100644 --- a/.gitignore +++ b/.gitignore @@ -14,6 +14,8 @@ Thumbs.db /.gradle /build/ /run/ +/ui/ +gradle-app.setting #IDEA files from Gradle .idea/ /*.iml @@ -28,6 +30,7 @@ version.properties /.classpath /.project /.settings/ +/eclipse/.metadata/ /debug/ *.lock /.metadata/ diff --git a/build.gradle b/build.gradle index e74e7d11..d3b994b4 100644 --- a/build.gradle +++ b/build.gradle @@ -178,36 +178,9 @@ if (!project.hasProperty("keystore_user_password")) // keystore user pass ext.keystore_user_password = ""; if (System.getenv().KSK_PW != null) ext.keystore_user_password =System.getenv().KSK_PW; -task("signJar", dependsOn: "build") -{ - inputs.file jar.getArchivePath() - inputs.file keystore_location - inputs.property "keystore_user_alias", keystore_user_alias - inputs.property "keystore_user_password", keystore_user_password - outputs.file jar.getArchivePath() - - // only sign if the keystore exists - onlyIf { - return keystore_location != "." - } - println "archive path >> "+jar.getArchivePath() - println jar.getArchivePath() - // the actual action.. sign the jar. - doLast { - ant.signjar( - destDir: jar.destinationDir, - jar: jar.getArchivePath(), - keystore: keystore_location, - alias: keystore_user_alias, - storepass: keystore_user_password, - keypass: keystore_user_password - ) - } -} - -task("uploadJars", dependsOn:"signJar") { +task("uploadJars", dependsOn:"build") { description = "uploads JARs" diff --git a/build.properties b/build.properties index fabda4bb..992ca889 100644 --- a/build.properties +++ b/build.properties @@ -6,4 +6,4 @@ CCLIB_version=1.1.1.93 NEI_version=1.0.2.15 ccc_version=1.0.1.8 mod_version=1.6.0 -waila_version=1.5.2a \ No newline at end of file +waila_version=1.5.3 \ No newline at end of file diff --git a/resources/assets/tinker/lang/en_PT.lang b/resources/assets/tinker/lang/en_PT.lang new file mode 100644 index 00000000..9a930851 --- /dev/null +++ b/resources/assets/tinker/lang/en_PT.lang @@ -0,0 +1,826 @@ +itemGroup.TConstructTools=Ye Tinker Tooles +itemGroup.TConstructMaterials=Te Tinker Loot +itemGroup.TConstructBlocks=Te Tinker Blocks +itemGroup.TConstructParts=Te Tinker Toole Parts +itemGroup.TConstructEquipables=Te Tinker Cutlery + +crafters.ToolStation=Toole Station +crafters.ToolForge=Toole Forge +crafters.TinkerTable=Tinker Table +crafters.PartBuilder=Part Builder +crafters.PatternShaper=Scrimshaw Table +crafters.CraftingStation=Crafting Station +inventory.PatternChest=Scrimshaw Chest +crafters.Smeltery=Smeltery +crafters.Frypan=Crab Sizzler +inventory.knapsack=Knapsack + +ToolStation.Crafter.name=Toole Station +ToolStation.Parts.name=PARRt Builder +ToolStation.PatternChest.name=Scrimshaw Chest +ToolStation.PatternShaper.name=Scrimshaw Table +ToolStation.CastingTable.name=Casting Table +tile.FurnaceSlab.name=Slab Inferno + +tile.ToolForge.name=Blacksmithee Anvilstool +tile.TinkerTable.name=TinkARR Table +tile.Armor.DryingRack.name=Drying Rack +CraftedSoil.Slime.name=Bilge Muck +CraftedSoil.Grout.name=Grout +CraftedSoil.BlueSlime.name=Bilge Muck +CraftedSoil.GraveyardSoil.name=Buried Rot +CraftedSoil.ConsecratedSoil.name=Church-goer's Soil +tile.CastingChannel.name=Casting Channel +tile.slime.channel.name=Bilge Channel +tile.slime.pad.name=Sharkfood Tosser +tile.blood.channel.name=Blood Channel + +MetalOre.NetherSlag.name=Slaggy Netherack +MetalOre.Cobalt.name=Cobalt Ore +MetalOre.Ardite.name=ARRdite Ore +MetalOre.Copper.name=Copper Ore +MetalOre.Tin.name=Tin Ore +MetalOre.Aluminum.name=Privateer's Ore +MetalOre.Slag.name=Slaggy Stone + +block.oreberry.iron.name=Iron Oreberry Bush +block.oreberry.gold.name=Gold Oreberry Bush +block.oreberry.copper.name=Copper Oreberry Bush +block.oreberry.tin.name=Tin Oreberry Bush +block.oreberry.aluminum.name=Privateer's Oreberry Bush +block.oreberry.essence.name=Essence Berry Bush + +block.ore.gravel.iron.name=Iron Gravel Ore +block.ore.gravel.gold.name=Gold Gravel Ore +block.ore.gravel.copper.name=Copper Gravel Ore +block.ore.gravel.tin.name=Tin Gravel Ore +block.ore.gravel.aluminum.name=Privateer's Gravel Ore +block.ore.gravel.cobalt.name=Cobalt Gravel Ore + +block.brownstone.rough.name=Rough Brownstone +block.brownstone.rough.road.name=Brownstone Road +block.brownstone.smooth.name=Brownstone +block.brownstone.smooth.brick.name=Brownstone Brick +block.brownstone.smooth.road.name=Brownstone Road +block.brownstone.smooth.fancy.name=Fancy Brownstone +block.brownstone.smooth.chiseled.name=Chiseled Brownstone + +block.brownstone.rough.slab.name=Rough Brownstone Slab +block.brownstone.rough.road.slab.name=Brownstone Road Slab +block.brownstone.smooth.slab.name=Brownstone Slab +block.brownstone.smooth.brick.slab.name=Brownstone Brick Slab +block.brownstone.smooth.road.slab.name=Brownstone Road Slab +block.brownstone.smooth.fancy.slab.name=Fancy Brownstone Slab +block.brownstone.smooth.chiseled.slab.name=Chiseled Brownstone Slab + +block.brick.obsidian.name=Obsidian Brick +block.brick.sandstone.name=Sandstone Brick +block.brick.netherrack.name=NethARRack Brick +block.brick.iron.name=Iron Brick +block.brick.gold.name=Gold Brick +block.brick.diamond.name=Ye Loot Brick +block.brick.lapis.name=Lapis Brick +block.brick.stone.refined.name=Shiny Stone Brick +block.brick.redstone.name=Redstone Brick +block.brick.bone.name=Davy Jones' Brick +block.brick.slime.name=Bilge Brick +block.brick.blueslime.name=Bilge Brick +block.brick.endstone.name=Endstone Brick +block.brick.obsidian.ingot.name=Obsidian Brick + +block.fancybrick.obsidian.name=Fancy Obsidian Brick +block.fancybrick.sandstone.name=Fancy Sandstone Brick +block.fancybrick.netherrack.name=Fancy Netherrack Brick +block.fancybrick.iron.name=Fancy Iron Brick +block.fancybrick.gold.name=Fancy Gold Brick +block.fancybrick.diamond.name=Fancy Diamond Brick +block.fancybrick.lapis.name=Fancy Lapis Brick +block.fancybrick.stone.refined.name=Fancy Polished Stone Brick +block.fancybrick.redstone.name=Fancy Redstone Brick +block.fancybrick.bone.name=Fancy Bones +block.fancybrick.slime.name=Fancy Bilge Brick +block.fancybrick.blueslime.name=Fancy Bilge Brick +block.fancybrick.endstone.name=Fancy Endstone Brick +block.fancybrick.obsidian.ingot.name=Fancy Obsidian Brick +block.fancybrick.stone.road.name=Stone Road +block.fancybrick.stone.name=Fancy Stone Brick + +tile.rail.wood.name=Timbers Ta Shiver + +tile.cloth.white.slab.name=Wool Slab +tile.cloth.orange.slab.name=Orange Wool Slab +tile.cloth.magenta.slab.name=Magenta Wool Slab +tile.cloth.lightBlue.slab.name=Light Blue Wool Slab +tile.cloth.yellow.slab.name=Yellow Wool Slab +tile.cloth.lime.slab.name=Lime Wool Slab +tile.cloth.pink.slab.name=Pink Wool Slab +tile.cloth.gray.slab.name=Gray Wool Slab +tile.cloth.silver.slab.name=Light Gray Wool Slab +tile.cloth.cyan.slab.name=Cyan Wool Slab +tile.cloth.purple.slab.name=Purple Wool Slab +tile.cloth.blue.slab.name=Blue Wool Slab +tile.cloth.brown.slab.name=Brown Wool Slab +tile.cloth.green.slab.name=Green Wool Slab +tile.cloth.red.slab.name=Red Wool Slab +tile.cloth.black.slab.name=Black Wool Slab + +tile.GlueBlock.name=Processed Dead Harse +tile.liquid.glue.name=Melted Harse + +tile.Frypan.name=Crab Sizzler + +item.oreberry.iron.name=Iron Oreberry +item.oreberry.gold.name=Gold Oreberry +item.oreberry.copper.name=Copper Oreberry +item.oreberry.tin.name=Tin Oreberry +item.oreberry.aluminum.name=Privateer's Oreberry +item.oreberry.essence.name=Concentrated Essence Berry + +item.goldenhead.name=Golden Skull of Tripoli +item.tconstruct.titleicon.name=Spawn + +tile.tconstruct.meatblock.name=Hambone + +item.InfiTool.Pickaxe.name=Pickaxe +item.InfiTool.Shovel.name=Treasure Burier +item.InfiTool.Axe.name=Hatchet +item.InfiTool.Broadsword.name=Broad Cutlass +item.InfiTool.Longsword.name=Long Cutlass +item.InfiTool.Rapier.name=Thin Cutlass +item.InfiTool.FryPan.name=Crab Sizzler +item.InfiTool.Battlesign.name=Messenger Wot Kills +item.InfiTool.Dagger.name=Small Cutlass +item.InfiTool.Chisel.name=Chisel +item.InfiTool.Scythe.name=Scythe +item.InfiTool.LumberAxe.name=Timber Shiverer +item.InfiTool.Cleaver.name=Huge Cutlass +item.InfiTool.Excavator.name=Excavator +item.InfiTool.Hammer.name=Hammer +item.InfiTool.Battleaxe.name=Battleaxe +item.InfiTool.Cutlass.name=A Real Man's Cutlass +item.InfiTool.Shortbow.name=Shortbow +item.InfiTool.Arrow.name=Arrow +item.InfiTool.PotionLauncher.name=Potion Launcher +item.InfiTool.Mattock.name=Mattock + +item.tool.randomarrow=Random Streamer + +item.tconstruct.Pattern.blank_pattern.name=Blank Pattern +item.tconstruct.Pattern.rod.name=Tool Rod Pattern +item.tconstruct.Pattern.pickaxe.name=Pickaxe Head Pattern +item.tconstruct.Pattern.shovel.name=Shovel Head Pattern +item.tconstruct.Pattern.axe.name=Axe Head Pattern +item.tconstruct.Pattern.swordblade.name=Sword Blade Pattern +item.tconstruct.Pattern.largeguard.name=Wide Guard Pattern +item.tconstruct.Pattern.mediumguard.name=Hand Guard Pattern +item.tconstruct.Pattern.crossbar.name=Crossbar Pattern +item.tconstruct.Pattern.binding.name=Tool Binding Pattern +item.tconstruct.Pattern.frypan.name=Pan Pattern +item.tconstruct.Pattern.sign.name=Wide Board Pattern +item.tconstruct.Pattern.knifeblade.name=Knife Blade Pattern +item.tconstruct.Pattern.chisel.name=Chisel Head Pattern +item.tconstruct.Pattern.largerod.name=Tough Rod Pattern +item.tconstruct.Pattern.toughbinding.name=Tough Binding Pattern +item.tconstruct.Pattern.largeplate.name=Large Plate Pattern +item.tconstruct.Pattern.broadaxe.name=Broadaxe Head Pattern +item.tconstruct.Pattern.scythe.name=Scythe Head Pattern +item.tconstruct.Pattern.excavator.name=Excavator Head Pattern +item.tconstruct.Pattern.largeblade.name=Large Blade Pattern +item.tconstruct.Pattern.hammerhead.name=Hammer Head Pattern +item.tconstruct.Pattern.fullguard.name=Full Guard Pattern +item.tconstruct.Pattern.bowstring.name=Bowstring Pattern +item.tconstruct.Pattern.fletching.name=Fletching Pattern +item.tconstruct.Pattern.arrowhead.name=Arrowhead Pattern + +item.tconstruct.Pattern.blank_cast.name=Blank Cast +item.tconstruct.MetalPattern.rod.name=Tool Rod Cast +item.tconstruct.MetalPattern.pickaxe.name=Pickaxe Head Cast +item.tconstruct.MetalPattern.shovel.name=Shovel Head Cast +item.tconstruct.MetalPattern.axe.name=Axe Head Cast +item.tconstruct.MetalPattern.swordblade.name=Sword Blade Cast +item.tconstruct.MetalPattern.largeguard.name=Wide Guard Cast +item.tconstruct.MetalPattern.mediumguard.name=Hand Guard Cast +item.tconstruct.MetalPattern.crossbar.name=Crossbar Cast +item.tconstruct.MetalPattern.binding.name=Tool Binding Cast +item.tconstruct.MetalPattern.frypan.name=Pan Cast +item.tconstruct.MetalPattern.sign.name=Wide Board Cast +item.tconstruct.MetalPattern.knifeblade.name=Knife Blade Cast +item.tconstruct.MetalPattern.chisel.name=Chisel Head Cast +item.tconstruct.MetalPattern.largerod.name=Tough Rod Cast +item.tconstruct.MetalPattern.toughbinding.name=Tough Binding Cast +item.tconstruct.MetalPattern.largeplate.name=Large Plate Cast +item.tconstruct.MetalPattern.broadaxe.name=Broadaxe Head Cast +item.tconstruct.MetalPattern.scythe.name=Scythe Head Cast +item.tconstruct.MetalPattern.excavator.name=Excavator Head Cast +item.tconstruct.MetalPattern.largeblade.name=Large Blade Cast +item.tconstruct.MetalPattern.hammerhead.name=Hammer Head Cast +item.tconstruct.MetalPattern.fullguard.name=Full Guard Cast +item.tconstruct.MetalPattern.bowstring.name=Bowstring Cast +item.tconstruct.MetalPattern.fletching.name=Fletching Cast +item.tconstruct.MetalPattern.arrowhead.name=Arrowhead Cast +item.tconstruct.MetalPattern.ingot.name=Ingot Cast +item.tconstruct.MetalPattern.gem.name=Gem Cast + +item.tconstruct.Materials.PaperStack.name=Paper Stack +item.tconstruct.Materials.SlimeCrystal.name=Bilge Wart +item.tconstruct.Materials.SearedBrick.name=Seared Brick +item.tconstruct.Materials.CobaltIngot.name=Cobalt Ingot +item.tconstruct.Materials.ArditeIngot.name=ARRdite Ingot +item.tconstruct.Materials.ManyullynIngot.name=Manyullyn Ingot +item.tconstruct.Materials.Mossball.name=Ball of Moss +item.tconstruct.Materials.LavaCrystal.name=Lava Crystal +item.tconstruct.Materials.NecroticBone.name=Necrotic Bone +item.tconstruct.Materials.CopperIngot.name=Copper Ingot +item.tconstruct.Materials.TinIngot.name=Tin Ingot +item.tconstruct.Materials.AluminumIngot.name=Privateer's Ingot +item.tconstruct.Materials.RawAluminum.name=Raw Privateer's Metal +item.tconstruct.Materials.BronzeIngot.name=Bronze Ingot +item.tconstruct.Materials.AluBrassIngot.name=Privateer's Brass Ingot +item.tconstruct.Materials.AlumiteIngot.name=Alumite Ingot +item.tconstruct.Materials.SteelIngot.name=Steel Ingot +item.tconstruct.Materials.BlueSlimeCrystal.name=Bilge Wart +item.tconstruct.Materials.ObsidianIngot.name=Obsidian Ingot +item.tconstruct.Materials.IronNugget.name=Iron Nugget +item.tconstruct.Materials.CopperNugget.name=Copper Nugget +item.tconstruct.Materials.TinNugget.name=Tin Nugget +item.tconstruct.Materials.AluminumNugget.name=Privateer's Nugget +item.tconstruct.Materials.EssenceCrystal.name=Fake Essence Crystal +item.tconstruct.Materials.AluBrassNugget.name=Privateer's Brass Nugget +item.tconstruct.Materials.SilkyCloth.name=Silky Cloth +item.tconstruct.Materials.SilkyJewel.name=Silky Jewel +item.tconstruct.Materials.ObsidianNugget.name=Obsidian Nugget +item.tconstruct.Materials.CobaltNugget.name=Cobalt Nugget +item.tconstruct.Materials.ArditeNugget.name=ARRdite Nugget +item.tconstruct.Materials.ManyullynNugget.name=Manyullyn Nugget +item.tconstruct.Materials.BronzeNugget.name=Bronze Nugget +item.tconstruct.Materials.AlumiteNugget.name=Alumite Nugget +item.tconstruct.Materials.SteelNugget.name=Steel Nugget +item.tconstruct.Materials.PigIronIngot.name=Pig Iron Ingot +item.tconstruct.Materials.PigIronNugget.name=Pig Iron Platter +item.tconstruct.Materials.GlueBall.name=Ball of Glue +item.tconstruct.Materials.ArditeDust.name=ARRdite Dust +item.tconstruct.Materials.CobaltDust.name=Cobalt Dust +item.tconstruct.Materials.AluminumDust.name=Privateer's Dust +item.tconstruct.Materials.ManyullynDust.name=Manyullyn Dust +item.tconstruct.Materials.AluBrassDust.name=Privateer's Brass Dust + +item.tconstruct.ArmorPattern.helmet.name=Helmet Cast +item.tconstruct.ArmorPattern.chestplate.name=Chestplate Cast +item.tconstruct.ArmorPattern.leggings.name=Leggings Cast +item.tconstruct.ArmorPattern.boots.name=Boots Cast + +item.tconstruct.helmetWood.name=Wooden Helmet +item.tconstruct.chestplateWood.name=Wooden Chestplate +item.tconstruct.leggingsWood.name=Wooden Leggings +item.tconstruct.bootsWood.name=Wooden Boots + +item.tconstruct.travelgoggles.name=Traveller's Goggles +item.tconstruct.travelvest.name=Traveller's Vest +item.tconstruct.travelwings.name=Traveller's Wings +item.tconstruct.travelboots.name=Traveller's Boots +item.tconstruct.travelgloves.name=Traveller's Gloves +item.tconstruct.travelbelt.name=Traveller's Belt + +item.tconstruct.jerky.beef.name=Beef Jerky +item.tconstruct.jerky.pig.name=Bacon Jerky +item.tconstruct.jerky.chicken.name=Chicken Jerky +item.tconstruct.jerky.sheep.name=Mutton Jerky +item.tconstruct.jerky.fish.name=Fish Jerky +item.tconstruct.jerky.zombie.name=Flesh of the Dead +item.tconstruct.jerky.blueslime.name=Gelatinous Bilge Drop +item.tconstruct.jerky.blood.name=Coagulated Blood Drop + +beginnertool.pickaxe=Swabby's Pickaxe +beginnertool.hatchet=Swabby's Hatchet + +Smeltery.Controller.name=Smeltery Controller +Smeltery.Drain.name=Smeltery Drain +Smeltery.Brick.name=Seared Bricks +Smeltery.Stone.name=Seared Stone +Smeltery.Cobblestone.name=Seared Cobblestone +Smeltery.Paver.name=Seared Paver +Smeltery.Brick.Cracked.name=Cracked Seared Bricks +Smeltery.Road.name=Seared Road +Smeltery.Brick.Fancy.name=Fancy Seared Bricks +Smeltery.Brick.Square.name=Chiseled Seared Bricks +Smeltery.Brick.Creeper.name=Chiseled Seared Bricks +Smeltery.Channel.name=Casting Channel +block.slime.soil.dirt.name=Slime Soil + +LavaTank.Tank.name=Seared Tank +LavaTank.Gague.name=Seared Glass +LavaTank.Window.name=Seared Window + +tile.landmine.name=Landmine + +tile.trap.punji.name=Punji Stick +tile.trap.barricade.oak.name=Oak Barricade +tile.trap.barricade.spruce.name=Spruce Barricade +tile.trap.barricade.birch.name=Birch Barricade +tile.trap.barricade.jungle.name=Jungle Barricade +tile.explosive.slime.name=SDX + +StorageMetals.Cobalt.name=Block of Cobalt +StorageMetals.Ardite.name=Block of ARRdite +StorageMetals.Manyullyn.name=Block of Manyullyn +StorageMetals.Copper.name=Block of Copper +StorageMetals.Bronze.name=Block of Bronze +StorageMetals.Tin.name=Block of Tin +StorageMetals.Aluminum.name=Block of Privateer's Metal +StorageMetals.AlBrass.name=Block of Privateer's Brass +StorageMetals.Alumite.name=Block of Alumite +StorageMetals.Steel.name=Block of Steel +StorageMetals.Ender.name=Block of Ghosts + +tile.decoration.stonetorch.name=Torch +tile.decoration.stoneladder.name=Ladder +tile.CraftingStation.name=Crafting Station + +block.glass.pure.name=Clear Glass +block.glass.soul.name=Soul Glass +block.glass.soul.pure.name=Clear Soul Glass + +block.glass.pure.pane.name=Clear Glass Pane +block.glass.soul.pane.name=Soul Pane +block.glass.soul.pane.pure.name=Clear Soul Pane + +block.stainedglass.white.name=White Stained Glass +block.stainedglass.orange.name=Orange Stained Glass +block.stainedglass.magenta.name=Magenta Stained Glass +block.stainedglass.lightblue.name=Light Blue Stained Glass +block.stainedglass.yellow.name=Yellow Stained Glass +block.stainedglass.lime.name=Lime Stained Glass +block.stainedglass.pink.name=Pink Stained Glass +block.stainedglass.gray.name=Gray Stained Glass +block.stainedglass.lightgray.name=Light Gray Stained Glass +block.stainedglass.cyan.name=Cyan Stained Glass +block.stainedglass.purple.name=Purple Stained Glass +block.stainedglass.blue.name=Blue Stained Glass +block.stainedglass.brown.name=Brown Stained Glass +block.stainedglass.green.name=Green Stained Glass +block.stainedglass.red.name=Blood-Stained Glass +block.stainedglass.black.name=Black Stained Glass + +block.stainedglass.white.pane.name=White Stained Pane +block.stainedglass.orange.pane.name=Orange Stained Pane +block.stainedglass.magenta.pane.name=Magenta Stained Pane +block.stainedglass.lightblue.pane.name=Light Blue Stained Pane +block.stainedglass.yellow.pane.name=Yellow Stained Pane +block.stainedglass.lime.pane.name=Lime Stained Pane +block.stainedglass.pink.pane.name=Pink Stained Pane +block.stainedglass.gray.pane.name=Gray Stained Pane +block.stainedglass.lightgray.pane.name=Light Gray Stained Pane +block.stainedglass.cyan.pane.name=Cyan Stained Pane +block.stainedglass.purple.pane.name=Purple Stained Pane +block.stainedglass.blue.pane.name=Blue Stained Pane +block.stainedglass.brown.pane.name=Brown Stained Pane +block.stainedglass.green.pane.name=Green Stained Pane +block.stainedglass.red.pane.name=Red Stained Pane +block.stainedglass.black.pane.name=Black Stained Pane + +block.searedstone.slab.brick.name=Seared Brick Slab +block.searedstone.slab.stone.name=Seared Stone Slab +block.searedstone.slab.cobble.name=Seared Cobblestone Slab +block.searedstone.slab.paver.name=Seared Paver Slab +block.searedstone.slab.road.name=Seared Road Slab +block.searedstone.slab.fancy.name=Fancy Seared Slab +block.searedstone.slab.square.name=Chiseled Seared Slab +block.searedstone.slab.creeper.name=Chiseled Seared Slab + +block.soil.slab.dirt.name=Dirt Slab +block.soil.slab.mycelium.name=Full Mycelium Slab +block.soil.slab.slime.name=Festering Mud Slab +block.soil.slab.grout.name=Grout Slab +block.soil.slab.blueslime.name=Festering Mud Slab +block.soil.slab.graveyardsoil.name=Graveyard Soil Slab +block.soil.slab.consecratedsoil.name=Consecrated Soil Slab + +block.slime.soil.blue.name=Blue Slimedirt +block.slime.leaves.blue.name=Festering Leaves +block.slime.sapling.bluegreen.name=Bilious Sapling +block.slime.grass.blue.name=Festering Grass +block.slime.grass.dirt.name=Festering Grass +block.slime.tallgrass.name=Festering Grass +block.slime.congealed.blue.name=Congealed Blue Bilge +block.slime.congealed.green.name=Congealed Green Bilge +block.slime.congealed.purple.name=Congealed Purple Bilge + +item.tconstruct.storage.knapsack.name=Booty Bag +item.tconstruct.blankpattern.pattern.name=Blank Scrimshaw Wood +item.tconstruct.blankpattern.cast.name=Blank Cast + +item.tconstruct.Bowstring.string.name=Bowstring +item.tconstruct.Bowstring.enchantedfabric.name=Enchanted Bowstring +item.tconstruct.Bowstring.flamestring.name=Fiery Bowstring +item.tconstruct.Fletching.feather.name=Feather Fletching +item.tconstruct.Fletching.leaf.name=Leaf Fletching +item.tconstruct.Fletching.slime.name=Festering Fletching +item.tconstruct.Fletching.blueslime.name=Festering Fletching + +item.tconstruct.manual.beginner.name=Ye Jury-rigging +item.tconstruct.manual.toolstation.name=Ye Jury-rigging +item.tconstruct.manual.smeltery.name=Ye Searing Inferno +item.tconstruct.manual.diary.name=Captain's Log + +item.tconstruct.bucket.Iron.name=Molten Iron Bucket +item.tconstruct.bucket.Gold.name=Molten Gold Bucket +item.tconstruct.bucket.Copper.name=Molten Copper Bucket +item.tconstruct.bucket.Tin.name=Molten Tin Bucket +item.tconstruct.bucket.Aluminum.name=Molten Privateer's Metal Bucket +item.tconstruct.bucket.Cobalt.name=Molten Cobalt Bucket +item.tconstruct.bucket.Ardite.name=Molten ARRdite Bucket +item.tconstruct.bucket.Bronze.name=Molten Bronze Bucket +item.tconstruct.bucket.AluBrass.name=Molten Privateer's Brass Bucket +item.tconstruct.bucket.Manyullyn.name=Molten Manyullyn Bucket +item.tconstruct.bucket.Alumite.name=Molten Alumite Bucket +item.tconstruct.bucket.Obsidian.name=Molten Obsidian Bucket +item.tconstruct.bucket.Steel.name=Molten Steel Bucket +item.tconstruct.bucket.Glass.name=Molten Glass Bucket +item.tconstruct.bucket.Stone.name=Seared Stone Bucket +item.tconstruct.bucket.Villager.name=Liquified Emerald Bucket +item.tconstruct.bucket.Cow.name=Bucket o' Blood +item.tconstruct.bucket.Nickel.name=Molten Nickel Bucket +item.tconstruct.bucket.Lead.name=Molten Lead Bucket +item.tconstruct.bucket.Silver.name=Molten Silver Bucket +item.tconstruct.bucket.Shiny.name=Molten Shiny Bucket +item.tconstruct.bucket.Invar.name=Molten Invar Bucket +item.tconstruct.bucket.Electrum.name=Molten Electrum Bucket +item.tconstruct.bucket.Ender.name=Liquified Ghost Bucket +item.tconstruct.bucket.Slime.name=Liquid Slime Bucket +item.tconstruct.bucket.PigIron.name=Molten Pig Iron Bucket +item.tconstruct.bucket.Glue.name=Sticky Glue Bucket + +item.tconstruct.bowstring.string.name=Bowstring +item.tconstruct.bowstring.enchantedfabriI donc.name=Enchanted Bowstring + +tile.fluid.molten.iron.name=Molten Iron +tile.fluid.molten.gold.name=Molten Gold +tile.fluid.molten.copper.name=Molten Copper +tile.fluid.molten.tin.name=Liquid Tin +tile.fluid.molten.aluminum.name=Molten Privateer's Metal +tile.fluid.molten.cobalt.name=Molten Cobalt +tile.fluid.molten.ardite.name=Molten ARRdite +tile.fluid.molten.bronze.name=Molten Bronze +tile.fluid.molten.alubrass.name=Molten Privateer's Brass +tile.fluid.molten.manyullyn.name=Molten Manyullyn +tile.fluid.molten.alumite.name=Molten Alumite +tile.fluid.molten.obsidian.name=Molten Obsidian +tile.fluid.molten.steel.name=Molten Steel +tile.fluid.molten.glass.name=Molten Glass +tile.molten.stone.name=Seared Stone +tile.molten.emerald.name=Liquified Emerald +tile.liquid.blood.name=Blood +tile.fluid.molten.nickel.name=Molten Nickel +tile.fluid.molten.silver.name=Molten Silver +tile.fluid.molten.lead.name=Molten Lead +tile.fluid.molten.shiny.name=Molten Shiny +tile.fluid.molten.invar.name=Molten Invar +tile.fluid.molten.electrum.name=Molten Electrum +tile.fluid.ender.name=Liquified Ghost +tile.liquid.slime.name=Liquified Slime + +LiquidMetal.Iron.name=Molten Iron +LiquidMetal.Gold.name=Molten Gold +LiquidMetal.Copper.name=Molten Copper +LiquidMetal.Tin.name=Liquid Tin +LiquidMetal.Aluminum.name=Molten Privateer's Metal +LiquidMetal.Cobalt.name=Molten Cobalt +LiquidMetal.Ardite.name=Molten ARRdite +LiquidMetal.Bronze.name=Molten Bronze +LiquidMetal.AluBrass.name=Molten Privateer's Brass +LiquidMetal.Manyullyn.name=Molten Manyullyn +LiquidMetal.Alumite.name=Molten Alumite +LiquidMetal.Obsidian.name=Molten Obsidian +LiquidMetal.Steel.name=Molten Steel +LiquidMetal.Glass.name=Molten Glass +LiquidMetal.Stone.name=Seared Stone +LiquidMetal.Villager.name=Liquified Emerald +LiquidMetal.Cow.name=Blo +LiquidMetal.Nickel.name=Molten Nickel +LiquidMetal.Silver.name=Molten Silver +LiquidMetal.Lead.name=Molten Lead +LiquidMetal.Shiny.name=Molten Shiny +LiquidMetal.Invar.name=Molten Invar +LiquidMetal.Electrum.name=Molten Electrum +LiquidMetal.Ender.name=Liquified Ghost + +item.food.apple.diamond.name=Devil's Apple of Lucre +item.tconstruct.strangefood.edibleslime.name=Vile Bilge Treat +item.tconstruct.strangefood.edibleblood.name=Coagulated Blood +item.tconstruct.strangefood.bacon.name=Bacon +item.tconstruct.canister.empty.name=Ye Canister Wots Missing Hearts +item.tconstruct.canister.miniheart.red.name=Tiny Bloody Heart +item.tconstruct.canister.red.name=Bloody Heart Canister +item.tconstruct.canister.miniheart.yellow.name=Tiny Bile Heart +item.tconstruct.canister.yellow.name=Bile Heart Canister +item.tconstruct.canister.miniheart.green.name=Tiny Dead Heart +item.tconstruct.canister.green.name=Dead Heart Canister +item.tconstruct.glove.name=Ye Duell Gloves +item.tconstruct.modifier.creative.name=Cheatarr's Handyman + +SearedBlock.Table.name=Casting Table +SearedBlock.Faucet.name=Seared Faucet +SearedBlock.Basin.name=Casting Basin + +entity.TConstruct.EdibleSlime.name=Blue Slime +entity.TConstruct.KingSlime.name=King Slime +entity.TConstruct.Gardeslime.name=Gardeslime +entity.TConstruct.MiniGardy.name=Gardeslime + +tconstruct.keybindings=Tinkers Construct +key.tarmor=Armor Gui +key.tcapes.reload=Reload Capes +key.tbelt=Belt +key.tgoggles=Goggles +key.tzoom=Zoom + +death.one.smeltery=%1$s has be rendarred down and boiled +death.two.smeltery=%1$s be swimmin with the Davy Jones of the molten metal sea +death.three.smeltery=%1$s rests in ye great big kettle +death.four.smeltery=%1$s will never rig another sail - alas and goddamn + +death.attack.Landmine=%1$s will need a wooden leg in ye afterlife +death.attack.FireworkExplode=%1$s watched ye fireworke and feeds the sharks + +parttype.wood=Wooden +parttype.stone=Stone +parttype.iron=Iron +parttype.flint=Flint +parttype.cactus=Cactus +parttype.bone=Bone +parttype.obsidian=Obsidian +parttype.slime=Bilge +parttype.paper=Paper +parttype.netherrack=Netherrack +parttype.cobalt=Cobalt +parttype.ardite=ARRdite +parttype.manyullyn=Manyullyn +parttype.copper=Copper +parttype.bronze=Bronze +parttype.alumite=Privateer's Metal +parttype.steel=Steel +parttype.blueslime=Slime +parttype.thaumium=Thaumium +parttype.pigiron=Pig Iron + +toolpart.ToolRod=%%material Tool Rod +toolpart.PickHead=%%material Pickaxe Head +toolpart.ShovelHead=%%material Shovel Head +toolpart.AxeHead=%%material Axe Head +toolpart.Binding=%%material Binding +toolpart.ToughBind=%%material Tough Binding +toolpart.ToughRod=%%material Tough Rod +toolpart.LargePlate=%%material Large Plate +toolpart.SwordBlade=%%material Sword Blade +toolpart.LargeGuard=%%material Wide Guard +toolpart.MediumGuard=%%material Hand Guard +toolpart.Crossbar=%%material Crossbar +toolpart.KnifeBlade=%%material Knife Blade +toolpart.FullGuard=%%material Full Guard +toolpart.FrypanHead=%%material Pan +toolpart.SignHead=%%material Sign Head +toolpart.ChiselHead=%%material Chisel Head +toolpart.ScytheHead=%%material Scythe Head +toolpart.LumberHead=%%material Broad Axe Head +toolpart.ExcavatorHead=%%material Excavator Head +toolpart.ToolShard=%%material Shard +toolpart.LargeSwordBlade=%%material Large Sword Blade +toolpart.HammerHead=%%material Hammer Head +toolpart.Bowstring=%%material Bowstring +toolpart.ArrowHead=%%material Arrowhead +toolpart.Fletching=%%material Fletching + +fluid.iron.molten=Molten Iron +fluid.gold.molten=Molten Gold +fluid.copper.molten=Molten Copper +fluid.tin.molten=Molten Tin +fluid.aluminum.molten=Molten Privateer's Metal +fluid.cobalt.molten=Molten Cobalt +fluid.ardite.molten=Molten ARRdite +fluid.bronze.molten=Molten Bronze +fluid.aluminumbrass.molten=Molten Privateer's Brass +fluid.manyullyn.molten=Molten Manyullyn +fluid.alumite.molten=Molten Alumite +fluid.obsidian.molten=Molten Obsidian +fluid.steel.molten=Molten Steel +fluid.glass.molten=Molten Glass +fluid.stone.seared=Seared Stone +fluid.emerald.liquid=Liquified Emerald +fluid.blood=Blood +fluid.nickel.molten=Molten Nickel +fluid.lead.molten=Molten Lead +fluid.silver.molten=Molten Silver +fluid.shiny.molten=Molten Shiny +fluid.invar.molten=Molten Invar +fluid.electrum.molten=Molten Electrum +fluid.ender=Liquid Ghost +fluid.slime.blue=Liquid Blue Bilge +fluid.pigiron.molten=Pig Iron +fluid.glue=Glue + +tconstruct.achievementPage.name=TConstruct +achievement.tconstruct.beginner=Ye Green Swabby +achievement.tconstruct.pattern=Scrimshaw +achievement.tconstruct.tinkerer=Tinkerer +achievement.tconstruct.proTinkerer=Ye Old Tinker Hand +achievement.tconstruct.smelteryMaker=Metal Melter +achievement.tconstruct.preparedFight=Prepare to Board +achievement.tconstruct.enemySlayer=Brutal Cutthroat +achievement.tconstruct.dualConvenience=Dual Convenience +achievement.tconstruct.doingItWrong=Fools be +achievement.tconstruct.betterCrafting=Better Crafting + +achievement.tconstruct.beginner.desc=Open "Ye Jury-rigging" tome +achievement.tconstruct.pattern.desc=Craft ye first blank pattern +achievement.tconstruct.tinkerer.desc=Create ye first tool +achievement.tconstruct.proTinkerer.desc=Craft ye first tier 2 tool +achievement.tconstruct.smelteryMaker.desc=Craft a smelteree component +achievement.tconstruct.preparedFight.desc=Rig up ye first weapon +achievement.tconstruct.enemySlayer.desc=Slay a mob +achievement.tconstruct.dualConvenience.desc=Kill a mob with a crab sizzler, and then cook their meat in it +achievement.tconstruct.doingItWrong.desc=You are doing it wrong! +achievement.tconstruct.betterCrafting.desc=Craft a Crafting Station by placing a Crafting Table by itself into the crafting grid + +knapsack.tooltip=A Booty Bag to hold ye loot. +strangefood1.tooltip=It smells terrible, but if you +strangefood2.tooltip=have nothing else to eat... +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 mysterious appearing snack +hambone1.tooltip=Hambone! +hambone2.tooltip=Usable for Bacon bases +metalblock.tooltip=Usable for Beacon bases +craftedsoil1.tooltip=Heals ye Dead +craftedsoil2.tooltip=Bloodies ye Dead +fancybrick1.tooltip=Somewhat expensive +fancybrick2.tooltip=Very expensive +fancybrick3.tooltip=Emits Redstone signal up to +fancybrick4.tooltip=4 blocks away +fancybrick5.tooltip=Bouncy! +brick1.tooltip=Somewhat expensive +brick2.tooltip=Very expensive +brick3.tooltip=Emits Redstone signal up to +brick4.tooltip=4 blocks away +brick5.tooltip=Bouncy! +craftedsoil.slab1.tooltip=Heals ye Dead +craftedsoil.slab2.tooltip=Bloodies ye Dead +speedblock1.tooltip=You run pretty fast on it +speedblock2.tooltip=You run a bit faster on it +speedblock.slab1.tooltip=You run pretty fast on it +speedblock.slab2.tooltip=You run a bit faster on it +manual1.tooltip=By: Skyla +manual2.tooltip=By: Skyla +manual3.tooltip=By: Thruul M'gon +searedtank1.tooltip=Contains +searedtank2.tooltip=Keeps any fluids it has when harvested +oreberries1.tooltip=Sweet Irony +oreberries2.tooltip=Pure Luster +oreberries3.tooltip=Tastes like metal +oreberries4.tooltip=Tin Man +oreberries5.tooltip=White Chocolate +oreberries6.tooltip=Tastes like Creeper +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 +landmine4.tooltip=redstone only +landmine5.tooltip=Interacts with: +goldenhead1.tooltip=Some say consuming the head of a +goldenhead2.tooltip=fallen foe strengthens the blood +oreberrybush1.tooltip=Sweet Irony +oreberrybush2.tooltip=Pure Luster +oreberrybush3.tooltip=Tastes like metal +oreberrybush4.tooltip=Tin Man +oreberrybush5.tooltip=White Chocolate +oreberrybush6.tooltip=Tastes like Creeper +barricade.tooltip=Stacks up to 4 times +pattern1.tooltip=Material Cost: +pattern2.tooltip=Material Cost: +potionlauncher.tooltip=Bloody test item +smeltery.controller.tooltip=Brain of ye Smelteree +smeltery.drain.tooltip1=Works both as input and output for +smeltery.drain.tooltip2=fluids in the Smelteree +smeltery.brick.tooltip1=Smelteree structure block +smeltery.brick.tooltip2=(Safe for decoration) + +gui.smeltery.fuel=Fuel +gui.smeltery.emerald=Emeralds: +gui.smeltery.glass.block=Blocks: +gui.smeltery.glass.pannel=Pannels: +gui.smeltery.metal.ingot=Ingots: +gui.smeltery.metal.nugget=Nuggets: +gui.smeltery.molten.check=Molten +gui.landmine=Landmine +gui.partcrafter1=Tool Part Crafting +gui.partcrafter2=Tool Part Building +gui.partcrafter3=Place a pattern and a material on the left to get started. +gui.partcrafter4=Base Durability: +gui.partcrafter5=Handle Modifier: +gui.partcrafter6=Mining Speed: +gui.partcrafter7=Mining Level: +gui.partcrafter8= Heart +gui.partcrafter9= Hearts +gui.partcrafter10=Attack: +gui.partcrafter.mining1=Stone +gui.partcrafter.mining2=Iron +gui.partcrafter.mining3=Redstone +gui.partcrafter.mining4=Obsidian +gui.partcrafter.mining5=Cobalt +gui.partcrafter.mining6=Manyullyn +gui.stenciltable1=Next Pattern +gui.stenciltable2=Previous Pattern +gui.toolforge1=Repair and Modification +gui.toolforge2=The main way to repair or change your tools. Place a tool and a material on the left to get started. +gui.toolstation1=Durability: +gui.toolstation2=Durability: +gui.toolstation3=Attack: +gui.toolstation4=Bonus: +gui.toolstation5=Loss: +gui.toolstation6=Draw Speed: +gui.toolstation7=Arrow Speed: +gui.toolstation8=Weight: +gui.toolstation9=Accuracy: +gui.toolstation10=Base Attack: +gui.toolstation11=Shortbow Attack: +gui.toolstation12=Mining Speeds: +gui.toolstation13=Harvest Levels: +gui.toolstation14=Mining Speed: +gui.toolstation15=Mining Level: +gui.toolstation16=Usage Speed: +gui.toolstation17=Modifiers +gui.toolstation18=Modifiers remaining: + +gui.partbuilder.material.wood=Wood +gui.partbuilder.material.stone=Stone +gui.partbuilder.material.iron=Iron +gui.partbuilder.material.flint=Flint +gui.partbuilder.material.cactus=Cactus +gui.partbuilder.material.bone=Bone +gui.partbuilder.material.obsidian=Obsidian +gui.partbuilder.material.netherrack=Netherrack +gui.partbuilder.material.slime=Slime +gui.partbuilder.material.paper=Paper +gui.partbuilder.material.blueslime=BlueSlime +gui.partbuilder.material.cobalt=Cobalt +gui.partbuilder.material.ardite=ARRdite +gui.partbuilder.material.manyullyn=Manyullyn +gui.partbuilder.material.copper=Copper +gui.partbuilder.material.bronze=Bronze +gui.partbuilder.material.alumite=Alumite +gui.partbuilder.material.steel=Steel +gui.partbuilder.material.pigiron=Pigiron +gui.partbuilder.material.thaumium=Thaumium + +gui.modifier.blaze=Blaze +gui.modifier.silk=Silk Touch +gui.modifier.lapis=Lapis +gui.modifier.redstone=Redstone +gui.modifier.diamond=Diamond +gui.modifier.emerald=Emerald +gui.modifier.moss=Moss +gui.modifier.lava=Lava +gui.modifier.necro=Necrotic +gui.modifier.spider=Anti-Spider +gui.modifier.quartz=Quartz + +modifier.armour.jump.double=Double-Jump +modifier.armour.jump.triple=Triple-Jump +modifier.armour.jump.quad=Quadruple-Jump +modifier.armour.protection= +modifier.tool.spider=Bane of Arthropods +modifier.tool.quartz=Sharpness +modifier.tool.blaze=Fiery +modifier.tool.silk=Silky +modifier.tool.flux=Flux +modifier.tool.lapis=Luck +modifier.tool.piston=Knockback +modifier.tool.redstone=Haste +modifier.tool.reinforced=Reinforced +modifier.tool.unbreaking= +modifier.tool.smite=Smite +modifier.tool.diamond=Durability +500 +modifier.tool.emerald=Durability +50% +modifier.tool.moss=Auto-Repair +modifier.tool.lava=Auto-Smelt +modifier.tool.necro=Life Steal +modifier.tool.beheading=Beheading + +materialtraits.stonebound=Stonebound +materialtraits.jagged=Jagged +materialtraits.writable=Writable +materialtraits.tasty=Tasty +materialtraits.thaumic=Thaumic + +creativeModLock.tooltip=Target Lock: + +attribute.name.ammo.attackDamage=Average Shot Damage diff --git a/resources/assets/tinker/lang/en_US.lang b/resources/assets/tinker/lang/en_US.lang index 88c1b996..f3f6f89c 100644 --- a/resources/assets/tinker/lang/en_US.lang +++ b/resources/assets/tinker/lang/en_US.lang @@ -417,8 +417,8 @@ item.tconstruct.Fletching.leaf.name=Leaf Fletching item.tconstruct.Fletching.slime.name=Slime Fletching item.tconstruct.Fletching.blueslime.name=Slime Fletching -item.tconstruct.manual.beginner.name=Materials and You -item.tconstruct.manual.toolstation.name=Materials and You +item.tconstruct.manual.beginner.name=Materials and You: Volume 1 +item.tconstruct.manual.toolstation.name=Materials and You: Volume 2 item.tconstruct.manual.smeltery.name=Mighty Smelting item.tconstruct.manual.diary.name=Diary of a Tinker diff --git a/resources/assets/tinker/lang/zh_CN.lang b/resources/assets/tinker/lang/zh_CN.lang index 27c4ab14..dbab4c1b 100644 --- a/resources/assets/tinker/lang/zh_CN.lang +++ b/resources/assets/tinker/lang/zh_CN.lang @@ -127,6 +127,8 @@ tile.cloth.black.slab.name=黑色羊毛台阶 tile.GlueBlock.name=凝胶方块 tile.liquid.glue.name=凝胶 +tile.Frypan.name=煎锅 + item.oreberry.iron.name=铁矿莓 item.oreberry.gold.name=金矿莓 item.oreberry.copper.name=锡矿莓 @@ -528,6 +530,9 @@ entity.TConstruct.MiniGardy.name=迷你史莱姆护卫 key.tconstruct.category=匠魂 key.tarmor=装备界面 key.tcapes.reload=重载披风 +key.tbelt=腰带 +key.tgoggles=护目镜 +key.tzoom=放大 death.one.smeltery=%1$s被加工成了"绿色食品"! death.two.smeltery=%1$s被冶炼炉融化了! @@ -714,6 +719,7 @@ gui.smeltery.glass.block=方块: gui.smeltery.glass.pannel=板: gui.smeltery.metal.ingot=锭: gui.smeltery.metal.nugget=粒: +gui.smeltery.molten.check=熔融 gui.landmine=地雷 gui.partcrafter1=合成工具部件 gui.partcrafter2=锻造工具 diff --git a/resources/sounds.json b/resources/assets/tinker/sounds.json similarity index 92% rename from resources/sounds.json rename to resources/assets/tinker/sounds.json index fba310c2..4374951c 100644 --- a/resources/sounds.json +++ b/resources/assets/tinker/sounds.json @@ -11,7 +11,7 @@ "little_saw" ] }, - "frypan_hit": { + "launcher_clank": { "category": "neutral", "sounds": [ "launcher_clank" diff --git a/src/main/java/tconstruct/TConstruct.java b/src/main/java/tconstruct/TConstruct.java index e63d8f0c..4f43e02c 100644 --- a/src/main/java/tconstruct/TConstruct.java +++ b/src/main/java/tconstruct/TConstruct.java @@ -22,6 +22,8 @@ import tconstruct.library.crafting.LiquidCasting; import tconstruct.mechworks.TinkerMechworks; import tconstruct.mechworks.landmine.behavior.Behavior; import tconstruct.mechworks.landmine.behavior.stackCombo.SpecialStackHandler; +import tconstruct.plugins.imc.TinkerThaumcraft; +import tconstruct.plugins.nei.TinkerNEI; import tconstruct.smeltery.TinkerSmeltery; import tconstruct.tools.TinkerTools; import tconstruct.util.EnvironmentChecks; @@ -117,6 +119,8 @@ public class TConstruct pulsar.registerPulse(new TinkerSmeltery()); pulsar.registerPulse(new TinkerMechworks()); pulsar.registerPulse(new TinkerArmor()); + pulsar.registerPulse(new TinkerNEI()); + pulsar.registerPulse(new TinkerThaumcraft()); /*pulsar.registerPulse(new TinkerPrayers()); pulsar.registerPulse(new TinkerCropify());*/ diff --git a/src/main/java/tconstruct/armor/ArmorAbilities.java b/src/main/java/tconstruct/armor/ArmorAbilities.java index 58ad71a5..419932a8 100644 --- a/src/main/java/tconstruct/armor/ArmorAbilities.java +++ b/src/main/java/tconstruct/armor/ArmorAbilities.java @@ -3,6 +3,7 @@ package tconstruct.armor; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import tconstruct.armor.items.TravelGear; import tconstruct.armor.player.TPlayerStats; import tconstruct.library.modifier.IModifyable; import cpw.mods.fml.common.Loader; @@ -15,11 +16,16 @@ public class ArmorAbilities boolean morphed; boolean morphLoaded = Loader.isModLoaded("Morph"); + ItemStack prevFeet; + double prevMotionY; + @SubscribeEvent public void playerTick (TickEvent.PlayerTickEvent event) { EntityPlayer player = event.player; TPlayerStats stats = TPlayerStats.get(player); + + // Wall climb if (stats.climbWalls) { double motionX = player.posX - player.lastTickPosX; @@ -30,6 +36,31 @@ public class ArmorAbilities player.fallDistance = 0.0F; } } + + //Feet changes + ItemStack feet = player.getCurrentArmor(0); + if (feet != null) + { + if (feet.getItem() instanceof IModifyable && !player.isSneaking()) + { + NBTTagCompound tag = feet.getTagCompound().getCompoundTag(((IModifyable) feet.getItem()).getBaseTagName()); + int sole = tag.getInteger("Slimy Soles"); + if (sole > 0) + { + if (!player.isSneaking() && player.onGround && prevMotionY < -0.4) + player.motionY = -prevMotionY * (Math.min(0.99, sole * 0.2)); + } + } + prevMotionY = player.motionY; + } + if (feet != prevFeet) + { + if (prevFeet != null && prevFeet.getItem() instanceof TravelGear) + player.stepHeight -= 0.6f; + if (feet != null && feet.getItem() instanceof TravelGear) + player.stepHeight += 0.6f; + prevFeet = feet; + } //TODO: Proper minimap support /*ItemStack stack = player.inventory.getStackInSlot(8); if (stack != null && stack.getItem() instanceof ItemMap) diff --git a/src/main/java/tconstruct/armor/ArmorAbilitiesClient.java b/src/main/java/tconstruct/armor/ArmorAbilitiesClient.java index 53e9bbb0..22fcab05 100644 --- a/src/main/java/tconstruct/armor/ArmorAbilitiesClient.java +++ b/src/main/java/tconstruct/armor/ArmorAbilitiesClient.java @@ -43,8 +43,8 @@ public class ArmorAbilitiesClient player.fallDistance = 0.0f; } - //Feet changes - ItemStack feet = player.getCurrentArmor(0); + //Feet changes - moved to server side + /*ItemStack feet = player.getCurrentArmor(0); if (feet != null) { if (feet.getItem() instanceof TravelGear && player.stepHeight < 1.0f) @@ -70,7 +70,7 @@ public class ArmorAbilitiesClient if (feet != null && feet.getItem() instanceof TravelGear) player.stepHeight += 0.6f; prevFeet = feet; - } + }*/ //Legs or wing changes /*ItemStack legs = player.getCurrentArmor(1); diff --git a/src/main/java/tconstruct/armor/TinkerArmor.java b/src/main/java/tconstruct/armor/TinkerArmor.java index 24f38c31..b589f59a 100644 --- a/src/main/java/tconstruct/armor/TinkerArmor.java +++ b/src/main/java/tconstruct/armor/TinkerArmor.java @@ -160,6 +160,7 @@ public class TinkerArmor public void init (FMLInitializationEvent event) { craftingTableRecipes(); + registerModifiers(); addRecipesForDryingRack(); TConstructRegistry.equipableTab.init(travelGoggles.getDefaultItem()); proxy.initialize(); diff --git a/src/main/java/tconstruct/client/TControls.java b/src/main/java/tconstruct/client/TControls.java index 8668ce91..6e038b7f 100644 --- a/src/main/java/tconstruct/client/TControls.java +++ b/src/main/java/tconstruct/client/TControls.java @@ -13,7 +13,6 @@ import tconstruct.armor.ArmorProxyClient; import tconstruct.armor.ArmorProxyCommon; import tconstruct.armor.PlayerAbilityHelper; import tconstruct.armor.items.TravelGear; -import tconstruct.client.event.EventCloakRender; import tconstruct.client.tabs.TabRegistry; import tconstruct.util.network.AccessoryInventoryPacket; import tconstruct.util.network.BeltPacket; @@ -25,7 +24,6 @@ public class TControls extends TKeyHandler { public static final String keybindCategory = "tconstruct.keybindings"; public static KeyBinding armorKey = new KeyBinding("key.tarmor", 24, keybindCategory); - public static KeyBinding refreshCapes = new KeyBinding("key.tcapes.reload", 88, keybindCategory); public static KeyBinding toggleGoggles = new KeyBinding("key.tgoggles", 34, keybindCategory); public static KeyBinding beltSwap = new KeyBinding("key.tbelt", 48, keybindCategory); public static KeyBinding zoomKey = new KeyBinding("key.tzoom", 44, keybindCategory); //TODO: Make this hold, not toggle @@ -46,7 +44,7 @@ public class TControls extends TKeyHandler public TControls() { - super(new KeyBinding[] { armorKey, refreshCapes, toggleGoggles, beltSwap, zoomKey }, new boolean[] { false, false, false, false, false }, getVanillaKeyBindings(), new boolean[] { false, false }); + super(new KeyBinding[] { armorKey, toggleGoggles, beltSwap, zoomKey }, new boolean[] { false, false, false, false }, getVanillaKeyBindings(), new boolean[] { false, false }); /*ClientRegistry.registerKeyBinding(armorKey); ClientRegistry.registerKeyBinding(refreshCapes); ClientRegistry.registerKeyBinding(toggleGoggles); @@ -76,10 +74,6 @@ public class TControls extends TKeyHandler { TabRegistry.addTabsToInventory((GuiContainer) mc.currentScreen); } - if (kb == refreshCapes && mc.currentScreen == null) - { - EventCloakRender.instance.refreshCapes(); - } if (kb == jumpKey) // Double jump { if (mc.thePlayer.capabilities.isCreativeMode) diff --git a/src/main/java/tconstruct/client/event/EventCloakRender.java b/src/main/java/tconstruct/client/event/EventCloakRender.java deleted file mode 100644 index 2507d365..00000000 --- a/src/main/java/tconstruct/client/event/EventCloakRender.java +++ /dev/null @@ -1,175 +0,0 @@ -package tconstruct.client.event; - -import java.awt.Graphics; -import java.awt.Image; -import java.awt.image.BufferedImage; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLConnection; -import java.util.ArrayList; -import java.util.HashMap; - -import javax.swing.ImageIcon; - -import mantle.lib.environment.EnvironmentChecks; -import net.minecraft.client.entity.AbstractClientPlayer; -import net.minecraftforge.client.event.RenderPlayerEvent; -import tconstruct.TConstruct; -import cpw.mods.fml.common.Loader; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; - -public class EventCloakRender -{ - - private final String serverLocation = "https://raw.github.com/SlimeKnights/TinkersConstruct/master/capes.txt"; - private final int timeout = 1000; - - private static final Graphics TEST_GRAPHICS = new BufferedImage(128, 128, BufferedImage.TYPE_INT_RGB).getGraphics(); - private HashMap cloaks = new HashMap(); - private ArrayList capePlayers = new ArrayList(); - - public static EventCloakRender instance; - - public EventCloakRender() - { - buildCloakURLDatabase(); - instance = this; - } - - @SubscribeEvent - public void onPreRenderSpecials (RenderPlayerEvent.Specials.Pre event) - { - if (Loader.isModLoaded("shadersmod") || EnvironmentChecks.hasOptifine) - { - return; - } - if (event.entityPlayer instanceof AbstractClientPlayer) - { - AbstractClientPlayer abstractClientPlayer = (AbstractClientPlayer) event.entityPlayer; - - if (!capePlayers.contains(abstractClientPlayer)) - { - String cloakURL = cloaks.get(event.entityPlayer.getDisplayName()); - - if (cloakURL == null) - { - return; - } - - capePlayers.add(abstractClientPlayer); - - //abstractClientPlayer.getTextureCape().textureUploaded = false; - //new Thread(new CloakThread(abstractClientPlayer, cloakURL)).start(); - //event.renderCape = true; - } - } - } - - public void buildCloakURLDatabase () - { - URL url; - try - { - url = new URL(serverLocation); - URLConnection con = url.openConnection(); - con.setConnectTimeout(timeout); - con.setReadTimeout(timeout); - InputStream io = con.getInputStream(); - BufferedReader br = new BufferedReader(new InputStreamReader(io)); - - String str; - int linetracker = 1; - while ((str = br.readLine()) != null) - { - if (!str.startsWith("--")) - { - if (str.contains(":")) - { - String nick = str.substring(0, str.indexOf(":")); - String link = str.substring(str.indexOf(":") + 1); - new Thread(new CloakPreload(link)).start(); - cloaks.put(nick, link); - } - else - { - TConstruct.logger.error("[SkinLoader] Syntax error on line " + linetracker + ": " + str); - } - } - linetracker++; - } - - br.close(); - } - catch (MalformedURLException e) - { - e.printStackTrace(); - } - catch (IOException e) - { - e.printStackTrace(); - } - } - - private class CloakThread implements Runnable - { - - AbstractClientPlayer abstractClientPlayer; - String cloakURL; - - public CloakThread(AbstractClientPlayer player, String cloak) - { - abstractClientPlayer = player; - cloakURL = cloak; - } - - @Override - public void run () - { - try - { - Image cape = new ImageIcon(new URL(cloakURL)).getImage(); - //BufferedImage bo = new BufferedImage(cape.getWidth(null), cape.getHeight(null), BufferedImage.TYPE_INT_ARGB); - //bo.getGraphics().drawImage(cape, 0, 0, null); - //abstractClientPlayer.getTextureCape().setBufferedImage(bo); - } - catch (MalformedURLException e) - { - e.printStackTrace(); - } - } - } - - private class CloakPreload implements Runnable - { - String cloakURL; - - public CloakPreload(String link) - { - cloakURL = link; - } - - @Override - public void run () - { - try - { - TEST_GRAPHICS.drawImage(new ImageIcon(new URL(cloakURL)).getImage(), 0, 0, null); - } - catch (MalformedURLException e) - { - e.printStackTrace(); - } - } - } - - public void refreshCapes () - { - cloaks.clear(); - capePlayers.clear(); - buildCloakURLDatabase(); - } -} diff --git a/src/main/java/tconstruct/items/tools/Battleaxe.java b/src/main/java/tconstruct/items/tools/Battleaxe.java index 203c8b30..6ee743e1 100644 --- a/src/main/java/tconstruct/items/tools/Battleaxe.java +++ b/src/main/java/tconstruct/items/tools/Battleaxe.java @@ -4,6 +4,7 @@ import mantle.world.WorldHelper; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.entity.EntityPlayerSP; +import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; @@ -248,17 +249,16 @@ public class Battleaxe extends HarvestTool return false; World world = player.worldObj; - final Block wood = world.getBlock(x, y, z); + final Block block = world.getBlock(x, y, z); NBTTagCompound tags = stack.getTagCompound().getCompoundTag("InfiTool"); final int meta = world.getBlockMetadata(x, y, z); for (int yPos = y + 1; yPos < y + 9; yPos++) { - Block block = world.getBlock(x, yPos, z); - if (!(tags.getBoolean("Broken")) && block != null && block.getMaterial() == Material.wood) + Block localBlock = world.getBlock(x, yPos, z); + if (!(tags.getBoolean("Broken")) && localBlock != null && localBlock.getMaterial() == Material.wood) { - Block localblock = world.getBlock(x, yPos, z); int localMeta = world.getBlockMetadata(x, yPos, z); - int hlvl = block.getHarvestLevel(meta); + int hlvl = localBlock.getHarvestLevel(localMeta); if (hlvl <= tags.getInteger("HarvestLevel")) { @@ -271,18 +271,12 @@ public class Battleaxe extends HarvestTool if (!cancelHarvest) { - if (block != null && block.getMaterial() == Material.wood) + if (localBlock != null && localBlock.getMaterial() == Material.wood) { - localMeta = world.getBlockMetadata(x, yPos, z); if (!player.capabilities.isCreativeMode) { - if (block.removedByPlayer(world, player, x, yPos, z)) - { - block.onBlockDestroyedByPlayer(world, x, yPos, z, localMeta); - } - block.harvestBlock(world, player, x, yPos, z, localMeta); - block.onBlockHarvested(world, x, yPos, z, localMeta, player); - onBlockDestroyed(stack, world, block, x, yPos, z, player); + mineBlock(world, x, yPos, z, localMeta, player, localBlock); + onBlockDestroyed(stack, world, localBlock, x, yPos, z, player); } else { @@ -296,7 +290,7 @@ public class Battleaxe extends HarvestTool break; } if (!world.isRemote) - world.playAuxSFX(2001, x, y, z, Block.getIdFromBlock(wood) + (meta << 12)); + world.playAuxSFX(2001, x, y, z, Block.getIdFromBlock(block) + (meta << 12)); return super.onBlockStartBreak(stack, x, y, z, player); } } diff --git a/src/main/java/tconstruct/items/tools/Cleaver.java b/src/main/java/tconstruct/items/tools/Cleaver.java index 1967890e..b1e23563 100644 --- a/src/main/java/tconstruct/items/tools/Cleaver.java +++ b/src/main/java/tconstruct/items/tools/Cleaver.java @@ -150,7 +150,7 @@ public class Cleaver extends Weapon ItemStack equipped = player.getCurrentEquippedItem(); if (equipped == stack) { - player.addPotionEffect(new PotionEffect(Potion.digSlowdown.id, 1, 2)); + player.addPotionEffect(new PotionEffect(Potion.digSlowdown.id, 2, 2, true)); } } } diff --git a/src/main/java/tconstruct/items/tools/Excavator.java b/src/main/java/tconstruct/items/tools/Excavator.java index 35a7961f..569eaa7f 100644 --- a/src/main/java/tconstruct/items/tools/Excavator.java +++ b/src/main/java/tconstruct/items/tools/Excavator.java @@ -3,6 +3,7 @@ package tconstruct.items.tools; import mantle.world.WorldHelper; import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; @@ -192,11 +193,10 @@ public class Excavator extends HarvestTool { if (!(tags.getBoolean("Broken"))) { - Block localblock = world.getBlock(xPos, yPos, zPos); - block = localblock; + Block localBlock = world.getBlock(xPos, yPos, zPos); int localMeta = world.getBlockMetadata(xPos, yPos, zPos); - int hlvl = block.getHarvestLevel(meta); - float localHardness = block == null ? Float.MAX_VALUE : block.getBlockHardness(world, xPos, yPos, zPos); + int hlvl = localBlock.getHarvestLevel(localMeta); + float localHardness = localBlock == null ? Float.MAX_VALUE : localBlock.getBlockHardness(world, xPos, yPos, zPos); if (hlvl <= tags.getInteger("HarvestLevel") && localHardness - 1.5 <= blockHardness) { @@ -209,22 +209,17 @@ public class Excavator extends HarvestTool if (!cancelHarvest) { - if (block != null && !(localHardness < 0)) + if (localBlock != null && !(localHardness < 0)) { for (int iter = 0; iter < materials.length; iter++) { - if (materials[iter] == block.getMaterial()) + if (materials[iter] == localBlock.getMaterial()) { if (!player.capabilities.isCreativeMode) { - if (block.removedByPlayer(world, player, xPos, yPos, zPos)) - { - block.onBlockDestroyedByPlayer(world, xPos, yPos, zPos, localMeta); - } - block.harvestBlock(world, player, xPos, yPos, zPos, localMeta); - block.onBlockHarvested(world, xPos, yPos, zPos, localMeta, player); - if (blockHardness > 0f) - onBlockDestroyed(stack, world, localblock, xPos, yPos, zPos, player); + mineBlock(world, xPos, yPos, zPos, localMeta, player, localBlock); + if (localHardness > 0f) + onBlockDestroyed(stack, world, localBlock, xPos, yPos, zPos, player); } else { diff --git a/src/main/java/tconstruct/items/tools/Hammer.java b/src/main/java/tconstruct/items/tools/Hammer.java index a7317f07..4b203ae0 100644 --- a/src/main/java/tconstruct/items/tools/Hammer.java +++ b/src/main/java/tconstruct/items/tools/Hammer.java @@ -6,6 +6,7 @@ import mantle.world.WorldHelper; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.Item; @@ -298,6 +299,7 @@ public class Hammer extends HarvestTool hlvl = localBlock.getHarvestLevel(localMeta); float localHardness = localBlock == null ? Float.MAX_VALUE : localBlock.getBlockHardness(world, xPos, yPos, zPos); + //Choose blocks that aren't too much harder than the first block. Stone: 2.0, Ores: 3.0 if (hlvl <= toolLevel && localHardness - 1.5 <= blockHardness) { boolean cancelHarvest = false; @@ -317,12 +319,8 @@ public class Hammer extends HarvestTool { if (!player.capabilities.isCreativeMode) { - 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); + mineBlock(world, xPos, yPos, zPos, localMeta, player, localBlock); + if (blockHardness > 0f) onBlockDestroyed(stack, world, localBlock, xPos, yPos, zPos, player); world.func_147479_m(x, y, z); diff --git a/src/main/java/tconstruct/items/tools/LumberAxe.java b/src/main/java/tconstruct/items/tools/LumberAxe.java index 92cc6b3d..3d3b687a 100644 --- a/src/main/java/tconstruct/items/tools/LumberAxe.java +++ b/src/main/java/tconstruct/items/tools/LumberAxe.java @@ -3,6 +3,7 @@ package tconstruct.items.tools; import mantle.world.WorldHelper; import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; @@ -197,7 +198,6 @@ public class LumberAxe extends HarvestTool void breakTree (World world, int x, int y, int z, ItemStack stack, NBTTagCompound tags, Block bID, int meta, EntityPlayer player) { - Block block; for (int xPos = x - 1; xPos <= x + 1; xPos++) { for (int yPos = y; yPos <= y + 1; yPos++) @@ -206,12 +206,11 @@ public class LumberAxe extends HarvestTool { if (!(tags.getBoolean("Broken"))) { - Block localblock = world.getBlock(xPos, yPos, zPos); - if (bID == localblock) + Block localBlock = world.getBlock(xPos, yPos, zPos); + if (bID == localBlock) { - block = localblock; - meta = world.getBlockMetadata(xPos, yPos, zPos); - int hlvl = block.getHarvestLevel(meta); + int localMeta = world.getBlockMetadata(xPos, yPos, zPos); + int hlvl = localBlock.getHarvestLevel(localMeta); if (hlvl <= tags.getInteger("HarvestLevel")) { @@ -228,7 +227,7 @@ public class LumberAxe extends HarvestTool } else { - if (localblock == bID && world.getBlockMetadata(xPos, yPos, zPos) % 4 == meta % 4) + if (localBlock == bID && localMeta % 4 == meta % 4) { /* * world.setBlock(xPos, yPos, zPos, 0, @@ -242,19 +241,15 @@ public class LumberAxe extends HarvestTool */ if (!player.capabilities.isCreativeMode) { - if (block.removedByPlayer(world, player, xPos, yPos, zPos)) - { - block.onBlockDestroyedByPlayer(world, xPos, yPos, zPos, meta); - } - block.harvestBlock(world, player, xPos, yPos, zPos, meta); - block.onBlockHarvested(world, xPos, yPos, zPos, meta, player); - onBlockDestroyed(stack, world, localblock, xPos, yPos, zPos, player); + mineBlock(world, xPos, yPos, zPos, localMeta, player, localBlock); + onBlockDestroyed(stack, world, localBlock, xPos, yPos, zPos, player); } else { WorldHelper.setBlockToAir(world, xPos, yPos, zPos); } - breakTree(world, xPos, yPos, zPos, stack, tags, bID, meta, player); + if (!world.isRemote) + breakTree(world, xPos, yPos, zPos, stack, tags, bID, meta, player); } /* * else { Block leaves = @@ -288,11 +283,11 @@ public class LumberAxe extends HarvestTool { if (!(tags.getBoolean("Broken"))) { - Block block = world.getBlock(xPos, yPos, zPos); - int meta = world.getBlockMetadata(xPos, yPos, zPos); - int hlvl = block.getHarvestLevel(meta); + Block localBlock = world.getBlock(xPos, yPos, zPos); + int localMeta = world.getBlockMetadata(xPos, yPos, zPos); + int hlvl = localBlock.getHarvestLevel(localMeta); - if (block != null && block.getMaterial() == Material.wood) + if (localBlock != null && localBlock.getMaterial() == Material.wood) { if (hlvl <= tags.getInteger("HarvestLevel")) { @@ -305,13 +300,13 @@ public class LumberAxe extends HarvestTool if (!cancelHarvest) { - WorldHelper.setBlockToAir(world, xPos, yPos, zPos); if (!player.capabilities.isCreativeMode) { - // TODO harvestBlock - block.harvestBlock(world, player, xPos, yPos, zPos, meta); - onBlockDestroyed(stack, world, block, xPos, yPos, zPos, player); + mineBlock(world, xPos, yPos, zPos, localMeta, player, localBlock); + onBlockDestroyed(stack, world, localBlock, xPos, yPos, zPos, player); } + WorldHelper.setBlockToAir(world, xPos, yPos, zPos); + world.func_147479_m(xPos, yPos, zPos); } } } diff --git a/src/main/java/tconstruct/items/tools/Scythe.java b/src/main/java/tconstruct/items/tools/Scythe.java index 4ede6ec1..a8e5271b 100644 --- a/src/main/java/tconstruct/items/tools/Scythe.java +++ b/src/main/java/tconstruct/items/tools/Scythe.java @@ -169,6 +169,7 @@ public class Scythe extends Weapon return false; NBTTagCompound tags = stack.getTagCompound().getCompoundTag("InfiTool"); boolean butter = EnchantmentHelper.getEnchantmentLevel(Enchantment.silkTouch.effectId, stack) > 0; + int fortune = EnchantmentHelper.getFortuneModifier(player); for (int xPos = x - 1; xPos <= x + 1; xPos++) { for (int yPos = y - 1; yPos <= y + 1; yPos++) @@ -222,12 +223,26 @@ public class Scythe extends Weapon } else { - if (localBlock.removedByPlayer(world, player, xPos, yPos, zPos)) + if (!world.isRemote) + { + // Workaround for dropping experience + int exp = localBlock.getExpDrop(world, localMeta, fortune); + + localBlock.onBlockHarvested(world, xPos, yPos, zPos, localMeta, player); + if (localBlock.removedByPlayer(world, player, xPos, yPos, zPos, true)) + { + localBlock.onBlockDestroyedByPlayer(world, xPos, yPos, zPos, localMeta); + localBlock.harvestBlock(world, player, xPos, yPos, zPos, localMeta); + // Workaround for dropping experience + if (!butter) + localBlock.dropXpOnBlockBreak(world, xPos, yPos, zPos, exp); + } + } + else { 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); } diff --git a/src/main/java/tconstruct/library/TConstructRegistry.java b/src/main/java/tconstruct/library/TConstructRegistry.java index f371013d..205fc8fc 100644 --- a/src/main/java/tconstruct/library/TConstructRegistry.java +++ b/src/main/java/tconstruct/library/TConstructRegistry.java @@ -340,8 +340,8 @@ public class TConstructRegistry ToolMaterial mat = toolMaterials.get(materialID); if (mat == null) { - toolMaterials.put(materialID, mat); - toolMaterialStrings.put(material.name(), mat); + toolMaterials.put(materialID, material); + toolMaterialStrings.put(material.name(), material); } else throw new IllegalArgumentException("[TCon API] Material ID " + materialID + " is already occupied by " + mat.materialName); diff --git a/src/main/java/tconstruct/library/tools/DualHarvestTool.java b/src/main/java/tconstruct/library/tools/DualHarvestTool.java index 5294aae9..9fe792ca 100644 --- a/src/main/java/tconstruct/library/tools/DualHarvestTool.java +++ b/src/main/java/tconstruct/library/tools/DualHarvestTool.java @@ -3,6 +3,7 @@ package tconstruct.library.tools; import mantle.world.WorldHelper; import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; @@ -50,7 +51,9 @@ public abstract class DualHarvestTool extends HarvestTool else { if (!player.capabilities.isCreativeMode) - onBlockDestroyed(stack, world, block, x, y, z, player); + { + mineBlock(world, x, y, z, meta, player, block); + } WorldHelper.setBlockToAir(world, x, y, z); if (!world.isRemote) world.playAuxSFX(2001, x, y, z, Block.getIdFromBlock(block) + (meta << 12)); diff --git a/src/main/java/tconstruct/library/tools/HarvestTool.java b/src/main/java/tconstruct/library/tools/HarvestTool.java index 14a61f53..40128b8f 100644 --- a/src/main/java/tconstruct/library/tools/HarvestTool.java +++ b/src/main/java/tconstruct/library/tools/HarvestTool.java @@ -3,6 +3,7 @@ package tconstruct.library.tools; import mantle.world.WorldHelper; import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.enchantment.EnchantmentHelper; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.Item; @@ -38,15 +39,12 @@ public abstract class HarvestTool extends ToolCore int hlvl = -1; if (!(tags.getBoolean("Broken"))) { - Block localBlock = world.getBlock(x, y, z); - int localMeta = world.getBlockMetadata(x, y, z); if (block.getHarvestTool(meta) != null && block.getHarvestTool(meta).equals(this.getHarvestType())) hlvl = block.getHarvestLevel(meta); int toolLevel = tags.getInteger("HarvestLevel"); float blockHardness = block.getBlockHardness(world, x, y, z); - float localHardness = localBlock == null ? Float.MAX_VALUE : localBlock.getBlockHardness(world, x, y, z); - if (hlvl <= toolLevel && localHardness - 1.5 <= blockHardness) + if (hlvl <= toolLevel) { boolean cancelHarvest = false; for (ActiveToolMod mod : TConstructRegistry.activeModifiers) @@ -57,21 +55,22 @@ public abstract class HarvestTool extends ToolCore if (!cancelHarvest) { - if (localBlock != null && !(localHardness < 0)) + if (block != null) { boolean isEffective = false; for (int iter = 0; iter < getEffectiveMaterials().length; iter++) { - if (getEffectiveMaterials()[iter] == localBlock.getMaterial() || localBlock == Blocks.monster_egg) + if (getEffectiveMaterials()[iter] == block.getMaterial() || block == Blocks.monster_egg) { isEffective = true; break; } } - if (localBlock.getMaterial().isToolNotRequired()) + // Microblocks are registered as rock but no HarvestTool is set + if (block.getMaterial().isToolNotRequired() || block.getHarvestTool(meta) == null) { isEffective = true; } @@ -80,14 +79,9 @@ public abstract class HarvestTool extends ToolCore { if (isEffective) { - if (localBlock.removedByPlayer(world, player, x, y, z)) - { - localBlock.onBlockDestroyedByPlayer(world, x, y, z, localMeta); - } - localBlock.harvestBlock(world, player, x, y, z, localMeta); - localBlock.onBlockHarvested(world, x, y, z, localMeta, player); + mineBlock(world, x, y, z, meta, player, block); if (blockHardness > 0f) - onBlockDestroyed(stack, world, localBlock, x, y, z, player); + onBlockDestroyed(stack, world, block, x, y, z, player); world.func_147479_m(x, y, z); } else @@ -288,4 +282,43 @@ public abstract class HarvestTool extends ToolCore return used; } + + @Override + public int getHarvestLevel (ItemStack stack, String toolClass) + { + if (!(stack.getItem() instanceof HarvestTool) || !getHarvestType().equals(toolClass)) + { + return -1; + } + + NBTTagCompound tags = stack.getTagCompound().getCompoundTag("InfiTool"); + int harvestLvl = tags.getInteger("HarvestLevel"); + return harvestLvl; + } + + // The Scythe is not a HarvestTool and can't call this method, if you change something here you might change it there too. + public void mineBlock(World world, int x, int y, int z, int meta, EntityPlayer player, Block block) + { + if (!world.isRemote) + { + // Workaround for dropping experience + boolean silktouch = EnchantmentHelper.getSilkTouchModifier(player); + int fortune = EnchantmentHelper.getFortuneModifier(player); + int exp = block.getExpDrop(world, meta, fortune); + + block.onBlockHarvested(world, x, y, z, meta, player); + if (block.removedByPlayer(world, player, x, y, z, true)) + { + block.onBlockDestroyedByPlayer(world, x, y, z, meta); + block.harvestBlock(world, player, x, y, z, meta); + // Workaround for dropping experience + if (!silktouch) + block.dropXpOnBlockBreak(world, x, y, z, exp); + } + } + else + { + block.onBlockDestroyedByPlayer(world, x, y, z, meta); + } + } } diff --git a/src/main/java/tconstruct/modifiers/tools/ModAntiSpider.java b/src/main/java/tconstruct/modifiers/tools/ModAntiSpider.java index b1108a79..7e1e0c79 100644 --- a/src/main/java/tconstruct/modifiers/tools/ModAntiSpider.java +++ b/src/main/java/tconstruct/modifiers/tools/ModAntiSpider.java @@ -24,6 +24,9 @@ public class ModAntiSpider extends ItemModTypeFilter if (!tags.hasKey(key)) return tags.getInteger("Modifiers") > 0 && matchingAmount(input) <= max; + if(matchingAmount(input) > max) + return false; + int keyPair[] = tags.getIntArray(key); if (keyPair[0] + matchingAmount(input) <= keyPair[1]) return true; diff --git a/src/main/java/tconstruct/modifiers/tools/ModAttack.java b/src/main/java/tconstruct/modifiers/tools/ModAttack.java index d3751d94..b2caff6e 100644 --- a/src/main/java/tconstruct/modifiers/tools/ModAttack.java +++ b/src/main/java/tconstruct/modifiers/tools/ModAttack.java @@ -45,6 +45,9 @@ public class ModAttack extends ItemModTypeFilter if (!validType(toolItem)) return false; + if(matchingAmount(input) > max) + return false; + NBTTagCompound tags = tool.getTagCompound().getCompoundTag(toolItem.getBaseTagName()); if (!tags.hasKey(key)) return tags.getInteger("Modifiers") > 0 && matchingAmount(input) <= max; diff --git a/src/main/java/tconstruct/modifiers/tools/ModBlaze.java b/src/main/java/tconstruct/modifiers/tools/ModBlaze.java index 78025567..b1b390a1 100644 --- a/src/main/java/tconstruct/modifiers/tools/ModBlaze.java +++ b/src/main/java/tconstruct/modifiers/tools/ModBlaze.java @@ -28,6 +28,9 @@ public class ModBlaze extends ItemModTypeFilter if (!validType(toolItem)) return false; + if(matchingAmount(input) > max) + return false; + NBTTagCompound tags = tool.getTagCompound().getCompoundTag("InfiTool"); if (!tags.hasKey(key)) return tags.getInteger("Modifiers") > 0 && matchingAmount(input) <= max; @@ -51,7 +54,7 @@ public class ModBlaze extends ItemModTypeFilter if (tags.hasKey(key)) { int[] keyPair = tags.getIntArray(key); - if (keyPair[0] == max) + if (keyPair[0] % max == 0) { keyPair[0] += increase; keyPair[1] += max; diff --git a/src/main/java/tconstruct/modifiers/tools/ModLapis.java b/src/main/java/tconstruct/modifiers/tools/ModLapis.java index 175a2cd4..a959907a 100644 --- a/src/main/java/tconstruct/modifiers/tools/ModLapis.java +++ b/src/main/java/tconstruct/modifiers/tools/ModLapis.java @@ -33,6 +33,9 @@ public class ModLapis extends ItemModTypeFilter if (!validType(toolItem)) return false; + if(matchingAmount(input) > max) + return false; + NBTTagCompound tags = tool.getTagCompound().getCompoundTag("InfiTool"); if (tags.getBoolean("Silk Touch")) diff --git a/src/main/java/tconstruct/modifiers/tools/ModPiston.java b/src/main/java/tconstruct/modifiers/tools/ModPiston.java index 799b88be..ce4adcf7 100644 --- a/src/main/java/tconstruct/modifiers/tools/ModPiston.java +++ b/src/main/java/tconstruct/modifiers/tools/ModPiston.java @@ -29,6 +29,9 @@ public class ModPiston extends ItemModTypeFilter if (!validType(toolItem)) return false; + if(matchingAmount(input) > max) + return false; + NBTTagCompound tags = tool.getTagCompound().getCompoundTag("InfiTool"); if (!tags.hasKey(key)) return tags.getInteger("Modifiers") > 0 && matchingAmount(input) <= max; diff --git a/src/main/java/tconstruct/modifiers/tools/ModRedstone.java b/src/main/java/tconstruct/modifiers/tools/ModRedstone.java index 0abdc614..481bb570 100644 --- a/src/main/java/tconstruct/modifiers/tools/ModRedstone.java +++ b/src/main/java/tconstruct/modifiers/tools/ModRedstone.java @@ -28,14 +28,17 @@ public class ModRedstone extends ItemModTypeFilter if (!validType(toolItem)) return false; + if(matchingAmount(input) > max) + return false; + NBTTagCompound tags = tool.getTagCompound().getCompoundTag("InfiTool"); if (!tags.hasKey(key)) return tags.getInteger("Modifiers") > 0 && matchingAmount(input) <= max; int keyPair[] = tags.getIntArray(key); + if (keyPair[0] + matchingAmount(input) <= keyPair[1]) return true; - else if (keyPair[0] == keyPair[1]) return tags.getInteger("Modifiers") > 0; } diff --git a/src/main/java/tconstruct/modifiers/tools/ModSmite.java b/src/main/java/tconstruct/modifiers/tools/ModSmite.java index aa733b24..9d6c829f 100644 --- a/src/main/java/tconstruct/modifiers/tools/ModSmite.java +++ b/src/main/java/tconstruct/modifiers/tools/ModSmite.java @@ -19,6 +19,9 @@ public class ModSmite extends ItemModTypeFilter @Override protected boolean canModify (ItemStack tool, ItemStack[] input) { + if(matchingAmount(input) > max) + return false; + NBTTagCompound tags = tool.getTagCompound().getCompoundTag("InfiTool"); if (!tags.hasKey(key)) return tags.getInteger("Modifiers") > 0 && matchingAmount(input) <= max; diff --git a/src/main/java/tconstruct/plugins/imc/TinkerThaumcraft.java b/src/main/java/tconstruct/plugins/imc/TinkerThaumcraft.java new file mode 100644 index 00000000..bad0b53b --- /dev/null +++ b/src/main/java/tconstruct/plugins/imc/TinkerThaumcraft.java @@ -0,0 +1,31 @@ +package tconstruct.plugins.imc; + +import net.minecraft.block.Block; +import net.minecraft.item.ItemStack; +import mantle.pulsar.pulse.Handler; +import mantle.pulsar.pulse.Pulse; +import tconstruct.TConstruct; +import tconstruct.smeltery.TinkerSmeltery; +import tconstruct.world.TinkerWorld; +import cpw.mods.fml.common.event.FMLInitializationEvent; +import cpw.mods.fml.common.event.FMLInterModComms; +import cpw.mods.fml.common.registry.GameRegistry.ObjectHolder; + +@ObjectHolder(TConstruct.modID) +@Pulse(id = "Tinkers Thaumcraft Compatibility", description = "Tinkers Construct compatibility for Thaumcraft", modsRequired = "Thaumcraft") +public class TinkerThaumcraft +{ + + @Handler + public void init (FMLInitializationEvent event) + { + TConstruct.logger.info("[Thaumcraft] Registering harvestables."); + FMLInterModComms.sendMessage("Thaumcraft", "harvestClickableCrop", new ItemStack(TinkerWorld.oreBerry, 1, 12)); + FMLInterModComms.sendMessage("Thaumcraft", "harvestClickableCrop", new ItemStack(TinkerWorld.oreBerry, 1, 13)); + FMLInterModComms.sendMessage("Thaumcraft", "harvestClickableCrop", new ItemStack(TinkerWorld.oreBerry, 1, 14)); + FMLInterModComms.sendMessage("Thaumcraft", "harvestClickableCrop", new ItemStack(TinkerWorld.oreBerry, 1, 15)); + FMLInterModComms.sendMessage("Thaumcraft", "harvestClickableCrop", new ItemStack(TinkerWorld.oreBerrySecond, 1, 12)); + FMLInterModComms.sendMessage("Thaumcraft", "harvestClickableCrop", new ItemStack(TinkerWorld.oreBerrySecond, 1, 13)); + } + +} diff --git a/src/main/java/tconstruct/plugins/nei/NEICompat.java b/src/main/java/tconstruct/plugins/nei/NEICompat.java new file mode 100644 index 00000000..9417aa90 --- /dev/null +++ b/src/main/java/tconstruct/plugins/nei/NEICompat.java @@ -0,0 +1,21 @@ +package tconstruct.plugins.nei; + +import tconstruct.tools.gui.CraftingStationGui; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.common.FMLCommonHandler; +import codechicken.nei.recipe.DefaultOverlayHandler; +import codechicken.nei.api.API; + +public class NEICompat +{ + + public static void registerNEICompat () + { + if (FMLCommonHandler.instance().getEffectiveSide() == Side.CLIENT) + { + API.registerGuiOverlay(CraftingStationGui.class, "crafting"); + API.registerGuiOverlayHandler(CraftingStationGui.class, new DefaultOverlayHandler(), "crafting"); + } + } + +} diff --git a/src/main/java/tconstruct/plugins/nei/TinkerNEI.java b/src/main/java/tconstruct/plugins/nei/TinkerNEI.java new file mode 100644 index 00000000..d3326fa2 --- /dev/null +++ b/src/main/java/tconstruct/plugins/nei/TinkerNEI.java @@ -0,0 +1,23 @@ +package tconstruct.plugins.nei; + +import mantle.pulsar.pulse.Handler; +import mantle.pulsar.pulse.Pulse; +import tconstruct.TConstruct; +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.common.event.FMLInitializationEvent; +import cpw.mods.fml.common.registry.GameRegistry.ObjectHolder; +import cpw.mods.fml.relauncher.Side; + +@ObjectHolder(TConstruct.modID) +@Pulse(id = "Tinkers NEI Compatibility", description = "Tinkers Construct compatibility for NEI", modsRequired = "NotEnoughItems") +public class TinkerNEI +{ + + @Handler + public void init (FMLInitializationEvent event) + { + TConstruct.logger.info("NotEnoughItems detected. Registering TConstruct NEI plugin."); + NEICompat.registerNEICompat(); + } + +} diff --git a/src/main/java/tconstruct/smeltery/TinkerSmeltery.java b/src/main/java/tconstruct/smeltery/TinkerSmeltery.java index 7639391f..ae32dd2e 100644 --- a/src/main/java/tconstruct/smeltery/TinkerSmeltery.java +++ b/src/main/java/tconstruct/smeltery/TinkerSmeltery.java @@ -786,6 +786,9 @@ public class TinkerSmeltery } } } + + tableCasting.addCastingRecipe(new ItemStack(Items.ender_pearl), new FluidStack(TinkerSmeltery.moltenEnderFluid, 250), new ItemStack(TinkerSmeltery.metalPattern, 1, 10), 50); + tableCasting.addCastingRecipe(new ItemStack(Items.ender_pearl), new FluidStack(TinkerSmeltery.moltenEnderFluid, 250), new ItemStack(TinkerSmeltery.metalPattern, 1, 26), 50); ItemStack[] ingotShapes = { new ItemStack(Items.brick), new ItemStack(Items.netherbrick), new ItemStack(TinkerTools.materials, 1, 2), new ItemStack(TinkerTools.materials, 1, 37) }; for (int i = 0; i < ingotShapes.length; i++) @@ -915,7 +918,7 @@ public class TinkerSmeltery // Items Smeltery.addMelting(FluidType.getFluidType("AluminumBrass"), new ItemStack(TinkerTools.blankPattern, 4, 1), -50, TConstruct.ingotLiquidValue); Smeltery.addMelting(gold, new ItemStack(TinkerTools.blankPattern, 4, 2), -50, TConstruct.ingotLiquidValue * 2); - Smeltery.addMelting(FluidType.getFluidType("Gold"), new ItemStack(TinkerTools.materials, 1, 36), 0, TConstruct.ingotLiquidValue); + Smeltery.addMelting(FluidType.getFluidType("Glue"), new ItemStack(TinkerTools.materials, 1, 36), 0, TConstruct.ingotLiquidValue); Smeltery.addMelting(FluidType.getFluidType("Ender"), new ItemStack(Items.ender_pearl, 4), 0, 250); Smeltery.addMelting(TinkerWorld.metalBlock, 10, 50, new FluidStack(moltenEnderFluid, 1000)); diff --git a/src/main/java/tconstruct/smeltery/TinkerSmelteryEvents.java b/src/main/java/tconstruct/smeltery/TinkerSmelteryEvents.java index 8df83270..60b1e870 100644 --- a/src/main/java/tconstruct/smeltery/TinkerSmelteryEvents.java +++ b/src/main/java/tconstruct/smeltery/TinkerSmelteryEvents.java @@ -41,7 +41,7 @@ public class TinkerSmelteryEvents @SubscribeEvent public void bucketFill (FillBucketEvent evt) { - if (evt.current.getItem() == Items.bucket && evt.target.typeOfHit == MovingObjectType.ENTITY) + if (evt.current.getItem() == Items.bucket && evt.target.typeOfHit == MovingObjectType.BLOCK) { int hitX = evt.target.blockX; int hitY = evt.target.blockY; diff --git a/src/main/java/tconstruct/tools/TinkerToolEvents.java b/src/main/java/tconstruct/tools/TinkerToolEvents.java index a39932b6..67196bb1 100644 --- a/src/main/java/tconstruct/tools/TinkerToolEvents.java +++ b/src/main/java/tconstruct/tools/TinkerToolEvents.java @@ -418,12 +418,12 @@ public class TinkerToolEvents public void registerOre (OreRegisterEvent evt) { - if (evt.Name == "crystalQuartz") + if (evt.Name.equals("crystalQuartz")) { TinkerTools.modAttack.addStackToMatchList(evt.Ore, 2); } - else if (evt.Name == "crystalCerusQuartz") + else if (evt.Name.equals("crystalCertusQuartz")) { TinkerTools.modAttack.addStackToMatchList(evt.Ore, 24); } diff --git a/src/main/java/tconstruct/tools/TinkerTools.java b/src/main/java/tconstruct/tools/TinkerTools.java index 79575a9c..6a3acfd2 100644 --- a/src/main/java/tconstruct/tools/TinkerTools.java +++ b/src/main/java/tconstruct/tools/TinkerTools.java @@ -477,9 +477,9 @@ public class TinkerTools ItemStack diamond = new ItemStack(Items.diamond); ModifyBuilder.registerModifier(new ModToolRepair()); - ModifyBuilder.registerModifier(new ModDurability(new ItemStack[] { diamond }, 0, 500, 0f, 3, StatCollector.translateToLocal("gui.modifier.diamond"), "\u00a7b" + ModifyBuilder.registerModifier(new ModDurability(new ItemStack[] { diamond }, 0, 500, 0f, 3, "Diamond", "\u00a7b" + StatCollector.translateToLocal("modifier.tool.diamond"), "\u00a7b")); - ModifyBuilder.registerModifier(new ModDurability(new ItemStack[] { new ItemStack(Items.emerald) }, 1, 0, 0.5f, 2, StatCollector.translateToLocal("gui.modifier.emerald"), "\u00a72" + ModifyBuilder.registerModifier(new ModDurability(new ItemStack[] { new ItemStack(Items.emerald) }, 1, 0, 0.5f, 2, "Emerald", "\u00a72" + StatCollector.translateToLocal("modifier.tool.emerald"), "\u00a72")); TinkerTools.modFlux = new ModFlux(); @@ -494,13 +494,13 @@ public class TinkerTools TinkerTools.modLapis = new ModLapis(10, new ItemStack[] { lapisItem, lapisBlock }, new int[] { 1, 9 }); ModifyBuilder.registerModifier(TinkerTools.modLapis); - ModifyBuilder.registerModifier(new ModInteger(new ItemStack[] { new ItemStack(TinkerTools.materials, 1, 6) }, 4, StatCollector.translateToLocal("gui.modifier.moss"), 3, "\u00a72", StatCollector + ModifyBuilder.registerModifier(new ModInteger(new ItemStack[] { new ItemStack(TinkerTools.materials, 1, 6) }, 4, "Moss", 3, "\u00a72", StatCollector .translateToLocal("modifier.tool.moss"))); ItemStack blazePowder = new ItemStack(Items.blaze_powder); ModifyBuilder.registerModifier(new ModBlaze(7, new ItemStack[] { blazePowder }, new int[] { 1 })); - ModifyBuilder.registerModifier(new ModAutoSmelt(new ItemStack[] { new ItemStack(TinkerTools.materials, 1, 7) }, 6, StatCollector.translateToLocal("gui.modifier.lava"), "\u00a74", StatCollector + ModifyBuilder.registerModifier(new ModAutoSmelt(new ItemStack[] { new ItemStack(TinkerTools.materials, 1, 7) }, 6, "Lava", "\u00a74", StatCollector .translateToLocal("modifier.tool.lava"))); - ModifyBuilder.registerModifier(new ModInteger(new ItemStack[] { new ItemStack(TinkerTools.materials, 1, 8) }, 8, StatCollector.translateToLocal("gui.modifier.necro"), 1, "\u00a78", StatCollector + ModifyBuilder.registerModifier(new ModInteger(new ItemStack[] { new ItemStack(TinkerTools.materials, 1, 8) }, 8, "Necrotic", 1, "\u00a78", StatCollector .translateToLocal("modifier.tool.necro"))); TinkerTools.modAttack = new ModAttack(StatCollector.translateToLocal("gui.modifier.quartz"), 11, new ItemStack[] { new ItemStack(Items.quartz), @@ -518,7 +518,7 @@ public class TinkerTools ItemStack piston = new ItemStack(Blocks.piston); ModifyBuilder.registerModifier(new ModPiston(3, new ItemStack[] { piston }, new int[] { 1 })); - ModifyBuilder.registerModifier(new ModInteger(new ItemStack[] { new ItemStack(Blocks.obsidian), new ItemStack(Items.ender_pearl) }, 13, StatCollector.translateToLocal("modifier.tool.beheading"), 1, + ModifyBuilder.registerModifier(new ModInteger(new ItemStack[] { new ItemStack(Blocks.obsidian), new ItemStack(Items.ender_pearl) }, 13, "Beheading", 1, "\u00a7d", StatCollector.translateToLocal("modifier.tool.beheading"))); ItemStack holySoil = new ItemStack(TinkerTools.craftedSoil, 1, 4);