Fix most outstanding bugs

This commit is contained in:
mDiyo committed 2013-08-07 19:06:26 -07:00
1 parent 687a29e221
commit 6192f25aec
60 files changed
+2970 -1407

No files matched your search

+125 -109
View File
@@ -3,7 +3,7 @@
<properties version="1.0">
<entry key="itemGroup.TConstructTools">TConstuct Werkzeuge</entry>
<entry key="itemGroup.TConstructMaterials">TConstruct Materialien</entry>
<entry key="itemGroup.TConstructBlocks">TConstruct Bl\u00f6cke</entry>
<entry key="itemGroup.TConstructBlocks">TConstruct Blöcke</entry>
<entry key="crafters.ToolStation">Werkzeugstation</entry>
<entry key="crafters.ToolForge">Werkzeugesse</entry>
@@ -23,14 +23,14 @@
<entry key="tile.ToolForge.name">Werkzeugesse</entry>
<entry key="tile.Armor.DryingRack.name">Trockenregal</entry>
<entry key="CraftedSoil.Slime.name">Schleimiger Matsch</entry>
<entry key="CraftedSoil.Grout.name">M\u00f6rtel</entry>
<entry key="CraftedSoil.Grout.name">Mörtel</entry>
<entry key="CraftedSoil.BlueSlime.name">Schleimiger Matsch (blau)</entry>
<entry key="CraftedSoil.GraveyardSoil.name">Friedhoferde</entry>
<entry key="CraftedSoil.ConsecratedSoil.name">Gesegnete Erde</entry>
<entry key="MetalOre.NetherSlag.name">Netherstein-Schlacke</entry>
<entry key="MetalOre.Cobalt.name">Cobaltit</entry>
<entry key="MetalOre.Ardite.name">Ardit</entry>
<entry key="MetalOre.Cobalt.name">Cobalterz</entry>
<entry key="MetalOre.Ardite.name">Arditerz</entry>
<entry key="MetalOre.Copper.name">Kupfererz</entry>
<entry key="MetalOre.Tin.name">Zinnerz</entry>
<entry key="MetalOre.Aluminum.name">Aluminiumerz</entry>
@@ -51,19 +51,19 @@
<entry key="block.ore.gravel.cobalt.name">Kobaltkies</entry>
<entry key="block.brownstone.rough.name">Rauer Braunstein</entry>
<entry key="block.brownstone.rough.road.name">Raue braune Stra\u00dfe</entry>
<entry key="block.brownstone.rough.road.name">Raue braune Straße</entry>
<entry key="block.brownstone.smooth.name">Braunstein</entry>
<entry key="block.brownstone.smooth.brick.name">Brauner Ziegel</entry>
<entry key="block.brownstone.smooth.road.name">Braune Stra\u00dfe</entry>
<entry key="block.brownstone.smooth.fancy.name">Sch\u00f6ner Braunstein</entry>
<entry key="block.brownstone.smooth.road.name">Braune Straße</entry>
<entry key="block.brownstone.smooth.fancy.name">Schöner Braunstein</entry>
<entry key="block.brownstone.smooth.chiseled.name">Ziselierter Braustein</entry>
<entry key="block.brownstone.rough.slab.name">Raue Braunsteinstufe</entry>
<entry key="block.brownstone.rough.road.slab.name">Braune Stra\u00dfenstufe</entry>
<entry key="block.brownstone.rough.road.slab.name">Braune Straßenstufe</entry>
<entry key="block.brownstone.smooth.slab.name">Braune Stufe</entry>
<entry key="block.brownstone.smooth.brick.slab.name">Braune Ziegelstufe</entry>
<entry key="block.brownstone.smooth.road.slab.name">Braune Stra\u00dfenstufe</entry>
<entry key="block.brownstone.smooth.fancy.slab.name">Sch\u00f6ne braune Stufe</entry>
<entry key="block.brownstone.smooth.road.slab.name">Braune Straßenstufe</entry>
<entry key="block.brownstone.smooth.fancy.slab.name">Schöne braune Stufe</entry>
<entry key="block.brownstone.smooth.chiseled.slab.name">Ziselierte Braunsteinstufe</entry>
<entry key="block.brick.obsidian.name">Obsidianziegel</entry>
@@ -81,22 +81,22 @@
<entry key="block.brick.endstone.name">Enderziegel</entry>
<entry key="block.brick.obsidian.ingot.name">Obsidianziegel</entry>
<entry key="block.fancybrick.obsidian.name">Sch\u00f6ner Obsidianziegel</entry>
<entry key="block.fancybrick.sandstone.name">Sch\u00f6ner Sandsteinziegel</entry>
<entry key="block.fancybrick.netherrack.name">Sch\u00f6ner Nethersteinziegel</entry>
<entry key="block.fancybrick.iron.name">Sch\u00f6ner Eisenziegel</entry>
<entry key="block.fancybrick.gold.name">Sch\u00f6ner Goldziegel</entry>
<entry key="block.fancybrick.diamond.name">Sch\u00f6ner Diamantziegel</entry>
<entry key="block.fancybrick.lapis.name">Sch\u00f6ner Lapislazuliziegel</entry>
<entry key="block.fancybrick.stone.refined.name">Polierter sch\u00f6ner Steinziegel</entry>
<entry key="block.fancybrick.redstone.name">Sch\u00f6ner Redstoneziegel</entry>
<entry key="block.fancybrick.bone.name">Sch\u00f6ner Knochenziegel</entry>
<entry key="block.fancybrick.slime.name">Sch\u00f6ner Schleimziegel</entry>
<entry key="block.fancybrick.blueslime.name">Sch\u00f6ner blauer Schleimziegel</entry>
<entry key="block.fancybrick.endstone.name">Sch\u00f6ner Enderziegel</entry>
<entry key="block.fancybrick.obsidian.ingot.name">Sch\u00f6ner Obsidianziegel</entry>
<entry key="block.fancybrick.stone.road.name">Steinstra\u00dfe</entry>
<entry key="block.fancybrick.stone.name">Sch\u00f6ner Steinziegel</entry>
<entry key="block.fancybrick.obsidian.name">Schöner Obsidianziegel</entry>
<entry key="block.fancybrick.sandstone.name">Schöner Sandsteinziegel</entry>
<entry key="block.fancybrick.netherrack.name">Schöner Nethersteinziegel</entry>
<entry key="block.fancybrick.iron.name">Schöner Eisenziegel</entry>
<entry key="block.fancybrick.gold.name">Schöner Goldziegel</entry>
<entry key="block.fancybrick.diamond.name">Schöner Diamantziegel</entry>
<entry key="block.fancybrick.lapis.name">Schöner Lapislazuliziegel</entry>
<entry key="block.fancybrick.stone.refined.name">Polierter schöner Steinziegel</entry>
<entry key="block.fancybrick.redstone.name">Schöner Redstoneziegel</entry>
<entry key="block.fancybrick.bone.name">Schöner Knochenziegel</entry>
<entry key="block.fancybrick.slime.name">Schöner Schleimziegel</entry>
<entry key="block.fancybrick.blueslime.name">Schöner blauer Schleimziegel</entry>
<entry key="block.fancybrick.endstone.name">Schöner Enderziegel</entry>
<entry key="block.fancybrick.obsidian.ingot.name">Schöner Obsidianziegel</entry>
<entry key="block.fancybrick.stone.road.name">Steinstraße</entry>
<entry key="block.fancybrick.stone.name">Schöner Steinziegel</entry>
<entry key="item.oreberry.iron.name">Eisenbeere</entry>
<entry key="item.oreberry.gold.name">Goldbeere</entry>
@@ -112,7 +112,7 @@
<entry key="item.tconstruct.Materials.SlimeCrystal.name">Schleimkristall</entry>
<entry key="item.tconstruct.Materials.SearedBrick.name">Versengter Ziegel</entry>
<entry key="item.tconstruct.Materials.CobaltIngot.name">Cobaltbarren</entry>
<entry key="item.tconstruct.Materials.ArditeIngot.name">Ardiumbarren</entry>
<entry key="item.tconstruct.Materials.ArditeIngot.name">Arditbarren</entry>
<entry key="item.tconstruct.Materials.ManyullynIngot.name">ManyullynBarren</entry>
<entry key="item.tconstruct.Materials.Mossball.name">Moosballen</entry>
<entry key="item.tconstruct.Materials.LavaCrystal.name">Lavakristall</entry>
@@ -135,6 +135,13 @@
<entry key="item.tconstruct.Materials.AluBrassNugget.name">Duraluminiumklumpen</entry>
<entry key="item.tconstruct.Materials.SilkyCloth.name">Seide</entry>
<entry key="item.tconstruct.Materials.SilkyJewel.name">Seidiger Edelstein</entry>
<entry key="item.tconstruct.Materials.ObsidianNugget.name">Obsidianklumpen</entry>
<entry key="item.tconstruct.Materials.CobaltNugget.name">Cobaltklumpen</entry>
<entry key="item.tconstruct.Materials.ArditeNugget.name">Arditklumpen</entry>
<entry key="item.tconstruct.Materials.ManyullynNugget.name">Manyullynklumpen</entry>
<entry key="item.tconstruct.Materials.BronzeNugget.name">Bronzeklumpen</entry>
<entry key="item.tconstruct.Materials.AlumiteNugget.name">Alumitklumpen</entry>
<entry key="item.tconstruct.Materials.SteelNugget.name">Stahlklumpen</entry>
<entry key="Smeltery.Controller.name">Schmelzereikern</entry>
<entry key="Smeltery.Drain.name">Schmelzereiausguss</entry>
@@ -143,8 +150,8 @@
<entry key="Smeltery.Cobblestone.name">Versengter Cobblestone</entry>
<entry key="Smeltery.Paver.name">Versengter Pflasterstein</entry>
<entry key="Smeltery.Brick.Cracked.name">Rissiger versengter Ziegel</entry>
<entry key="Smeltery.Road.name">Versengte Stra\u00dfe</entry>
<entry key="Smeltery.Brick.Fancy.name">Versengter sch\u00f6ner Ziegel</entry>
<entry key="Smeltery.Road.name">Versengte Straße</entry>
<entry key="Smeltery.Brick.Fancy.name">Versengter schöner Ziegel</entry>
<entry key="Smeltery.Brick.Square.name">Versengter ziselierter Ziegel</entry>
<entry key="Smeltery.Brick.Creeper.name">Versengter ziselierter Ziegel</entry>
@@ -152,14 +159,20 @@
<entry key="LavaTank.Gague.name">Versengtes Glas</entry>
<entry key="LavaTank.Window.name">Versengtes Fenster</entry>
<entry key="block.drawbridge.name">Zugbr\u00fccke</entry>
<entry key="block.drawbridge.name">Zugbrücke</entry>
<entry key="block.firestarter.name">Feuerzeug</entry>
<entry key="tile.landmine.name">Landmine</entry>
<entry key="tile.trap.punji.name">Punji-Stab</entry>
<entry key="tile.trap.barricade.oak.name">Eichen-Barrikade</entry>
<entry key="tile.trap.barricade.spruce.name">Fichten-Barrikade</entry>
<entry key="tile.trap.barricade.birch.name">Birken-Barrikade</entry>
<entry key="tile.trap.barricade.jungle.name">Tropen-Barrikade</entry>
<entry key="StorageMetals.Cobalt.name">Cobaltblock</entry>
<entry key="StorageMetals.Ardite.name">Ardiumblock</entry>
<entry key="StorageMetals.Ardite.name">Arditblock</entry>
<entry key="StorageMetals.Manyullun.name">Manyullynblock</entry>
<entry key="StorageMetals.Copper.name">Kupferblock</entry>
<entry key="StorageMetals.Bronze.name">Bronzeblock</entry>
<entry key="StorageMetals.Tin.name">Zinnblock</entry>
<entry key="StorageMetals.Aluminum.name">Aluminiumblock</entry>
<entry key="StorageMetals.AlBrass.name">Duraluminiumblock</entry>
@@ -167,59 +180,63 @@
<entry key="StorageMetals.Steel.name">Stahlblock</entry>
<entry key="tile.decoration.stonetorch.name">Fackel</entry>
<entry key="tile.CraftingStation.name">Handwerksstation</entry>
<entry key="block.glass.pure.name">Klares Glas</entry>
<entry key="block.glass.soul.name">Seelenglas</entry>
<entry key="block.glass.soul.pure.name">Klares Seelenglas</entry>
<entry key="block.stainedglass.white.name">Wei\u00df get\u00f6ntes Glas</entry>
<entry key="block.stainedglass.orange.name">Orange get\u00f6ntes Glas</entry>
<entry key="block.stainedglass.magenta.name">Magenta get\u00f6ntes Glas</entry>
<entry key="block.stainedglass.lightblue.name">Hellblau get\u00f6ntes Glas</entry>
<entry key="block.stainedglass.yellow.name">Gelb get\u00f6ntes Glas</entry>
<entry key="block.stainedglass.lime.name">Hellgr\u00fcn get\u00f6ntes Glas</entry>
<entry key="block.stainedglass.pink.name">Rosa get\u00f6ntes Glas</entry>
<entry key="block.stainedglass.gray.name">Grau get\u00f6ntes Glas</entry>
<entry key="block.stainedglass.lightgray.name">Hellgrau get\u00f6ntes Glas</entry>
<entry key="block.stainedglass.cyan.name">Zyan get\u00f6ntes Glas</entry>
<entry key="block.stainedglass.purple.name">Violett get\u00f6ntes Glas</entry>
<entry key="block.stainedglass.blue.name">Blau get\u00f6ntes Glas</entry>
<entry key="block.stainedglass.brown.name">Braun get\u00f6ntes Glas</entry>
<entry key="block.stainedglass.green.name">Gr\u00fcn get\u00f6ntes Glas</entry>
<entry key="block.stainedglass.red.name">Rot get\u00f6ntes Glas</entry>
<entry key="block.stainedglass.black.name">Schwarz get\u00f6ntes Glas</entry>
<entry key="block.stainedglass.white.pane.name">Wei\u00df get\u00f6nte Glasscheibe</entry>
<entry key="block.stainedglass.orange.pane.name">Orange get\u00f6nte Glasscheibe</entry>
<entry key="block.stainedglass.magenta.pane.name">Magenta get\u00f6nte Glasscheibe</entry>
<entry key="block.stainedglass.lightblue.pane.name">Hellblau get\u00f6nte Glasscheibe</entry>
<entry key="block.stainedglass.yellow.pane.name">Gelb get\u00f6nte Glasscheibe</entry>
<entry key="block.stainedglass.lime.pane.name">Hellgr\u00fcn get\u00f6nte Glasscheibe</entry>
<entry key="block.stainedglass.pink.pane.name">Rosa get\u00f6nte Glasscheibe</entry>
<entry key="block.stainedglass.gray.pane.name">Grau get\u00f6nte Glasscheibe</entry>
<entry key="block.stainedglass.lightgray.pane.name">Hellgrau get\u00f6nte Glasscheibe</entry>
<entry key="block.stainedglass.cyan.pane.name">Zyan get\u00f6nte Glasscheibe</entry>
<entry key="block.stainedglass.purple.pane.name">Violett get\u00f6nte Glasscheibe</entry>
<entry key="block.stainedglass.blue.pane.name">Blau get\u00f6nte Glasscheibe</entry>
<entry key="block.stainedglass.brown.pane.name">Braun get\u00f6nte Glasscheibe</entry>
<entry key="block.stainedglass.green.pane.name">Gr\u00fcn get\u00f6nte Glasscheibe</entry>
<entry key="block.stainedglass.red.pane.name">Rot get\u00f6nte Glasscheibe</entry>
<entry key="block.stainedglass.black.pane.name">Schwarz get\u00f6nte Glasscheibe</entry>
<entry key="block.glass.pure.pane.name">Klare Glasscheibe</entry>
<entry key="block.glass.soul.pane.name">Seelenglasscheibe</entry>
<entry key="block.glass.soul.pane.pure.name">Klare Seelenglasscheibe</entry>
<entry key="block.stainedglass.white.name">Weiß getöntes Glas</entry>
<entry key="block.stainedglass.orange.name">Orange getöntes Glas</entry>
<entry key="block.stainedglass.magenta.name">Magenta getöntes Glas</entry>
<entry key="block.stainedglass.lightblue.name">Hellblau getöntes Glas</entry>
<entry key="block.stainedglass.yellow.name">Gelb getöntes Glas</entry>
<entry key="block.stainedglass.lime.name">Hellgrün getöntes Glas</entry>
<entry key="block.stainedglass.pink.name">Rosa getöntes Glas</entry>
<entry key="block.stainedglass.gray.name">Grau getöntes Glas</entry>
<entry key="block.stainedglass.lightgray.name">Hellgrau getöntes Glas</entry>
<entry key="block.stainedglass.cyan.name">Türkis getöntes Glas</entry>
<entry key="block.stainedglass.purple.name">Violett getöntes Glas</entry>
<entry key="block.stainedglass.blue.name">Blau getöntes Glas</entry>
<entry key="block.stainedglass.brown.name">Braun getöntes Glas</entry>
<entry key="block.stainedglass.green.name">Grün getöntes Glas</entry>
<entry key="block.stainedglass.red.name">Rot getöntes Glas</entry>
<entry key="block.stainedglass.black.name">Schwarz getöntes Glas</entry>
<entry key="block.stainedglass.white.pane.name">Weiß getönte Glasscheibe</entry>
<entry key="block.stainedglass.orange.pane.name">Orange getönte Glasscheibe</entry>
<entry key="block.stainedglass.magenta.pane.name">Magenta getönte Glasscheibe</entry>
<entry key="block.stainedglass.lightblue.pane.name">Hellblau getönte Glasscheibe</entry>
<entry key="block.stainedglass.yellow.pane.name">Gelb getönte Glasscheibe</entry>
<entry key="block.stainedglass.lime.pane.name">Hellgrün getönte Glasscheibe</entry>
<entry key="block.stainedglass.pink.pane.name">Rosa getönte Glasscheibe</entry>
<entry key="block.stainedglass.gray.pane.name">Grau getönte Glasscheibe</entry>
<entry key="block.stainedglass.lightgray.pane.name">Hellgrau getönte Glasscheibe</entry>
<entry key="block.stainedglass.cyan.pane.name">Türkis getönte Glasscheibe</entry>
<entry key="block.stainedglass.purple.pane.name">Violett getönte Glasscheibe</entry>
<entry key="block.stainedglass.blue.pane.name">Blau getönte Glasscheibe</entry>
<entry key="block.stainedglass.brown.pane.name">Braun getönte Glasscheibe</entry>
<entry key="block.stainedglass.green.pane.name">Grün getönte Glasscheibe</entry>
<entry key="block.stainedglass.red.pane.name">Rot getönte Glasscheibe</entry>
<entry key="block.stainedglass.black.pane.name">Schwarz getönte Glasscheibe</entry>
<entry key="block.searedstone.slab.brick.name">Versengte Ziegelstufe</entry>
<entry key="block.searedstone.slab.stone.name">Versengte Steinstufe</entry>
<entry key="block.searedstone.slab.cobble.name">Versengte Cobblestonestufe</entry>
<entry key="block.searedstone.slab.paver.name">Versengte Pflasterstufe</entry>
<entry key="block.searedstone.slab.road.name">Versengte Stra\u00dfenstufe</entry>
<entry key="block.searedstone.slab.fancy.name">Versengte sch\u00f6ne Stufe</entry>
<entry key="block.searedstone.slab.road.name">Versengte Straßenstufe</entry>
<entry key="block.searedstone.slab.fancy.name">Versengte schöne Stufe</entry>
<entry key="block.searedstone.slab.square.name">Versengte ziselierte Stufe</entry>
<entry key="block.searedstone.slab.creeper.name">Versengte ziselierte Stufe</entry>
<entry key="block.soil.slab.dirt.name">Erdstufe</entry>
<entry key="block.soil.slab.mycelium.name">Myzelstufe</entry>
<entry key="block.soil.slab.slime.name">Schleimige Matschstufe</entry>
<entry key="block.soil.slab.grout.name">M\u00f6rtelstufe</entry>
<entry key="block.soil.slab.grout.name">Mörtelstufe</entry>
<entry key="block.soil.slab.blueslime.name">Schleimige Matschstufe (blau)</entry>
<entry key="block.soil.slab.graveyardsoil.name">Friedhofserdenstufe</entry>
<entry key="block.soil.slab.consecratedsoil.name">Gesegnete Erdstufe</entry>
@@ -230,53 +247,52 @@
<entry key="item.tconstruct.Bowstring.string.name">Bogensehne</entry>
<entry key="item.tconstruct.Bowstring.enchantedfabric.name">Verzauberte Bogensehne</entry>
<entry key="item.tconstruct.Fletching.feather.name">Federne Befiederung</entry>
<entry key="item.tconstruct.Fletching.leaf.name">Bl\u00e4tterne Befiederung</entry>
<entry key="item.tconstruct.Fletching.leaf.name">Blätterne Befiederung</entry>
<entry key="item.tconstruct.Fletching.slime.name">Schleimige Befiederung</entry>
<entry key="item.tconstruct.Fletching.blueslime.name">Blaue schleimige Befiederung</entry>
<entry key="item.tconstruct.manual.beginner.name">Aller Anfang ist schwer</entry>
<entry key="item.tconstruct.manual.toolstation.name">Du und deine Materialien</entry>
<entry key="item.tconstruct.manual.smeltery.name">Die M\u00e4chtige Schmelzerei</entry>
<entry key="item.tconstruct.manual.smeltery.name">Die Mächtige Schmelzerei</entry>
<entry key="item.tconstruct.bucket.Iron.name">Eimer mit fl\u00fcssigem Eisen</entry>
<entry key="item.tconstruct.bucket.Gold.name">Eimer mit fl\u00fcssigem Gold</entry>
<entry key="item.tconstruct.bucket.Copper.name">Eimer mit fl\u00fcssigem Kupfer</entry>
<entry key="item.tconstruct.bucket.Tin.name">Eimer mit fl\u00fcssigem Zinn</entry>
<entry key="item.tconstruct.bucket.Aluminum.name">Eimer mit fl\u00fcssigem Aluminium</entry>
<entry key="item.tconstruct.bucket.Cobalt.name">Eimer mit fl\u00fcssigem Cobalt</entry>
<entry key="item.tconstruct.bucket.Ardite.name">Eimer mit fl\u00fcssigem Ardium</entry>
<entry key="item.tconstruct.bucket.Bronze.name">Eimer mit fl\u00fcssigem Bronze</entry>
<entry key="item.tconstruct.bucket.AluBrass.name">Eimer mit fl\u00fcssigem Duraluminium</entry>
<entry key="item.tconstruct.bucket.Manyullyn.name">Eimer mit fl\u00fcssigem Manyullyn</entry>
<entry key="item.tconstruct.bucket.Alumite.name">Eimer mit fl\u00fcssigem Alumit</entry>
<entry key="item.tconstruct.bucket.Obsidian.name">Eimer mit fl\u00fcssigem Obsidian</entry>
<entry key="item.tconstruct.bucket.Steel.name">Eimer mit fl\u00fcssigem Stahl</entry>
<entry key="item.tconstruct.bucket.Glass.name">Eimer mit fl\u00fcssigem Glas</entry>
<entry key="item.tconstruct.bucket.Iron.name">Eimer mit flüssigem Eisen</entry>
<entry key="item.tconstruct.bucket.Gold.name">Eimer mit flüssigem Gold</entry>
<entry key="item.tconstruct.bucket.Copper.name">Eimer mit flüssigem Kupfer</entry>
<entry key="item.tconstruct.bucket.Tin.name">Eimer mit flüssigem Zinn</entry>
<entry key="item.tconstruct.bucket.Aluminum.name">Eimer mit flüssigem Aluminium</entry>
<entry key="item.tconstruct.bucket.Cobalt.name">Eimer mit flüssigem Cobalt</entry>
<entry key="item.tconstruct.bucket.Ardite.name">Eimer mit flüssigem Ardit</entry>
<entry key="item.tconstruct.bucket.Bronze.name">Eimer mit flüssigem Bronze</entry>
<entry key="item.tconstruct.bucket.AluBrass.name">Eimer mit flüssigem Duraluminium</entry>
<entry key="item.tconstruct.bucket.Manyullyn.name">Eimer mit flüssigem Manyullyn</entry>
<entry key="item.tconstruct.bucket.Alumite.name">Eimer mit flüssigem Alumit</entry>
<entry key="item.tconstruct.bucket.Obsidian.name">Eimer mit flüssigem Obsidian</entry>
<entry key="item.tconstruct.bucket.Steel.name">Eimer mit flüssigem Stahl</entry>
<entry key="item.tconstruct.bucket.Glass.name">Eimer mit flüssigem Glas</entry>
<entry key="item.tconstruct.bucket.Stone.name">Eimer mit versengtem Gestein</entry>
<entry key="item.tconstruct.bucket.Villager.name">Eimer mit fl\u00fcssigem Smaragd</entry>
<entry key="item.tconstruct.bucket.Villager.name">Eimer mit flüssigem Smaragd</entry>
<entry key="item.tconstruct.bucket.Cow.name">Eimer mit Blut</entry>
<entry key="item.tconstruct.bowstring.string.name">Bogensehne</entry>
<entry key="item.tconstruct.bowstring.enchantedfabriI donc.name">Verzauberte Bogensehne</entry>
<entry key="LiquidMetal.Iron.name">Fl\u00fcssiges Eisen</entry>
<entry key="LiquidMetal.Gold.name">Fl\u00fcssiges Gold</entry>
<entry key="LiquidMetal.Copper.name">Fl\u00fcssiges Kupfer</entry>
<entry key="LiquidMetal.Tin.name">Fl\u00fcssiges Zinn</entry>
<entry key="LiquidMetal.Aluminum.name">Fl\u00fcssiges Aluminium</entry>
<entry key="LiquidMetal.Cobalt.name">Fl\u00fcssiges Cobalt</entry>
<entry key="LiquidMetal.Ardite.name">Fl\u00fcssiges Ardium</entry>
<entry key="LiquidMetal.Bronze.name">Fl\u00fcssige Bronze</entry>
<entry key="LiquidMetal.AluBrass.name">Fl\u00fcssiges Duraluminium</entry>
<entry key="LiquidMetal.Manyullyn.name">Fl\u00fcssiges Manyullyn</entry>
<entry key="LiquidMetal.Alumite.name">Fl\u00fcssiges Alumit</entry>
<entry key="LiquidMetal.Obsidian.name">Fl\u00fcssiger Obsidian</entry>
<entry key="LiquidMetal.Steel.name">Fl\u00fcssiger Stahl</entry>
<entry key="LiquidMetal.Glass.name">Fl\u00fcssiges Glas</entry>
<entry key="LiquidMetal.Stone.name">Fl\u00fcssiges Gestein</entry>
<entry key="LiquidMetal.Villager.name">Fl\u00fcssiger Smaragd</entry>
<entry key="LiquidMetal.Iron.name">Flüssiges Eisen</entry>
<entry key="LiquidMetal.Gold.name">Flüssiges Gold</entry>
<entry key="LiquidMetal.Copper.name">Flüssiges Kupfer</entry>
<entry key="LiquidMetal.Tin.name">Flüssiges Zinn</entry>
<entry key="LiquidMetal.Aluminum.name">Flüssiges Aluminium</entry>
<entry key="LiquidMetal.Cobalt.name">Flüssiges Cobalt</entry>
<entry key="LiquidMetal.Ardite.name">Flüssiges Ardit</entry>
<entry key="LiquidMetal.Bronze.name">Flüssige Bronze</entry>
<entry key="LiquidMetal.AluBrass.name">Flüssiges Duraluminium</entry>
<entry key="LiquidMetal.Manyullyn.name">Flüssiges Manyullyn</entry>
<entry key="LiquidMetal.Alumite.name">Flüssiges Alumit</entry>
<entry key="LiquidMetal.Obsidian.name">Flüssiger Obsidian</entry>
<entry key="LiquidMetal.Steel.name">Flüssiger Stahl</entry>
<entry key="LiquidMetal.Glass.name">Flüssiges Glas</entry>
<entry key="LiquidMetal.Stone.name">Flüssiges Gestein</entry>
<entry key="LiquidMetal.Villager.name">Flüssiger Smaragd</entry>
<entry key="LiquidMetal.Cow.name">Blut</entry>
<entry key="item.food.apple.diamond.name">Verzierter Apfel</entry>
@@ -291,14 +307,14 @@
<entry key="SearedBlock.Basin.name">Gussbecken</entry>
<entry key="entity.TConstruct.EdibleSlime.name">Blauer Schleim</entry>
<entry key="entity.TConstruct.KingSlime.name">K\u00f6nigsschleim</entry>
<entry key="entity.TConstruct.MiniGardy.name">Schutzschleim</entry>
<entry key="entity.TConstruct.KingSlime.name">Königsschleim</entry>
<entry key="entity.TConstruct.Gardeslime.name">Schutzschleim</entry>
<entry key="key.tarmor">R\u00fcstungs-GUI</entry>
<entry key="key.tarmor">Rüstungs-GUI</entry>
<entry key="death.one.smeltery">%1$s wurde in eine Proteinmasse verwandelt</entry>
<entry key="death.two.smeltery">%1$s ist mit der Schmelzerei eins geworden</entry>
<entry key="death.three.smeltery">%1$s wird ein Meilenstein f\u00fcr unsere Revolution sein!</entry>
<entry key="death.four.smeltery">%1$s dachte, das Schwimmen in hei\u00dfen Fl\u00fcssigkeiten w\u00e4re eine gute Idee</entry>
<entry key="death.three.smeltery">%1$s wird ein Meilenstein für unsere Revolution sein!</entry>
<entry key="death.four.smeltery">%1$s dachte, das Schwimmen in heißen Flüssigkeiten wäre eine gute Idee</entry>
</properties>
</properties>
+38 -2
View File
@@ -21,6 +21,7 @@
<entry key="ToolStation.CastingTable.name">Casting Table</entry>
<entry key="tile.ToolForge.name">Tool Forge</entry>
<entry key="tile.CraftingStation.name">Crafting Station</entry>
<entry key="tile.Armor.DryingRack.name">Drying Rack</entry>
<entry key="CraftedSoil.Slime.name">Slimy Mud</entry>
<entry key="CraftedSoil.Grout.name">Grout</entry>
@@ -160,6 +161,11 @@
<entry key="block.drawbridge.name">Drawbridge</entry>
<entry key="block.firestarter.name">Igniter</entry>
<entry key="tile.landmine.name">Landmine</entry>
<entry key="tile.trap.punji.name">Punji Stick</entry>
<entry key="tile.trap.barricade.oak.name">Oak Barricade</entry>
<entry key="tile.trap.barricade.spruce.name">Spruce Barricade</entry>
<entry key="tile.trap.barricade.birch.name">Birch Barricade</entry>
<entry key="tile.trap.barricade.jungle.name">Jungle Barricade</entry>
<entry key="StorageMetals.Cobalt.name">Block of Cobalt</entry>
<entry key="StorageMetals.Ardite.name">Block of Ardite</entry>
@@ -267,12 +273,12 @@
<entry key="item.tconstruct.bucket.Cow.name">Bucket o' Blood</entry>
<entry key="item.tconstruct.bowstring.string.name">Bowstring</entry>
<entry key="item.tconstruct.bowstring.enchantedfabriI donc.name">Enchanted Bowstring</entry>
<entry key="item.tconstruct.bowstring.enchantedfabric.name">Enchanted Bowstring</entry>
<entry key="tile.metal.molten.iron.name">Molten Iron</entry>
<entry key="tile.metal.molten.gold.name">Molten Gold</entry>
<entry key="tile.metal.molten.copper.name">Molten Copper</entry>
<entry key="tile.metal.molten.tin.name">Liquid Tin</entry>
<entry key="tile.metal.molten.tin.name">Molten Tin</entry>
<entry key="tile.metal.molten.aluminum.name">Molten Aluminum</entry>
<entry key="tile.metal.molten.cobalt.name">Molten Cobalt</entry>
<entry key="tile.metal.molten.ardite.name">Molten Ardite</entry>
@@ -286,6 +292,12 @@
<entry key="tile.molten.stone.name">Seared Stone</entry>
<entry key="tile.molten.emerald.name">Liquified Emerald</entry>
<entry key="tile.molten.blood.name">Blood</entry>
<entry key="tile.metal.molten.nickel.name">Molten Nickel</entry>
<entry key="tile.metal.molten.lead.name">Molten Lead</entry>
<entry key="tile.metal.molten.silver.name">Molten Silver</entry>
<entry key="tile.metal.molten.shiny.name">Molten Shiny</entry>
<entry key="tile.metal.molten.invar.name">Molten Invar</entry>
<entry key="tile.metal.molten.electrum.name">Molten Electrum</entry>
<entry key="item.food.apple.diamond.name">Jeweled Apple</entry>
<entry key="item.tconstruct.strangefood.edibleslime.name">Gelatinous Slime</entry>
@@ -331,4 +343,28 @@
<entry key="parttype.Steel">Steel</entry>
<entry key="parttype.BlueSlime">Slime</entry>
<entry key="molten iron">Molten Iron</entry>
<entry key="molten gold">Molten Gold</entry>
<entry key="molten copper">Molten Copper</entry>
<entry key="molten tin">Molten Tin</entry>
<entry key="molten aluminum">Molten Aluminum</entry>
<entry key="molten cobalt">Molten Cobalt</entry>
<entry key="molten ardite">Molten Ardite</entry>
<entry key="molten bronze">Molten Bronze</entry>
<entry key="molten aluminum brass">Molten Aluminum Brass</entry>
<entry key="molten manyullyn">Molten Manyullyn</entry>
<entry key="molten alumite">Molten Alumite</entry>
<entry key="molten obsidian">Molten Obsidian</entry>
<entry key="molten steel">Molten Steel</entry>
<entry key="molten glass">Molten Glass</entry>
<entry key="seared stone">Seared Stone</entry>
<entry key="liquified emerald">Liquified Emerald</entry>
<entry key="blood">Blood</entry>
<entry key="molten nickel">Molten Nickel</entry>
<entry key="molten lead">Molten Lead</entry>
<entry key="molten silver">Molten Silver</entry>
<entry key="molten platinum">Molten Platinum</entry>
<entry key="molten invar">Molten Invar</entry>
<entry key="molten shiny">Molten Shiny</entry>
</properties>
+334
View File
@@ -0,0 +1,334 @@
<?xml version="1.0"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties version = "1.0">
<entry key="itemGroup.TConstructTools">TConstruct инструменты</entry>
<entry key="itemGroup.TConstructMaterials">TConstruct материалы</entry>
<entry key="itemGroup.TConstructBlocks">TConstruct блоки</entry>
<entry key="crafters.ToolStation">Инструментальная станция</entry>
<entry key="crafters.ToolForge">Инструментальная кузница</entry>
<entry key="crafters.PartBuilder">Создатель деталей</entry>
<entry key="crafters.PatternShaper">Трафаретный стол</entry>
<entry key="inventory.PatternChest">Сундук со схемами</entry>
<entry key="crafters.Smeltery">Плавильня</entry>
<entry key="crafters.Frypan">Сковорода</entry>
<entry key="inventory.knapsack">Ранец</entry>
<entry key="ToolStation.Crafter.name">Инструментальная станция</entry>
<entry key="ToolStation.Parts.name">Создатель деталей</entry>
<entry key="ToolStation.PatternChest.name">Сундук со схемами</entry>
<entry key="ToolStation.PatternShaper.name">Трафаретный стол/entry>
<entry key="ToolStation.CastingTable.name">Литейный стол</entry>
<entry key="tile.ToolForge.name">Инструментальная кузница</entry>
<entry key="tile.Armor.DryingRack.name">Штатив для сушки</entry>
<entry key="CraftedSoil.Slime.name">Слизистая грязь</entry>
<entry key="CraftedSoil.Grout.name">Осадок</entry>
<entry key="CraftedSoil.BlueSlime.name">Слизистая грязь</entry>
<entry key="CraftedSoil.GraveyardSoil.name">Кладбищенская почва</entry>
<entry key="CraftedSoil.ConsecratedSoil.name">Священная почва</entry>
<entry key="MetalOre.NetherSlag.name">Адская окалина</entry>
<entry key="MetalOre.Cobalt.name">Кобальтовая руда</entry>
<entry key="MetalOre.Ardite.name">Ардитовая руда</entry>
<entry key="MetalOre.Copper.name">Медная руда</entry>
<entry key="MetalOre.Tin.name">Оловянная руда</entry>
<entry key="MetalOre.Aluminum.name">Алюминиевая руда</entry>
<entry key="MetalOre.Slag.name">Каменная окалина</entry>
<entry key="block.oreberry.iron.name">Железный рудный куст</entry>
<entry key="block.oreberry.gold.name">Золотой рудный куст</entry>
<entry key="block.oreberry.copper.name">Медный рудный куст</entry>
<entry key="block.oreberry.tin.name">Оловянный рудный куст</entry>
<entry key="block.oreberry.aluminum.name">Алюминиевый рудный куст</entry>
<entry key="block.oreberry.essence.name">Куст рудной эссенции</entry>
<entry key="block.ore.gravel.iron.name">Железная гравиевая руда</entry>
<entry key="block.ore.gravel.gold.name">Золотая гравиевая руда</entry>
<entry key="block.ore.gravel.copper.name">Медная гравиевая руда</entry>
<entry key="block.ore.gravel.tin.name">Оловянная гравиевая руда</entry>
<entry key="block.ore.gravel.aluminum.name">Алюминиевая гравиевая руда</entry>
<entry key="block.ore.gravel.cobalt.name">Кобальтовая гравиевая руда</entry>
<entry key="block.brownstone.rough.name">Грубый бурый песчаник</entry>
<entry key="block.brownstone.rough.road.name">Дорога из грубого бурого песчаника</entry>
<entry key="block.brownstone.smooth.name">Бурый песчаник</entry>
<entry key="block.brownstone.smooth.brick.name">Кирпич из бурого песчаника</entry>
<entry key="block.brownstone.smooth.road.name">Дорога из бурго песчаника</entry>
<entry key="block.brownstone.smooth.fancy.name">Красивый бурый песчаник</entry>
<entry key="block.brownstone.smooth.chiseled.name">Резной бурый песчаник</entry>
<entry key="block.brownstone.rough.slab.name">Плита из грубого бурого песчаника</entry>
<entry key="block.brownstone.rough.road.slab.name">Плита из грубого дорожного бурого песчаника</entry>
<entry key="block.brownstone.smooth.slab.name">Плита из бурого песчаника</entry>
<entry key="block.brownstone.smooth.brick.slab.name">Плита из кирпича бурого песчаника</entry>
<entry key="block.brownstone.smooth.road.slab.name">Плита из дорожного бурого песчаника</entry>
<entry key="block.brownstone.smooth.fancy.slab.name">Плита из красивого бурого песчаника</entry>
<entry key="block.brownstone.smooth.chiseled.slab.name">Плита из резного бурого песчаника</entry>
<entry key="block.brick.obsidian.name">Обсидиановый кирпич</entry>
<entry key="block.brick.sandstone.name">Песчаный кирпич</entry>
<entry key="block.brick.netherrack.name">Адский кирпич</entry>
<entry key="block.brick.iron.name">Железный кирпич</entry>
<entry key="block.brick.gold.name">Золотой кирпич</entry>
<entry key="block.brick.diamond.name">Алмазный кирпич</entry>
<entry key="block.brick.lapis.name">Лазуритовый кирпич</entry>
<entry key="block.brick.stone.refined.name">Кирпич из отполированного камня</entry>
<entry key="block.brick.redstone.name">Редстоун кирпич</entry>
<entry key="block.brick.bone.name">Костяной кирпич</entry>
<entry key="block.brick.slime.name">Слизистый кирпич</entry>
<entry key="block.brick.blueslime.name">Слизистый кирпич</entry>
<entry key="block.brick.endstone.name">Кирпич из камня края</entry>
<entry key="block.brick.obsidian.ingot.name">Обсидиановый кирпич</entry>
<entry key="block.fancybrick.obsidian.name">Красивый обсидиановый кирпич</entry>
<entry key="block.fancybrick.sandstone.name">Красивый песчаный кирпич</entry>
<entry key="block.fancybrick.netherrack.name">Красивый адский кирпич</entry>
<entry key="block.fancybrick.iron.name">Красивый железный кирпич</entry>
<entry key="block.fancybrick.gold.name">Красивый золотой кирпич</entry>
<entry key="block.fancybrick.diamond.name">Красивый алмазный кирпич</entry>
<entry key="block.fancybrick.lapis.name">Красивый лазуритовый кирпич</entry>
<entry key="block.fancybrick.stone.refined.name">Кирпич из красивого отполированного камня</entry>
<entry key="block.fancybrick.redstone.name">Кирпич из красивого редстоуна</entry>
<entry key="block.fancybrick.bone.name">Красивый костяной кирпич</entry>
<entry key="block.fancybrick.slime.name">Красивый слизистый кирпич</entry>
<entry key="block.fancybrick.blueslime.name">Красивый слизистый кирпич</entry>
<entry key="block.fancybrick.endstone.name">Кирпич из красивого камня края</entry>
<entry key="block.fancybrick.obsidian.ingot.name">Красивый обсидиановый кирпич</entry>
<entry key="block.fancybrick.stone.road.name">Каменная дорого</entry>
<entry key="block.fancybrick.stone.name">Кирпич из красивого камня</entry>
<entry key="item.oreberry.iron.name">Кусочки железа</entry>
<entry key="item.oreberry.gold.name">Кусочки золота</entry>
<entry key="item.oreberry.copper.name">Кусочки меди</entry>
<entry key="item.oreberry.tin.name">Кусочки олова</entry>
<entry key="item.oreberry.aluminum.name">Кусочки алюминия</entry>
<entry key="item.oreberry.essence.name">Кусочки концентрированной эссенции</entry>
<entry key="item.goldenhead.name">Золотистая голова</entry>
<entry key="item.tconstruct.titleicon.name">Spawn </entry>
<entry key="item.tconstruct.Materials.PaperStack.name">Кучка бумаги</entry>
<entry key="item.tconstruct.Materials.SlimeCrystal.name">Кристалл слизи</entry>
<entry key="item.tconstruct.Materials.SearedBrick.name">Обожжённый кирпич</entry>
<entry key="item.tconstruct.Materials.CobaltIngot.name">Кобальтовый слиток</entry>
<entry key="item.tconstruct.Materials.ArditeIngot.name">Ардитовый слиток</entry>
<entry key="item.tconstruct.Materials.ManyullynIngot.name">Мануллиновый слиток</entry>
<entry key="item.tconstruct.Materials.Mossball.name">Шарик мха</entry>
<entry key="item.tconstruct.Materials.LavaCrystal.name">Кристалл лавы</entry>
<entry key="item.tconstruct.Materials.NecroticBone.name">Некротическая кость</entry>
<entry key="item.tconstruct.Materials.CopperIngot.name">Медный слиток</entry>
<entry key="item.tconstruct.Materials.TinIngot.name">Оловянный слиток</entry>
<entry key="item.tconstruct.Materials.AluminumIngot.name">Алюминиевый слиток</entry>
<entry key="item.tconstruct.Materials.RawAluminum.name">Необработанный алюминий</entry>
<entry key="item.tconstruct.Materials.BronzeIngot.name">Бронзовый слиток</entry>
<entry key="item.tconstruct.Materials.AluBrassIngot.name">Слиток алюминиевой латуни</entry>
<entry key="item.tconstruct.Materials.AlumiteIngot.name">Алюмитовый слиток</entry>
<entry key="item.tconstruct.Materials.SteelIngot.name">Стальной слиток</entry>
<entry key="item.tconstruct.Materials.BlueSlimeCrystal.name">Кристалл слизи</entry>
<entry key="item.tconstruct.Materials.ObsidianIngot.name">Обсидиановый слиток</entry>
<entry key="item.tconstruct.Materials.IronNugget.name">Железный самородок</entry>
<entry key="item.tconstruct.Materials.CopperNugget.name">Медный самородок</entry>
<entry key="item.tconstruct.Materials.TinNugget.name">Оловянный самородок</entry>
<entry key="item.tconstruct.Materials.AluminumNugget.name">Алюминиевый самородок</entry>
<entry key="item.tconstruct.Materials.EssenceCrystal.name">Кристалл эссенции</entry>
<entry key="item.tconstruct.Materials.AluBrassNugget.name">Самородок алюминиевой латуни</entry>
<entry key="item.tconstruct.Materials.ObsidianNugget.name">Обсидиановый самородок</entry>
<entry key="item.tconstruct.Materials.CobaltNugget.name">Кобальтовый самородок</entry>
<entry key="item.tconstruct.Materials.ArditeNugget.name">Ардитовый самородок</entry>
<entry key="item.tconstruct.Materials.ManyullynNugget.name">Мануллиновый самородок</entry>
<entry key="item.tconstruct.Materials.BronzeNugget.name">Бронзовый самородок</entry>
<entry key="item.tconstruct.Materials.AlumiteNugget.name">Алюмитовый самородок</entry>
<entry key="item.tconstruct.Materials.SteelNugget.name">Кусочек стали</entry>
<entry key="Smeltery.Controller.name">Контроллер плавильни</entry>
<entry key="Smeltery.Drain.name">Водосток плавильни</entry>
<entry key="Smeltery.Brick.name">Обожжённые кирпичи</entry>
<entry key="Smeltery.Stone.name">Обожжённый камень</entry>
<entry key="Smeltery.Cobblestone.name">Обожжённый булыжник</entry>
<entry key="Smeltery.Paver.name">Обожжённая брусчатка</entry>
<entry key="Smeltery.Brick.Cracked.name">Потресканные обожжённые кирпичи</entry>
<entry key="Smeltery.Road.name">Обожжённая дорога</entry>
<entry key="Smeltery.Brick.Fancy.name">Красивые обожжённые кирпичи</entry>
<entry key="Smeltery.Brick.Square.name">Резные обожжённые кирпичи</entry>
<entry key="Smeltery.Brick.Creeper.name">Резные обожжённые кирпичи</entry>
<entry key="LavaTank.Tank.name">Обожжённый резервуар</entry>
<entry key="LavaTank.Gague.name">Обожжённое стекло</entry>
<entry key="LavaTank.Window.name">Обожжённое окно</entry>
<entry key="block.drawbridge.name">Разводной мост</entry>
<entry key="block.firestarter.name">Воспламенитель</entry>
<entry key="tile.landmine.name">Фугас</entry>
<entry key="StorageMetals.Cobalt.name">Кобальтовый блок</entry>
<entry key="StorageMetals.Ardite.name">Ардитовый блок</entry>
<entry key="StorageMetals.Manyullyn.name">Мануллиновый блок</entry>
<entry key="StorageMetals.Copper.name">Медный блок</entry>
<entry key="StorageMetals.Bronze.name">Бронзовый блок</entry>
<entry key="StorageMetals.Tin.name">Оловянный блок</entry>
<entry key="StorageMetals.Aluminum.name">Алюминиевый блок</entry>
<entry key="StorageMetals.AlBrass.name">Блок алюминиевой латуни</entry>
<entry key="StorageMetals.Alumite.name">Алюмитовый блок</entry>
<entry key="StorageMetals.Steel.name">Стальной блок</entry>
<entry key="tile.decoration.stonetorch.name">Факел</entry>
<entry key="block.glass.pure.name">Чистое стекло</entry>
<entry key="block.glass.soul.name">Душевное стекло</entry>
<entry key="block.glass.soul.pure.name">Чистое душевное стекло</entry>
<entry key="block.glass.pure.pane.name">Чистая стеклянная панель</entry>
<entry key="block.glass.soul.pane.name">Душевная стеклянная панель</entry>
<entry key="block.glass.soul.pane.pure.name">Чистая душевная стеклянная панель</entry>
<entry key="block.stainedglass.white.name">Белое стекло</entry>
<entry key="block.stainedglass.orange.name">Оранжевое стекло</entry>
<entry key="block.stainedglass.magenta.name">Сиреневое стекло</entry>
<entry key="block.stainedglass.lightblue.name">Светло-синее стекло</entry>
<entry key="block.stainedglass.yellow.name">Жёлтое стекло</entry>
<entry key="block.stainedglass.lime.name">Лаймовое стекло</entry>
<entry key="block.stainedglass.pink.name">Розовое стекло</entry>
<entry key="block.stainedglass.gray.name">Серое стекло</entry>
<entry key="block.stainedglass.lightgray.name">Светло-серое стекло</entry>
<entry key="block.stainedglass.cyan.name">Бирюзовое стекло</entry>
<entry key="block.stainedglass.purple.name">Фиолетовое стекло</entry>
<entry key="block.stainedglass.blue.name">Синее стекло</entry>
<entry key="block.stainedglass.brown.name">Коричневое стекло</entry>
<entry key="block.stainedglass.green.name">Зелёное стекло</entry>
<entry key="block.stainedglass.red.name">Красное стекло</entry>
<entry key="block.stainedglass.black.name">Чёрное стекло</entry>
<entry key="block.stainedglass.white.pane.name">Белая стеклянная панель</entry>
<entry key="block.stainedglass.orange.pane.name">Оранжевая стеклянная панель</entry>
<entry key="block.stainedglass.magenta.pane.name">Сиреневая стеклянная панель</entry>
<entry key="block.stainedglass.lightblue.pane.name">Светло-синяя стеклянная панель</entry>
<entry key="block.stainedglass.yellow.pane.name">Жёлтая стеклянная панель</entry>
<entry key="block.stainedglass.lime.pane.name">Лаймовая стеклянная панель</entry>
<entry key="block.stainedglass.pink.pane.name">Розовая стеклянная панель</entry>
<entry key="block.stainedglass.gray.pane.name">Серая стеклянная панель</entry>
<entry key="block.stainedglass.lightgray.pane.name">Светло-серая стеклянная панель</entry>
<entry key="block.stainedglass.cyan.pane.name">Бирюзовая стеклянная панель</entry>
<entry key="block.stainedglass.purple.pane.name">Фиолетовая стеклянная панель</entry>
<entry key="block.stainedglass.blue.pane.name">Синяя стеклянная панель</entry>
<entry key="block.stainedglass.brown.pane.name">Коричневая стеклянная панель</entry>
<entry key="block.stainedglass.green.pane.name">Зелёная стеклянная панель</entry>
<entry key="block.stainedglass.red.pane.name">Красная стеклянная панель</entry>
<entry key="block.stainedglass.black.pane.name">Чёрная стеклянная панель</entry>
<entry key="block.searedstone.slab.brick.name">Плита из обожжённого кирпича</entry>
<entry key="block.searedstone.slab.stone.name">Плита из обожжённого камня</entry>
<entry key="block.searedstone.slab.cobble.name">Плита из обожжённого булыжника</entry>
<entry key="block.searedstone.slab.paver.name">Плита из обожжённой брусчатки</entry>
<entry key="block.searedstone.slab.road.name">Плита из обожжённой дороги</entry>
<entry key="block.searedstone.slab.fancy.name">Красивая обожжённая плита</entry>
<entry key="block.searedstone.slab.square.name">Резная обожжённая плита</entry>
<entry key="block.searedstone.slab.creeper.name">Резная обожжённая плита</entry>
<entry key="block.soil.slab.dirt.name">Земляная плита</entry>
<entry key="block.soil.slab.mycelium.name">Плита из широкого мицелия</entry>
<entry key="block.soil.slab.slime.name">Плита из слизистой грязи</entry>
<entry key="block.soil.slab.grout.name">Плита из осадка</entry>
<entry key="block.soil.slab.blueslime.name">Плита из слизистой грязи</entry>
<entry key="block.soil.slab.graveyardsoil.name">Плита из кладбищенской почвы</entry>
<entry key="block.soil.slab.consecratedsoil.name">Плита из священной почвы</entry>
<entry key="item.tconstruct.storage.knapsack.name">Ранец</entry>
<entry key="item.tconstruct.blankpattern.pattern.name">Пустая схема</entry>
<entry key="item.tconstruct.blankpattern.cast.name">Чистый чугун</entry>
<entry key="item.tconstruct.Bowstring.string.name">Тетива</entry>
<entry key="item.tconstruct.Bowstring.enchantedfabric.name">Зачарованная тетива</entry>
<entry key="item.tconstruct.Fletching.feather.name">Feather Fletching</entry>
<entry key="item.tconstruct.Fletching.leaf.name">Leaf Fletching</entry>
<entry key="item.tconstruct.Fletching.slime.name">Slime Fletching</entry>
<entry key="item.tconstruct.Fletching.blueslime.name">Slime Fletching</entry>
<entry key="item.tconstruct.manual.beginner.name">Материалы и Вы</entry>
<entry key="item.tconstruct.manual.toolstation.name">Материалы и Вы</entry>
<entry key="item.tconstruct.manual.smeltery.name">Могучая металлургия</entry>
<entry key="item.tconstruct.bucket.Iron.name">Ведро расплавленного железа</entry>
<entry key="item.tconstruct.bucket.Gold.name">Ведро расплавленного золота</entry>
<entry key="item.tconstruct.bucket.Copper.name">Ведро расплавленной меди</entry>
<entry key="item.tconstruct.bucket.Tin.name">Ведро расплавленного олова</entry>
<entry key="item.tconstruct.bucket.Aluminum.name">Ведро расплавленного алюминия</entry>
<entry key="item.tconstruct.bucket.Cobalt.name">Ведро расплавленного кобальта</entry>
<entry key="item.tconstruct.bucket.Ardite.name">Ведро расплавленного ардита</entry>
<entry key="item.tconstruct.bucket.Bronze.name">Ведро расплавленной бронзы</entry>
<entry key="item.tconstruct.bucket.AluBrass.name">Ведро расплавленной алюминиевой латуни</entry>
<entry key="item.tconstruct.bucket.Manyullyn.name">Ведро расплавленного мануллина</entry>
<entry key="item.tconstruct.bucket.Alumite.name">Ведро расплавленного алюмита</entry>
<entry key="item.tconstruct.bucket.Obsidian.name">Ведро расплавленного обсидиана</entry>
<entry key="item.tconstruct.bucket.Steel.name">Ведро расплавленной стали</entry>
<entry key="item.tconstruct.bucket.Glass.name">Ведро расплавленного стекла</entry>
<entry key="item.tconstruct.bucket.Stone.name">Ведро расплавленного обожжённого камня</entry>
<entry key="item.tconstruct.bucket.Villager.name">Ведро сжиженного изумруда</entry>
<entry key="item.tconstruct.bucket.Cow.name">Ведро крови</entry>
<entry key="item.tconstruct.bowstring.string.name">Тетива</entry>
<entry key="item.tconstruct.bowstring.enchantedfabriI donc.name">Зачарованная тетива</entry>
<entry key="tile.metal.molten.iron.name">Расплавленное железо</entry>
<entry key="tile.metal.molten.gold.name">Расплавленное золото</entry>
<entry key="tile.metal.molten.copper.name">Расплавленная медь</entry>
<entry key="tile.metal.molten.tin.name">Жидкое олово</entry>
<entry key="tile.metal.molten.aluminum.name">Расплавленной алюминий</entry>
<entry key="tile.metal.molten.cobalt.name">Расплавленный кобальт</entry>
<entry key="tile.metal.molten.ardite.name">Расплавленный ардит</entry>
<entry key="tile.metal.molten.bronze.name">Расплавленная бронза</entry>
<entry key="tile.metal.molten.alubrass.name">Расплавленная алюминиевая латунь</entry>
<entry key="tile.metal.molten.manyullyn.name">Расплавленный мануллин</entry>
<entry key="tile.metal.molten.alumite.name">Расплавленный алюмит</entry>
<entry key="tile.metal.molten.obsidian.name">Расплавленный обсидиан</entry>
<entry key="tile.metal.molten.steel.name">Расплавленная сталь</entry>
<entry key="tile.metal.molten.glass.name">Расплавленное стекло</entry>
<entry key="tile.molten.stone.name">Расплавленный обожжённый камень</entry>
<entry key="tile.molten.emerald.name">Сжиженный изумруд</entry>
<entry key="tile.molten.blood.name">Кровь</entry>
<entry key="item.food.apple.diamond.name">Драгоценное яблоко</entry>
<entry key="item.tconstruct.strangefood.edibleslime.name">Желатиновая слизь</entry>
<entry key="item.tconstruct.canister.empty.name">Пустая жестяная коробка</entry>
<entry key="item.tconstruct.canister.miniheart.red.name">Миниатюрное красное сердце</entry>
<entry key="item.tconstruct.canister.heart.name">Лечащая жестяная коробка</entry>
<entry key="item.tconstruct.glove.name">Dirtmover Gloves</entry>
<entry key="SearedBlock.Table.name">Литейный стол</entry>
<entry key="SearedBlock.Faucet.name">Seared Faucet</entry>
<entry key="SearedBlock.Basin.name">Литейный резервуар</entry>
<entry key="entity.TConstruct.EdibleSlime.name">Синий слизень</entry>
<entry key="entity.TConstruct.KingSlime.name">Король слизней</entry>
<entry key="entity.TConstruct.MiniGardy.name">Слизень охраник</entry>
<entry key="key.tarmor">Armor Gui</entry>
<entry key="death.one.smeltery">%1$s превратился в зелёный сойлент</entry>
<entry key="death.two.smeltery">%1$s сплавился с плавильней</entry>
<entry key="death.three.smeltery">%1$s станет ступенькой в нашей революции!</entry>
<entry key="death.four.smeltery">%1$s думал, что купание в горячих жидкостях хорошая идея</entry>
<entry key="death.attack.Landmine">%1$s наблюдал за тем как его ноги взорвались</entry>
<entry key="death.fell.assist.Landmine">%1$s был обречён на смерть от мины</entry>
<entry key="death.attack.LandmineFireworkExplode">%1$s взял поездку на фейерверк</entry>
<entry key="parttype.Wood">Wooden</entry>
<entry key="parttype.Stone">Stone</entry>
<entry key="parttype.Iron">Iron</entry>
<entry key="parttype.Flint">Flint</entry>
<entry key="parttype.Cactus">Cactus</entry>
<entry key="parttype.Bone">Bone</entry>
<entry key="parttype.Obsidian">Obsidian</entry>
<entry key="parttype.Slime">Slime</entry>
<entry key="parttype.Paper">Paper</entry>
<entry key="parttype.Cobalt">Cobalt</entry>
<entry key="parttype.Ardite">Ardite</entry>
<entry key="parttype.Manyullyn">Manyullyn</entry>
<entry key="parttype.Copper">Copper</entry>
<entry key="parttype.Bronze">Bronze</entry>
<entry key="parttype.Alumite">Alumite</entry>
<entry key="parttype.Steel">Steel</entry>
<entry key="parttype.BlueSlime">Slime</entry>
</properties>
+336
View File
@@ -0,0 +1,336 @@
<?xml version="1.0"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties version = "1.0">
<entry key="itemGroup.TConstructTools">匠魂|工具</entry>
<entry key="itemGroup.TConstructMaterials">匠魂|材料</entry>
<entry key="itemGroup.TConstructBlocks">匠魂|方块</entry>
<entry key="crafters.ToolStation">工具组装台</entry>
<entry key="crafters.ToolForge">工具装配站</entry>
<entry key="crafters.PartBuilder">零件加工台</entry>
<entry key="crafters.PatternShaper">Stencil Table</entry>
<entry key="inventory.PatternChest">模具箱</entry>
<entry key="crafters.Smeltery">冶炼厂</entry>
<entry key="crafters.Frypan">煎锅</entry>
<entry key="inventory.knapsack">背包</entry>
<entry key="ToolStation.Crafter.name">工具组装台</entry>
<entry key="ToolStation.Parts.name">零件加工台</entry>
<entry key="ToolStation.PatternChest.name">模具箱</entry>
<entry key="ToolStation.PatternShaper.name">模具桌</entry>
<entry key="ToolStation.CastingTable.name">浇铸台</entry>
<entry key="tile.ToolForge.name">工具装配站</entry>
<entry key="tile.Armor.DryingRack.name">晾干架</entry>
<entry key="CraftedSoil.Slime.name">黏滑泥泞</entry>
<entry key="CraftedSoil.Grout.name">水泥</entry>
<entry key="CraftedSoil.BlueSlime.name">黏滑蓝泥泞</entry>
<entry key="CraftedSoil.GraveyardSoil.name">黄泉土</entry>
<entry key="CraftedSoil.ConsecratedSoil.name">神圣土</entry>
<entry key="MetalOre.NetherSlag.name">下界岩碎渣</entry>
<entry key="MetalOre.Cobalt.name">钴矿石</entry>
<entry key="MetalOre.Ardite.name">阿迪特矿石</entry>
<entry key="MetalOre.Copper.name">铜矿石</entry>
<entry key="MetalOre.Tin.name">锡矿石</entry>
<entry key="MetalOre.Aluminum.name">铝矿石</entry>
<entry key="MetalOre.Slag.name">石渣</entry>
<entry key="block.oreberry.iron.name">铁矿莓丛</entry>
<entry key="block.oreberry.gold.name">金矿莓丛</entry>
<entry key="block.oreberry.copper.name">铜矿莓丛</entry>
<entry key="block.oreberry.tin.name">锡矿莓丛</entry>
<entry key="block.oreberry.aluminum.name">铝矿莓丛</entry>
<entry key="block.oreberry.essence.name">精华莓丛</entry>
<entry key="block.ore.gravel.iron.name">铁矿砂砾</entry>
<entry key="block.ore.gravel.gold.name">金矿砂砾</entry>
<entry key="block.ore.gravel.copper.name">铜矿砂砾</entry>
<entry key="block.ore.gravel.tin.name">锡矿砂砾</entry>
<entry key="block.ore.gravel.aluminum.name">铝矿砂砾</entry>
<entry key="block.ore.gravel.cobalt.name">钴矿砂砾</entry>
<entry key="block.brownstone.rough.name">光滑褐岩</entry>
<entry key="block.brownstone.rough.road.name">光滑褐岩铺路石</entry>
<entry key="block.brownstone.smooth.name">褐岩</entry>
<entry key="block.brownstone.smooth.brick.name">褐岩砖</entry>
<entry key="block.brownstone.smooth.road.name">褐岩铺路石</entry>
<entry key="block.brownstone.smooth.fancy.name">平滑褐岩砖</entry>
<entry key="block.brownstone.smooth.chiseled.name">錾制褐岩砖</entry>
<entry key="block.brownstone.rough.slab.name">光滑褐岩台阶</entry>
<entry key="block.brownstone.rough.road.slab.name">光滑褐岩铺路台阶</entry>
<entry key="block.brownstone.smooth.slab.name">褐岩台阶</entry>
<entry key="block.brownstone.smooth.brick.slab.name">褐岩砖台阶</entry>
<entry key="block.brownstone.smooth.road.slab.name">褐岩铺路石台阶</entry>
<entry key="block.brownstone.smooth.fancy.slab.name">平滑褐岩砖台阶</entry>
<entry key="block.brownstone.smooth.chiseled.slab.name">錾制褐岩砖台阶</entry>
<entry key="block.brick.obsidian.name">黑曜石砖块</entry>
<entry key="block.brick.sandstone.name">沙石砖块</entry>
<entry key="block.brick.netherrack.name">平滑下界岩砖块</entry>
<entry key="block.brick.iron.name">铁砖块</entry>
<entry key="block.brick.gold.name">金砖块</entry>
<entry key="block.brick.diamond.name">钻石砖块</entry>
<entry key="block.brick.lapis.name">青金石砖块</entry>
<entry key="block.brick.stone.refined.name">抛光石砖块</entry>
<entry key="block.brick.redstone.name">红石砖块</entry>
<entry key="block.brick.bone.name">白骨砖块</entry>
<entry key="block.brick.slime.name">史莱姆砖块</entry>
<entry key="block.brick.blueslime.name">蓝色史莱姆砖快</entry>
<entry key="block.brick.endstone.name">末地石砖块</entry>
<entry key="block.brick.obsidian.ingot.name">黑曜石锭砖</entry>
<entry key="block.fancybrick.obsidian.name">平滑黑曜石砖</entry>
<entry key="block.fancybrick.sandstone.name">平滑沙石砖</entry>
<entry key="block.fancybrick.netherrack.name">平滑下界岩砖</entry>
<entry key="block.fancybrick.iron.name">平滑铁砖</entry>
<entry key="block.fancybrick.gold.name">平滑金砖</entry>
<entry key="block.fancybrick.diamond.name">平滑钻石砖</entry>
<entry key="block.fancybrick.lapis.name">平滑青金石砖</entry>
<entry key="block.fancybrick.stone.refined.name">平滑抛光石砖</entry>
<entry key="block.fancybrick.redstone.name">平滑红石砖</entry>
<entry key="block.fancybrick.bone.name">平滑骨砖</entry>
<entry key="block.fancybrick.slime.name">平滑史莱姆砖</entry>
<entry key="block.fancybrick.blueslime.name">平滑蓝史莱姆砖</entry>
<entry key="block.fancybrick.endstone.name">平滑末地石砖</entry>
<entry key="block.fancybrick.obsidian.ingot.name">平滑黑曜石锭砖</entry>
<entry key="block.fancybrick.stone.road.name">铺路石</entry>
<entry key="block.fancybrick.stone.name">平滑石砖</entry>
<entry key="item.oreberry.iron.name">铁矿莓丛</entry>
<entry key="item.oreberry.gold.name">金矿莓丛</entry>
<entry key="item.oreberry.copper.name">铜矿莓丛</entry>
<entry key="item.oreberry.tin.name">锡矿莓丛</entry>
<entry key="item.oreberry.aluminum.name">铝矿莓丛</entry>
<entry key="item.oreberry.essence.name">精华莓丛</entry>
<entry key="item.goldenhead.name">黄金头颅</entry>
<entry key="item.tconstruct.titleicon.name">生成</entry>
<entry key="item.tconstruct.Materials.PaperStack.name">一叠纸</entry>
<entry key="item.tconstruct.Materials.SlimeCrystal.name">粘液球水晶</entry>
<entry key="item.tconstruct.Materials.SearedBrick.name">焦黑砖</entry>
<entry key="item.tconstruct.Materials.CobaltIngot.name">钴锭t</entry>
<entry key="item.tconstruct.Materials.ArditeIngot.name">阿迪特锭</entry>
<entry key="item.tconstruct.Materials.ManyullynIngot.name">玛玉灵锭</entry>
<entry key="item.tconstruct.Materials.Mossball.name">苔藓球</entry>
<entry key="item.tconstruct.Materials.LavaCrystal.name">熔岩水晶</entry>
<entry key="item.tconstruct.Materials.NecroticBone.name">坏死之骨</entry>
<entry key="item.tconstruct.Materials.CopperIngot.name">铜锭</entry>
<entry key="item.tconstruct.Materials.TinIngot.name">锡锭</entry>
<entry key="item.tconstruct.Materials.AluminumIngot.name">铝锭</entry>
<entry key="item.tconstruct.Materials.RawAluminum.name">生铝</entry>
<entry key="item.tconstruct.Materials.BronzeIngot.name">青铜锭</entry>
<entry key="item.tconstruct.Materials.AluBrassIngot.name">含铝黄铜锭</entry>
<entry key="item.tconstruct.Materials.AlumiteIngot.name">耐酸铝锭</entry>
<entry key="item.tconstruct.Materials.SteelIngot.name">钢锭</entry>
<entry key="item.tconstruct.Materials.BlueSlimeCrystal.name">蓝色史莱姆水晶</entry>
<entry key="item.tconstruct.Materials.ObsidianIngot.name">黑曜石锭</entry>
<entry key="item.tconstruct.Materials.IronNugget.name">铁粒</entry>
<entry key="item.tconstruct.Materials.CopperNugget.name">铜粒</entry>
<entry key="item.tconstruct.Materials.TinNugget.name">锡粒</entry>
<entry key="item.tconstruct.Materials.AluminumNugget.name">铝粒</entry>
<entry key="item.tconstruct.Materials.EssenceCrystal.name">精华水晶</entry>
<entry key="item.tconstruct.Materials.AluBrassNugget.name">含铝黄铜粒</entry>
<entry key="item.tconstruct.Materials.SilkyCloth.name">绢布</entry>
<entry key="item.tconstruct.Materials.SilkyJewel.name">精致珠宝</entry>
<entry key="item.tconstruct.Materials.ObsidianNugget.name">黑曜石粒</entry>
<entry key="item.tconstruct.Materials.CobaltNugget.name">钴粒</entry>
<entry key="item.tconstruct.Materials.ArditeNugget.name">阿迪特粒</entry>
<entry key="item.tconstruct.Materials.ManyullynNugget.name">玛玉灵粒</entry>
<entry key="item.tconstruct.Materials.BronzeNugget.name">青铜粒</entry>
<entry key="item.tconstruct.Materials.AlumiteNugget.name">耐酸铝粒</entry>
<entry key="item.tconstruct.Materials.SteelNugget.name">钢粒</entry>
<entry key="Smeltery.Controller.name">冶炼厂填料仓</entry>
<entry key="Smeltery.Drain.name">铸造盆</entry>
<entry key="Smeltery.Brick.name">冶炼炉砖</entry>
<entry key="Smeltery.Stone.name">焦黑石头</entry>
<entry key="Smeltery.Cobblestone.name">焦黑圆石</entry>
<entry key="Smeltery.Paver.name">焦黑盖板石</entry>
<entry key="Smeltery.Brick.Cracked.name">裂纹焦黑石砖</entry>
<entry key="Smeltery.Road.name">焦黑铺路石</entry>
<entry key="Smeltery.Brick.Fancy.name">平滑焦黑石砖</entry>
<entry key="Smeltery.Brick.Square.name">裂纹焦黑石砖</entry>
<entry key="Smeltery.Brick.Creeper.name">雕琢焦黑石砖</entry>
<entry key="LavaTank.Tank.name">冶炼槽</entry>
<entry key="LavaTank.Gague.name">冶炼炉玻璃</entry>
<entry key="LavaTank.Window.name">冶炼炉视窗</entry>
<entry key="block.drawbridge.name">造桥器</entry>
<entry key="block.firestarter.name">点火器</entry>
<entry key="tile.landmine.name">地雷</entry>
<entry key="StorageMetals.Cobalt.name">钴方块</entry>
<entry key="StorageMetals.Ardite.name">阿迪特方块</entry>
<entry key="StorageMetals.Manyullyn.name">玛玉灵方块</entry>
<entry key="StorageMetals.Copper.name">铜方块</entry>
<entry key="StorageMetals.Bronze.name">青铜方块</entry>
<entry key="StorageMetals.Tin.name">锡方块</entry>
<entry key="StorageMetals.Aluminum.name">铝方块</entry>
<entry key="StorageMetals.AlBrass.name">含铝黄铜方块</entry>
<entry key="StorageMetals.Alumite.name">耐酸铝方块</entry>
<entry key="StorageMetals.Steel.name">钢方块</entry>
<entry key="tile.decoration.stonetorch.name">石柄火把</entry>
<entry key="block.glass.pure.name">澄澈玻璃</entry>
<entry key="block.glass.soul.name">灵魂玻璃</entry>
<entry key="block.glass.soul.pure.name">澄澈灵魂玻璃</entry>
<entry key="block.glass.pure.pane.name">澄澈玻璃板</entry>
<entry key="block.glass.soul.pane.name">灵魂玻璃板</entry>
<entry key="block.glass.soul.pane.pure.name">澄澈灵魂玻璃板</entry>
<entry key="block.stainedglass.white.name">白色强化玻璃</entry>
<entry key="block.stainedglass.orange.name">橙色强化玻璃</entry>
<entry key="block.stainedglass.magenta.name">品红色强化玻璃</entry>
<entry key="block.stainedglass.lightblue.name">浅蓝色强化玻璃</entry>
<entry key="block.stainedglass.yellow.name">黄色强化玻璃</entry>
<entry key="block.stainedglass.lime.name">柠檬色强化玻璃</entry>
<entry key="block.stainedglass.pink.name">粉色强化玻璃</entry>
<entry key="block.stainedglass.gray.name">灰色强化玻璃</entry>
<entry key="block.stainedglass.lightgray.name">浅灰色强化玻璃</entry>
<entry key="block.stainedglass.cyan.name">青色强化玻璃</entry>
<entry key="block.stainedglass.purple.name">紫色强化玻璃</entry>
<entry key="block.stainedglass.blue.name">蓝色强化玻璃</entry>
<entry key="block.stainedglass.brown.name">棕色强化玻璃</entry>
<entry key="block.stainedglass.green.name">绿色强化玻璃</entry>
<entry key="block.stainedglass.red.name">红色强化玻璃</entry>
<entry key="block.stainedglass.black.name">黑色强化玻璃</entry>
<entry key="block.stainedglass.white.pane.name">白色强化玻璃板</entry>
<entry key="block.stainedglass.orange.pane.name">橙色强化玻璃板</entry>
<entry key="block.stainedglass.magenta.pane.name">品红色强化玻璃板</entry>
<entry key="block.stainedglass.lightblue.pane.name">浅蓝色强化玻璃板</entry>
<entry key="block.stainedglass.yellow.pane.name">黄色强化玻璃板</entry>
<entry key="block.stainedglass.lime.pane.name">柠檬色强化玻璃板</entry>
<entry key="block.stainedglass.pink.pane.name">粉色强化玻璃板</entry>
<entry key="block.stainedglass.gray.pane.name">灰色强化玻璃板</entry>
<entry key="block.stainedglass.lightgray.pane.name">浅灰色强化玻璃板</entry>
<entry key="block.stainedglass.cyan.pane.name">青色强化玻璃板</entry>
<entry key="block.stainedglass.purple.pane.name">紫色强化玻璃板</entry>
<entry key="block.stainedglass.blue.pane.name">蓝色强化玻璃板</entry>
<entry key="block.stainedglass.brown.pane.name">棕色强化玻璃板</entry>
<entry key="block.stainedglass.green.pane.name">绿色强化玻璃板</entry>
<entry key="block.stainedglass.red.pane.name">红色强化玻璃板</entry>
<entry key="block.stainedglass.black.pane.name">黑色强化玻璃板</entry>
<entry key="block.searedstone.slab.brick.name">焦黑石砖台阶</entry>
<entry key="block.searedstone.slab.stone.name">焦黑石头台阶</entry>
<entry key="block.searedstone.slab.cobble.name">焦黑圆石台阶</entry>
<entry key="block.searedstone.slab.paver.name">焦黑垫脚石台阶</entry>
<entry key="block.searedstone.slab.road.name">焦黑铺路石台阶</entry>
<entry key="block.searedstone.slab.fancy.name">平滑焦黑石头台阶</entry>
<entry key="block.searedstone.slab.square.name">裂纹焦黑石头台阶</entry>
<entry key="block.searedstone.slab.creeper.name">雕琢焦黑石头台阶</entry>
<entry key="block.soil.slab.dirt.name">泥土台阶</entry>
<entry key="block.soil.slab.mycelium.name">菌丝台阶</entry>
<entry key="block.soil.slab.slime.name">史莱姆台阶</entry>
<entry key="block.soil.slab.grout.name">水泥台阶</entry>
<entry key="block.soil.slab.blueslime.name">蓝史莱姆台阶</entry>
<entry key="block.soil.slab.graveyardsoil.name">黄泉土台阶</entry>
<entry key="block.soil.slab.consecratedsoil.name">混泥土台阶</entry>
<entry key="item.tconstruct.storage.knapsack.name">背包</entry>
<entry key="item.tconstruct.blankpattern.pattern.name">空白模具</entry>
<entry key="item.tconstruct.blankpattern.cast.name">空白铸形</entry>
<entry key="item.tconstruct.Bowstring.string.name">弓弦</entry>
<entry key="item.tconstruct.Bowstring.enchantedfabric.name">附魔弓弦</entry>
<entry key="item.tconstruct.Fletching.feather.name">羽毛箭羽</entry>
<entry key="item.tconstruct.Fletching.leaf.name">树叶箭羽</entry>
<entry key="item.tconstruct.Fletching.slime.name">史莱姆箭羽</entry>
<entry key="item.tconstruct.Fletching.blueslime.name">蓝史莱姆箭羽</entry>
<entry key="item.tconstruct.manual.beginner.name">匠魂宝典Ⅰ</entry>
<entry key="item.tconstruct.manual.toolstation.name">匠魂宝典Ⅱ</entry>
<entry key="item.tconstruct.manual.smeltery.name">冶炼秘术</entry>
<entry key="item.tconstruct.bucket.Iron.name">桶装液态铁</entry>
<entry key="item.tconstruct.bucket.Gold.name">桶装液态黄金</entry>
<entry key="item.tconstruct.bucket.Copper.name">桶装液态铜</entry>
<entry key="item.tconstruct.bucket.Tin.name">桶装液态锡</entry>
<entry key="item.tconstruct.bucket.Aluminum.name">桶装液态铝</entry>
<entry key="item.tconstruct.bucket.Cobalt.name">桶装液态钴</entry>
<entry key="item.tconstruct.bucket.Ardite.name">桶装液态阿迪特</entry>
<entry key="item.tconstruct.bucket.Bronze.name">桶装液态青铜</entry>
<entry key="item.tconstruct.bucket.AluBrass.name">桶装液态含铝黄铜</entry>
<entry key="item.tconstruct.bucket.Manyullyn.name">桶装液态玛玉灵</entry>
<entry key="item.tconstruct.bucket.Alumite.name">桶装液态耐酸铝</entry>
<entry key="item.tconstruct.bucket.Obsidian.name">桶装液态黑曜石</entry>
<entry key="item.tconstruct.bucket.Steel.name">桶装液态钢</entry>
<entry key="item.tconstruct.bucket.Glass.name">桶装液态玻璃</entry>
<entry key="item.tconstruct.bucket.Stone.name">桶装熔融石头</entry>
<entry key="item.tconstruct.bucket.Villager.name">桶装液态绿宝石</entry>
<entry key="item.tconstruct.bucket.Cow.name">血桶</entry>
<entry key="item.tconstruct.bowstring.string.name">弓弦</entry>
<entry key="item.tconstruct.bowstring.enchantedfabriI donc.name">附魔弓弦</entry>
<entry key="LiquidMetal.Iron.name">液态铁</entry>
<entry key="LiquidMetal.Gold.name">液态黄金</entry>
<entry key="LiquidMetal.Copper.name">液态铜</entry>
<entry key="LiquidMetal.Tin.name">液态锡</entry>
<entry key="LiquidMetal.Aluminum.name">液态铝</entry>
<entry key="LiquidMetal.Cobalt.name">液态钴</entry>
<entry key="LiquidMetal.Ardite.name">液态阿迪特</entry>
<entry key="LiquidMetal.Bronze.name">液态青铜</entry>
<entry key="LiquidMetal.AluBrass.name">液态含铝黄铜</entry>
<entry key="LiquidMetal.Manyullyn.name">液态玛玉灵</entry>
<entry key="LiquidMetal.Alumite.name">液态耐酸铝</entry>
<entry key="LiquidMetal.Obsidian.name">液态黑曜石</entry>
<entry key="LiquidMetal.Steel.name">液态钢</entry>
<entry key="LiquidMetal.Glass.name">液态玻璃</entry>
<entry key="LiquidMetal.Stone.name">熔融石头</entry>
<entry key="LiquidMetal.Villager.name">液态绿宝石</entry>
<entry key="LiquidMetal.Cow.name">血</entry>
<entry key="item.food.apple.diamond.name">宝石苹果</entry>
<entry key="item.tconstruct.strangefood.edibleslime.name">胶状黏液</entry>
<entry key="item.tconstruct.canister.empty.name">心之容器(空)</entry>
<entry key="item.tconstruct.canister.miniheart.red.name">微型红心</entry>
<entry key="item.tconstruct.canister.heart.name">心之容器</entry>
<entry key="item.tconstruct.glove.name">鼹鼠手套</entry>
<entry key="SearedBlock.Table.name">浇注台</entry>
<entry key="SearedBlock.Faucet.name">浇注道</entry>
<entry key="SearedBlock.Basin.name">铸造盆</entry>
<entry key="entity.TConstruct.EdibleSlime.name">蓝色史莱姆</entry>
<entry key="entity.TConstruct.KingSlime.name">史莱姆王</entry>
<entry key="entity.TConstruct.MiniGardy.name">史莱姆护卫</entry>
<entry key="key.tarmor">装备界面</entry>
<entry key="death.one.smeltery">%1$s被加工成了"绿色食品"!</entry>
<entry key="death.two.smeltery">%1$s被冶炼炉融化了!</entry>
<entry key="death.three.smeltery">%1$s将成为我们革命的垫脚石!</entry>
<entry key="death.four.smeltery">%1$s认为在炽热的液体中游泳是个不错的注意!</entry>
<entry key="death.attack.Landmine">%1$s眼看着他们的腿被炸飞了!</entry>
<entry key="death.fell.assist.Landmine">%1$s被地雷炸死了!</entry>
<entry key="death.attack.LandmineFireworkExplode">%1$s骑着烟花火箭飞上了西天!</entry>
<entry key="parttype.Wood">木</entry>
<entry key="parttype.Stone">石</entry>
<entry key="parttype.Iron">铁</entry>
<entry key="parttype.Flint">燧石</entry>
<entry key="parttype.Cactus">仙人掌</entry>
<entry key="parttype.Bone">骨头</entry>
<entry key="parttype.Obsidian">黑曜石</entry>
<entry key="parttype.Slime">史莱姆</entry>
<entry key="parttype.Paper">纸</entry>
<entry key="parttype.Cobalt">钴</entry>
<entry key="parttype.Ardite">阿迪特</entry>
<entry key="parttype.Manyullyn">玛玉灵</entry>
<entry key="parttype.Copper">铜</entry>
<entry key="parttype.Bronze">青铜</entry>
<entry key="parttype.Alumite">耐酸铝</entry>
<entry key="parttype.Steel">钢</entry>
<entry key="parttype.BlueSlime">蓝色史莱姆</entry>
</properties>
Binary file not shown.

