Fix most outstanding bugs
No files matched your search
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
|
After Width: | Height: | Size: 463 B |
|
After Width: | Height: | Size: 547 B |
|
After Width: | Height: | Size: 787 B |
|
Before Width: | Height: | Size: 402 B |
|
Before Width: | Height: | Size: 542 B |
|
Before Width: | Height: | Size: 219 B |
|
Before Width: | Height: | Size: 272 B |
|
After Width: | Height: | Size: 287 B |
|
After Width: | Height: | Size: 640 B |
|
After Width: | Height: | Size: 629 B |
|
After Width: | Height: | Size: 2.7 KiB |
|
Before Width: | Height: | Size: 3.7 KiB After Width: | Height: | Size: 3.6 KiB |
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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[];
|
||||
}
|
||||
@@ -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.
|
||||
*
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
package ic2.api.info;
|
||||
|
||||
public class Info {
|
||||
public static IEnergyValueProvider itemEnergy;
|
||||
public static IFuelValueProvider itemFuel;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
/**
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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,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)
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||