After

Width:  |  Height:  |  Size: 463 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 547 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 787 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 402 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 542 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 272 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 287 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 640 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 629 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.7 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

+18 -17
View File
@@ -1,6 +1,7 @@
package ic2.api;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.ForgeDirection;
/**
@@ -15,7 +16,7 @@ public enum Direction {
* +X
*/
XP(1),
/**
* -Y
*/
@@ -24,7 +25,7 @@ public enum Direction {
* +Y
*/
YP(3), // 1...
/**
* -Z
*/
@@ -33,19 +34,19 @@ public enum Direction {
* +Z
*/
ZP(5);
Direction(int dir) {
this.dir = dir;
}
/*public CoordinateTuple ApplyToCoordinates(CoordinateTuple coordinates) {
CoordinateTuple ret = new CoordinateTuple(coordinates);
ret.coords[dir/2] += GetSign();
return ret;
}*/
/**
* Get the tile entity next to a tile entity following this direction.
*
@@ -54,16 +55,16 @@ public enum Direction {
*/
public TileEntity applyToTileEntity(TileEntity tileEntity) {
int coords[] = { tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord };
coords[dir/2] += getSign();
if (tileEntity.worldObj != null && tileEntity.worldObj.blockExists(coords[0], coords[1], coords[2])) {
return tileEntity.worldObj.getBlockTileEntity(coords[0], coords[1], coords[2]);
} else {
return null;
}
}
/**
* Get the inverse of this direction (XN -> XP, XP -> XN, etc.)
*
@@ -71,14 +72,14 @@ public enum Direction {
*/
public Direction getInverse() {
int inverseDir = dir - getSign();
for (Direction direction : directions) {
if (direction.dir == inverseDir) return direction;
}
return this;
}
/**
* Convert this direction to a Minecraft side value.
*
@@ -87,7 +88,7 @@ public enum Direction {
public int toSideValue() {
return (dir + 4) % 6;
}
/**
* Determine direction sign (N for negative or P for positive).
*
@@ -96,12 +97,12 @@ public enum Direction {
private int getSign() {
return (dir % 2) * 2 - 1;
}
public ForgeDirection toForgeDirection() {
return ForgeDirection.getOrientation(toSideValue());
}
private int dir;
private static final Direction[] directions = Direction.values();
public static final Direction[] directions = Direction.values();
}
+5 -4
View File
@@ -2,10 +2,11 @@ package ic2.api.crops;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.Icon;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@@ -322,9 +323,9 @@ public abstract class CropCard
*/
public boolean onEntityCollision(ICropTile crop, Entity entity)
{
if (entity instanceof EntityLiving)
if (entity instanceof EntityLivingBase)
{
return ((EntityLiving)entity).isSprinting();
return ((EntityLivingBase)entity).isSprinting();
}
return false;
}
@@ -360,7 +361,7 @@ public abstract class CropCard
{
return Crops.instance.getIdFor(this);
}
@SideOnly(Side.CLIENT)
protected Icon textures[];
}
+14 -13
View File
@@ -3,6 +3,7 @@ package ic2.api.crops;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.item.ItemStack;
import net.minecraft.world.biome.BiomeGenBase;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@@ -11,7 +12,7 @@ import cpw.mods.fml.relauncher.SideOnly;
*/
public abstract class Crops {
public static Crops instance;
/**
* Adds a crop humidity and nutrient biome bonus.
*
@@ -22,30 +23,30 @@ public abstract class Crops {
* @param nutrientsBonus Nutrient stat bonus
*/
public abstract void addBiomeBonus(BiomeGenBase biome, int humidityBonus, int nutrientsBonus);
/**
* Gets the humidity bonus for a biome.
* Gets the humidity bonus for a biome.
*
* @param biome Biome to check
* @return Humidity bonus or 0 if none
*/
public abstract int getHumidityBiomeBonus(BiomeGenBase biome);
/**
* Gets the nutrient bonus for a biome.
* Gets the nutrient bonus for a biome.
*
* @param biome Biome to check
* @return Nutrient bonus or 0 if none
*/
public abstract int getNutrientBiomeBonus(BiomeGenBase biome);
/**
* Returns the list of registered crops.
*
*
* @return Registered crops by ID
*/
public abstract CropCard[] getCropList();
/**
* Auto-assign an ID to a plant and register it.
* Usage of this method is not recommended! Other plants could take your IDs and cause your plants to turn into other plants.
@@ -54,7 +55,7 @@ public abstract class Crops {
* @return The ID assigned to the plant
*/
public abstract short registerCrop(CropCard crop);
/**
* Attempt to register a plant to an ID.
* If the ID is taken, the crop will not be registered and a console print will notify the user.
@@ -64,7 +65,7 @@ public abstract class Crops {
* @return Whether the crop was registered
*/
public abstract boolean registerCrop(CropCard crop, int i);
/**
* Registers a base seed, an item used to plant a crop.
*
@@ -77,14 +78,14 @@ public abstract class Crops {
* @return True if successful
*/
public abstract boolean registerBaseSeed(ItemStack stack, int id, int size, int growth, int gain, int resistance);
/**
* Finds a base seed from the given item.
*
* @return Base seed or null if none found
*/
public abstract BaseSeed getBaseSeed(ItemStack stack);
/**
* Execute registerSprites for all registered crop cards.
*
@@ -92,7 +93,7 @@ public abstract class Crops {
*/
@SideOnly(Side.CLIENT)
public abstract void startSpriteRegistration(IconRegister iconRegister);
/**
* Returns the ID for the given crop.
*
+14
View File
@@ -0,0 +1,14 @@
package ic2.api.info;
import net.minecraft.item.ItemStack;
public interface IEnergyValueProvider {
/**
* Determine the energy value for a single item in the supplied stack.
* The value is used by most machines in the discharge slot.
*
* @param itemStack ItemStack containing the item to evaluate.
* @return energy in EU
*/
int getEnergyValue(ItemStack itemStack);
}
+15
View File
@@ -0,0 +1,15 @@
package ic2.api.info;
import net.minecraft.item.ItemStack;
public interface IFuelValueProvider {
/**
* Determine the fuel value for a single item in the supplied stack.
* The information currently applies to Generators and the Iron Furnace.
*
* @param itemStack ItemStack containing the item to evaluate.
* @param allowLava Determine if lava has a fuel value, currently only true for the Iron Furnace.
* @return fuel value
*/
int getFuelValue(ItemStack itemStack, boolean allowLava);
}
+6
View File
@@ -0,0 +1,6 @@
package ic2.api.info;
public class Info {
public static IEnergyValueProvider itemEnergy;
public static IFuelValueProvider itemFuel;
}
+34 -60
View File
@@ -1,7 +1,5 @@
package ic2.api.item;
import java.lang.reflect.Method;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
@@ -12,6 +10,20 @@ import net.minecraft.item.ItemStack;
* ignoreTransferLimit and simulate set to true.
*/
public final class ElectricItem {
/**
* IElectricItemManager to use for interacting with IElectricItem ItemStacks.
*
* This manager will act as a gateway and delegate the tasks to the final implementation
* (rawManager or a custom one) as necessary.
*/
public static IElectricItemManager manager;
/**
* Standard IElectricItemManager implementation, only call it directly from another
* IElectricItemManager. Use manager instead.
*/
public static IElectricItemManager rawManager;
/**
* Charge an item with a specified amount of energy
*
@@ -21,15 +33,12 @@ public final class ElectricItem {
* @param ignoreTransferLimit ignore the transfer limit specified by getTransferLimit()
* @param simulate don't actually change the item, just determine the return value
* @return Energy transferred into the electric item
*
* @deprecated use manager.charge() instead
*/
@Deprecated
public static int charge(ItemStack itemStack, int amount, int tier, boolean ignoreTransferLimit, boolean simulate) {
try {
if (ElectricItem_charge == null) ElectricItem_charge = Class.forName(getPackage() + ".core.item.ElectricItem").getMethod("charge", ItemStack.class, Integer.TYPE, Integer.TYPE, Boolean.TYPE, Boolean.TYPE);
return (Integer) ElectricItem_charge.invoke(null, itemStack, amount, tier, ignoreTransferLimit, simulate);
} catch (Exception e) {
throw new RuntimeException(e);
}
return manager.charge(itemStack, amount, tier, ignoreTransferLimit, simulate);
}
/**
@@ -41,15 +50,12 @@ public final class ElectricItem {
* @param ignoreTransferLimit ignore the transfer limit specified by getTransferLimit()
* @param simulate don't actually discharge the item, just determine the return value
* @return Energy retrieved from the electric item
*
* @deprecated use manager.discharge() instead
*/
@Deprecated
public static int discharge(ItemStack itemStack, int amount, int tier, boolean ignoreTransferLimit, boolean simulate) {
try {
if (ElectricItem_discharge == null) ElectricItem_discharge = Class.forName(getPackage() + ".core.item.ElectricItem").getMethod("discharge", ItemStack.class, Integer.TYPE, Integer.TYPE, Boolean.TYPE, Boolean.TYPE);
return (Integer) ElectricItem_discharge.invoke(null, itemStack, amount, tier, ignoreTransferLimit, simulate);
} catch (Exception e) {
throw new RuntimeException(e);
}
return manager.discharge(itemStack, amount, tier, ignoreTransferLimit, simulate);
}
/**
@@ -60,15 +66,12 @@ public final class ElectricItem {
* @param itemStack electric item's stack
* @param amount minimum amount of energy required
* @return true if there's enough energy
*
* @deprecated use manager.canUse() instead
*/
@Deprecated
public static boolean canUse(ItemStack itemStack, int amount) {
try {
if (ElectricItem_canUse == null) ElectricItem_canUse = Class.forName(getPackage() + ".core.item.ElectricItem").getMethod("canUse", ItemStack.class, Integer.TYPE);
return (Boolean) ElectricItem_canUse.invoke(null, itemStack, amount);
} catch (Exception e) {
throw new RuntimeException(e);
}
return manager.canUse(itemStack, amount);
}
/**
@@ -79,15 +82,12 @@ public final class ElectricItem {
* @param amount amount of energy to discharge in EU
* @param player player holding the item
* @return true if the operation succeeded
*
* @deprecated use manager.use() instead
*/
@Deprecated
public static boolean use(ItemStack itemStack, int amount, EntityPlayer player) {
try {
if (ElectricItem_use == null) ElectricItem_use = Class.forName(getPackage() + ".core.item.ElectricItem").getMethod("use", ItemStack.class, Integer.TYPE, EntityPlayer.class);
return (Boolean) ElectricItem_use.invoke(null, itemStack, amount, player);
} catch (Exception e) {
throw new RuntimeException(e);
}
return manager.use(itemStack, amount, player);
}
/**
@@ -97,38 +97,12 @@ public final class ElectricItem {
*
* @param itemStack electric item's stack
* @param player player holding the item
*
* @deprecated use manager.chargeFromArmor() instead
*/
@Deprecated
public static void chargeFromArmor(ItemStack itemStack, EntityPlayer player) {
try {
if (ElectricItem_chargeFromArmor == null) ElectricItem_chargeFromArmor = Class.forName(getPackage() + ".core.item.ElectricItem").getMethod("chargeFromArmor", ItemStack.class, EntityPlayer.class);
ElectricItem_chargeFromArmor.invoke(null, itemStack, player);
} catch (Exception e) {
throw new RuntimeException(e);
}
manager.chargeFromArmor(itemStack, player);
}
/**
* Get the base IC2 package name, used internally.
*
* @return IC2 package name, if unable to be determined defaults to ic2
*/
private static String getPackage() {
Package pkg = ElectricItem.class.getPackage();
if (pkg != null) {
String packageName = pkg.getName();
return packageName.substring(0, packageName.length() - ".api.item".length());
}
return "ic2";
}
private static Method ElectricItem_charge;
private static Method ElectricItem_discharge;
private static Method ElectricItem_canUse;
private static Method ElectricItem_use;
private static Method ElectricItem_chargeFromArmor;
}
+4 -1
View File
@@ -10,12 +10,15 @@ import net.minecraft.item.ItemStack;
*
* The default implementation (when not using ICustomElectricItem) does the following:
* - store and retrieve the charge
* - handle charging, taking amount, tier, transfer limit and simulate into account
* - handle charging, taking amount, tier, transfer limit, canProvideEnergy and simulate into account
* - replace item IDs if appropriate (getChargedItemId() and getEmptyItemId())
* - update and manage the damage value for the visual charge indicator
*
* @note ICustomElectricItem must not call the ElectricItem methods charge, discharge or canUse
*
* @deprecated Use ISpecialElectricItem instead.
*/
@Deprecated
public interface ICustomElectricItem extends IElectricItem {
/**
* Charge an item with a specified amount of energy
+92
View File
@@ -0,0 +1,92 @@
package ic2.api.item;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
/**
* This interface specifies a manager to handle the various tasks for electric items.
*
* The default implementation does the following:
* - store and retrieve the charge
* - handle charging, taking amount, tier, transfer limit, canProvideEnergy and simulate into account
* - replace item IDs if appropriate (getChargedItemId() and getEmptyItemId())
* - update and manage the damage value for the visual charge indicator
*
* @note If you're implementing your own variant (ISpecialElectricItem), you can delegate to the
* default implementations through ElectricItem.rawManager. The default implementation is designed
* to minimize its dependency on its own constraints/structure and delegates most work back to the
* more atomic features in the gateway manager.
*/
public interface IElectricItemManager {
/**
* Charge an item with a specified amount of energy
*
* @param itemStack electric item's stack
* @param amount amount of energy to charge in EU
* @param tier tier of the charging device, has to be at least as high as the item to charge
* @param ignoreTransferLimit ignore the transfer limit specified by getTransferLimit()
* @param simulate don't actually change the item, just determine the return value
* @return Energy transferred into the electric item
*/
int charge(ItemStack itemStack, int amount, int tier, boolean ignoreTransferLimit, boolean simulate);
/**
* Discharge an item by a specified amount of energy
*
* @param itemStack electric item's stack
* @param amount amount of energy to charge in EU
* @param tier tier of the discharging device, has to be at least as high as the item to discharge
* @param ignoreTransferLimit ignore the transfer limit specified by getTransferLimit()
* @param simulate don't actually discharge the item, just determine the return value
* @return Energy retrieved from the electric item
*/
int discharge(ItemStack itemStack, int amount, int tier, boolean ignoreTransferLimit, boolean simulate);
/**
* Determine the charge level for the specified item
*
* @param itemStack ItemStack containing the electric item
* @return charge level in EU
*/
int getCharge(ItemStack itemStack);
/**
* Determine if the specified electric item has at least a specific amount of EU.
* This is supposed to be used in the item code during operation, for example if you want to implement your own electric item.
* BatPacks are not taken into account.
*
* @param itemStack electric item's stack
* @param amount minimum amount of energy required
* @return true if there's enough energy
*/
boolean canUse(ItemStack itemStack, int amount);
/**
* Try to retrieve a specific amount of energy from an Item, and if applicable, a BatPack.
* This is supposed to be used in the item code during operation, for example if you want to implement your own electric item.
*
* @param itemStack electric item's stack
* @param amount amount of energy to discharge in EU
* @param entity entity holding the item
* @return true if the operation succeeded
*/
boolean use(ItemStack itemStack, int amount, EntityLivingBase entity);
/**
* Charge an item from the BatPack a player is wearing.
* This is supposed to be used in the item code during operation, for example if you want to implement your own electric item.
* use() already contains this functionality.
*
* @param itemStack electric item's stack
* @param entity entity holding the item
*/
void chargeFromArmor(ItemStack itemStack, EntityLivingBase entity);
/**
* Get the tool tip to display for electric items.
*
* @param itemStack ItemStack to determine the tooltip for
* @return tool tip string or null for none
*/
String getToolTip(ItemStack itemStack);
}
+13
View File
@@ -0,0 +1,13 @@
package ic2.api.item;
import net.minecraft.item.ItemStack;
public interface ISpecialElectricItem extends IElectricItem {
/**
* Supply a custom IElectricItemManager.
*
* @param itemStack ItemStack to get the manager for
* @return IElectricItemManager instance
*/
IElectricItemManager getManager(ItemStack itemStack);
}
+3 -9
View File
@@ -149,16 +149,11 @@ public final class NetworkHelper {
* This method doesn't do anything if executed on the server.
*
* @param dataProvider Object implementing the INetworkDataProvider interface
*
* @deprecated no need to call this anymore, IC2 initiates it automatically
*/
@Deprecated
public static void requestInitialData(INetworkDataProvider dataProvider) {
try {
if (NetworkManager_requestInitialData == null) NetworkManager_requestInitialData = Class.forName(getPackage() + ".core.network.NetworkManager").getMethod("requestInitialData", INetworkDataProvider.class);
if (instance == null) instance = getInstance();
NetworkManager_requestInitialData.invoke(instance, dataProvider);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
/**
@@ -236,7 +231,6 @@ public final class NetworkHelper {
private static Method NetworkManager_initiateTileEntityEvent;
private static Method NetworkManager_initiateItemEvent;
private static Method NetworkManager_announceBlockUpdate;
private static Method NetworkManager_requestInitialData;
private static Method NetworkManager_initiateClientTileEntityEvent;
private static Method NetworkManager_initiateClientItemEvent;
}
+6
View File
@@ -88,6 +88,12 @@ public interface IReactor {
*
* @return Energy output after adding the value, not multiplied by the base EU/t value
*/
public float addOutput(float energy);
/**
* Deprecated to avoid immediate API breaking. Don't use.
*/
@Deprecated
public int addOutput(int energy);
/**
+1 -1
View File
@@ -52,7 +52,7 @@ public interface IWrenchable {
* Determine the item the block will drop when the wrenching is successful.
*
* @param entityPlayer player using the wrench, may be null
* @return Item to drop
* @return Item to drop, may be null
*/
ItemStack getWrenchDrop(EntityPlayer entityPlayer);
}
+1 -1
View File
@@ -37,7 +37,7 @@ import cpw.mods.fml.common.registry.VillagerRegistry;
* @dependencies: IC2 API, MFR API
*/
@Mod(modid = "TConstruct", name = "TConstruct", version = "1.6.2_1.4.dev.25", dependencies = "required-after:Forge@[7.7.1.687,)")
@Mod(modid = "TConstruct", name = "TConstruct", version = "1.6.2_1.4.dev.26", dependencies = "required-after:Forge@[7.7.1.687,)")
@NetworkMod(serverSideRequired = false, clientSideRequired = true, channels = { "TConstruct" }, packetHandler = tconstruct.util.network.TPacketHandler.class)
public class TConstruct
{
+114
View File
@@ -0,0 +1,114 @@
package tconstruct.blocks;
import java.util.List;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Icon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import tconstruct.TConstruct;
import tconstruct.blocks.logic.CraftingStationLogic;
import tconstruct.client.block.TableRender;
import tconstruct.common.TProxyCommon;
import tconstruct.library.TConstructRegistry;
import tconstruct.library.blocks.InventoryBlock;
public class CraftingStationBlock extends InventoryBlock
{
public CraftingStationBlock(int id, Material material)
{
super(id, material);
this.setCreativeTab(TConstructRegistry.blockTab);
this.setHardness(2f);
this.setStepSound(Block.soundWoodFootstep);
}
//Block.hasComparatorInputOverride and Block.getComparatorInputOverride
/* Rendering */
@Override
public String[] getTextureNames ()
{
String[] textureNames = { "craftingstation_top", "craftingstation_side", "craftingstation_bottom"};
return textureNames;
}
@Override
public Icon getIcon (int side, int meta)
{
return icons[meta * 3 + getTextureIndex(side)];
}
public int getTextureIndex (int side)
{
if (side == 0)
return 2;
if (side == 1)
return 0;
return 1;
}
@Override
public boolean renderAsNormalBlock ()
{
return false;
}
@Override
public boolean isOpaqueCube ()
{
return false;
}
@Override
public int getRenderType ()
{
return TableRender.tabelModelID;
}
@Override
public boolean shouldSideBeRendered (IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5)
{
return true;
}
@Override
public TileEntity createTileEntity (World world, int metadata)
{
switch (metadata)
{
case 0:
return new CraftingStationLogic();
default:
return null;
}
}
@Override
public Integer getGui (World world, int x, int y, int z, EntityPlayer entityplayer)
{
return TProxyCommon.craftingStationID;
}
@Override
public Object getModInstance ()
{
return TConstruct.instance;
}
@Override
public void getSubBlocks (int id, CreativeTabs tab, List list)
{
for (int iter = 0; iter < 1; iter++)
{
list.add(new ItemStack(id, 1, iter));
}
}
}
+61 -6
View File
@@ -2,18 +2,16 @@ package tconstruct.blocks;
import java.util.List;
import tconstruct.blocks.logic.LavaTankLogic;
import tconstruct.client.block.TankRender;
import tconstruct.library.TConstructRegistry;
import tconstruct.library.util.IServantLogic;
import net.minecraft.block.Block;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Icon;
import net.minecraft.world.IBlockAccess;
@@ -22,7 +20,10 @@ import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.fluids.FluidContainerRegistry;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTankInfo;
import net.minecraftforge.fluids.IFluidTank;
import tconstruct.blocks.logic.LavaTankLogic;
import tconstruct.client.block.TankRender;
import tconstruct.library.TConstructRegistry;
import tconstruct.library.util.IServantLogic;
public class LavaTankBlock extends BlockContainer
{
@@ -243,4 +244,58 @@ public class LavaTankBlock extends BlockContainer
((IServantLogic) logic).notifyMasterOfChange();
}
}
public boolean removeBlockByPlayer(World world, EntityPlayer player, int x, int y, int z)
{
player.addExhaustion(0.025F);
int meta = world.getBlockMetadata(x, y, z);
ItemStack stack = new ItemStack(this.blockID, 1, meta);
LavaTankLogic logic = (LavaTankLogic) world.getBlockTileEntity(x, y, z);
FluidStack liquid = logic.tank.getFluid();
if (liquid != null)
{
NBTTagCompound tag = new NBTTagCompound();
NBTTagCompound liquidTag = new NBTTagCompound();
liquid.writeToNBT(liquidTag);
tag.setCompoundTag("Fluid", liquidTag);
stack.setTagCompound(tag);
}
dropTankBlock(world, x, y, z, stack);
return world.setBlockToAir(x, y, z);
}
protected void dropTankBlock(World world, int x, int y, int z, ItemStack stack)
{
if (!world.isRemote && world.getGameRules().getGameRuleBooleanValue("doTileDrops"))
{
float f = 0.7F;
double d0 = (double)(world.rand.nextFloat() * f) + (double)(1.0F - f) * 0.5D;
double d1 = (double)(world.rand.nextFloat() * f) + (double)(1.0F - f) * 0.5D;
double d2 = (double)(world.rand.nextFloat() * f) + (double)(1.0F - f) * 0.5D;
EntityItem entityitem = new EntityItem(world, (double)x + d0, (double)y + d1, (double)z + d2, stack);
entityitem.delayBeforeCanPickup = 10;
world.spawnEntityInWorld(entityitem);
}
}
public void harvestBlock(World par1World, EntityPlayer par2EntityPlayer, int par3, int par4, int par5, int par6)
{
}
@Override
public void onBlockPlacedBy (World world, int x, int y, int z, EntityLivingBase living, ItemStack stack)
{
if (stack.hasTagCompound())
{
NBTTagCompound liquidTag = stack.getTagCompound().getCompoundTag("Fluid");
if (liquidTag != null)
{
FluidStack liquid = FluidStack.loadFluidStackFromNBT(liquidTag);
LavaTankLogic logic = (LavaTankLogic) world.getBlockTileEntity(x, y, z);
logic.tank.setFluid(liquid);
}
}
}
}
+130 -14
View File
@@ -4,6 +4,21 @@ import static net.minecraftforge.common.ForgeDirection.UP;
import java.util.List;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Icon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeDirection;
import tconstruct.TConstruct;
import tconstruct.blocks.logic.DrawbridgeLogic;
import tconstruct.blocks.logic.FirestarterLogic;
@@ -13,19 +28,6 @@ import tconstruct.library.blocks.InventoryBlock;
import tconstruct.library.util.IActiveLogic;
import tconstruct.library.util.IFacingLogic;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.Icon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeDirection;
public class RedstoneMachine extends InventoryBlock
{
public RedstoneMachine(int id)
@@ -200,6 +202,120 @@ public class RedstoneMachine extends InventoryBlock
public void onNeighborBlockChange (World world, int x, int y, int z, int neighborBlockID)
{
IActiveLogic logic = (IActiveLogic) world.getBlockTileEntity(x, y, z);
logic.setActive(world.isBlockIndirectlyGettingPowered(x, y, z));
logic.setActive(world.isBlockIndirectlyGettingPowered(x, y, z) || activeNearbyRedstone(world, x, y, z));
}
boolean activeNearbyRedstone (World world, int x, int y, int z)
{
return activeRedstone(world, x + 1, y, z) || activeRedstone(world, x - 1, y, z) || activeRedstone(world, x, y, z+1) || activeRedstone(world, x, y, z-1);
}
boolean activeRedstone (World world, int x, int y, int z)
{
Block wire = Block.blocksList[world.getBlockId(x, y, z)];
if (wire != null && wire.blockID == Block.redstoneWire.blockID)
return world.getBlockMetadata(x, y, z) > 0;
return false;
}
@Override
public boolean canConnectRedstone (IBlockAccess world, int x, int y, int z, int side)
{
return true;
}
/* Keep inventory */
@Override
public boolean removeBlockByPlayer (World world, EntityPlayer player, int x, int y, int z)
{
player.addExhaustion(0.025F);
int meta = world.getBlockMetadata(x, y, z);
if (meta == 0)
{
ItemStack stack = new ItemStack(this.blockID, 1, meta);
DrawbridgeLogic logic = (DrawbridgeLogic) world.getBlockTileEntity(x, y, z);
NBTTagCompound tag = new NBTTagCompound();
boolean hasTag = false;
ItemStack contents = logic.getStackInSlot(0);
if (contents != null)
{
NBTTagCompound contentTag = new NBTTagCompound();
contents.writeToNBT(contentTag);
tag.setCompoundTag("Contents", contentTag);
hasTag = true;
}
ItemStack camo = logic.getStackInSlot(1);
if (camo != null)
{
NBTTagCompound camoTag = new NBTTagCompound();
camo.writeToNBT(camoTag);
tag.setCompoundTag("Camoflauge", camoTag);
hasTag = true;
}
if (logic.getPlacementDirection() != 4)
{
tag.setByte("Placement", logic.getPlacementDirection());
hasTag = true;
}
if (hasTag == true)
stack.setTagCompound(tag);
dropDrawbridgeLogic(world, x, y, z, stack);
}
return world.setBlockToAir(x, y, z);
}
protected void dropDrawbridgeLogic (World world, int x, int y, int z, ItemStack stack)
{
if (!world.isRemote && world.getGameRules().getGameRuleBooleanValue("doTileDrops"))
{
float f = 0.7F;
double d0 = (double) (world.rand.nextFloat() * f) + (double) (1.0F - f) * 0.5D;
double d1 = (double) (world.rand.nextFloat() * f) + (double) (1.0F - f) * 0.5D;
double d2 = (double) (world.rand.nextFloat() * f) + (double) (1.0F - f) * 0.5D;
EntityItem entityitem = new EntityItem(world, (double) x + d0, (double) y + d1, (double) z + d2, stack);
entityitem.delayBeforeCanPickup = 10;
world.spawnEntityInWorld(entityitem);
}
}
@Override
public void harvestBlock (World world, EntityPlayer player, int x, int y, int z, int meta)
{
if (meta != 0)
super.harvestBlock(world, player, x, y, z, meta);
}
@Override
public void onBlockPlacedBy (World world, int x, int y, int z, EntityLivingBase living, ItemStack stack)
{
super.onBlockPlacedBy(world, x, y, z, living, stack);
if (stack.hasTagCompound())
{
DrawbridgeLogic logic = (DrawbridgeLogic) world.getBlockTileEntity(x, y, z);
NBTTagCompound contentTag = stack.getTagCompound().getCompoundTag("Contents");
if (contentTag != null)
{
ItemStack contents = ItemStack.loadItemStackFromNBT(contentTag);
logic.setInventorySlotContents(0, contents);
}
NBTTagCompound camoTag = stack.getTagCompound().getCompoundTag("Camoflauge");
if (camoTag != null)
{
ItemStack camoflauge = ItemStack.loadItemStackFromNBT(camoTag);
logic.setInventorySlotContents(1, camoflauge);
}
if (stack.getTagCompound().hasKey("Placement"))
{
logic.setPlacementDirection(stack.getTagCompound().getByte("Placement"));
}
}
}
}
@@ -0,0 +1,34 @@
package tconstruct.blocks.logic;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.world.World;
import tconstruct.inventory.CraftingStationContainer;
import tconstruct.library.blocks.InventoryLogic;
public class CraftingStationLogic extends InventoryLogic
{
public CraftingStationLogic()
{
super(11); //9 for crafting, 1 for output, 1 for plans
}
@Override
public Container getGuiContainer (InventoryPlayer inventoryplayer, World world, int x, int y, int z)
{
return new CraftingStationContainer(inventoryplayer, this, x, y, z);
}
@Override
protected String getDefaultName ()
{
return "crafters.craftingstation";
}
public boolean canDropInventorySlot (int slot)
{
if (slot == 9)
return false;
return true;
}
}
+160 -17
View File
@@ -1,12 +1,8 @@
package tconstruct.blocks.logic;
import tconstruct.inventory.DrawbridgeContainer;
import tconstruct.library.TConstructRegistry;
import tconstruct.library.blocks.InventoryLogic;
import tconstruct.library.util.IActiveLogic;
import tconstruct.library.util.IFacingLogic;
import net.minecraft.block.Block;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.item.ItemStack;
@@ -17,6 +13,12 @@ import net.minecraft.network.packet.Packet132TileEntityData;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
import net.minecraftforge.common.ForgeDirection;
import tconstruct.inventory.DrawbridgeContainer;
import tconstruct.library.TConstructRegistry;
import tconstruct.library.blocks.InventoryLogic;
import tconstruct.library.util.IActiveLogic;
import tconstruct.library.util.IFacingLogic;
import tconstruct.util.player.FakePlayerLogic;
public class DrawbridgeLogic extends InventoryLogic implements IFacingLogic, IActiveLogic
{
@@ -25,12 +27,21 @@ public class DrawbridgeLogic extends InventoryLogic implements IFacingLogic, IAc
int ticks;
byte extension;
byte direction;
byte placementDirection = 4;
FakePlayerLogic fakePlayer;
public DrawbridgeLogic()
{
super(2);
}
@Override
public void setWorldObj (World par1World)
{
this.worldObj = par1World;
fakePlayer = new FakePlayerLogic(worldObj, "Player.Drawbridge", this);
}
@Override
public boolean getActive ()
{
@@ -61,6 +72,11 @@ public class DrawbridgeLogic extends InventoryLogic implements IFacingLogic, IAc
{
}
public boolean canDropInventorySlot (int slot)
{
return false;
}
@Override
public void setDirection (float yaw, float pitch, EntityLivingBase player)
{
@@ -96,6 +112,103 @@ public class DrawbridgeLogic extends InventoryLogic implements IFacingLogic, IAc
}
}
/* 0 = Up
* 1 = Right
* 2 = Down
* 3 = Left
* 4 = Center, neutral
*/
public void setPlacementDirection (byte keycode)
{
if (keycode == 4)
{
fakePlayer.rotationYaw = 0;
fakePlayer.rotationPitch = 0;
}
else if (this.direction == 0 || this.direction == 1)
{
switch (keycode)
{
case 0:
fakePlayer.rotationYaw = 0;
break;
case 1:
fakePlayer.rotationYaw = 90;
break;
case 2:
fakePlayer.rotationYaw = 180;
break;
case 3:
fakePlayer.rotationYaw = 270;
break;
}
if (this.direction == 0)
fakePlayer.rotationPitch = -90;
else
fakePlayer.rotationPitch = 90;
}
else
{
if (keycode == 0) //Forward
{
fakePlayer.rotationYaw = mapDirection() * 90;
if (keycode == 0)
fakePlayer.rotationPitch = 90;
else
fakePlayer.rotationPitch = -90;
}
else if (keycode == 2) //Backward
{
int face = mapDirection() + 2;
if (face > 3)
face -= 4;
fakePlayer.rotationYaw = face * 90;
if (keycode == 0)
fakePlayer.rotationPitch = 90;
else
fakePlayer.rotationPitch = -90;
}
else
{
fakePlayer.rotationPitch = 0;
int facing = mapDirection();
if (keycode == 1)
facing += 1;
else
facing -= 1;
if (facing >= 4)
facing = 0;
if (facing < 0)
facing = 3;
fakePlayer.rotationYaw = facing * 90;
}
}
placementDirection = keycode;
}
int mapDirection ()
{
if (this.direction == 2) //North
return 0;
if (this.direction == 5) //East
return 1;
if (this.direction == 3) //South
return 2;
return 3; //West
}
public byte getPlacementDirection ()
{
return placementDirection;
}
@Override
public Container getGuiContainer (InventoryPlayer inventoryplayer, World world, int x, int y, int z)
{
@@ -173,12 +286,13 @@ public class DrawbridgeLogic extends InventoryLogic implements IFacingLogic, IAc
{
if (inventory[0].itemID >= 4096 || Block.blocksList[inventory[0].itemID] == null)
return;
worldObj.setBlock(xPos, yPos, zPos, inventory[0].itemID, inventory[0].getItemDamage(), 3);
Block placeBlock = Block.blocksList[inventory[0].itemID];
placeBlockAt(inventory[0], fakePlayer, worldObj, xPos, yPos, zPos, direction, 0, 0, 0, inventory[0].getItemDamage(), placeBlock);
}
else
{
worldObj.setBlock(xPos, yPos, zPos, blockToItem, inventory[0].getItemDamage(), 3);
Block placeBlock = Block.blocksList[blockToItem];
placeBlockAt(inventory[0], fakePlayer, worldObj, xPos, yPos, zPos, direction, 0, 0, 0, inventory[0].getItemDamage(), placeBlock);
}
worldObj.playSoundEffect((double) xPos + 0.5D, (double) yPos + 0.5D, (double) zPos + 0.5D, "tile.piston.out", 0.25F, worldObj.rand.nextFloat() * 0.25F + 0.6F);
inventory[0].stackSize--;
@@ -233,8 +347,8 @@ public class DrawbridgeLogic extends InventoryLogic implements IFacingLogic, IAc
if (inventory[0] != null && validBlock(block) && validMetadata(block.blockID, meta))
{
worldObj.playSoundEffect((double) xPos + 0.5D, (double) yPos + 0.5D, (double) zPos + 0.5D, "tile.piston.in", 0.25F, worldObj.rand.nextFloat() * 0.15F + 0.6F);
worldObj.setBlock(xPos, yPos, zPos, 0);
inventory[0].stackSize++;
if (worldObj.setBlock(xPos, yPos, zPos, 0))
inventory[0].stackSize++;
}
else
{
@@ -252,6 +366,31 @@ public class DrawbridgeLogic extends InventoryLogic implements IFacingLogic, IAc
}
}
/**
* Called to actually place the block, after the location is determined
* and all permission checks have been made.
* Copied from ItemBlock
*
* @param stack The item stack that was used to place the block. This can be changed inside the method.
* @param player The player who is placing the block. Can be null if the block is not being placed by a player.
* @param side The side the player (or machine) right-clicked on.
*/
public boolean placeBlockAt (ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ, int metadata, Block block)
{
if (!world.setBlock(x, y, z, block.blockID, metadata, 3))
{
return false;
}
if (world.getBlockId(x, y, z) == block.blockID)
{
block.onBlockPlacedBy(world, x, y, z, player, stack);
block.onPostBlockPlaced(world, x, y, z, metadata);
}
return true;
}
boolean validBlock (Block block)
{
int type = TConstructRegistry.interchangableBlockMapping[block.blockID];
@@ -286,7 +425,7 @@ public class DrawbridgeLogic extends InventoryLogic implements IFacingLogic, IAc
}
if (type == 3)
{
return true; //TODO: rotational metadata
return true; //TODO: rotational metadata, probably not needed anymore
}
if (type == 4)
{
@@ -298,7 +437,7 @@ public class DrawbridgeLogic extends InventoryLogic implements IFacingLogic, IAc
}
return false;
}
@Override
public void readFromNBT (NBTTagCompound tags)
{
@@ -322,11 +461,14 @@ public class DrawbridgeLogic extends InventoryLogic implements IFacingLogic, IAc
public void readCustomNBT (NBTTagCompound tags)
{
direction = tags.getByte("Direction");
placementDirection = tags.getByte("Placement");
}
public void writeCustomNBT (NBTTagCompound tags)
{
tags.setByte("Direction", direction);
tags.setByte("Placement", placementDirection);
}
/* Packets */
@@ -349,10 +491,11 @@ public class DrawbridgeLogic extends InventoryLogic implements IFacingLogic, IAc
{
return extension != 0;
}
@Override
public void onInventoryChanged() {
super.onInventoryChanged();
this.worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
}
public void onInventoryChanged ()
{
super.onInventoryChanged();
this.worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
}
}
+42 -6
View File
@@ -1,30 +1,43 @@
package tconstruct.blocks.traps;
import tconstruct.client.block.BarricadeRender;
import tconstruct.library.TConstructRegistry;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.Icon;
import net.minecraft.world.Explosion;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import tconstruct.client.block.BarricadeRender;
import tconstruct.library.TConstructRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class BarricadeBlock extends Block
{
public BarricadeBlock(int blockID)//, String name, int texture)
Block modelBlock;
int modelMeta;
public BarricadeBlock(int blockID, Block model, int meta)
{
super(blockID, Material.wood);
this.modelBlock = model;
this.modelMeta = meta;
setHardness(4.0F);
this.setCreativeTab(TConstructRegistry.blockTab);
//setUnlocalizedName("barricade" + name);
//GameRegistry.addName(this, name + " Barricade");
}
public Icon getIcon (int side, int meta)
{
return Block.wood.getIcon(2, meta % 4);
return modelBlock.getIcon(2, modelMeta);
}
@Override
public void registerIcons(IconRegister par1IconRegister)
{
}
public boolean renderAsNormalBlock ()
@@ -89,4 +102,27 @@ public class BarricadeBlock extends Block
}
return false;
}
@Override
public void onBlockExploded (World world, int x, int y, int z, Explosion explosion)
{
double distance = (x - explosion.explosionX) + (y - explosion.explosionY) + (z - explosion.explosionZ);
distance = Math.abs(distance);
double power = (explosion.explosionSize * 2) / distance;
int meta = world.getBlockMetadata(x, y, z);
int trueMeta = meta % 4;
trueMeta -= power;
if (trueMeta < 0)
world.setBlockToAir(x, y, z);
else
world.setBlockMetadataWithNotify(x, y, z, (int) (meta - power), 3);
onBlockDestroyedByExplosion(world, x, y, z, explosion);
}
@Override
@SideOnly(Side.CLIENT)
public boolean shouldSideBeRendered(IBlockAccess world, int x, int y, int z, int side)
{
return true;
}
}
+99 -2
View File
@@ -1,22 +1,119 @@
package tconstruct.blocks.traps;
import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionEffect;
import net.minecraft.util.DamageSource;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import tconstruct.client.block.PunjiRender;
import tconstruct.common.TContent;
import tconstruct.library.TConstructRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class Punji extends Block
{
public Punji(int id)
{
super(id, Material.circuits);
super(id, Material.plants);
this.setBlockBounds(0.125f, 0, 0.125f, 0.875f, 0.375f, 0.875f);
this.setStepSound(Block.soundGrassFootstep);
this.setCreativeTab(TConstructRegistry.blockTab);
this.setHardness(3.0f);
}
@Override
public void onEntityCollidedWithBlock (World world, int x, int y, int z, Entity entity)
{
entity.fallDistance *= 2.0F;
if (entity instanceof EntityLivingBase)
{
int damage = world.getBlockMetadata(x, y, z) / 2 + 1;
if (entity.fallDistance > 0)
damage += ((entity.fallDistance) * 1.5 + 2);
entity.attackEntityFrom(DamageSource.cactus, damage);
((EntityLivingBase) entity).addPotionEffect(new PotionEffect(Potion.moveSlowdown.id, 20, 1));
}
}
/* Right-click adds sticks */
@Override
public boolean onBlockActivated (World world, int x, int y, int z, EntityPlayer player, int par6, float hitX, float hitY, float hitZ)
{
/*if (world.isRemote)
return false;*/
int meta = world.getBlockMetadata(x, y, z);
if (meta < 4)
{
ItemStack stack = player.getCurrentEquippedItem();
if (stack != null && stack.itemID == TContent.punji.blockID)
{
world.setBlockMetadataWithNotify(x, y, z, meta + 1, 3);
world.playSoundEffect((double) ((float) x + 0.5F), (double) ((float) y + 0.5F), (double) ((float) z + 0.5F), this.stepSound.getPlaceSound(),
(this.stepSound.getVolume() + 1.0F) / 2.0F, this.stepSound.getPitch() * 0.8F);
player.swingItem();
if (!player.capabilities.isCreativeMode)
{
stack.stackSize--;
if (stack.stackSize <= 0)
player.destroyCurrentEquippedItem();
}
}
}
return true;
}
@Override
public int quantityDropped(int meta, int fortune, Random random)
{
return meta + 1;
}
/**
* Is this block (a) opaque and (b) a full 1m cube? This determines whether or not to render the shared face of two
* adjacent blocks and also whether the player can attach torches, redstone wire, etc to this block.
*/
public boolean isOpaqueCube ()
{
return false;
}
/**
* If this block doesn't render as an ordinary block it will return False (examples: signs, buttons, stairs, etc)
*/
public boolean renderAsNormalBlock ()
{
return false;
}
public int getRenderType ()
{
return PunjiRender.model;
}
@Override
@SideOnly(Side.CLIENT)
public void registerIcons (IconRegister iconRegister)
{
this.blockIcon = iconRegister.registerIcon("tinker:punji");
}
@Override
@SideOnly(Side.CLIENT)
public boolean shouldSideBeRendered(IBlockAccess world, int x, int y, int z, int side)
{
return true;
}
}
+4 -2
View File
@@ -4,6 +4,7 @@ import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.audio.SoundPool;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.client.model.ModelBiped;
import net.minecraft.client.renderer.Tessellator;
@@ -18,6 +19,7 @@ import net.minecraftforge.client.GuiIngameForge;
import net.minecraftforge.client.event.RenderGameOverlayEvent;
import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType;
import net.minecraftforge.client.event.TextureStitchEvent;
import net.minecraftforge.client.event.sound.SoundLoadEvent;
import net.minecraftforge.event.ForgeSubscribe;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidRegistry;
@@ -36,9 +38,9 @@ public class TClientEvents
/* Sounds */
/*boolean initSounds;
boolean initSounds;
@ForgeSubscribe
/*@ForgeSubscribe
public void onSound (SoundLoadEvent event)
{
if (!initSounds)
+10 -7
View File
@@ -61,6 +61,7 @@ import org.w3c.dom.Document;
import tconstruct.TConstruct;
import tconstruct.blocks.logic.CastingBasinLogic;
import tconstruct.blocks.logic.CastingTableLogic;
import tconstruct.blocks.logic.CraftingStationLogic;
import tconstruct.blocks.logic.DrawbridgeLogic;
import tconstruct.blocks.logic.DryingRackLogic;
import tconstruct.blocks.logic.FrypanLogic;
@@ -82,6 +83,7 @@ import tconstruct.client.block.MachineRender;
import tconstruct.client.block.OreberryRender;
import tconstruct.client.block.PaneConnectedRender;
import tconstruct.client.block.PaneRender;
import tconstruct.client.block.PunjiRender;
import tconstruct.client.block.SearedRender;
import tconstruct.client.block.SmallFontRenderer;
import tconstruct.client.block.SmelteryRender;
@@ -100,6 +102,7 @@ import tconstruct.client.entity.projectile.ArrowRender;
import tconstruct.client.entity.projectile.DaggerRender;
import tconstruct.client.entity.projectile.LaunchedItemRender;
import tconstruct.client.gui.ArmorExtendedGui;
import tconstruct.client.gui.CraftingStationGui;
import tconstruct.client.gui.DrawbridgeGui;
import tconstruct.client.gui.FrypanGui;
import tconstruct.client.gui.GlowstoneAggregatorGui;
@@ -150,7 +153,6 @@ import tconstruct.library.crafting.ToolBuilder;
import tconstruct.library.tools.ToolCore;
import tconstruct.util.player.ArmorExtended;
import tconstruct.util.player.KnapsackInventory;
import tconstruct.util.player.TPlayerStats;
import com.google.common.collect.Lists;
@@ -191,9 +193,10 @@ public class TProxyClient extends TProxyCommon
return new GlowstoneAggregatorGui(player.inventory, (GlowstoneAggregator) world.getBlockTileEntity(x, y, z), world, x, y, z);
if (ID == drawbridgeGui)
return new DrawbridgeGui(player.inventory, (DrawbridgeLogic) world.getBlockTileEntity(x, y, z), world, x, y, z);
if (ID == landmineGui){
return new GuiLandmine(new ContainerLandmine(player, (TileEntityLandmine) world.getBlockTileEntity(x, y, z)));
}
if (ID == landmineGui)
return new GuiLandmine(new ContainerLandmine(player, (TileEntityLandmine) world.getBlockTileEntity(x, y, z)));
if (ID == craftingStationID)
return new CraftingStationGui(player.inventory, (CraftingStationLogic) world.getBlockTileEntity(x, y, z), x, y, z);
if (ID == manualGuiID)
{
@@ -367,7 +370,7 @@ public class TProxyClient extends TProxyCommon
{
Minecraft mc = Minecraft.getMinecraft();
MinecraftForge.EVENT_BUS.register(new TClientEvents());
smallFontRenderer = new SmallFontRenderer(mc.gameSettings, new ResourceLocation("/font/default.png"), mc.renderEngine, false);
smallFontRenderer = new SmallFontRenderer(mc.gameSettings, new ResourceLocation("font/default.png"), mc.renderEngine, false);
RenderingRegistry.registerBlockHandler(new TableRender());
RenderingRegistry.registerBlockHandler(new TableForgeRender());
RenderingRegistry.registerBlockHandler(new FrypanRender());
@@ -383,8 +386,8 @@ public class TProxyClient extends TProxyCommon
RenderingRegistry.registerBlockHandler(new PaneRender());
RenderingRegistry.registerBlockHandler(new PaneConnectedRender());
RenderingRegistry.registerBlockHandler(new RenderLandmine());
RenderingRegistry.registerBlockHandler(new PunjiRender());
//RenderingRegistry.registerBlockHandler(new BrickRender());
//RenderingRegistry.registerBlockHandler(new BallRepeaterRender());
//Special Renderers
ClientRegistry.bindTileEntitySpecialRenderer(CastingTableLogic.class, new CastingTableSpecialRenderer());
@@ -408,7 +411,7 @@ public class TProxyClient extends TProxyCommon
//RenderingRegistry.registerEntityRenderingHandler(net.minecraft.entity.player.EntityPlayer.class, new PlayerArmorRender()); // <-- Works, woo!
MinecraftForgeClient.registerItemRenderer(TContent.shortbow.itemID, new CustomBowRenderer());
VillagerRegistry.instance().registerVillagerSkin(78943, new ResourceLocation("/mods/tinker/textures/mob/villagertools.png"));
VillagerRegistry.instance().registerVillagerSkin(78943, new ResourceLocation("tinker", "textures/mob/villagertools.png"));
addRenderMappings();
addToolButtons();
File diff suppressed because it is too large. Load diff
+119
View File
@@ -0,0 +1,119 @@
package tconstruct.client.block;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderBlocks;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.world.IBlockAccess;
import org.lwjgl.opengl.GL11;
import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler;
import cpw.mods.fml.client.registry.RenderingRegistry;
public class PunjiRender implements ISimpleBlockRenderingHandler
{
public static int model = RenderingRegistry.getNextAvailableRenderId();
@Override
public void renderInventoryBlock (Block block, int metadata, int modelID, RenderBlocks renderer)
{
if (modelID == model)
{
renderer.setRenderBounds(0.4375, 0.0, 0.4375, 0.5625, 1.0f, 0.5625);
renderStandardInvBlock(renderer, block, metadata);
}
}
@Override
public boolean renderWorldBlock (IBlockAccess world, int x, int y, int z, Block block, int modelID, RenderBlocks renderer)
{
if (modelID == model)
{
int metadata = world.getBlockMetadata(x, y, z);
renderer.setRenderBounds(0.4375, 0.0, 0.4375, 0.5625, 0.375f, 0.5625);
renderer.renderStandardBlock(block, x, y, z);
if (metadata >= 1)
{
renderer.setRenderBounds(0.125, 0.0, 0.125, 0.25, 0.375f, 0.25);
renderer.renderStandardBlock(block, x, y, z);
}
if (metadata >= 2)
{
renderer.setRenderBounds(0.75, 0.0, 0.75, 0.875, 0.375f, 0.875);
renderer.renderStandardBlock(block, x, y, z);
}
if (metadata >= 3)
{
renderer.setRenderBounds(0.125, 0.0, 0.75, 0.25, 0.375f, 0.875);
renderer.renderStandardBlock(block, x, y, z);
}
if (metadata >= 4)
{
renderer.setRenderBounds(0.75, 0.0, 0.125, 0.875, 0.375f, 0.25);
renderer.renderStandardBlock(block, x, y, z);
}
/*if (metadata == 5)
{
renderer.setRenderBounds(0.0F, 0.0, 0.0F, 1.0F, 0.875F, 1.0F);
renderer.renderStandardBlock(block, x, y, z);
}
else
{
renderer.setRenderBounds(0.0F, 0.75F, 0.0F, 1.0F, 1.0F, 1.0F);
renderer.renderStandardBlock(block, x, y, z);
renderer.setRenderBounds(0.0F, 0.0F, 0.0F, 0.25F, 0.75F, 0.25F);
renderer.renderStandardBlock(block, x, y, z);
renderer.setRenderBounds(0.75F, 0.0F, 0.0F, 1.0F, 0.75F, 0.25F);
renderer.renderStandardBlock(block, x, y, z);
renderer.setRenderBounds(0.0F, 0.0F, 0.75F, 0.25F, 0.75F, 1.0F);
renderer.renderStandardBlock(block, x, y, z);
renderer.setRenderBounds(0.75F, 0.0F, 0.75F, 1.0F, 0.75F, 1.0F);
renderer.renderStandardBlock(block, x, y, z);
}*/
}
return true;
}
@Override
public boolean shouldRender3DInInventory ()
{
return true;
}
@Override
public int getRenderId ()
{
return model;
}
public static void renderStandardInvBlock (RenderBlocks renderblocks, Block block, int meta)
{
Tessellator tessellator = Tessellator.instance;
GL11.glTranslatef(-0.5F, -0.5F, -0.5F);
tessellator.startDrawingQuads();
tessellator.setNormal(0.0F, -1F, 0.0F);
renderblocks.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, block.getIcon(0, meta));
tessellator.draw();
tessellator.startDrawingQuads();
tessellator.setNormal(0.0F, 1.0F, 0.0F);
renderblocks.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, block.getIcon(1, meta));
tessellator.draw();
tessellator.startDrawingQuads();
tessellator.setNormal(0.0F, 0.0F, -1F);
renderblocks.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, block.getIcon(2, meta));
tessellator.draw();
tessellator.startDrawingQuads();
tessellator.setNormal(0.0F, 0.0F, 1.0F);
renderblocks.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, block.getIcon(3, meta));
tessellator.draw();
tessellator.startDrawingQuads();
tessellator.setNormal(-1F, 0.0F, 0.0F);
renderblocks.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, block.getIcon(4, meta));
tessellator.draw();
tessellator.startDrawingQuads();
tessellator.setNormal(1.0F, 0.0F, 0.0F);
renderblocks.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, block.getIcon(5, meta));
tessellator.draw();
GL11.glTranslatef(0.5F, 0.5F, 0.5F);
}
}
@@ -0,0 +1,43 @@
package tconstruct.client.gui;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;
import tconstruct.blocks.logic.CraftingStationLogic;
import tconstruct.inventory.CraftingStationContainer;
public class CraftingStationGui extends GuiContainer
{
public CraftingStationGui(InventoryPlayer inventoryplayer, CraftingStationLogic logic, int x, int y, int z)
{
super(new CraftingStationContainer(inventoryplayer, logic, x, y, z));
}
/*public void onGuiClosed ()
{
System.out.println("Gui Closed");
super.onGuiClosed();
}*/
@Override
protected void drawGuiContainerForegroundLayer (int par1, int par2)
{
fontRenderer.drawString("Crafting", 28, 6, 0x404040);
fontRenderer.drawString("Inventory", 8, (ySize - 96) + 2, 0x404040);
}
private static final ResourceLocation background = new ResourceLocation("tinker", "textures/gui/crafting.png");
@Override
protected void drawGuiContainerBackgroundLayer (float f, int i, int j)
{
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
this.mc.func_110434_K().func_110577_a(background);
int l = (width - xSize) / 2;
int i1 = (height - ySize) / 2;
drawTexturedModalRect(l, i1, 0, 0, xSize, ySize);
}
}
@@ -0,0 +1,47 @@
package tconstruct.client.gui;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT)
public class DrawbridgeButton extends GuiButton
{
/**
* True for pointing right (next page), false for pointing left (previous page).
*/
int uPos;
int vPos;
public DrawbridgeButton(int id, int xPos, int yPos, int u, int v, int xSize, int ySize)
{
super(id, xPos, yPos, xSize, ySize, "");
uPos = u;
vPos = v;
}
private static final ResourceLocation background = new ResourceLocation("tinker", "textures/gui/drawbridge.png");
/**
* Draws this button to the screen.
*/
public void drawButton (Minecraft mc, int par2, int par3)
{
if (this.drawButton)
{
boolean hovering = par2 >= this.xPosition && par3 >= this.yPosition && par2 < this.xPosition + this.width && par3 < this.yPosition + this.height;
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
mc.func_110434_K().func_110577_a(background);
int offset = 0;
if (!this.enabled)
offset = 46;
else if (hovering)
offset = 92;
this.drawTexturedModalRect(this.xPosition, this.yPosition, uPos, vPos + offset, width, height);
}
}
}
+74
View File
@@ -1,7 +1,12 @@
package tconstruct.client.gui;
import java.io.ByteArrayOutputStream;
import java.io.DataOutputStream;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.network.packet.Packet250CustomPayload;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
@@ -9,6 +14,7 @@ import net.minecraft.world.World;
import org.lwjgl.opengl.GL11;
import tconstruct.blocks.logic.DrawbridgeLogic;
import cpw.mods.fml.common.network.PacketDispatcher;
public class DrawbridgeGui extends GuiContainer
{
@@ -37,4 +43,72 @@ public class DrawbridgeGui extends GuiContainer
int cornerY = (height - ySize) / 2;
drawTexturedModalRect(cornerX, cornerY, 0, 0, xSize, ySize);
}
public void initGui ()
{
super.initGui();
int cornerX = (this.width - this.xSize) / 2;
int cornerY = (this.height - this.ySize) / 2;
this.buttonList.clear();
GuiButton button = new DrawbridgeButton(0, cornerX + 131, cornerY + 18, 176, 0, 21, 22);
if (logic.getPlacementDirection() == 0)
button.enabled = false;
this.buttonList.add(button);
button = new DrawbridgeButton(1, cornerX + 146, cornerY + 34, 199, 23, 22, 21);
if (logic.getPlacementDirection() == 1)
button.enabled = false;
this.buttonList.add(button);
button = new DrawbridgeButton(2, cornerX + 132, cornerY + 48, 199, 0, 21, 22);
if (logic.getPlacementDirection() == 2)
button.enabled = false;
this.buttonList.add(button);
button = new DrawbridgeButton(3, cornerX + 117, cornerY + 34, 178, 23, 22, 21);
if (logic.getPlacementDirection() == 3)
button.enabled = false;
this.buttonList.add(button);
button = new DrawbridgeButton(4, cornerX + 135, cornerY + 40, 217, 0, 10, 10);
if (logic.getPlacementDirection() == 4)
button.enabled = false;
this.buttonList.add(button);
}
protected void actionPerformed (GuiButton button)
{
for (Object o : buttonList)
{
GuiButton b = (GuiButton) o;
b.enabled = true;
}
button.enabled = false;
logic.setPlacementDirection((byte) button.id);
updateServer((byte) button.id);
}
void updateServer (byte direction)
{
ByteArrayOutputStream bos = new ByteArrayOutputStream(8);
DataOutputStream outputStream = new DataOutputStream(bos);
try
{
outputStream.writeByte(5);
outputStream.writeInt(logic.worldObj.provider.dimensionId);
outputStream.writeInt(logic.xCoord);
outputStream.writeInt(logic.yCoord);
outputStream.writeInt(logic.zCoord);
outputStream.writeByte(direction);
}
catch (Exception ex)
{
ex.printStackTrace();
}
Packet250CustomPayload packet = new Packet250CustomPayload();
packet.channel = "TConstruct";
packet.data = bos.toByteArray();
packet.length = bos.size();
PacketDispatcher.sendPacketToServer(packet);
}
}
+4 -4
View File
@@ -141,7 +141,7 @@ public class SmelteryGui extends NewContainerGui
int sizeY = logic.getScaledFuelGague(52);
if (mouseX >= leftX && mouseX <= leftX + sizeX && mouseY >= topY && mouseY < topY + sizeY)
{
drawFluidStackTooltip(new FluidStack(Block.lavaStill.blockID, logic.fuelAmount), mouseX - cornerX + 36, mouseY - cornerY);
drawFluidStackTooltip(new FluidStack(-37, logic.fuelAmount), mouseX - cornerX + 36, mouseY - cornerY);
}
}
}
@@ -261,7 +261,7 @@ public class SmelteryGui extends NewContainerGui
public List getLiquidTooltip (FluidStack liquid, boolean par2)
{
ArrayList list = new ArrayList();
if (liquid.getFluid().getBlockID() == Block.lavaStill.blockID)
if (liquid.fluidID == -37)
{
list.add("\u00A7fFuel");
int mB = liquid.amount;
@@ -270,9 +270,9 @@ public class SmelteryGui extends NewContainerGui
}
else
{
String name = FluidRegistry.getFluidName(liquid);
String name = StatCollector.translateToLocal(FluidRegistry.getFluidName(liquid));
list.add("\u00A7f" + name);
if (name.equals("Liquified Emerald"))
if (name.equals("liquified emerald"))
{
float emeralds = liquid.amount / 320f;
list.add("Emeralds: " + emeralds);
+205 -35
View File
@@ -35,27 +35,160 @@ import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.oredict.OreDictionary;
import net.minecraftforge.oredict.ShapedOreRecipe;
import net.minecraftforge.oredict.ShapelessOreRecipe;
import tconstruct.TConstruct;
import tconstruct.blocks.*;
import tconstruct.blocks.logic.*;
import tconstruct.entity.*;
import tconstruct.entity.projectile.*;
import tconstruct.items.*;
import tconstruct.items.armor.*;
import tconstruct.items.blocks.*;
import tconstruct.items.tools.*;
import tconstruct.landmine.block.*;
import tconstruct.landmine.item.*;
import tconstruct.landmine.tileentity.*;
import tconstruct.library.*;
import tconstruct.library.client.*;
import tconstruct.library.crafting.*;
import tconstruct.library.tools.*;
import tconstruct.library.util.*;
import tconstruct.modifiers.*;
import tconstruct.util.*;
import tconstruct.blocks.Aggregator;
import tconstruct.blocks.CraftingStationBlock;
import tconstruct.blocks.DryingRack;
import tconstruct.blocks.EquipBlock;
import tconstruct.blocks.GlassBlockConnected;
import tconstruct.blocks.GlassBlockConnectedMeta;
import tconstruct.blocks.GlassPane;
import tconstruct.blocks.GlassPaneStained;
import tconstruct.blocks.GravelOre;
import tconstruct.blocks.LavaTankBlock;
import tconstruct.blocks.LightCrystalBase;
import tconstruct.blocks.LiquidMetalFinite;
import tconstruct.blocks.MetalOre;
import tconstruct.blocks.MultiBrick;
import tconstruct.blocks.MultiBrickFancy;
import tconstruct.blocks.OreberryBush;
import tconstruct.blocks.OreberryBushEssence;
import tconstruct.blocks.RedstoneMachine;
import tconstruct.blocks.SearedBlock;
import tconstruct.blocks.SearedSlab;
import tconstruct.blocks.SmelteryBlock;
import tconstruct.blocks.SoilBlock;
import tconstruct.blocks.SpeedBlock;
import tconstruct.blocks.SpeedSlab;
import tconstruct.blocks.StoneTorch;
import tconstruct.blocks.TMetalBlock;
import tconstruct.blocks.ToolForgeBlock;
import tconstruct.blocks.ToolStationBlock;
import tconstruct.blocks.logic.CastingBasinLogic;
import tconstruct.blocks.logic.CastingTableLogic;
import tconstruct.blocks.logic.CraftingStationLogic;
import tconstruct.blocks.logic.DrawbridgeLogic;
import tconstruct.blocks.logic.DryingRackLogic;
import tconstruct.blocks.logic.FaucetLogic;
import tconstruct.blocks.logic.FirestarterLogic;
import tconstruct.blocks.logic.FrypanLogic;
import tconstruct.blocks.logic.GlowstoneAggregator;
import tconstruct.blocks.logic.LavaTankLogic;
import tconstruct.blocks.logic.MultiServantLogic;
import tconstruct.blocks.logic.PartCrafterLogic;
import tconstruct.blocks.logic.PatternChestLogic;
import tconstruct.blocks.logic.SmelteryDrainLogic;
import tconstruct.blocks.logic.SmelteryLogic;
import tconstruct.blocks.logic.StencilTableLogic;
import tconstruct.blocks.logic.ToolForgeLogic;
import tconstruct.blocks.logic.ToolStationLogic;
import tconstruct.blocks.traps.BarricadeBlock;
import tconstruct.blocks.traps.Punji;
import tconstruct.entity.Automaton;
import tconstruct.entity.BlueSlime;
import tconstruct.entity.Crystal;
import tconstruct.entity.FancyEntityItem;
import tconstruct.entity.MiniGardy;
import tconstruct.entity.SlimeClone;
import tconstruct.entity.projectile.ArrowEntity;
import tconstruct.entity.projectile.DaggerEntity;
import tconstruct.entity.projectile.LaunchedPotion;
import tconstruct.items.Bowstring;
import tconstruct.items.CraftingItem;
import tconstruct.items.DiamondApple;
import tconstruct.items.FilledBucket;
import tconstruct.items.Fletching;
import tconstruct.items.GoldenHead;
import tconstruct.items.Manual;
import tconstruct.items.MaterialItem;
import tconstruct.items.MetalPattern;
import tconstruct.items.OreBerries;
import tconstruct.items.Pattern;
import tconstruct.items.StrangeFood;
import tconstruct.items.TitleIcon;
import tconstruct.items.ToolPart;
import tconstruct.items.ToolPartHidden;
import tconstruct.items.ToolShard;
import tconstruct.items.armor.Glove;
import tconstruct.items.armor.HeartCanister;
import tconstruct.items.armor.Knapsack;
import tconstruct.items.armor.TArmorBase;
import tconstruct.items.blocks.BarricadeItem;
import tconstruct.items.blocks.CraftedSoilItemBlock;
import tconstruct.items.blocks.GlassBlockItem;
import tconstruct.items.blocks.GlassPaneItem;
import tconstruct.items.blocks.GravelOreItem;
import tconstruct.items.blocks.LavaTankItemBlock;
import tconstruct.items.blocks.LightCrystalItem;
import tconstruct.items.blocks.MetalItemBlock;
import tconstruct.items.blocks.MetalOreItemBlock;
import tconstruct.items.blocks.MultiBrickFancyItem;
import tconstruct.items.blocks.MultiBrickItem;
import tconstruct.items.blocks.OreberryBushItem;
import tconstruct.items.blocks.OreberryBushSecondItem;
import tconstruct.items.blocks.RedstoneMachineItem;
import tconstruct.items.blocks.SearedSlabItem;
import tconstruct.items.blocks.SearedTableItemBlock;
import tconstruct.items.blocks.SmelteryItemBlock;
import tconstruct.items.blocks.SpeedBlockItem;
import tconstruct.items.blocks.SpeedSlabItem;
import tconstruct.items.blocks.StainedGlassClearItem;
import tconstruct.items.blocks.StainedGlassClearPaneItem;
import tconstruct.items.blocks.ToolForgeItemBlock;
import tconstruct.items.blocks.ToolStationItemBlock;
import tconstruct.items.tools.Arrow;
import tconstruct.items.tools.BattleSign;
import tconstruct.items.tools.Battleaxe;
import tconstruct.items.tools.Broadsword;
import tconstruct.items.tools.Chisel;
import tconstruct.items.tools.Cleaver;
import tconstruct.items.tools.Cutlass;
import tconstruct.items.tools.Dagger;
import tconstruct.items.tools.Excavator;
import tconstruct.items.tools.FryingPan;
import tconstruct.items.tools.Hammer;
import tconstruct.items.tools.Hatchet;
import tconstruct.items.tools.Longsword;
import tconstruct.items.tools.LumberAxe;
import tconstruct.items.tools.Mattock;
import tconstruct.items.tools.Pickaxe;
import tconstruct.items.tools.PotionLauncher;
import tconstruct.items.tools.Rapier;
import tconstruct.items.tools.Scythe;
import tconstruct.items.tools.Shortbow;
import tconstruct.items.tools.Shovel;
import tconstruct.landmine.block.BlockLandmine;
import tconstruct.landmine.item.ItemBlockLandmine;
import tconstruct.landmine.tileentity.TileEntityLandmine;
import tconstruct.library.TConstructRegistry;
import tconstruct.library.client.TConstructClientRegistry;
import tconstruct.library.crafting.Detailing;
import tconstruct.library.crafting.DryingRackRecipes;
import tconstruct.library.crafting.LiquidCasting;
import tconstruct.library.crafting.PatternBuilder;
import tconstruct.library.crafting.Smeltery;
import tconstruct.library.crafting.ToolBuilder;
import tconstruct.library.tools.ToolCore;
import tconstruct.library.util.IPattern;
import tconstruct.modifiers.ModAntiSpider;
import tconstruct.modifiers.ModAttack;
import tconstruct.modifiers.ModAutoSmelt;
import tconstruct.modifiers.ModBlaze;
import tconstruct.modifiers.ModButtertouch;
import tconstruct.modifiers.ModDurability;
import tconstruct.modifiers.ModElectric;
import tconstruct.modifiers.ModExtraModifier;
import tconstruct.modifiers.ModInteger;
import tconstruct.modifiers.ModLapis;
import tconstruct.modifiers.ModPiston;
import tconstruct.modifiers.ModRedstone;
import tconstruct.modifiers.ModReinforced;
import tconstruct.modifiers.ModRepair;
import tconstruct.modifiers.ModSmite;
import tconstruct.modifiers.TActiveOmniMod;
import tconstruct.util.PHConstruct;
import tconstruct.util.RecipeRemover;
import tconstruct.util.TDispenserBehaviorSpawnEgg;
import cpw.mods.fml.common.IFuelHandler;
import cpw.mods.fml.common.event.FMLInterModComms;
import cpw.mods.fml.common.registry.EntityRegistry;
@@ -142,6 +275,8 @@ public class TContent implements IFuelHandler
public static Block toolStationWood;
public static Block toolStationStone;
public static Block toolForge;
public static Block craftingStationWood;
public static Block heldItemBlock;
public static Block craftedSoil;
@@ -163,7 +298,11 @@ public class TContent implements IFuelHandler
//Traps
public static Block landmine;
public static Block barricade;
public static Block punji;
public static Block barricadeOak;
public static Block barricadeSpruce;
public static Block barricadeBirch;
public static Block barricadeJungle;
//InfiBlocks
public static Block speedBlock;
@@ -308,7 +447,7 @@ public class TContent implements IFuelHandler
BiomeGenBase[] wasteland = BiomeDictionary.getBiomesForType(BiomeDictionary.Type.WASTELAND);
BiomeGenBase[] nether = BiomeDictionary.getBiomesForType(BiomeDictionary.Type.NETHER);
if (PHConstruct.blueSlime)
{
EntityRegistry.addSpawn(BlueSlime.class, PHConstruct.blueSlimeWeight, 4, 4, EnumCreatureType.monster, plains);
@@ -340,7 +479,7 @@ public class TContent implements IFuelHandler
void registerBlocks ()
{
//Tool Station
toolStationWood = new ToolStationBlock(PHConstruct.woodCrafter, Material.wood).setUnlocalizedName("ToolStation");
toolStationWood = new ToolStationBlock(PHConstruct.woodStation, Material.wood).setUnlocalizedName("ToolStation");
GameRegistry.registerBlock(toolStationWood, ToolStationItemBlock.class, "ToolStationBlock");
GameRegistry.registerTileEntity(ToolStationLogic.class, "ToolStation");
GameRegistry.registerTileEntity(PartCrafterLogic.class, "PartCrafter");
@@ -351,6 +490,10 @@ public class TContent implements IFuelHandler
GameRegistry.registerBlock(toolForge, ToolForgeItemBlock.class, "ToolForgeBlock");
GameRegistry.registerTileEntity(ToolForgeLogic.class, "ToolForge");
craftingStationWood = new CraftingStationBlock(PHConstruct.woodCrafter, Material.wood).setUnlocalizedName("CraftingStation");
GameRegistry.registerBlock(craftingStationWood, "CraftingStation");
GameRegistry.registerTileEntity(CraftingStationLogic.class, "CraftingStation");
heldItemBlock = new EquipBlock(PHConstruct.heldItemBlock, Material.wood).setUnlocalizedName("Frypan");
GameRegistry.registerBlock(heldItemBlock, "HeldItemBlock");
GameRegistry.registerTileEntity(FrypanLogic.class, "FrypanLogic");
@@ -394,19 +537,35 @@ public class TContent implements IFuelHandler
GameRegistry.registerBlock(redstoneMachine, RedstoneMachineItem.class, "Redstone.Machine");
GameRegistry.registerTileEntity(DrawbridgeLogic.class, "Drawbridge");
GameRegistry.registerTileEntity(FirestarterLogic.class, "Firestarter");
//Landmine
landmine = new BlockLandmine(PHConstruct.landmine).setHardness(0.5F).setResistance(0F).setStepSound(Block.soundMetalFootstep).setCreativeTab(CreativeTabs.tabRedstone).setUnlocalizedName("landmine");
//Traps
landmine = new BlockLandmine(PHConstruct.landmine).setHardness(0.5F).setResistance(0F).setStepSound(Block.soundMetalFootstep).setCreativeTab(CreativeTabs.tabRedstone)
.setUnlocalizedName("landmine");
GameRegistry.registerBlock(landmine, ItemBlockLandmine.class, "Redstone.Landmine");
GameRegistry.registerTileEntity(TileEntityLandmine.class, "Landmine");
punji = new Punji(PHConstruct.punji).setUnlocalizedName("trap.punji");
GameRegistry.registerBlock(punji, "trap.punji");
barricadeOak = new BarricadeBlock(PHConstruct.barricadeOak, Block.wood, 0).setUnlocalizedName("trap.barricade.oak");
GameRegistry.registerBlock(barricadeOak, BarricadeItem.class, "trap.barricade.oak");
barricadeSpruce = new BarricadeBlock(PHConstruct.barricadeSpruce, Block.wood, 1).setUnlocalizedName("trap.barricade.spruce");
GameRegistry.registerBlock(barricadeSpruce, BarricadeItem.class, "trap.barricade.spruce");
barricadeBirch = new BarricadeBlock(PHConstruct.barricadeBirch, Block.wood, 2).setUnlocalizedName("trap.barricade.birch");
GameRegistry.registerBlock(barricadeBirch, BarricadeItem.class, "trap.barricade.birch");
barricadeJungle = new BarricadeBlock(PHConstruct.barricadeJungle, Block.wood, 3).setUnlocalizedName("trap.barricade.jungle");
GameRegistry.registerBlock(barricadeJungle, BarricadeItem.class, "trap.barricade.jungle");
dryingRack = new DryingRack(PHConstruct.dryingRack).setUnlocalizedName("Armor.DryingRack");
GameRegistry.registerBlock(dryingRack, "Armor.DryingRack");
GameRegistry.registerTileEntity(DryingRackLogic.class, "Armor.DryingRack");
//Liquids
liquidMetal = new MaterialLiquid(MapColor.tntColor);
moltenIronFluid = new Fluid("Molten Iron");
moltenIron = new LiquidMetalFinite(PHConstruct.moltenIron, moltenIronFluid, "liquid_iron").setUnlocalizedName("metal.molten.iron");
GameRegistry.registerBlock(moltenIron, "metal.molten.iron");
@@ -542,7 +701,7 @@ public class TContent implements IFuelHandler
FluidRegistry.registerFluid(moltenStoneFluid);
FluidContainerRegistry.registerFluidContainer(new FluidContainerData(new FluidStack(moltenStoneFluid, 1), new ItemStack(buckets, 1, 14), new ItemStack(Item.bucketEmpty)));
moltenEmeraldFluid = new Fluid("Molten Emerald");
moltenEmeraldFluid = new Fluid("Liquified Emerald");
moltenEmerald = new LiquidMetalFinite(PHConstruct.moltenEmerald, moltenEmeraldFluid, "liquid_villager").setUnlocalizedName("molten.emerald");
GameRegistry.registerBlock(moltenEmerald, "molten.emerald");
moltenEmeraldFluid.setBlockID(moltenEmerald).setDensity(3000).setViscosity(6000);
@@ -661,8 +820,8 @@ public class TContent implements IFuelHandler
glassPane = new GlassPane(PHConstruct.glassPane);
GameRegistry.registerBlock(glassPane, GlassPaneItem.class, "GlassPane");
stainedGlassClear = new GlassBlockConnectedMeta(PHConstruct.stainedGlassClear, "stained", true, "white", "orange", "magenta", "light_blue", "yellow", "lime", "pink", "gray", "light_gray", "cyan", "purple",
"blue", "brown", "green", "red", "black").setUnlocalizedName("GlassBlock.StainedClear");//new GlassBlockStained(PHConstruct.stainedGlassClear, "stainedglass_").setUnlocalizedName("GlassBlock.StainedClear");
stainedGlassClear = new GlassBlockConnectedMeta(PHConstruct.stainedGlassClear, "stained", true, "white", "orange", "magenta", "light_blue", "yellow", "lime", "pink", "gray", "light_gray",
"cyan", "purple", "blue", "brown", "green", "red", "black").setUnlocalizedName("GlassBlock.StainedClear");//new GlassBlockStained(PHConstruct.stainedGlassClear, "stainedglass_").setUnlocalizedName("GlassBlock.StainedClear");
stainedGlassClear.stepSound = Block.soundGlassFootstep;
GameRegistry.registerBlock(stainedGlassClear, StainedGlassClearItem.class, "GlassBlock.StainedClear");
@@ -1148,10 +1307,8 @@ public class TContent implements IFuelHandler
ItemStack[] ingotShapes = { new ItemStack(Item.ingotIron), new ItemStack(Item.ingotGold), new ItemStack(Item.brick), new ItemStack(Item.netherrackBrick), new ItemStack(materials, 1, 2) };
for (int i = 0; i < ingotShapes.length; i++)
{
TConstruct.tableCasting.addCastingRecipe(new ItemStack(TContent.metalPattern, 1, 0), new FluidStack(moltenAlubrassFluid, TConstruct.ingotLiquidValue), ingotShapes[i],
false, 50);
TConstruct.tableCasting.addCastingRecipe(new ItemStack(TContent.metalPattern, 1, 0), new FluidStack(moltenGoldFluid, TConstruct.ingotLiquidValue * 2),
ingotShapes[i], false, 50);
TConstruct.tableCasting.addCastingRecipe(new ItemStack(TContent.metalPattern, 1, 0), new FluidStack(moltenAlubrassFluid, TConstruct.ingotLiquidValue), ingotShapes[i], false, 50);
TConstruct.tableCasting.addCastingRecipe(new ItemStack(TContent.metalPattern, 1, 0), new FluidStack(moltenGoldFluid, TConstruct.ingotLiquidValue * 2), ingotShapes[i], false, 50);
}
ItemStack fullguardCast = new ItemStack(metalPattern, 1, 22);
@@ -1557,6 +1714,19 @@ public class TContent implements IFuelHandler
GameRegistry.addRecipe(new ItemStack(searedSlab, 6, 5), "bbb", 'b', new ItemStack(smeltery, 1, 9));
GameRegistry.addRecipe(new ItemStack(searedSlab, 6, 6), "bbb", 'b', new ItemStack(smeltery, 1, 10));
GameRegistry.addRecipe(new ItemStack(searedSlab, 6, 7), "bbb", 'b', new ItemStack(smeltery, 1, 11));
//Traps
GameRegistry.addRecipe(new ItemStack(punji, 5, 0), "b b", " b ", "b b", 'b', new ItemStack(Item.reed));
GameRegistry.addRecipe(new ItemStack(barricadeOak, 1, 0), "b", "b", 'b', new ItemStack(Block.wood, 1, 0));
GameRegistry.addRecipe(new ItemStack(barricadeSpruce, 1, 0), "b", "b", 'b', new ItemStack(Block.wood, 1, 1));
GameRegistry.addRecipe(new ItemStack(barricadeBirch, 1, 0), "b", "b", 'b', new ItemStack(Block.wood, 1, 2));
GameRegistry.addRecipe(new ItemStack(barricadeJungle, 1, 0), "b", "b", 'b', new ItemStack(Block.wood, 1, 3));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(barricadeOak, 1, 0), "b", "b", 'b', "logWood"));
GameRegistry.addRecipe(new ItemStack(craftingStationWood, 1, 0), "b", 'b', new ItemStack(Block.workbench));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(craftingStationWood, 1, 0), "b", 'b', "crafterWood"));
}
void setupToolTabs ()
@@ -1895,7 +2065,7 @@ public class TContent implements IFuelHandler
{
System.out.println("[TConstruct] Thaumcraft not detected.");
}
ItemStack ingotcast = new ItemStack(metalPattern, 1, 0);
LiquidCasting tableCasting = TConstructRegistry.instance.getTableCasting();
LiquidCasting basinCasting = TConstructRegistry.instance.getBasinCasting();
+1
View File
@@ -32,6 +32,7 @@ public class TProxyCommon implements IGuiHandler
public static int glowstoneAggregatorGui = 8;
public static int drawbridgeGui = 9;
public static int landmineGui = 10;
public static int craftingStationID = 11;
public static int inventoryGui = 100;
public static int armorGuiID = 101;
@@ -0,0 +1,155 @@
package tconstruct.inventory;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.inventory.Slot;
import net.minecraft.inventory.SlotCrafting;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.CraftingManager;
import net.minecraft.world.World;
import tconstruct.blocks.logic.CraftingStationLogic;
public class CraftingStationContainer extends Container
{
/** The crafting matrix inventory (3x3). */
public InventoryCrafting craftMatrix;// = new InventoryCrafting(this, 3, 3);
public IInventory craftResult;// = new InventoryCraftResult();
private World worldObj;
private int posX;
private int posY;
private int posZ;
public CraftingStationContainer(InventoryPlayer inventorplayer, CraftingStationLogic logic, int x, int y, int z)
{
this.worldObj = logic.worldObj;
this.posX = x;
this.posY = y;
this.posZ = z;
craftMatrix = new InventoryCraftingStation(this, 3, 3, logic);
craftResult = new InventoryCraftingStationResult(logic);
this.addSlotToContainer(new SlotCrafting(inventorplayer.player, this.craftMatrix, this.craftResult, 0, 124, 35));
int row;
int column;
for (row = 0; row < 3; ++row)
{
for (column = 0; column < 3; ++column)
{
this.addSlotToContainer(new Slot(this.craftMatrix, column + row * 3, 30 + column * 18, 17 + row * 18));
}
}
//Player Inventory
for (row = 0; row < 3; ++row)
{
for (column = 0; column < 9; ++column)
{
this.addSlotToContainer(new Slot(inventorplayer, column + row * 9 + 9, 8 + column * 18, 84 + row * 18));
}
}
for (column = 0; column < 9; ++column)
{
this.addSlotToContainer(new Slot(inventorplayer, column, 8 + column * 18, 142));
}
this.onCraftMatrixChanged(this.craftMatrix);
}
public void onCraftMatrixChanged(IInventory par1IInventory)
{
this.craftResult.setInventorySlotContents(0, CraftingManager.getInstance().findMatchingRecipe(this.craftMatrix, this.worldObj));
}
public void onContainerClosed(EntityPlayer par1EntityPlayer)
{
super.onContainerClosed(par1EntityPlayer);
if (!this.worldObj.isRemote)
{
for (int i = 0; i < 9; ++i)
{
ItemStack itemstack = this.craftMatrix.getStackInSlotOnClosing(i);
if (itemstack != null)
{
par1EntityPlayer.dropPlayerItem(itemstack);
}
}
}
}
public boolean canInteractWith(EntityPlayer par1EntityPlayer)
{
return par1EntityPlayer.getDistanceSq((double)this.posX + 0.5D, (double)this.posY + 0.5D, (double)this.posZ + 0.5D) <= 64.0D;
}
public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int par2)
{
ItemStack itemstack = null;
Slot slot = (Slot)this.inventorySlots.get(par2);
if (slot != null && slot.getHasStack())
{
ItemStack itemstack1 = slot.getStack();
itemstack = itemstack1.copy();
if (par2 == 0)
{
if (!this.mergeItemStack(itemstack1, 10, 46, true))
{
return null;
}
slot.onSlotChange(itemstack1, itemstack);
}
else if (par2 >= 10 && par2 < 37)
{
if (!this.mergeItemStack(itemstack1, 37, 46, false))
{
return null;
}
}
else if (par2 >= 37 && par2 < 46)
{
if (!this.mergeItemStack(itemstack1, 10, 37, false))
{
return null;
}
}
else if (!this.mergeItemStack(itemstack1, 10, 46, false))
{
return null;
}
if (itemstack1.stackSize == 0)
{
slot.putStack((ItemStack)null);
}
else
{
slot.onSlotChanged();
}
if (itemstack1.stackSize == itemstack.stackSize)
{
return null;
}
slot.onPickupFromSlot(par1EntityPlayer, itemstack1);
}
return itemstack;
}
public boolean func_94530_a(ItemStack par1ItemStack, Slot par2Slot)
{
return par2Slot.inventory != this.craftResult && super.func_94530_a(par1ItemStack, par2Slot);
}
}
@@ -0,0 +1,150 @@
package tconstruct.inventory;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.item.ItemStack;
import tconstruct.library.blocks.InventoryLogic;
public class InventoryCraftingStation extends InventoryCrafting
{
/** the width of the crafting inventory */
private int inventoryWidth;
/**
* Class containing the callbacks for the events on_GUIClosed and on_CraftMaxtrixChanged.
*/
private Container eventHandler;
private InventoryLogic logic;
public InventoryCraftingStation(Container par1Container, int size, int height, InventoryLogic logic)
{
super(par1Container, size, height);
this.eventHandler = par1Container;
this.inventoryWidth = size;
this.logic = logic;
}
/**
* Returns the number of slots in the inventory.
*/
public int getSizeInventory()
{
return 9;
}
public ItemStack getStackInSlot(int slot)
{
return slot >= this.getSizeInventory()+1 ? null : logic.getStackInSlot(slot+1);
}
public ItemStack getStackInRowAndColumn(int row, int column)
{
if (row >= 0 && row < this.inventoryWidth)
{
int k = row + column * this.inventoryWidth;
return this.getStackInSlot(k);
}
else
{
return null;
}
}
public String getInvName()
{
return "container.crafting";
}
public boolean isInvNameLocalized()
{
return false;
}
public ItemStack getStackInSlotOnClosing(int par1)
{
return null;
}
/**
* Removes from an inventory slot (first arg) up to a specified number (second arg) of items and returns them in a
* new stack.
*/
@Override
public ItemStack decrStackSize(int slotID, int par2)
{
ItemStack stack = logic.getStackInSlot(slotID+1);
if (stack != null)
{
ItemStack itemstack;
if (stack.stackSize <= par2)
{
itemstack = stack.copy();
stack = null;
logic.setInventorySlotContents(slotID+1, null);
this.eventHandler.onCraftMatrixChanged(this);
return itemstack;
}
else
{
itemstack = stack.splitStack(par2);
if (stack.stackSize == 0)
{
stack = null;
}
this.eventHandler.onCraftMatrixChanged(this);
return itemstack;
}
}
else
{
return null;
}
}
/**
* Sets the given item stack to the specified slot in the inventory (can be crafting or armor sections).
*/
public void setInventorySlotContents(int slot, ItemStack itemstack)
{
logic.setInventorySlotContents(slot+1, itemstack);
this.eventHandler.onCraftMatrixChanged(this);
}
/**
* Returns the maximum stack size for a inventory slot. Seems to always be 64, possibly will be extended. *Isn't
* this more of a set than a get?*
*/
public int getInventoryStackLimit()
{
return 64;
}
/**
* Called when an the contents of an Inventory change, usually
*/
public void onInventoryChanged() {}
/**
* Do not make give this method the name canInteractWith because it clashes with Container
*/
public boolean isUseableByPlayer(EntityPlayer par1EntityPlayer)
{
return true;
}
public void openChest() {}
public void closeChest() {}
/**
* Returns true if automation is allowed to insert the given stack (ignoring stack size) into the given slot.
*/
public boolean isStackValidForSlot(int par1, ItemStack par2ItemStack)
{
return true;
}
}
@@ -0,0 +1,119 @@
package tconstruct.inventory;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.InventoryCraftResult;
import net.minecraft.item.ItemStack;
import tconstruct.blocks.logic.CraftingStationLogic;
public class InventoryCraftingStationResult extends InventoryCraftResult
{
CraftingStationLogic logic;
public InventoryCraftingStationResult(CraftingStationLogic logic)
{
this.logic = logic;
}
/**
* Returns the number of slots in the inventory.
*/
public int getSizeInventory()
{
return 1;
}
/**
* Returns the stack in slot i
*/
public ItemStack getStackInSlot(int par1)
{
return logic.getStackInSlot(0);//this.stackResult[0];
}
/**
* Returns the name of the inventory.
*/
public String getInvName()
{
return "Result";
}
/**
* If this returns false, the inventory name will be used as an unlocalized name, and translated into the player's
* language. Otherwise it will be used directly.
*/
public boolean isInvNameLocalized()
{
return false;
}
/**
* Removes from an inventory slot (first arg) up to a specified number (second arg) of items and returns them in a
* new stack.
*/
public ItemStack decrStackSize(int par1, int par2)
{
ItemStack stack = logic.getStackInSlot(0);
if (stack != null)
{
ItemStack itemstack = stack;
logic.setInventorySlotContents(0, null);
return itemstack;
}
else
{
return null;
}
}
/**
* When some containers are closed they call this on each slot, then drop whatever it returns as an EntityItem -
* like when you close a workbench GUI.
*/
public ItemStack getStackInSlotOnClosing(int par1)
{
return null;
}
/**
* Sets the given item stack to the specified slot in the inventory (can be crafting or armor sections).
*/
@Override
public void setInventorySlotContents(int par1, ItemStack par2ItemStack)
{
logic.setInventorySlotContents(0, par2ItemStack);
}
/**
* Returns the maximum stack size for a inventory slot. Seems to always be 64, possibly will be extended. *Isn't
* this more of a set than a get?*
*/
public int getInventoryStackLimit()
{
return 64;
}
/**
* Called when an the contents of an Inventory change, usually
*/
public void onInventoryChanged() {}
/**
* Do not make give this method the name canInteractWith because it clashes with Container
*/
public boolean isUseableByPlayer(EntityPlayer par1EntityPlayer)
{
return true;
}
public void openChest() {}
public void closeChest() {}
/**
* Returns true if automation is allowed to insert the given stack (ignoring stack size) into the given slot.
*/
public boolean isStackValidForSlot(int par1, ItemStack par2ItemStack)
{
return true;
}
}
+106
View File
@@ -0,0 +1,106 @@
package tconstruct.items.blocks;
import java.util.List;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
public class BarricadeItem extends ItemBlock
{
private int bID;
public BarricadeItem(int id)
{
super(id);
this.bID = id + 256;
}
@Override
@SideOnly(Side.CLIENT)
public void addInformation (ItemStack stack, EntityPlayer player, List list, boolean par4)
{
list.add("Stacks up to 4 times");
}
public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ)
{
int i1 = world.getBlockId(x, y, z);
if (i1 == Block.snow.blockID && (world.getBlockMetadata(x, y, z) & 7) < 1)
{
side = 1;
}
else if (i1 != Block.vine.blockID && i1 != Block.tallGrass.blockID && i1 != Block.deadBush.blockID
&& (Block.blocksList[i1] == null || !Block.blocksList[i1].isBlockReplaceable(world, x, y, z)))
{
if (side == 0)
{
--y;
}
if (side == 1)
{
++y;
}
if (side == 2)
{
--z;
}
if (side == 3)
{
++z;
}
if (side == 4)
{
--x;
}
if (side == 5)
{
++x;
}
}
if (stack.stackSize == 0)
{
return false;
}
else if (!player.canPlayerEdit(x, y, z, side, stack))
{
return false;
}
else if (y == 255 && Block.blocksList[this.bID].blockMaterial.isSolid())
{
return false;
}
else if (world.canPlaceEntityOnSide(this.bID, x, y, z, false, side, player, stack))
{
Block block = Block.blocksList[this.bID];
//int meta = this.getMetadata(stack.getItemDamage());
int rotation = MathHelper.floor_double((double) (player.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
int meta = rotation * 4;
int metadata = Block.blocksList[this.bID].onBlockPlaced(world, x, y, z, side, hitX, hitY, hitZ, meta);
if (placeBlockAt(stack, player, world, x, y, z, side, hitX, hitY, hitZ, metadata))
{
world.playSoundEffect((double)((float)x + 0.5F), (double)((float)y + 0.5F), (double)((float)z + 0.5F), block.stepSound.getPlaceSound(), (block.stepSound.getVolume() + 1.0F) / 2.0F, block.stepSound.getPitch() * 0.8F);
--stack.stackSize;
}
return true;
}
else
{
return false;
}
}
}
@@ -1,7 +1,11 @@
package tconstruct.items.blocks;
import java.util.List;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.MathHelper;
public class LavaTankItemBlock extends ItemBlock
@@ -25,4 +29,17 @@ public class LavaTankItemBlock extends ItemBlock
int pos = MathHelper.clamp_int(itemstack.getItemDamage(), 0, blockType.length - 1);
return (new StringBuilder()).append("LavaTank.").append(blockType[pos]).toString();
}
public void addInformation (ItemStack stack, EntityPlayer player, List list, boolean par4)
{
if (stack.hasTagCompound())
{
NBTTagCompound liquidTag = stack.getTagCompound().getCompoundTag("Fluid");
if (liquidTag != null)
{
list.add("Contains "+liquidTag.getString("FluidName"));
list.add(liquidTag.getInteger("Amount")+" mB");
}
}
}
}
@@ -1,7 +1,11 @@
package tconstruct.items.blocks;
import java.util.List;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.MathHelper;
public class RedstoneMachineItem extends ItemBlock
@@ -25,4 +29,47 @@ public class RedstoneMachineItem extends ItemBlock
int pos = MathHelper.clamp_int(itemstack.getItemDamage(), 0, blockType.length - 1);
return (new StringBuilder()).append("block.").append(blockType[pos]).toString();
}
@Override
public void addInformation (ItemStack stack, EntityPlayer player, List list, boolean par4)
{
if (stack.hasTagCompound() && stack.getItemDamage() == 0)
{
NBTTagCompound contentTags = stack.getTagCompound().getCompoundTag("Contents");
if (contentTags != null)
{
ItemStack contents = ItemStack.loadItemStackFromNBT(contentTags);
if (contents != null)
{
list.add("Inventory: " + contents.getDisplayName());
list.add("Amount: " + contents.stackSize);
}
}
NBTTagCompound camoTag = stack.getTagCompound().getCompoundTag("Camoflauge");
if (camoTag != null)
{
ItemStack camo = ItemStack.loadItemStackFromNBT(camoTag);
if (camo != null)
list.add("Camoflauge: " + camo.getDisplayName());
}
if (stack.getTagCompound().hasKey("Placement"))
{
String string = getDirectionString(stack.getTagCompound().getByte("Placement"));
list.add("Placement Direction: " + string);
}
}
}
String getDirectionString(byte key)
{
if (key == 0)
return ("Up");
if (key == 1)
return ("Right");
if (key == 2)
return ("Down");
return "Left";
}
}
@@ -23,6 +23,6 @@ public class StainedGlassClearPaneItem extends ItemBlock
public String getUnlocalizedName (ItemStack itemstack)
{
int pos = MathHelper.clamp_int(itemstack.getItemDamage(), 0, blockType.length - 1);
return (new StringBuilder()).append("block.stainedglass.pane.").append(blockType[pos]).toString();
return (new StringBuilder()).append("block.stainedglass.").append(blockType[pos]).append(".pane").toString();
}
}
+2 -1
View File
@@ -488,7 +488,8 @@ public class BlockLandmine extends BlockContainer {
return false;
}
@Override
@SuppressWarnings("incomplete-switch")
@Override
public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) {
int l = par1IBlockAccess.getBlockMetadata(par2, par3, par4);
int i1 = l & 7;
+8 -7
View File
@@ -388,32 +388,33 @@ public class AbilityHelper
if (!tags.hasKey("charge"))
return false;
NBTTagCompound toolTag = stack.getTagCompound().getCompoundTag("InfiTool");
int charge = tags.getInteger("charge");
int durability = tags.getInteger("Damage");
float shoddy = tags.getFloat("Shoddy");
int durability = toolTag.getInteger("Damage");
float shoddy = toolTag.getFloat("Shoddy");
float mineSpeed = tags.getInteger("MiningSpeed");
float mineSpeed = toolTag.getInteger("MiningSpeed");
int heads = 1;
if (tags.hasKey("MiningSpeed2"))
{
mineSpeed += tags.getInteger("MiningSpeed2");
mineSpeed += toolTag.getInteger("MiningSpeed2");
heads++;
}
if (tags.hasKey("MiningSpeedHandle"))
{
mineSpeed += tags.getInteger("MiningSpeedHandle");
mineSpeed += toolTag.getInteger("MiningSpeedHandle");
heads++;
}
if (tags.hasKey("MiningSpeedExtra"))
{
mineSpeed += tags.getInteger("MiningSpeedExtra");
mineSpeed += toolTag.getInteger("MiningSpeedExtra");
heads++;
}
float trueSpeed = mineSpeed / (heads * 100f);
float stonebound = tags.getFloat("Shoddy");
float stonebound = toolTag.getFloat("Shoddy");
float bonusLog = (float) Math.log(durability / 72f + 1) * 2 * stonebound;
trueSpeed += bonusLog;
+19 -12
View File
@@ -77,7 +77,7 @@ public class PHConstruct
blueSlime = config.get("Mob Spawning", "Activate Blue Slime Spawns", true).getBoolean(true);
blueSlimeWeight = config.get("Mob Spawning", "Spawn Weight for Blue Slime", 6).getInt(6);
woodCrafter = config.getBlock("Wood Tool Station", 1471).getInt(1471);
woodStation = config.getBlock("Wood Tool Station", 1471).getInt(1471);
heldItemBlock = config.getBlock("Held Item Block", 1472).getInt(1472);
lavaTank = config.getBlock("Lava Tank", 1473).getInt(1473);
smeltery = config.getBlock("Smeltery", 1474).getInt(1474);
@@ -98,17 +98,15 @@ public class PHConstruct
speedBlock = config.getBlock("Speed Block", 1489).getInt(1489);
landmine = config.getBlock("Landmine", 1470).getInt(1470);
barricade = config.getBlock("Barricade", 1469).getInt(1469);
toolForge = config.getBlock("Tool Forge", 1468).getInt(1468);
multiBrickFancy = config.getBlock("Multi Brick Fancy", 1467).getInt(1467);
/*public static int moltenSilver; //Thermal Expansion
public static int moltenLead;
public static int moltenNickel;
public static int moltenPlatinum;
public static int moltenInvar;
public static int moltenElectrum;*/
barricadeOak = config.getBlock("Oak Barricade", 1469).getInt(1469);
barricadeSpruce = config.getBlock("Spruce Barricade", 1482).getInt(1482);
barricadeBirch = config.getBlock("Birch Barricade", 1483).getInt(1483);
barricadeJungle = config.getBlock("Jungle Barricade", 1487).getInt(1487);
//Thermal Expansion
moltenSilver = config.getBlock("Molten Silver", 3195).getInt(3195);
moltenLead = config.getBlock("Molten Lead", 3196).getInt(3196);
moltenNickel = config.getBlock("Molten Nickel", 3197).getInt(3197);
@@ -146,6 +144,9 @@ public class PHConstruct
searedSlab = config.getBlock("Seared Slab", 3230).getInt(3230);
speedSlab = config.getBlock("Speed Slab", 3231).getInt(3231);
//grassSlab = config.getBlock("Grass Slab", 3230).getInt(3230);
punji = config.getBlock("Punji", 3232).getInt(3232);
woodCrafter = config.getBlock("Crafting Station", 3233).getInt(3233);
/*golemCore = config.getBlock("Golem Core", 1481).getInt(1481);
golemHead = config.getBlock("Golem Head", 1482).getInt(1482);*/
@@ -335,9 +336,11 @@ public class PHConstruct
}
//Blocks
public static int woodCrafter;
public static int woodStation;
public static int toolForge;
public static int heldItemBlock;
public static int woodCrafter;
public static int ores;
public static int lavaTank;
public static int smeltery;
@@ -361,7 +364,11 @@ public class PHConstruct
//Traps
public static int landmine;
public static int barricade;
public static int punji;
public static int barricadeOak;
public static int barricadeSpruce;
public static int barricadeBirch;
public static int barricadeJungle;
//InfiBlocks
public static int speedBlock;
+6
View File
@@ -479,6 +479,12 @@ public class TEventHandler
@ForgeSubscribe
public void registerOre (OreRegisterEvent evt)
{
String ingot = evt.Name.toLowerCase();
if (ingot.contains("ingot"))
{
TConstruct.tableCasting.addCastingRecipe(new ItemStack(TContent.metalPattern, 1, 0), new FluidStack(TContent.moltenAlubrassFluid, TConstruct.ingotLiquidValue), evt.Ore, false, 50);
TConstruct.tableCasting.addCastingRecipe(new ItemStack(TContent.metalPattern, 1, 0), new FluidStack(TContent.moltenGoldFluid, TConstruct.ingotLiquidValue * 2), evt.Ore, false, 50);
}
if (evt.Name == "battery")
TConstruct.content.modE.batteries.add(evt.Ore);
@@ -14,6 +14,7 @@ import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.DimensionManager;
import tconstruct.TConstruct;
import tconstruct.blocks.logic.DrawbridgeLogic;
import tconstruct.blocks.logic.ToolForgeLogic;
import tconstruct.blocks.logic.ToolStationLogic;
import tconstruct.library.blocks.InventoryLogic;
@@ -120,6 +121,22 @@ public class TPacketHandler implements IPacketHandler
break;
}
}
else if (packetID == 5) //Drawbridge
{
int dimension = inputStream.readInt();
World world = DimensionManager.getWorld(dimension);
int x = inputStream.readInt();
int y = inputStream.readInt();
int z = inputStream.readInt();
TileEntity te = world.getBlockTileEntity(x, y, z);
byte direction = inputStream.readByte();
if (te instanceof DrawbridgeLogic)
{
((DrawbridgeLogic) te).setPlacementDirection(direction);
}
}
else if (packetID == 10) //Double jump
{
@@ -0,0 +1,21 @@
package tconstruct.util.player;
import net.minecraft.util.ChunkCoordinates;
import net.minecraft.world.World;
import net.minecraftforge.common.FakePlayer;
import tconstruct.library.blocks.InventoryLogic;
public class FakePlayerLogic extends FakePlayer
{
InventoryLogic logic;
public FakePlayerLogic(World world, String name, InventoryLogic logic)
{
super(world, name);
this.logic = logic;
}
public ChunkCoordinates getPlayerCoordinates()
{
return new ChunkCoordinates(logic.xCoord, logic.yCoord, logic.zCoord);
}
}